pivotal / jasmine

DOM-less simple JavaScript testing framework

This URL has Read+Write access

jasmine / Rakefile
100644 99 lines (82 sloc) 2.861 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
95
96
97
98
99
require File.expand_path(File.join(File.dirname(__FILE__), "spec/jasmine_helper.rb"))
 
def jasmine_sources
  sources = ["src/base.js", "src/util.js", "src/Env.js", "src/Reporter.js", "src/Block.js"]
  sources += Dir.glob('src/*.js').reject{|f| f == 'src/base.js' || sources.include?(f)}.sort
end
 
def jasmine_filename(version)
  "jasmine-#{version['major']}.#{version['minor']}.#{version['build']}.js"
end
 
def version_hash
  JSON.parse(File.new("src/version.json").read);
end
 
def start_jasmine_server(jasmine_includes = nil)
  require File.expand_path(File.join(JasmineHelper.jasmine_root, "contrib/ruby/jasmine_spec_builder"))
 
  puts "your tests are here:"
  puts " http://localhost:8888/run.html"
 
  Jasmine::SimpleServer.start(
    8888,
    lambda { JasmineHelper.specs },
    JasmineHelper.dir_mappings,
    :jasmine_files => jasmine_includes)
end
 
namespace :jasmine do
  desc 'Builds lib/jasmine from source'
  task :build => 'jasmine:doc' do
    puts 'Building Jasmine from source'
    require 'json'
    sources = jasmine_sources
    version = version_hash
    old_jasmine_files = Dir.glob('lib/jasmine*.js')
    old_jasmine_files.each do |file|
      File.delete(file)
    end
    jasmine = File.new("lib/#{jasmine_filename version}", 'w')
    jasmine.puts(File.read(sources.shift))
    jasmine.puts %{
jasmine.version_= {
"major": #{version['major']},
"minor": #{version['minor']},
"build": #{version['build']},
"revision": #{Time.now.to_i}
};
}
    sources.each do |source_filename|
      jasmine.puts(File.read(source_filename))
    end
    jasmine.close
  end
 
  desc "Build jasmine documentation"
  task :doc do
    puts 'Creating Jasmine Documentation'
    require 'rubygems'
    #sudo gem install ragaskar-jsdoc_helper
    require 'jsdoc_helper'
 
 
    JsdocHelper::Rake::Task.new(:lambda_jsdoc)
    Rake::Task[:lambda_jsdoc].invoke
  end
 
 
  desc "Run jasmine tests of source via server"
  task :server do
    files = jasmine_sources + ['lib/TrivialReporter.js', 'lib/consolex.js']
    jasmine_includes = lambda {
      raw_jasmine_includes = files.collect { |f| File.expand_path(File.join(JasmineHelper.jasmine_root, f)) }
      Jasmine.cachebust(raw_jasmine_includes).collect {|f| f.sub(JasmineHelper.jasmine_src_dir, "/src").sub(JasmineHelper.jasmine_lib_dir, "/lib") }
    }
    start_jasmine_server(jasmine_includes)
  end
 
  desc "Build jasmine and run tests via server"
  task :server_build => 'jasmine:build' do
 
    start_jasmine_server
  end
 
  namespace :test do
    desc "Run continuous integration tests"
    task :ci => 'jasmine:build' do
      require "spec"
      require 'spec/rake/spectask'
      Spec::Rake::SpecTask.new(:lambda_ci) do |t|
        t.spec_opts = ["--color", "--format", "specdoc"]
        t.spec_files = ["spec/jasmine_spec.rb"]
      end
      Rake::Task[:lambda_ci].invoke
    end
 
  end
 
end