Class: PluginsTests

Inherits:
Object
  • Object
show all
Defined in:
lib/wiki_lyrics/tests/tests.rb

Class Method Summary collapse

Class Method Details

.find_plugins(plugin_names) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/wiki_lyrics/tests/tests.rb', line 27

def self.find_plugins( plugin_names )
  plugins = {}
  Dir.new( File.expand_path( File.dirname( __FILE__ ) + "/.." ) ).each() do |filename|
    filename = File.expand_path( File.dirname( __FILE__ ) + "/../" + filename )
    if File.file?( filename ) && (md = /\/lyrics_([A-Za-z_0-9]*)\.rb$/.match( filename ))
      next if plugin_names && ! plugin_names.include?( md[1] )
      plugins[md[1]] = filename
    end
  end
  return plugins
end

.load_plugins(plugins) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/wiki_lyrics/tests/tests.rb', line 39

def self.load_plugins( plugins )
  @plugins = []
  plugins.each() do |classname, filename|
    require( filename ? filename : File.expand_path( File.dirname( __FILE__ ) + "/../lyrics_#{classname}.rb" ) )
    classobj = eval( classname )
    @plugins << eval( "#{classname}.new()" )
  end
  @plugins.sort!() { |x,y| x.site_name() <=> y.site_name() }
end

.suite(plugin_names, cases) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/wiki_lyrics/tests/tests.rb', line 49

def self.suite( plugin_names, cases )
  suite = Test::Unit::TestSuite.new( "Lyrics Plugins Tests" )
  plugin_names = plugin_names ? plugin_names.split( "," ) : nil
  if plugin_names && plugin_names.size == 1 && cases
    cases = cases.split( "," )
    cases.size.times { |index| cases[index] = cases[index].to_i - 1 }
    cases = nil if cases.empty?
  end
  plugins = self.load_plugins( self.find_plugins( plugin_names ) )
  if plugins.empty?
    puts "No valid plugin to test selected..."
  else
    logger = Logger.new( $LOG_FILE, 0 )
    plugins.each() { |plugin| plugin.logger = logger }
    plugins.each() { |plugin| suite << PluginTests.build_suite( plugin, cases ) }
  end
  return suite
end