konacha 1.4.1 → 1.4.2
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/History.md +7 -0
- data/README.md +26 -12
- data/config/routes.rb +2 -2
- data/konacha.gemspec +2 -1
- data/lib/assets/javascripts/konacha/runner.js +9 -0
- data/lib/konacha/engine.rb +5 -1
- data/lib/konacha/runner.rb +35 -6
- data/spec/dummy/spec/javascripts/pending_spec.js +3 -0
- data/spec/runner_spec.rb +7 -2
- data/vendor/assets/javascripts/chai.js +3218 -3210
- metadata +20 -2
data/History.md
CHANGED
data/README.md
CHANGED
@@ -25,7 +25,7 @@ Add konacha to the `:test` and `:development` groups in the Gemfile and `bundle
|
|
25
25
|
|
26
26
|
```ruby
|
27
27
|
group :test, :development do
|
28
|
-
gem
|
28
|
+
gem 'konacha'
|
29
29
|
end
|
30
30
|
```
|
31
31
|
|
@@ -70,23 +70,37 @@ describe "Array#sum", ->
|
|
70
70
|
|
71
71
|
## Running (Rake Tasks)
|
72
72
|
|
73
|
-
###
|
73
|
+
### In the Browser
|
74
74
|
|
75
|
-
|
76
|
-
page to run all specs (e.g. `http://localhost:3500/`), a sub page to run an individual
|
77
|
-
spec file (e.g. `http://localhost:3500/array_sum_spec`), or a path to a subdirectory to
|
78
|
-
run a subset of specs (e.g. `http://localhost:3500/models`).
|
75
|
+
To start a server for your tests, type:
|
79
76
|
|
80
|
-
|
77
|
+
```
|
78
|
+
$ bundle exec rake konacha:serve
|
79
|
+
```
|
80
|
+
|
81
|
+
Then open [http://localhost:3500](http://localhost:3500) in your browser, and
|
82
|
+
you will see all your tests running. You can also go to a sub-page to run an
|
83
|
+
individual spec file (e.g. `http://localhost:3500/array_sum_spec`), or a path
|
84
|
+
to a subdirectory to run a subset of specs (e.g.
|
85
|
+
`http://localhost:3500/models`).
|
86
|
+
|
87
|
+
This is the recommended mode for development, since you can simply hit refresh
|
88
|
+
to reload all your test and asset files.
|
81
89
|
|
82
|
-
|
90
|
+
### Command-Line Runner
|
91
|
+
|
92
|
+
To run your tests from the command line, type:
|
93
|
+
|
94
|
+
```
|
95
|
+
$ bundle exec rake konacha:run
|
96
|
+
```
|
83
97
|
|
84
|
-
To run individual specs, pass a comma seperated list of spec file names via
|
85
|
-
`SPEC` environment variable.
|
98
|
+
To run individual specs, pass a comma seperated list of spec file names via
|
99
|
+
the `SPEC` environment variable.
|
86
100
|
|
87
101
|
```
|
88
|
-
$ rake konacha:run SPEC=foo_spec
|
89
|
-
$ rake konacha:run SPEC=foo_spec,bar_spec,etc_spec
|
102
|
+
$ bundle exec rake konacha:run SPEC=foo_spec
|
103
|
+
$ bundle exec rake konacha:run SPEC=foo_spec,bar_spec,etc_spec
|
90
104
|
```
|
91
105
|
|
92
106
|
## Spec Helper
|
data/config/routes.rb
CHANGED
data/konacha.gemspec
CHANGED
@@ -17,12 +17,13 @@ the asset pipeline and engines.}
|
|
17
17
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
gem.name = "konacha"
|
19
19
|
gem.require_paths = ["lib"]
|
20
|
-
gem.version = "1.4.
|
20
|
+
gem.version = "1.4.2"
|
21
21
|
|
22
22
|
gem.add_dependency "railties", "~> 3.1"
|
23
23
|
gem.add_dependency "actionpack", "~> 3.1"
|
24
24
|
gem.add_dependency "sprockets"
|
25
25
|
gem.add_dependency "capybara"
|
26
|
+
gem.add_dependency "colorize"
|
26
27
|
|
27
28
|
gem.add_development_dependency "jquery-rails"
|
28
29
|
gem.add_development_dependency "rspec-rails"
|
@@ -29,6 +29,15 @@ window.Konacha = {
|
|
29
29
|
});
|
30
30
|
});
|
31
31
|
|
32
|
+
runner.on('pending', function (test) {
|
33
|
+
Konacha.dots += "P";
|
34
|
+
Konacha.results.push({
|
35
|
+
name:test.title,
|
36
|
+
passed:false,
|
37
|
+
pending:true
|
38
|
+
});
|
39
|
+
});
|
40
|
+
|
32
41
|
runner.on('end', function () {
|
33
42
|
Konacha.done = true;
|
34
43
|
});
|
data/lib/konacha/engine.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module Konacha
|
2
2
|
class Engine < Rails::Engine
|
3
|
+
# Do not mess up the application's namespace.
|
4
|
+
# http://api.rubyonrails.org/classes/Rails/Engine.html#label-Isolated+Engine
|
5
|
+
isolate_namespace Konacha
|
6
|
+
|
3
7
|
config.konacha = ActiveSupport::OrderedOptions.new
|
4
8
|
|
5
9
|
def self.application(app)
|
@@ -11,7 +15,7 @@ module Konacha
|
|
11
15
|
end
|
12
16
|
|
13
17
|
map "/" do
|
14
|
-
run
|
18
|
+
run Engine
|
15
19
|
end
|
16
20
|
end
|
17
21
|
end
|
data/lib/konacha/runner.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "capybara"
|
2
|
+
require "colorize"
|
2
3
|
|
3
4
|
module Konacha
|
4
5
|
class Runner
|
@@ -22,7 +23,7 @@ module Konacha
|
|
22
23
|
|
23
24
|
seconds = "%.2f" % (Time.now - before)
|
24
25
|
io.puts "Finished in #{seconds} seconds"
|
25
|
-
io.puts "#{examples.size} examples, #{failed_examples.size} failures"
|
26
|
+
io.puts "#{examples.size} examples, #{failed_examples.size} failures, #{pending_examples.size} pending"
|
26
27
|
passed?
|
27
28
|
end
|
28
29
|
|
@@ -30,8 +31,12 @@ module Konacha
|
|
30
31
|
spec_runners.map { |spec_runner| spec_runner.examples }.flatten
|
31
32
|
end
|
32
33
|
|
34
|
+
def pending_examples
|
35
|
+
examples.select { |example| example.pending? }
|
36
|
+
end
|
37
|
+
|
33
38
|
def failed_examples
|
34
|
-
examples.select { |example|
|
39
|
+
examples.select { |example| example.failed? }
|
35
40
|
end
|
36
41
|
|
37
42
|
def passed?
|
@@ -67,6 +72,18 @@ module Konacha
|
|
67
72
|
runner.io
|
68
73
|
end
|
69
74
|
|
75
|
+
def colorize_dots(dots)
|
76
|
+
dots = dots.chars.map do |d|
|
77
|
+
case d
|
78
|
+
when 'E', 'F'; d.red
|
79
|
+
when 'P'; d.yellow
|
80
|
+
when '.'; d.green
|
81
|
+
else; d
|
82
|
+
end
|
83
|
+
end
|
84
|
+
dots.join ''
|
85
|
+
end
|
86
|
+
|
70
87
|
def run
|
71
88
|
session.visit(spec.url)
|
72
89
|
|
@@ -75,7 +92,7 @@ module Konacha
|
|
75
92
|
sleep 0.1
|
76
93
|
done, dots = session.evaluate_script('[Konacha.done, Konacha.dots]')
|
77
94
|
if dots
|
78
|
-
io.write dots[dots_printed..-1]
|
95
|
+
io.write colorize_dots(dots[dots_printed..-1])
|
79
96
|
io.flush
|
80
97
|
dots_printed = dots.length
|
81
98
|
end
|
@@ -85,7 +102,9 @@ module Konacha
|
|
85
102
|
Example.new(row)
|
86
103
|
end
|
87
104
|
rescue => e
|
88
|
-
|
105
|
+
msg = [e.inspect]
|
106
|
+
msg << e.message unless e.message.blank?
|
107
|
+
raise Konacha::Error, "Error communicating with browser process:\n#{msg.join("\n")}"
|
89
108
|
end
|
90
109
|
end
|
91
110
|
|
@@ -98,13 +117,23 @@ module Konacha
|
|
98
117
|
@row['passed']
|
99
118
|
end
|
100
119
|
|
120
|
+
def pending?
|
121
|
+
@row['pending']
|
122
|
+
end
|
123
|
+
|
124
|
+
def failed?
|
125
|
+
!(@row['passed'] || @row['pending'])
|
126
|
+
end
|
127
|
+
|
101
128
|
def failure_message
|
102
|
-
|
129
|
+
if failed?
|
103
130
|
msg = []
|
104
131
|
msg << " Failed: #{@row['name']}"
|
105
132
|
msg << " #{@row['message']}"
|
106
133
|
msg << " in #{@row['trace']['fileName']}:#{@row['trace']['lineNumber']}" if @row['trace']
|
107
|
-
msg.join("\n")
|
134
|
+
msg.join("\n").red
|
135
|
+
elsif pending?
|
136
|
+
" Pending: #{@row['name']}".yellow
|
108
137
|
end
|
109
138
|
end
|
110
139
|
end
|
data/spec/runner_spec.rb
CHANGED
@@ -15,12 +15,17 @@ describe Konacha::Runner do
|
|
15
15
|
it "prints results to the output" do
|
16
16
|
buffer.rewind
|
17
17
|
results = buffer.read
|
18
|
+
# Strip colors
|
19
|
+
results.gsub!(/\e\[([0-9]{1,2}(;[0-9]{1,2})*)?[m|K]/, '')
|
18
20
|
# Failure output present?
|
19
21
|
results.should include 'F'
|
20
22
|
results.should include 'expected 4 to equal 5'
|
23
|
+
# Pending output present?
|
24
|
+
results.should include 'P'
|
25
|
+
results.should include 'is pending'
|
21
26
|
# Summary and dots
|
22
|
-
results.should include "#{runner.examples.length} examples, 1
|
23
|
-
results.should match /^[.
|
27
|
+
results.should include "#{runner.examples.length} examples, 1 failures, 1 pending"
|
28
|
+
results.should match /^[.FP]{#{runner.examples.length}}$/
|
24
29
|
end
|
25
30
|
end
|
26
31
|
end
|