jasmine 1.0.1 → 1.0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT.LICENSE +20 -0
- data/generators/jasmine/templates/spec/javascripts/support/jasmine_runner.rb +14 -3
- data/lib/jasmine/base.rb +8 -1
- data/lib/jasmine/command_line_tool.rb +3 -0
- data/lib/jasmine/config.rb +5 -1
- data/lib/jasmine/selenium_driver.rb +5 -0
- data/lib/jasmine/server.rb +2 -2
- data/lib/jasmine/spec_builder.rb +13 -3
- data/lib/jasmine/tasks/jasmine.rake +20 -7
- data/spec/bug_fixes_spec.rb +32 -0
- data/spec/config_spec.rb +10 -12
- data/spec/jasmine_command_line_tool_spec.rb +6 -3
- data/spec/jasmine_self_test_spec.rb +8 -2
- data/spec/rails_generator_spec.rb +13 -9
- data/spec/server_spec.rb +1 -3
- data/spec/spec_helper.rb +22 -1
- metadata +7 -3
data/MIT.LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2008-2010 Pivotal Labs
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -3,17 +3,28 @@ $:.unshift(ENV['JASMINE_GEM_PATH']) if ENV['JASMINE_GEM_PATH'] # for gem testing
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'jasmine'
|
5
5
|
jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
|
6
|
-
require jasmine_config_overrides if File.
|
6
|
+
require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
|
7
|
+
if Jasmine::rspec2?
|
8
|
+
require 'rspec'
|
9
|
+
else
|
10
|
+
require 'spec'
|
11
|
+
end
|
7
12
|
|
8
13
|
jasmine_config = Jasmine::Config.new
|
9
14
|
spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
|
10
15
|
|
11
16
|
should_stop = false
|
12
17
|
|
13
|
-
|
14
|
-
|
18
|
+
if Jasmine::rspec2?
|
19
|
+
RSpec.configuration.after(:suite) do
|
15
20
|
spec_builder.stop if should_stop
|
16
21
|
end
|
22
|
+
else
|
23
|
+
Spec::Runner.configure do |config|
|
24
|
+
config.after(:suite) do
|
25
|
+
spec_builder.stop if should_stop
|
26
|
+
end
|
27
|
+
end
|
17
28
|
end
|
18
29
|
|
19
30
|
spec_builder.start
|
data/lib/jasmine/base.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'socket'
|
2
2
|
require 'erb'
|
3
|
-
require 'json/pure'
|
4
3
|
|
5
4
|
module Jasmine
|
6
5
|
def self.root
|
@@ -56,4 +55,12 @@ module Jasmine
|
|
56
55
|
"#{file_name}?cachebust=#{digest}"
|
57
56
|
end
|
58
57
|
end
|
58
|
+
|
59
|
+
def self.rspec2?
|
60
|
+
Gem.available? "rspec", ">= 2.0"
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.rails3?
|
64
|
+
Gem.available? "rails", ">= 3.0"
|
65
|
+
end
|
59
66
|
end
|
@@ -59,9 +59,12 @@ module Jasmine
|
|
59
59
|
File.open(template_path('INSTALL'), 'r').each_line do |line|
|
60
60
|
puts line
|
61
61
|
end
|
62
|
+
elsif argv[0] == "license"
|
63
|
+
puts File.new(expand(cwd, "MIT.LICENSE")).read
|
62
64
|
else
|
63
65
|
puts "unknown command #{argv}"
|
64
66
|
puts "Usage: jasmine init"
|
67
|
+
puts " license"
|
65
68
|
end
|
66
69
|
end
|
67
70
|
end
|
data/lib/jasmine/config.rb
CHANGED
@@ -41,7 +41,7 @@ module Jasmine
|
|
41
41
|
|
42
42
|
def windows?
|
43
43
|
require 'rbconfig'
|
44
|
-
::
|
44
|
+
::RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
|
45
45
|
end
|
46
46
|
|
47
47
|
def start_selenium_server
|
@@ -76,6 +76,10 @@ module Jasmine
|
|
76
76
|
@client.eval_js(script)
|
77
77
|
end
|
78
78
|
|
79
|
+
def json_generate(obj)
|
80
|
+
@client.json_generate(obj)
|
81
|
+
end
|
82
|
+
|
79
83
|
def match_files(dir, patterns)
|
80
84
|
dir = File.expand_path(dir)
|
81
85
|
patterns.collect do |pattern|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Jasmine
|
2
2
|
class SeleniumDriver
|
3
3
|
def initialize(selenium_host, selenium_port, selenium_browser_start_command, http_address)
|
4
|
+
require 'json/pure' unless defined?(JSON)
|
4
5
|
require 'selenium/client'
|
5
6
|
@driver = Selenium::Client::Driver.new(
|
6
7
|
selenium_host,
|
@@ -40,5 +41,9 @@ module Jasmine
|
|
40
41
|
result = @driver.get_eval("try { eval(#{escaped_script}, window); } catch(err) { window.eval(#{escaped_script}); }")
|
41
42
|
JSON.parse("{\"result\":#{result}}")["result"]
|
42
43
|
end
|
44
|
+
|
45
|
+
def json_generate(obj)
|
46
|
+
JSON.generate(obj)
|
47
|
+
end
|
43
48
|
end
|
44
49
|
end
|
data/lib/jasmine/server.rb
CHANGED
@@ -58,7 +58,7 @@ module Jasmine
|
|
58
58
|
[
|
59
59
|
200,
|
60
60
|
{ 'Content-Type' => 'text/html' },
|
61
|
-
body
|
61
|
+
[body]
|
62
62
|
]
|
63
63
|
end
|
64
64
|
end
|
@@ -82,7 +82,7 @@ module Jasmine
|
|
82
82
|
[
|
83
83
|
200,
|
84
84
|
{ 'Content-Type' => 'application/javascript' },
|
85
|
-
"document.write('<p>Couldn\\'t load #{env["PATH_INFO"]}!</p>');"
|
85
|
+
["document.write('<p>Couldn\\'t load #{env["PATH_INFO"]}!</p>');"]
|
86
86
|
]
|
87
87
|
end
|
88
88
|
end
|
data/lib/jasmine/spec_builder.rb
CHANGED
@@ -69,7 +69,7 @@ module Jasmine
|
|
69
69
|
def load_results
|
70
70
|
@spec_results = {}
|
71
71
|
@spec_ids.each_slice(50) do |slice|
|
72
|
-
@spec_results.merge!(eval_js("var result = jsApiReporter.resultsForSpecs(#{
|
72
|
+
@spec_results.merge!(eval_js("var result = jsApiReporter.resultsForSpecs(#{json_generate(slice)}); if (window.Prototype && Object.toJSON) { Object.toJSON(result) } else { JSON.stringify(result) }"))
|
73
73
|
end
|
74
74
|
@spec_results
|
75
75
|
end
|
@@ -109,8 +109,14 @@ module Jasmine
|
|
109
109
|
example_name = spec["name"]
|
110
110
|
@spec_ids << spec["id"]
|
111
111
|
backtrace = @example_locations[parent.description + " " + example_name]
|
112
|
-
|
113
|
-
|
112
|
+
if Jasmine::rspec2?
|
113
|
+
parent.it example_name, {} do
|
114
|
+
me.report_spec(spec["id"])
|
115
|
+
end
|
116
|
+
else
|
117
|
+
parent.it example_name, {}, backtrace do
|
118
|
+
me.report_spec(spec["id"])
|
119
|
+
end
|
114
120
|
end
|
115
121
|
end
|
116
122
|
|
@@ -148,5 +154,9 @@ module Jasmine
|
|
148
154
|
def eval_js(js)
|
149
155
|
@runner.eval_js(js)
|
150
156
|
end
|
157
|
+
|
158
|
+
def json_generate(obj)
|
159
|
+
@runner.json_generate(obj)
|
160
|
+
end
|
151
161
|
end
|
152
162
|
end
|
@@ -5,20 +5,33 @@ namespace :jasmine do
|
|
5
5
|
|
6
6
|
desc "Run continuous integration tests"
|
7
7
|
task :ci => "jasmine:require" do
|
8
|
-
|
9
|
-
|
8
|
+
if Jasmine::rspec2?
|
9
|
+
require "rspec"
|
10
|
+
require "rspec/core/rake_task"
|
11
|
+
else
|
12
|
+
require "spec"
|
13
|
+
require 'spec/rake/spectask'
|
14
|
+
end
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
if Jasmine::rspec2?
|
17
|
+
RSpec::Core::RakeTask.new(:jasmine_continuous_integration_runner) do |t|
|
18
|
+
t.rspec_opts = ["--color", "--format", "progress"]
|
19
|
+
t.verbose = true
|
20
|
+
t.pattern = ['spec/javascripts/support/jasmine_runner.rb']
|
21
|
+
end
|
22
|
+
else
|
23
|
+
Spec::Rake::SpecTask.new(:jasmine_continuous_integration_runner) do |t|
|
24
|
+
t.spec_opts = ["--color", "--format", "specdoc"]
|
25
|
+
t.verbose = true
|
26
|
+
t.spec_files = ['spec/javascripts/support/jasmine_runner.rb']
|
27
|
+
end
|
15
28
|
end
|
16
29
|
Rake::Task["jasmine_continuous_integration_runner"].invoke
|
17
30
|
end
|
18
31
|
|
19
32
|
task :server => "jasmine:require" do
|
20
33
|
jasmine_config_overrides = 'spec/javascripts/support/jasmine_config.rb'
|
21
|
-
require jasmine_config_overrides if File.
|
34
|
+
require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
|
22
35
|
|
23
36
|
puts "your tests are here:"
|
24
37
|
puts " http://localhost:8888/"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
|
2
|
+
|
3
|
+
describe "Jasmine bug fixes" do
|
4
|
+
before :each do
|
5
|
+
temp_dir_before
|
6
|
+
Dir::chdir @tmp
|
7
|
+
|
8
|
+
@bootstrap = "$:.unshift('#{@root}/lib')"
|
9
|
+
end
|
10
|
+
|
11
|
+
after :each do
|
12
|
+
temp_dir_after
|
13
|
+
end
|
14
|
+
|
15
|
+
module Foo end
|
16
|
+
describe "require 'json_pure'" do
|
17
|
+
it "should not happen until SeleniumDriver is initialized, which is late enough that it won't conflict with Rails" do
|
18
|
+
json_is_defined = `ruby -e "#{@bootstrap}; require 'jasmine'; puts defined?(JSON)"`
|
19
|
+
json_is_defined.chomp.should == "nil"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should happen when SeleniumDriver is initialized" do
|
23
|
+
json_is_defined = `ruby -e "#{@bootstrap}; require 'jasmine'; Jasmine::SeleniumDriver.new(nil, nil, nil, nil); puts defined?(JSON)"`
|
24
|
+
json_is_defined.chomp.should == "constant"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should not happen if another json implementation is already loaded" do
|
28
|
+
json_is_defined = `ruby -e "#{@bootstrap}; require 'jasmine'; JSON="123"; Jasmine::SeleniumDriver.new(nil, nil, nil, nil); puts defined?(JSON)"`
|
29
|
+
json_is_defined.chomp.should == "constant"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/spec/config_spec.rb
CHANGED
@@ -8,12 +8,16 @@ describe Jasmine::Config do
|
|
8
8
|
temp_dir_before
|
9
9
|
|
10
10
|
Dir::chdir @tmp
|
11
|
-
|
11
|
+
create_rails 'rails-project'
|
12
12
|
Dir::chdir 'rails-project'
|
13
13
|
|
14
14
|
FileUtils.cp_r(File.join(@root, 'generators'), 'vendor')
|
15
15
|
|
16
|
-
|
16
|
+
if rails3?
|
17
|
+
raise Exception.new('rails 3 generators not yet implemented!')
|
18
|
+
else
|
19
|
+
`./script/generate jasmine`
|
20
|
+
end
|
17
21
|
|
18
22
|
Dir::chdir @old_dir
|
19
23
|
|
@@ -73,9 +77,7 @@ describe Jasmine::Config do
|
|
73
77
|
|
74
78
|
it "should parse ERB" do
|
75
79
|
@config.stub!(:simple_config_file).and_return(File.expand_path(File.join(File.dirname(__FILE__), 'fixture/jasmine.erb.yml')))
|
76
|
-
Dir.stub!(:glob).and_return
|
77
|
-
glob_string
|
78
|
-
end
|
80
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
79
81
|
@config.src_files.should == [
|
80
82
|
'file0.js',
|
81
83
|
'file1.js',
|
@@ -110,10 +112,8 @@ describe Jasmine::Config do
|
|
110
112
|
|
111
113
|
describe "should use the first appearance of duplicate filenames" do
|
112
114
|
before(:each) do
|
113
|
-
Dir.stub!(:glob).and_return
|
114
|
-
|
115
|
-
end
|
116
|
-
fake_config = Hash.new.stub!(:[]).and_return(["file1.ext", "file2.ext", "file1.ext"])
|
115
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
116
|
+
fake_config = Hash.new.stub!(:[]).and_return {|x| ["file1.ext", "file2.ext", "file1.ext"]}
|
117
117
|
@config.stub!(:simple_config).and_return(fake_config)
|
118
118
|
end
|
119
119
|
|
@@ -154,9 +154,7 @@ describe Jasmine::Config do
|
|
154
154
|
it "simple_config stylesheets" do
|
155
155
|
@config.stub!(:simple_config_file).and_return(File.join(@template_dir, 'spec/javascripts/support/jasmine.yml'))
|
156
156
|
YAML.stub!(:load).and_return({'stylesheets' => ['foo.css', 'bar.css']})
|
157
|
-
Dir.stub!(:glob).and_return
|
158
|
-
glob_string
|
159
|
-
end
|
157
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
160
158
|
@config.stylesheets.should == ['foo.css', 'bar.css']
|
161
159
|
end
|
162
160
|
|
@@ -11,9 +11,7 @@ describe "Jasmine command line tool" do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should create files on init" do
|
14
|
-
output = capture_stdout
|
15
|
-
Jasmine::CommandLineTool.new.process ["init"]
|
16
|
-
end
|
14
|
+
output = capture_stdout { Jasmine::CommandLineTool.new.process ["init"] }
|
17
15
|
output.should =~ /Jasmine has been installed with example specs./
|
18
16
|
|
19
17
|
my_jasmine_lib = File.expand_path(File.join(@root, "lib"))
|
@@ -23,4 +21,9 @@ describe "Jasmine command line tool" do
|
|
23
21
|
ci_output = `rake -E "#{bootstrap}" --trace jasmine:ci`
|
24
22
|
ci_output.should =~ (/[1-9][0-9]* examples, 0 failures/)
|
25
23
|
end
|
24
|
+
|
25
|
+
it "should include license info" do
|
26
|
+
output = capture_stdout { Jasmine::CommandLineTool.new.process ["license"] }
|
27
|
+
output.should =~ /Copyright/
|
28
|
+
end
|
26
29
|
end
|
@@ -7,10 +7,16 @@ spec_builder = Jasmine::SpecBuilder.new(jasmine_config)
|
|
7
7
|
|
8
8
|
should_stop = false
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
if rspec2?
|
11
|
+
RSpec.configuration.after(:suite) do
|
12
12
|
spec_builder.stop if should_stop
|
13
13
|
end
|
14
|
+
else
|
15
|
+
Spec::Runner.configure do |config|
|
16
|
+
config.after(:suite) do
|
17
|
+
spec_builder.stop if should_stop
|
18
|
+
end
|
19
|
+
end
|
14
20
|
end
|
15
21
|
|
16
22
|
spec_builder.start
|
@@ -11,17 +11,21 @@ describe "Jasmine rails generator" do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should create files on init" do
|
14
|
-
|
15
|
-
|
14
|
+
if rails3? # todo -- get this working
|
15
|
+
raise Exception.new('rails 3 generators not yet implemented!')
|
16
|
+
else
|
17
|
+
create_rails 'rails-project'
|
18
|
+
Dir::chdir 'rails-project'
|
16
19
|
|
17
|
-
|
20
|
+
FileUtils.cp_r(File.join(@root, 'generators'), 'vendor')
|
18
21
|
|
19
|
-
|
20
|
-
|
22
|
+
output = `./script/generate jasmine`
|
23
|
+
output.should =~ /Jasmine has been installed with example specs./
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
bootstrap = "$:.unshift('#{@root}/lib')"
|
26
|
+
ENV['JASMINE_GEM_PATH'] = "#{@root}/lib"
|
27
|
+
ci_output = `rake -E \"#{bootstrap}\" --trace jasmine:ci`
|
28
|
+
ci_output.should =~ (/[1-9][0-9]* examples, 0 failures/)
|
29
|
+
end
|
26
30
|
end
|
27
31
|
end
|
data/spec/server_spec.rb
CHANGED
@@ -43,9 +43,7 @@ describe "Jasmine.app" do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should serve focused suites when prefixing spec files with /__suite__/" do
|
46
|
-
Dir.stub!(:glob).and_return
|
47
|
-
[glob_string]
|
48
|
-
end
|
46
|
+
Dir.stub!(:glob).and_return { |glob_string| [glob_string] }
|
49
47
|
get "/__suite__/file2.js"
|
50
48
|
last_response.status.should == 200
|
51
49
|
last_response.content_type.should == "text/html"
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,36 @@
|
|
1
1
|
require "rubygems"
|
2
2
|
require "bundler"
|
3
3
|
require 'stringio'
|
4
|
+
require 'tmpdir'
|
4
5
|
|
5
6
|
Bundler.setup(:default, :test)
|
6
7
|
|
7
|
-
|
8
|
+
def rspec2?
|
9
|
+
Gem.available? "rspec", ">= 2.0"
|
10
|
+
end
|
11
|
+
|
12
|
+
def rails3?
|
13
|
+
Gem.available? "rails", ">= 3.0"
|
14
|
+
end
|
15
|
+
|
16
|
+
if rspec2?
|
17
|
+
require 'rspec'
|
18
|
+
else
|
19
|
+
require 'spec'
|
20
|
+
end
|
8
21
|
|
9
22
|
$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "../lib")))
|
10
23
|
|
11
24
|
require "jasmine"
|
12
25
|
|
26
|
+
def create_rails(name)
|
27
|
+
if rails3?
|
28
|
+
`rails new #{name}`
|
29
|
+
else
|
30
|
+
`rails #{name}`
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
13
34
|
def create_temp_dir
|
14
35
|
tmp = File.join(Dir.tmpdir, 'jasmine-gem-test')
|
15
36
|
FileUtils.rm_r(tmp, :force => true)
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 89
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
9
|
- 1
|
10
|
-
|
10
|
+
- 1
|
11
|
+
version: 1.0.1.1
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- Rajan Agaskar
|
@@ -17,7 +18,7 @@ autorequire:
|
|
17
18
|
bindir: bin
|
18
19
|
cert_chain: []
|
19
20
|
|
20
|
-
date: 2010-
|
21
|
+
date: 2010-11-09 00:00:00 -05:00
|
21
22
|
default_executable: jasmine
|
22
23
|
dependencies:
|
23
24
|
- !ruby/object:Gem::Dependency
|
@@ -125,6 +126,7 @@ extensions: []
|
|
125
126
|
extra_rdoc_files:
|
126
127
|
- README.markdown
|
127
128
|
files:
|
129
|
+
- MIT.LICENSE
|
128
130
|
- generators/jasmine/jasmine_generator.rb
|
129
131
|
- generators/jasmine/templates/INSTALL
|
130
132
|
- generators/jasmine/templates/jasmine-example/SpecRunner.html
|
@@ -151,6 +153,7 @@ files:
|
|
151
153
|
- lib/jasmine/spec_builder.rb
|
152
154
|
- lib/jasmine/tasks/jasmine.rake
|
153
155
|
- README.markdown
|
156
|
+
- spec/bug_fixes_spec.rb
|
154
157
|
- spec/config_spec.rb
|
155
158
|
- spec/jasmine_command_line_tool_spec.rb
|
156
159
|
- spec/jasmine_self_test_config.rb
|
@@ -194,6 +197,7 @@ signing_key:
|
|
194
197
|
specification_version: 3
|
195
198
|
summary: Jasmine Runner for Ruby
|
196
199
|
test_files:
|
200
|
+
- spec/bug_fixes_spec.rb
|
197
201
|
- spec/config_spec.rb
|
198
202
|
- spec/jasmine_command_line_tool_spec.rb
|
199
203
|
- spec/jasmine_self_test_config.rb
|