forked from drnic/jsunittest
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Rakefile
118 lines (95 loc) · 3.38 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
require 'rubygems'
begin
require 'rake'
rescue LoadError
puts 'This script should only be accessed via the "rake" command.'
puts 'Installation: gem install rake -y'
exit
end
require 'rake'
require 'rake/clean'
require 'rake/packagetask'
$:.unshift File.dirname(__FILE__) + "/lib"
APP_VERSION = '0.7.3'
APP_NAME = 'jsunittest'
RUBYFORGE_PROJECT = 'drnicjavascript'
APP_FILE_NAME= "#{APP_NAME}.js"
APP_ROOT = File.expand_path(File.dirname(__FILE__))
APP_SRC_DIR = File.join(APP_ROOT, 'src')
APP_DIST_DIR = File.join(APP_ROOT, 'dist')
APP_PKG_DIR = File.join(APP_ROOT, 'pkg')
unless ENV['rakefile_just_config']
task :default => [:dist, :package, :clean_package_source]
desc "Builds the distribution"
task :dist do
$:.unshift File.join(APP_ROOT, 'lib')
require 'protodoc'
require 'fileutils'
FileUtils.mkdir_p APP_DIST_DIR
Dir.chdir(APP_SRC_DIR) do
File.open(File.join(APP_DIST_DIR, APP_FILE_NAME), 'w+') do |dist|
dist << Protodoc::Preprocessor.new(APP_FILE_NAME)
end
end
FileUtils.cp(APP_ROOT + "/test/assets/unittest.css", APP_DIST_DIR)
Dir.chdir(APP_DIST_DIR) do
FileUtils.copy_file APP_FILE_NAME, "#{APP_NAME}-#{APP_VERSION}.js"
end
end
Rake::PackageTask.new(APP_NAME, APP_VERSION) do |package|
package.need_tar_gz = true
package.package_dir = APP_PKG_DIR
package.package_files.include(
'[A-Z]*',
'config/*.sample',
"dist/#{APP_FILE_NAME}",
'lib/**',
'src/**',
'script/**',
'tasks/**',
'test/**',
'website/**'
)
end
desc "Builds the distribution, runs the JavaScript unit + functional tests and collects their results."
task :test => [:dist, :test_units, :test_functionals]
require 'jstest'
desc "Runs all the JavaScript unit tests and collects the results"
JavaScriptTestTask.new(:test_units, 4711) do |t|
testcases = ENV['TESTCASES']
tests_to_run = ENV['TESTS'] && ENV['TESTS'].split(',')
browsers_to_test = ENV['BROWSERS'] && ENV['BROWSERS'].split(',')
t.mount("/dist")
t.mount("/src")
t.mount("/test")
Dir["test/unit/*_test.html"].sort.each do |test_file|
tests = testcases ? { :url => "/#{test_file}", :testcases => testcases } : "/#{test_file}"
test_filename = test_file[/.*\/(.+?)\.html/, 1]
t.run(tests) unless tests_to_run && !tests_to_run.include?(test_filename)
end
%w( safari firefox ie konqueror opera ).each do |browser|
t.browser(browser.to_sym) unless browsers_to_test && !browsers_to_test.include?(browser)
end
end
desc "Runs all the JavaScript functional tests and collects the results"
JavaScriptTestTask.new(:test_functionals, 4712) do |t|
testcases = ENV['TESTCASES']
tests_to_run = ENV['TESTS'] && ENV['TESTS'].split(',')
browsers_to_test = ENV['BROWSERS'] && ENV['BROWSERS'].split(',')
t.mount("/dist")
t.mount("/src")
t.mount("/test")
Dir["test/functional/*_test.html"].sort.each do |test_file|
tests = testcases ? { :url => "/#{test_file}", :testcases => testcases } : "/#{test_file}"
test_filename = test_file[/.*\/(.+?)\.html/, 1]
t.run(tests) unless tests_to_run && !tests_to_run.include?(test_filename)
end
%w( safari firefox ie konqueror opera ).each do |browser|
t.browser(browser.to_sym) unless browsers_to_test && !browsers_to_test.include?(browser)
end
end
task :clean_package_source do
rm_rf File.join(APP_PKG_DIR, "#{APP_NAME}-#{APP_VERSION}")
end
Dir['tasks/**/*.rake'].each { |rake| load rake }
end