guard-jasmine-headless-webkit 0.1.0 → 0.2.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/Gemfile +1 -0
- data/Guardfile +1 -1
- data/README.md +22 -3
- data/Rakefile +2 -0
- data/guard-jasmine-headless-webkit.gemspec +2 -2
- data/lib/guard/jasmine-headless-webkit.rb +35 -19
- data/lib/guard/jasmine-headless-webkit/runner.rb +3 -2
- data/lib/guard/jasmine-headless-webkit/version.rb +1 -1
- data/spec/lib/guard/jasmine-headless-webkit/runner_spec.rb +10 -0
- data/spec/lib/guard/jasmine-headless-webkit_spec.rb +13 -30
- metadata +35 -48
data/Gemfile
CHANGED
data/Guardfile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# A sample Guardfile
|
2
2
|
# More info at https://github.com/guard/guard#readme
|
3
3
|
|
4
|
-
guard 'rspec', :version => 2 do
|
4
|
+
guard 'rspec', :cli => '-c', :version => 2 do
|
5
5
|
watch(%r{^spec/.+_spec\.rb})
|
6
6
|
watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
7
|
watch('spec/spec_helper.rb') { "spec" }
|
data/README.md
CHANGED
@@ -15,9 +15,28 @@ home folder's `.jasmine-headless-webkit` file.
|
|
15
15
|
## `guard` options
|
16
16
|
|
17
17
|
* `:all_on_start => false` to not run everything when starting, just like `guard-rspec`.
|
18
|
-
* `:run_before => "<command to run
|
19
|
-
* `:
|
20
|
-
|
18
|
+
* `:run_before => "<command to run>"` to run a command before running specs. If the command fails, the test run stops.
|
19
|
+
* `:valid_extensions => %w{js coffee}` to only trigger `run_on_change` events for files with these extensions. Forces Guard to re-run all tests when any other matched file changes.
|
20
|
+
|
21
|
+
## Using with Rails 3.1 and the Asset Pipeline and/or Jammit
|
22
|
+
|
23
|
+
Use [`guard-rails-assets`](https://github.com/dnagir/guard-rails-assets) chained in before `guard-jasmine-headless-webkit` to precompile your application
|
24
|
+
code for testing:
|
25
|
+
|
26
|
+
guard 'rails-assets' do
|
27
|
+
watch(%r{^app/assets/javascripts/.*})
|
28
|
+
end
|
29
|
+
|
30
|
+
guard 'jasmine-headless-webkit' do
|
31
|
+
watch(%r{^public/assets/.*\.js})
|
32
|
+
... specs ...
|
33
|
+
end
|
34
|
+
|
35
|
+
Do the same for Jammit, using [`guard-jammit`](http://github.com/guard/guard-jammit).
|
36
|
+
|
37
|
+
### `guard-jammit` and Jammit >= 0.6.0
|
38
|
+
|
39
|
+
Jammit >= 0.6.0 changed how it determines the Rails environment. Use [my fork of `guard-jammit`](http://github.com/johnbintz/guard-jammit) until it's fixed upstream.
|
21
40
|
|
22
41
|
## What's the deal with `newest_js_file`?
|
23
42
|
|
data/Rakefile
CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
|
-
s.add_dependency 'guard', '>= 0.
|
23
|
-
s.add_dependency 'jasmine-headless-webkit', '>= 0.
|
22
|
+
s.add_dependency 'guard', '>= 0.4.0'
|
23
|
+
s.add_dependency 'jasmine-headless-webkit', '>= 0.3.0'
|
24
24
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'guard'
|
2
2
|
require 'guard/guard'
|
3
3
|
require 'guard/jasmine-headless-webkit/runner'
|
4
|
+
require 'coffee-script'
|
4
5
|
|
5
6
|
module Guard
|
6
7
|
class JasmineHeadlessWebkit < Guard
|
@@ -21,26 +22,32 @@ module Guard
|
|
21
22
|
end
|
22
23
|
|
23
24
|
def run_all
|
24
|
-
|
25
|
-
|
25
|
+
run_something_and_rescue do
|
26
|
+
UI.info "Guard::JasmineHeadlessWebkit running all specs..."
|
27
|
+
JasmineHeadlessWebkitRunner.run if run_all_things_before
|
28
|
+
@ran_before = false
|
29
|
+
end
|
26
30
|
end
|
27
31
|
|
28
32
|
def run_on_change(paths)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
run_something_and_rescue do
|
34
|
+
paths = filter_paths(paths)
|
35
|
+
@ran_before = false
|
36
|
+
if run_all_things_before
|
37
|
+
@ran_before = true
|
38
|
+
if !paths.empty?
|
39
|
+
UI.info "Guard::JasmineHeadlessWebkit running the following: #{paths.join(' ')}"
|
40
|
+
JasmineHeadlessWebkitRunner.run(paths)
|
41
|
+
else
|
42
|
+
run_all
|
43
|
+
end
|
36
44
|
end
|
37
|
-
run_all if do_run_all
|
38
45
|
end
|
39
46
|
end
|
40
47
|
|
41
48
|
private
|
42
49
|
def filter_paths(paths)
|
43
|
-
paths.find_all { |path| File.extname(path)[valid_extensions] }
|
50
|
+
paths.find_all { |path| File.extname(path)[valid_extensions] }.uniq
|
44
51
|
end
|
45
52
|
|
46
53
|
def valid_extensions
|
@@ -48,27 +55,36 @@ module Guard
|
|
48
55
|
end
|
49
56
|
|
50
57
|
def run_before
|
51
|
-
|
52
|
-
run_program(@options[:run_before])
|
53
|
-
else
|
54
|
-
true
|
55
|
-
end
|
58
|
+
run_a_thing_before(:run_before, @options[:run_before])
|
56
59
|
end
|
57
60
|
|
58
|
-
def
|
59
|
-
if @options[
|
60
|
-
run_program(
|
61
|
+
def run_a_thing_before(option, *args)
|
62
|
+
if @options[option] && !@ran_before
|
63
|
+
run_program(*args)
|
61
64
|
else
|
62
65
|
true
|
63
66
|
end
|
64
67
|
end
|
65
68
|
|
69
|
+
def run_all_things_before
|
70
|
+
run_before
|
71
|
+
end
|
72
|
+
|
66
73
|
def run_program(name, command = nil)
|
67
74
|
command ||= name
|
68
75
|
UI.info "Guard::JasmineHeadlessWebkit running #{name}..."
|
69
76
|
system command
|
70
77
|
$?.exitstatus == 0
|
71
78
|
end
|
79
|
+
|
80
|
+
def run_something_and_rescue
|
81
|
+
yield
|
82
|
+
rescue ::CoffeeScript::CompilationError
|
83
|
+
rescue StandardError => e
|
84
|
+
puts e.message
|
85
|
+
puts e.backtrace.join("\n")
|
86
|
+
puts
|
87
|
+
end
|
72
88
|
end
|
73
89
|
|
74
90
|
class Dsl
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'guard/notifier'
|
2
|
+
require 'jasmine/headless/runner'
|
2
3
|
|
3
4
|
module Guard
|
4
5
|
class JasmineHeadlessWebkitRunner
|
@@ -7,7 +8,7 @@ module Guard
|
|
7
8
|
file = Tempfile.new('guard-jasmine-headless-webkit')
|
8
9
|
file.close
|
9
10
|
|
10
|
-
|
11
|
+
Jasmine::Headless::Runner.run(:report => file.path, :colors => true, :files => paths)
|
11
12
|
|
12
13
|
notify(file.path)
|
13
14
|
end
|
@@ -16,7 +17,7 @@ module Guard
|
|
16
17
|
if (data = File.read(file).strip).empty?
|
17
18
|
Notifier.notify('Spec runner interrupted!', :title => 'Jasmine results', :image => :failed)
|
18
19
|
else
|
19
|
-
total, fails, any_console, secs =
|
20
|
+
total, fails, any_console, secs = data.lines.first.strip.split('/')
|
20
21
|
|
21
22
|
Notifier.notify(message(total, fails, secs, any_console == "T"), :title => 'Jasmine results', :image => image(any_console == "T", fails))
|
22
23
|
fails.to_i
|
@@ -22,6 +22,16 @@ describe Guard::JasmineHeadlessWebkitRunner do
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
context 'with failures' do
|
26
|
+
let(:data) { "1/0/F/5\nThis||Is||A||Failure\n" }
|
27
|
+
|
28
|
+
it 'should notify with the right information' do
|
29
|
+
Guard::Notifier.expects(:notify).with("1 test, 0 failures, 5 secs.", { :title => 'Jasmine results', :image => :success })
|
30
|
+
|
31
|
+
Guard::JasmineHeadlessWebkitRunner.notify(file)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
25
35
|
context 'system run interrupted' do
|
26
36
|
let(:data) { '' }
|
27
37
|
|
@@ -27,6 +27,15 @@ describe Guard::JasmineHeadlessWebkit do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
describe '#run_on_change' do
|
30
|
+
context 'two files' do
|
31
|
+
it "should only run one" do
|
32
|
+
Guard::JasmineHeadlessWebkitRunner.expects(:run).with(%w{test.js}).returns(1)
|
33
|
+
guard.expects(:run_all).never
|
34
|
+
|
35
|
+
guard.run_on_change(%w{test.js test.js})
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
30
39
|
context 'jhw call fails' do
|
31
40
|
it "should not run all" do
|
32
41
|
Guard::JasmineHeadlessWebkitRunner.expects(:run).returns(1)
|
@@ -36,10 +45,10 @@ describe Guard::JasmineHeadlessWebkit do
|
|
36
45
|
end
|
37
46
|
end
|
38
47
|
|
39
|
-
context 'succeed, run all' do
|
48
|
+
context 'succeed, but still do not run all' do
|
40
49
|
it "should run all" do
|
41
50
|
Guard::JasmineHeadlessWebkitRunner.expects(:run).returns(0)
|
42
|
-
guard.expects(:run_all).
|
51
|
+
guard.expects(:run_all).never
|
43
52
|
|
44
53
|
guard.run_on_change(%w{test.js})
|
45
54
|
end
|
@@ -69,6 +78,7 @@ describe Guard::JasmineHeadlessWebkit do
|
|
69
78
|
before do
|
70
79
|
Guard::JasmineHeadlessWebkitRunner.expects(:run).never
|
71
80
|
Guard::UI.expects(:info).with(regexp_matches(/false/))
|
81
|
+
Guard::UI.expects(:info).with(regexp_matches(/running all/))
|
72
82
|
end
|
73
83
|
|
74
84
|
let(:options) { { :run_before => 'false' } }
|
@@ -82,6 +92,7 @@ describe Guard::JasmineHeadlessWebkit do
|
|
82
92
|
before do
|
83
93
|
Guard::JasmineHeadlessWebkitRunner.expects(:run).once
|
84
94
|
Guard::UI.expects(:info).with(regexp_matches(/true/))
|
95
|
+
Guard::UI.expects(:info).with(regexp_matches(/running all/))
|
85
96
|
end
|
86
97
|
|
87
98
|
let(:options) { { :run_before => 'true' } }
|
@@ -91,32 +102,4 @@ describe Guard::JasmineHeadlessWebkit do
|
|
91
102
|
end
|
92
103
|
end
|
93
104
|
end
|
94
|
-
|
95
|
-
describe 'run jammit first' do
|
96
|
-
context 'run on run_all if called first' do
|
97
|
-
before do
|
98
|
-
guard.expects(:run_program).once.returns(true)
|
99
|
-
Guard::JasmineHeadlessWebkitRunner.expects(:run).once
|
100
|
-
end
|
101
|
-
|
102
|
-
let(:options) { { :jammit => true } }
|
103
|
-
|
104
|
-
it "should run jammit first" do
|
105
|
-
guard.run_all
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
context 'only run once if run_on_change is successful' do
|
110
|
-
before do
|
111
|
-
guard.expects(:run_program).once.returns(true)
|
112
|
-
Guard::JasmineHeadlessWebkitRunner.expects(:run).twice.returns(0)
|
113
|
-
end
|
114
|
-
|
115
|
-
let(:options) { { :jammit => true } }
|
116
|
-
|
117
|
-
it "should run jammit only once" do
|
118
|
-
guard.run_on_change(%w{path.js})
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
105
|
end
|
metadata
CHANGED
@@ -1,50 +1,46 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: guard-jasmine-headless-webkit
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- John Bintz
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-06-07 00:00:00 -04:00
|
12
|
+
date: 2011-08-05 00:00:00.000000000 -04:00
|
14
13
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: guard
|
18
|
-
requirement: &
|
17
|
+
requirement: &2166408320 !ruby/object:Gem::Requirement
|
19
18
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.4.0
|
24
23
|
type: :runtime
|
25
24
|
prerelease: false
|
26
|
-
version_requirements: *
|
27
|
-
- !ruby/object:Gem::Dependency
|
25
|
+
version_requirements: *2166408320
|
26
|
+
- !ruby/object:Gem::Dependency
|
28
27
|
name: jasmine-headless-webkit
|
29
|
-
requirement: &
|
28
|
+
requirement: &2166407820 !ruby/object:Gem::Requirement
|
30
29
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 0.
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.3.0
|
35
34
|
type: :runtime
|
36
35
|
prerelease: false
|
37
|
-
version_requirements: *
|
36
|
+
version_requirements: *2166407820
|
38
37
|
description: Run jasmine-headless-webkit using guard
|
39
|
-
email:
|
38
|
+
email:
|
40
39
|
- john@coswellproductions.com
|
41
40
|
executables: []
|
42
|
-
|
43
41
|
extensions: []
|
44
|
-
|
45
42
|
extra_rdoc_files: []
|
46
|
-
|
47
|
-
files:
|
43
|
+
files:
|
48
44
|
- .gitignore
|
49
45
|
- Gemfile
|
50
46
|
- Guardfile
|
@@ -59,40 +55,31 @@ files:
|
|
59
55
|
- spec/lib/guard/jasmine-headless-webkit_spec.rb
|
60
56
|
- spec/spec_helper.rb
|
61
57
|
has_rdoc: true
|
62
|
-
homepage:
|
58
|
+
homepage: ''
|
63
59
|
licenses: []
|
64
|
-
|
65
60
|
post_install_message:
|
66
61
|
rdoc_options: []
|
67
|
-
|
68
|
-
require_paths:
|
62
|
+
require_paths:
|
69
63
|
- lib
|
70
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
65
|
none: false
|
72
|
-
requirements:
|
73
|
-
- -
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
|
77
|
-
- 0
|
78
|
-
version: "0"
|
79
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
71
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
88
76
|
requirements: []
|
89
|
-
|
90
77
|
rubyforge_project: guard-jasmine-headless-webkit
|
91
78
|
rubygems_version: 1.6.2
|
92
79
|
signing_key:
|
93
80
|
specification_version: 3
|
94
81
|
summary: Run jasmine-headless-webkit using guard
|
95
|
-
test_files:
|
82
|
+
test_files:
|
96
83
|
- spec/lib/guard/jasmine-headless-webkit/runner_spec.rb
|
97
84
|
- spec/lib/guard/jasmine-headless-webkit_spec.rb
|
98
85
|
- spec/spec_helper.rb
|