class Tuev::TestSuite

Public Class Methods

new(test_suite_config) click to toggle source
# File lib/tuev/tuev.rb, line 42
def initialize(test_suite_config)
  begin
    @test_file_template = File.join(Tuev.cwd, test_suite_config["test_file_template"])
  rescue
    raise "could not find 'test_file_template' setting for current suite"
  end

  @jquery_js       = file_url(Tuev.contrib_dir, "jquery-1.5.1.js")
  @mockjax_js      = file_url(Tuev.contrib_dir, "jquery.mockjax.js")
  @qunit_js        = file_url(Tuev.contrib_dir, "qunit.js")
  @tuev_qunit_js   = file_url(Tuev.contrib_dir, "tuev_qunit.js")
  @qunit_css       = file_url(Tuev.contrib_dir, "qunit.css")
  @test_suite_name = test_suite_config["name"]

  @combine_tests   =  test_suite_config["combine_tests"]

  @test_set = @tests   = build_file_list(test_suite_config["test_files"])

  @dependencies = build_file_list(test_suite_config["dependencies"])
end

Public Instance Methods

create_test_files() click to toggle source
# File lib/tuev/tuev.rb, line 63
def create_test_files
  files = []
  if ENV['COMBINE_TESTS'] == 'true' || (ENV['COMBINE_TESTS'] != 'false' && @combine_tests)
    files << File.join(out_path, "#{@test_suite_name}.html")

    @test_set_name = title_from_filename(files.last)
    @test_set = @tests
    save(render_template(@tests), files.last)
  else
    @tests.each do |test|
      files << File.join(out_path, "#{@test_suite_name}_#{test.gsub('file://','').gsub(Tuev.cwd, '').tr('/.','_')}.html")

      @test_set_name = title_from_filename(files.last)
      @test_set = [test]
      save(render_template(test), files.last)
    end
  end

  files
end

Private Instance Methods

build_file_list(includes_and_excludes) click to toggle source
# File lib/tuev/tuev.rb, line 105
def build_file_list(includes_and_excludes)
  file_list = [*includes_and_excludes["include"]].map do |pattern| 
    files = Dir.glob(pattern)
    if files.empty?
      raise "could not find file matching '#{pattern}'"
    end

    files
  end

  file_list.flatten!

  if excludes = includes_and_excludes["exclude"]
    [*excludes].each do |exclude_regexp|
      file_list.delete_if{|x| x =~ /#{exclude_regexp}/ }
    end
  end


  file_list.map{|x| file_url(x)}.uniq
end
file_url(*relativ_path_parts) click to toggle source
# File lib/tuev/tuev.rb, line 127
def file_url(*relativ_path_parts)
  "file://#{File.expand_path(File.join(Tuev.cwd, *relativ_path_parts))}"
end
out_path() click to toggle source
# File lib/tuev/tuev.rb, line 89
def out_path
  Tuev.test_out
end
render_template(tests) click to toggle source
# File lib/tuev/tuev.rb, line 99
def render_template(tests)
  template = ERB.new(File.read(@test_file_template))
  template.result(binding)
end
save(source_code, filename) click to toggle source
# File lib/tuev/tuev.rb, line 93
def save(source_code, filename)
  File.open(filename, "w") do |f|
    f << source_code
  end
end
title_from_filename(filename) click to toggle source
# File lib/tuev/tuev.rb, line 85
def title_from_filename(filename)
  filename.gsub(/#{out_path}[\/]*/, '').gsub('.html','').gsub('_js','').gsub('_',' ')
end