jasmine 1.0.1 → 1.0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|