Unit test lib reorganizing.

This commit is contained in:
Tobie Langel 2008-09-08 01:23:20 -07:00
parent 26ca9c3969
commit 41ef42e033
6 changed files with 84 additions and 26 deletions

View File

@ -5,6 +5,8 @@ PROTOTYPE_ROOT = File.expand_path(File.dirname(__FILE__))
PROTOTYPE_SRC_DIR = File.join(PROTOTYPE_ROOT, 'src')
PROTOTYPE_DIST_DIR = File.join(PROTOTYPE_ROOT, 'dist')
PROTOTYPE_PKG_DIR = File.join(PROTOTYPE_ROOT, 'pkg')
PROTOTYPE_TEST_DIR = File.join(PROTOTYPE_ROOT, 'test')
PROTOTYPE_TMP_DIR = File.join(PROTOTYPE_TEST_DIR, 'unit', 'tmp')
PROTOTYPE_VERSION = '1.6.0.2'
task :default => [:dist, :dist_helper, :package, :clean_package_source]
@ -50,23 +52,20 @@ task :test => [:dist, :test_units]
require 'test/lib/jstest'
desc "Runs all the JavaScript unit tests and collects the results"
JavaScriptTestTask.new(:test_units) do |t|
JavaScriptTestTask.new(:test_units => [:build_unit_tests]) do |t|
testcases = ENV['TESTCASES']
tests_to_run = ENV['TESTS'] && ENV['TESTS'].split(',')
browsers_to_test = ENV['BROWSERS'] && ENV['BROWSERS'].split(',')
tmp_dir = "test/unit/tmp"
t.mount("/dist")
t.mount("/test")
Dir.mkdir(tmp_dir) unless File.exist?(tmp_dir)
Dir.mkdir(PROTOTYPE_TMP_DIR) unless File.exist?(PROTOTYPE_TMP_DIR)
Dir["test/unit/*_test.js"].each do |file|
TestBuilder.new(file).render
test_file = File.basename(file, ".js")
test_name = test_file.sub("_test", "")
Dir["test/unit/tmp/*_test.html"].each do |file|
test_name = File.basename(file).sub("_test.html", "")
unless tests_to_run && !tests_to_run.include?(test_name)
t.run("/#{tmp_dir}/#{test_file}.html", testcases)
t.run("/#{file}", testcases)
end
end
@ -74,3 +73,20 @@ JavaScriptTestTask.new(:test_units) do |t|
t.browser(browser.to_sym) unless browsers_to_test && !browsers_to_test.include?(browser)
end
end
task :build_unit_tests do
Dir[File.join('test', 'unit', '*_test.js')].each do |file|
PageBuilder.new(file, 'prototype.erb').render
end
end
task :clean_package_source do
rm_rf File.join(PROTOTYPE_PKG_DIR, "prototype-#{PROTOTYPE_VERSION}")
end
desc 'Generates an empty tmp directory for building tests.'
task :clean_tmp do
puts 'Generating an empty tmp directory for building tests.'
FileUtils.rm_rf(PROTOTYPE_TMP_DIR) if File.exist?(PROTOTYPE_TMP_DIR)
Dir.mkdir(PROTOTYPE_TMP_DIR)
end

View File

@ -426,17 +426,17 @@ class TestSuiteResults
end
end
class TestBuilder
UNITTEST_DIR = File.expand_path('test')
FIXTURES_DIR = File.join(UNITTEST_DIR, 'unit', 'fixtures')
TMP_DIR = File.join(UNITTEST_DIR, 'unit', 'tmp')
TEMPLATE = File.join(UNITTEST_DIR, 'lib', 'template.erb')
class PageBuilder
UNITTEST_DIR = File.expand_path('test')
FIXTURES_DIR = File.join(UNITTEST_DIR, 'unit', 'fixtures')
TMP_DIR = File.join(UNITTEST_DIR, 'unit', 'tmp')
TEMPLATES_DIR = File.join(UNITTEST_DIR, 'lib', 'templates')
def initialize(filename, template = TEMPLATE)
def initialize(filename, template = 'default.erb')
@filename = filename
@template = template
@template = File.join(self.class::TEMPLATES_DIR, template)
@js_filename = File.basename(@filename)
@basename = @js_filename.sub("_test.js", "")
@basename = @js_filename.sub('_test.js', '')
end
def html_fixtures
@ -452,18 +452,25 @@ class TestBuilder
end
def render
@title = @basename.gsub("_", " ").strip.capitalize
@title = @basename.gsub('_', ' ').strip.capitalize
@html_fixtures = html_fixtures
@js_fixtures_filename = external_fixtures("js")
@css_fixtures_filename = external_fixtures("css")
@js_fixtures_filename = external_fixtures('js')
@css_fixtures_filename = external_fixtures('css')
File.open(destination, "w+") do |file|
file << ERB.new(IO.read(@template), nil, "%").result(binding)
File.open(destination, 'w+') do |file|
file << ERB.new(IO.read(@template), nil, '%').result(binding)
end
end
def destination
filename = File.basename(@filename, ".js")
File.join(TMP_DIR, "#{filename}.html")
name_file(:ext => 'html')
end
def name_file(options = {})
prefix = options[:prefix] ? "#{options[:prefix]}_" : ""
suffix = options[:suffix] ? "_#{options[:suffix]}" : ""
ext = options[:ext] ? options[:ext] : "js"
filename = File.basename(@filename, '.js')
File.join(TMP_DIR, "#{prefix}#{filename}#{suffix}.#{ext}")
end
end

View File

@ -0,0 +1,35 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Unit test file | <%= @title %></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="../../../dist/prototype.js" type="text/javascript"></script>
<script src="../../lib/assets/unittest.js" type="text/javascript"></script>
<link rel="stylesheet" href="../../lib/assets/test.css" type="text/css" />
<% if @css_fixtures_filename %>
<link rel="stylesheet" href="../fixtures/<%= @css_fixtures_filename %>" type="text/css" charset="utf-8" />
<% end %>
<% if @js_fixtures_filename %>
<script src="../fixtures/<%= @js_fixtures_filename %>" type="text/javascript" charset="utf-8"></script>
<% end %>
<script src="../<%= @js_filename %>" type="text/javascript"></script>
</head>
<body>
<h1>Unit test file</h1>
<h2><%= @title %></h2>
<!-- This file is programmatically generated. Do not attempt to modify it. Instead, modify <%= @fixtures_filename %> -->
<!-- Log output start -->
<div id="testlog"></div>
<!-- Log output end -->
<!-- HTML Fixtures start -->
<%= @html_fixtures %>
<!-- HTML Fixtures end -->
</body>
</html>

View File

@ -9,8 +9,8 @@
var originalElement = window.Element;
</script>
<script src="../../../dist/prototype.js" type="text/javascript"></script>
<script src="../../lib/unittest.js" type="text/javascript"></script>
<link rel="stylesheet" href="../../test.css" type="text/css" />
<script src="../../lib/assets/unittest.js" type="text/javascript"></script>
<link rel="stylesheet" href="../../lib/assets/test.css" type="text/css" />
<% if @css_fixtures_filename %>
<link rel="stylesheet" href="../fixtures/<%= @css_fixtures_filename %>" type="text/css" charset="utf-8" />
@ -39,4 +39,4 @@
</html>
<script type="text/javascript" charset="utf-8">
eventResults.endOfDocument = true;
</script>
</script>