guard-jasmine-headless-webkit 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|