public
Fork of sstephenson/prototype
Description: Prototype JavaScript framework (forked for some disruptive changes)
Homepage: http://prototypejs.org/
Clone URL: git://github.com/savetheclocktower/prototype.git
Sun Oct 05 16:10:50 -0700 2008
commit  ff2a98ce63f4ee8e6ee106cedec0878c80da6ad8
tree    906636ad1f69968ef6a5740c2688f164b6d9392a
parent  36a7e7852086fb413ea661bfd5c59c1e6652024b
prototype / Rakefile
100644 94 lines (77 sloc) 2.929 kb
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
require 'rake'
require 'rake/packagetask'
 
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]
 
desc "Builds the distribution."
task :dist do
  $:.unshift File.join(PROTOTYPE_ROOT, 'lib')
  require 'protodoc'
  
  Dir.chdir(PROTOTYPE_SRC_DIR) do
    File.open(File.join(PROTOTYPE_DIST_DIR, 'prototype.js'), 'w+') do |dist|
      dist << Protodoc::Preprocessor.new('prototype.js')
    end
  end
end
 
desc "Builds the updating helper."
task :dist_helper do
  $:.unshift File.join(PROTOTYPE_ROOT, 'lib')
  require 'protodoc'
  
  Dir.chdir(File.join(PROTOTYPE_ROOT, 'ext', 'update_helper')) do
    File.open(File.join(PROTOTYPE_DIST_DIR, 'prototype_update_helper.js'), 'w+') do |dist|
      dist << Protodoc::Preprocessor.new('prototype_update_helper.js')
    end
  end
end
 
Rake::PackageTask.new('prototype', PROTOTYPE_VERSION) do |package|
  package.need_tar_gz = true
  package.package_dir = PROTOTYPE_PKG_DIR
  package.package_files.include(
    '[A-Z]*',
    'dist/prototype.js',
    'lib/**',
    'src/**',
    'test/**'
  )
end
 
desc "Builds the distribution and the test suite, runs the tests and collects their results."
task :test => [:dist, :test_units]
 
require 'test/lib/jstest'
desc "Runs all the JavaScript unit tests and collects the results"
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(PROTOTYPE_TMP_DIR) unless File.exist?(PROTOTYPE_TMP_DIR)
  
  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("/#{file}", testcases)
    end
  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 :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