jasmine-headless-webkit 0.4.2 → 0.5.0
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/ext/jasmine-webkit-specrunner/specrunner.cpp +12 -2
- data/jasmine-headless-webkit.gemspec +1 -1
- data/lib/jasmine/files_list.rb +4 -4
- data/lib/jasmine/headless/errors.rb +3 -0
- data/lib/jasmine/headless/task.rb +20 -8
- data/lib/jasmine-headless-webkit/version.rb +1 -1
- data/spec/bin/jasmine-headless-webkit_spec.rb +11 -1
- data/spec/jasmine/filtered_success_with_console/filtered_success.yml +10 -0
- data/spec/jasmine/filtered_success_with_console/src.js +0 -0
- data/spec/jasmine/filtered_success_with_console/success_one_spec.js +7 -0
- data/spec/jasmine/filtered_success_with_console/success_two_spec.js +6 -0
- data/spec/lib/jasmine/files_list_spec.rb +28 -3
- data/spec/lib/jasmine/headless/options_spec.rb +32 -0
- data/spec/lib/jasmine/headless/task_spec.rb +76 -0
- metadata +14 -4
@@ -319,11 +319,21 @@ void HeadlessSpecRunner::timerEvent(QTimerEvent *event)
|
|
319
319
|
}
|
320
320
|
}
|
321
321
|
|
322
|
-
|
323
|
-
|
322
|
+
bool runAgain = true;
|
323
|
+
|
324
|
+
if (runnerFiles.count() == 0) {
|
325
|
+
runAgain = false;
|
324
326
|
} else {
|
327
|
+
if (exitCode == 1) {
|
328
|
+
runAgain = false;
|
329
|
+
}
|
330
|
+
}
|
331
|
+
|
332
|
+
if (runAgain) {
|
325
333
|
isFinished = false;
|
326
334
|
loadSpec();
|
335
|
+
} else {
|
336
|
+
QApplication::instance()->exit(exitCode);
|
327
337
|
}
|
328
338
|
}
|
329
339
|
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
21
|
s.require_paths = ["lib"]
|
22
22
|
|
23
|
-
s.add_dependency 'jasmine'
|
23
|
+
s.add_dependency 'jasmine', '~>1.1.beta'
|
24
24
|
s.add_dependency 'coffee-script', '>= 2.2'
|
25
25
|
s.add_dependency 'rainbow'
|
26
26
|
end
|
data/lib/jasmine/files_list.rb
CHANGED
@@ -14,8 +14,8 @@ module Jasmine
|
|
14
14
|
attr_reader :files, :filtered_files, :spec_outside_scope
|
15
15
|
|
16
16
|
DEFAULT_FILES = [
|
17
|
-
File.join(Jasmine.
|
18
|
-
File.join(Jasmine.
|
17
|
+
File.join(Jasmine::Core.path, "jasmine.js"),
|
18
|
+
File.join(Jasmine::Core.path, "jasmine-html.js"),
|
19
19
|
File.expand_path('../../../jasmine/jasmine.headless-reporter.js', __FILE__)
|
20
20
|
]
|
21
21
|
|
@@ -99,7 +99,7 @@ module Jasmine
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def spec_filter
|
102
|
-
@options[:only]
|
102
|
+
@spec_filter ||= (@options[:only] ? @options[:only].collect { |path| Dir[path] }.flatten : [])
|
103
103
|
end
|
104
104
|
|
105
105
|
def use_config!
|
@@ -117,7 +117,7 @@ module Jasmine
|
|
117
117
|
|
118
118
|
@filtered_files += (if searches == 'spec_files'
|
119
119
|
@spec_outside_scope = ((spec_filter | found_files).sort != found_files.sort)
|
120
|
-
spec_filter || found_files
|
120
|
+
spec_filter.empty? ? found_files : (spec_filter || found_files)
|
121
121
|
else
|
122
122
|
found_files
|
123
123
|
end)
|
@@ -9,7 +9,7 @@ module Digest
|
|
9
9
|
def file(file)
|
10
10
|
self
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def hexdigest
|
14
14
|
'test'
|
15
15
|
end
|
@@ -35,14 +35,13 @@ module Jasmine
|
|
35
35
|
yield self if block_given?
|
36
36
|
|
37
37
|
desc 'Run Jasmine specs headlessly'
|
38
|
-
task
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
:jasmine_config => @jasmine_config
|
43
|
-
)
|
44
|
-
end
|
38
|
+
task(name) { run_rake_task }
|
39
|
+
|
40
|
+
create_rails_compliant_task if defined?(Rails)
|
41
|
+
end
|
45
42
|
|
43
|
+
private
|
44
|
+
def create_rails_compliant_task
|
46
45
|
if Rails.version >= "3.1.0"
|
47
46
|
desc 'Force generate static assets without an MD5 hash, all assets end with -test.<ext>'
|
48
47
|
task 'assets:precompile:for_testing' => :environment do
|
@@ -52,6 +51,19 @@ module Jasmine
|
|
52
51
|
end
|
53
52
|
end
|
54
53
|
end
|
54
|
+
|
55
|
+
def run_rake_task
|
56
|
+
case Jasmine::Headless::Runner.run(
|
57
|
+
:colors => colors,
|
58
|
+
:remove_html_file => !@keep_on_error,
|
59
|
+
:jasmine_config => @jasmine_config
|
60
|
+
)
|
61
|
+
when 1
|
62
|
+
raise Jasmine::Headless::TestFailure
|
63
|
+
when 2
|
64
|
+
raise Jasmine::Headless::ConsoleLogUsage
|
65
|
+
end
|
66
|
+
end
|
55
67
|
end
|
56
68
|
end
|
57
69
|
end
|
@@ -26,7 +26,10 @@ describe "jasmine-headless-webkit" do
|
|
26
26
|
system %{bin/jasmine-headless-webkit -j spec/jasmine/success_with_error/success_with_error.yml --report #{report}}
|
27
27
|
$?.exitstatus.should == 1
|
28
28
|
|
29
|
-
|
29
|
+
# returns are unpredictable due to changes in jasmine! >.<
|
30
|
+
# all we can do is ensure that we've actually failed
|
31
|
+
#
|
32
|
+
# report.should be_a_report_containing(0, 0, false)
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
@@ -88,6 +91,13 @@ describe "jasmine-headless-webkit" do
|
|
88
91
|
|
89
92
|
report.should be_a_report_containing(2, 0, false)
|
90
93
|
end
|
94
|
+
|
95
|
+
it "should succeed and run both, with the first having a console.log call" do
|
96
|
+
system %{bin/jasmine-headless-webkit -j spec/jasmine/filtered_success_with_console/filtered_success.yml --report #{report} ./spec/jasmine/filtered_success_with_console/success_one_spec.js}
|
97
|
+
$?.exitstatus.should == 2
|
98
|
+
|
99
|
+
report.should be_a_report_containing(2, 0, true)
|
100
|
+
end
|
91
101
|
end
|
92
102
|
end
|
93
103
|
end
|
File without changes
|
@@ -9,8 +9,8 @@ describe Jasmine::FilesList do
|
|
9
9
|
describe '#initialize' do
|
10
10
|
it "should have default files" do
|
11
11
|
files_list.files.should == [
|
12
|
-
File.join(Jasmine.
|
13
|
-
File.join(Jasmine.
|
12
|
+
File.join(Jasmine::Core.path, "jasmine.js"),
|
13
|
+
File.join(Jasmine::Core.path, "jasmine-html.js"),
|
14
14
|
File.expand_path('jasmine/jasmine.headless-reporter.js')
|
15
15
|
]
|
16
16
|
end
|
@@ -68,11 +68,21 @@ describe Jasmine::FilesList do
|
|
68
68
|
} }
|
69
69
|
|
70
70
|
before do
|
71
|
-
%w{one_spec.js two_spec.js}.each do |file|
|
71
|
+
%w{one_spec.js two_spec.js whatever.js}.each do |file|
|
72
72
|
File.open(File.join(spec_dir, file), 'w')
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
|
+
context 'empty filter' do
|
77
|
+
let(:filter) { [] }
|
78
|
+
|
79
|
+
it 'should return all files for filtered and all files' do
|
80
|
+
files_list.files.any? { |file| file['two_spec.js'] }.should be_true
|
81
|
+
files_list.filtered?.should be_false
|
82
|
+
files_list.should_not have_spec_outside_scope
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
76
86
|
context 'filter with a file that is matchable' do
|
77
87
|
let(:filter) { [ File.expand_path('spec/one_spec.js') ] }
|
78
88
|
|
@@ -88,6 +98,21 @@ describe Jasmine::FilesList do
|
|
88
98
|
end
|
89
99
|
end
|
90
100
|
|
101
|
+
context 'filter with a glob' do
|
102
|
+
let(:filter) { [ File.expand_path('spec/one*') ] }
|
103
|
+
|
104
|
+
it 'should return all files for files' do
|
105
|
+
files_list.files.any? { |file| file['two_spec.js'] }.should be_true
|
106
|
+
files_list.filtered?.should be_true
|
107
|
+
files_list.should_not have_spec_outside_scope
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'should return only filtered files for filtered_files' do
|
111
|
+
files_list.filtered_files.any? { |file| file['two_spec.js'] }.should be_false
|
112
|
+
files_list.should_not have_spec_outside_scope
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
91
116
|
context 'filter with a file that is not even there' do
|
92
117
|
let(:filter) { [ File.expand_path('spec/whatever.js') ] }
|
93
118
|
|
@@ -66,4 +66,36 @@ describe Jasmine::Headless::Options do
|
|
66
66
|
options[:jasmine_config].should == 'test'
|
67
67
|
end
|
68
68
|
end
|
69
|
+
|
70
|
+
describe '.from_command_line' do
|
71
|
+
before do
|
72
|
+
@argv = ARGV.dup
|
73
|
+
end
|
74
|
+
|
75
|
+
let(:options) { described_class.from_command_line }
|
76
|
+
|
77
|
+
context 'no files specified' do
|
78
|
+
before do
|
79
|
+
ARGV.replace([])
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should have no files' do
|
83
|
+
options[:files].should == []
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context 'files specified' do
|
88
|
+
before do
|
89
|
+
ARGV.replace([ "test" ])
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'should have files' do
|
93
|
+
options[:files].should == [ "test" ]
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
after do
|
98
|
+
ARGV.replace(@argv)
|
99
|
+
end
|
100
|
+
end
|
69
101
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'fakefs/spec_helpers'
|
3
|
+
require 'jasmine/headless/task'
|
4
|
+
require 'mocha'
|
5
|
+
|
6
|
+
describe Jasmine::Headless::Task do
|
7
|
+
before do
|
8
|
+
Jasmine::Headless::Task.any_instance.stubs(:desc)
|
9
|
+
Jasmine::Headless::Task.any_instance.stubs(:task)
|
10
|
+
end
|
11
|
+
|
12
|
+
after do
|
13
|
+
Object.send(:remove_const, :Rails) if defined?(Rails)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'define task' do
|
17
|
+
context 'without Rails' do
|
18
|
+
it 'should not explode when Rails is undefined' do
|
19
|
+
Jasmine::Headless::Task.new('jasmine:headless')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'with Rails' do
|
24
|
+
before do
|
25
|
+
module Rails
|
26
|
+
def self.version
|
27
|
+
return "0"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should be OK if rails is defined' do
|
33
|
+
Jasmine::Headless::Task.new('jasmine:headless')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe 'jasmine:headless integration test' do
|
39
|
+
context 'with successful test' do
|
40
|
+
let(:test) do
|
41
|
+
described_class.new do |t|
|
42
|
+
t.jasmine_config = "spec/jasmine/success/success.yml"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should do nothing on success' do
|
47
|
+
expect { test.send(:run_rake_task) }.to_not raise_error
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'with failing test' do
|
52
|
+
let(:test) do
|
53
|
+
described_class.new do |t|
|
54
|
+
t.jasmine_config = "spec/jasmine/failure/failure.yml"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should raise an exception on failure' do
|
59
|
+
expect { test.send(:run_rake_task) }.to raise_error(Jasmine::Headless::TestFailure)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'with console.log using test' do
|
64
|
+
let(:test) do
|
65
|
+
described_class.new do |t|
|
66
|
+
t.jasmine_config = "spec/jasmine/console_log/console_log.yml"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should raise an exception on console.log usage' do
|
71
|
+
expect { test.send(:run_rake_task) }.to raise_error(Jasmine::Headless::ConsoleLogUsage)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jasmine-headless-webkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.5.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John Bintz
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2011-
|
15
|
+
date: 2011-07-12 00:00:00 -04:00
|
16
16
|
default_executable:
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -21,9 +21,9 @@ dependencies:
|
|
21
21
|
requirement: &id001 !ruby/object:Gem::Requirement
|
22
22
|
none: false
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 1.1.beta
|
27
27
|
type: :runtime
|
28
28
|
version_requirements: *id001
|
29
29
|
- !ruby/object:Gem::Dependency
|
@@ -105,6 +105,10 @@ files:
|
|
105
105
|
- spec/jasmine/filtered_success/success_one_spec.js
|
106
106
|
- spec/jasmine/filtered_success/success_other_file.js
|
107
107
|
- spec/jasmine/filtered_success/success_two_spec.js
|
108
|
+
- spec/jasmine/filtered_success_with_console/filtered_success.yml
|
109
|
+
- spec/jasmine/filtered_success_with_console/src.js
|
110
|
+
- spec/jasmine/filtered_success_with_console/success_one_spec.js
|
111
|
+
- spec/jasmine/filtered_success_with_console/success_two_spec.js
|
108
112
|
- spec/jasmine/success/success.js
|
109
113
|
- spec/jasmine/success/success.yml
|
110
114
|
- spec/jasmine/success/success_spec.js
|
@@ -114,6 +118,7 @@ files:
|
|
114
118
|
- spec/lib/jasmine/files_list_spec.rb
|
115
119
|
- spec/lib/jasmine/headless/options_spec.rb
|
116
120
|
- spec/lib/jasmine/headless/runner_spec.rb
|
121
|
+
- spec/lib/jasmine/headless/task_spec.rb
|
117
122
|
- spec/lib/jasmine/template_writer_spec.rb
|
118
123
|
- spec/spec_helper.rb
|
119
124
|
has_rdoc: true
|
@@ -164,6 +169,10 @@ test_files:
|
|
164
169
|
- spec/jasmine/filtered_success/success_one_spec.js
|
165
170
|
- spec/jasmine/filtered_success/success_other_file.js
|
166
171
|
- spec/jasmine/filtered_success/success_two_spec.js
|
172
|
+
- spec/jasmine/filtered_success_with_console/filtered_success.yml
|
173
|
+
- spec/jasmine/filtered_success_with_console/src.js
|
174
|
+
- spec/jasmine/filtered_success_with_console/success_one_spec.js
|
175
|
+
- spec/jasmine/filtered_success_with_console/success_two_spec.js
|
167
176
|
- spec/jasmine/success/success.js
|
168
177
|
- spec/jasmine/success/success.yml
|
169
178
|
- spec/jasmine/success/success_spec.js
|
@@ -173,5 +182,6 @@ test_files:
|
|
173
182
|
- spec/lib/jasmine/files_list_spec.rb
|
174
183
|
- spec/lib/jasmine/headless/options_spec.rb
|
175
184
|
- spec/lib/jasmine/headless/runner_spec.rb
|
185
|
+
- spec/lib/jasmine/headless/task_spec.rb
|
176
186
|
- spec/lib/jasmine/template_writer_spec.rb
|
177
187
|
- spec/spec_helper.rb
|