js-test-driver-rails 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.markdown +15 -0
- data/Rakefile +1 -1
- data/lib/js_test_driver/config.rb +25 -2
- data/lib/js_test_driver/runner.rb +28 -2
- data/lib/js_test_driver/version.rb +1 -1
- data/test/integration/sample_test.rb +15 -0
- data/test/sample/config/js_test_driver.rb +11 -0
- data/test/sample/lib/calculator.js +15 -0
- data/test/sample/specs/calculator_spec.js +19 -0
- data/test/sample/specs/spec_helper.js +4 -0
- data/test/unit/config_test.rb +13 -0
- data/test/unit/runner_test.rb +11 -0
- data/vendor/coverage.jar +0 -0
- metadata +9 -3
data/.gitignore
CHANGED
data/README.markdown
CHANGED
@@ -76,6 +76,21 @@ If you want to user Jasmine, simply add:
|
|
76
76
|
|
77
77
|
in your config file, somewhere before including your test files and you are golden:)
|
78
78
|
|
79
|
+
Measuring code coverage
|
80
|
+
-----------------------
|
81
|
+
|
82
|
+
JsTestDriver has a pretty cool feature of being able to measure code coverage. To enable this in your config, you just need to add:
|
83
|
+
|
84
|
+
measure_coverage
|
85
|
+
|
86
|
+
in your config file.
|
87
|
+
|
88
|
+
You need to have lcov installed for the HTML report to be generated:
|
89
|
+
|
90
|
+
sudo apt-get install lcov
|
91
|
+
|
92
|
+
The HTML coverage report will be saved in the .js_test_driver/tests/coverage directory.
|
93
|
+
|
79
94
|
Rake tasks
|
80
95
|
----------
|
81
96
|
|
data/Rakefile
CHANGED
@@ -59,12 +59,29 @@ module JsTestDriver
|
|
59
59
|
#
|
60
60
|
# There's no hacks or modifications here, so this method is just for the users convenience
|
61
61
|
def enable_jasmine
|
62
|
-
this_directory = File.dirname(__FILE__)
|
63
|
-
vendor_directory = File.expand_path(File.join('..', '..', 'vendor'), this_directory)
|
64
62
|
includes File.join(vendor_directory, "jasmine.js")
|
65
63
|
includes File.join(vendor_directory, "JasmineAdapter.js")
|
66
64
|
end
|
67
65
|
|
66
|
+
# Adds a JsTestDriver plugin for measuring coverage to the configuration
|
67
|
+
def measure_coverage
|
68
|
+
@measure_coverage = true
|
69
|
+
self.plugins << {
|
70
|
+
'name' => 'coverage',
|
71
|
+
'jar' => File.join(vendor_directory, 'coverage.jar'),
|
72
|
+
'module' => 'com.google.jstestdriver.coverage.CoverageModule'
|
73
|
+
}
|
74
|
+
end
|
75
|
+
|
76
|
+
def measure_coverage?
|
77
|
+
!!@measure_coverage
|
78
|
+
end
|
79
|
+
|
80
|
+
# Plugins to include in the config
|
81
|
+
def plugins
|
82
|
+
@plugins ||= []
|
83
|
+
end
|
84
|
+
|
68
85
|
# config variable which has a regular setter,
|
69
86
|
# but also can be set by calling the "getter" with an argument
|
70
87
|
# and if called without an argument the getter will return the passed block
|
@@ -125,6 +142,7 @@ module JsTestDriver
|
|
125
142
|
hash = {'server' => server, 'basepath' => base_path}
|
126
143
|
hash['load'] = loaded_files unless loaded_files.empty?
|
127
144
|
hash['exclude'] = map_paths(excluded_files) unless excluded_files.empty?
|
145
|
+
hash['plugin'] = plugins unless plugins.empty?
|
128
146
|
return hash.to_yaml
|
129
147
|
end
|
130
148
|
|
@@ -153,6 +171,11 @@ module JsTestDriver
|
|
153
171
|
|
154
172
|
private
|
155
173
|
|
174
|
+
def vendor_directory
|
175
|
+
this_directory = File.dirname(__FILE__)
|
176
|
+
return File.expand_path(File.join('..', '..', 'vendor'), this_directory)
|
177
|
+
end
|
178
|
+
|
156
179
|
def expand_globs(paths)
|
157
180
|
with_expanded_paths = paths.map{|path| File.expand_path(path)}
|
158
181
|
return with_expanded_paths.map{|path| path.include?('*') ? Dir[path] : path}.flatten
|
@@ -83,7 +83,7 @@ module JsTestDriver
|
|
83
83
|
command.run
|
84
84
|
end
|
85
85
|
|
86
|
-
def start_server_capture_and_run(tests, browsers, output_xml_path = nil, console = nil)
|
86
|
+
def start_server_capture_and_run(tests = nil, browsers = nil, output_xml_path = nil, console = nil)
|
87
87
|
command = execute_jar
|
88
88
|
|
89
89
|
add_start_server(command)
|
@@ -93,7 +93,13 @@ module JsTestDriver
|
|
93
93
|
add_output_directory(command, output_xml_path) if output_xml_path
|
94
94
|
add_capture_console(command) if console
|
95
95
|
|
96
|
-
command.run
|
96
|
+
result = command.run
|
97
|
+
|
98
|
+
if config.measure_coverage? && output_xml_path
|
99
|
+
generate_html_coverage_report(output_xml_path)
|
100
|
+
end
|
101
|
+
|
102
|
+
return result
|
97
103
|
end
|
98
104
|
|
99
105
|
def add_start_server(command)
|
@@ -129,8 +135,28 @@ module JsTestDriver
|
|
129
135
|
Command.new('java').option('-jar', jar_path)
|
130
136
|
end
|
131
137
|
|
138
|
+
def generate_html_coverage_report(output_path)
|
139
|
+
unless genhtml_installed?
|
140
|
+
puts "Could not find genhtml. You must install lcov (sudo apt-get install lcov)"
|
141
|
+
return
|
142
|
+
end
|
143
|
+
|
144
|
+
output_path = File.expand_path(output_path)
|
145
|
+
|
146
|
+
config_file_name = File.basename(config_yml_path)
|
147
|
+
coverage_file_name = config_file_name + '-coverage.dat'
|
148
|
+
coverage_file_path = File.join(output_path, coverage_file_name)
|
149
|
+
coverage_out_dir = File.join(output_path, 'coverage')
|
150
|
+
|
151
|
+
system("genhtml -o #{coverage_out_dir} #{coverage_file_path}")
|
152
|
+
end
|
153
|
+
|
132
154
|
protected
|
133
155
|
|
156
|
+
def genhtml_installed?
|
157
|
+
!%x[which genhtml].strip.empty?
|
158
|
+
end
|
159
|
+
|
134
160
|
def parse_config
|
135
161
|
source = ""
|
136
162
|
if File.exist?(config_path)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
|
2
|
+
|
3
|
+
module JsTestDriver
|
4
|
+
class SampleTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_running_sample_specs
|
7
|
+
config = JsTestDriver::Runner.new(:config_path => File.expand_path('../../sample/config/js_test_driver.rb', __FILE__))
|
8
|
+
|
9
|
+
output_path = File.expand_path('../../../.js_test_driver/', __FILE__)
|
10
|
+
|
11
|
+
assert config.start_server_capture_and_run(nil, nil, output_path), 'running tests should return a success'
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
includes 'test/sample/lib/*.js'
|
2
|
+
|
3
|
+
['google-chrome', 'firefox', 'chromium-browser'].select{|b| !%x[which #{b}].strip.empty? }.each do |b|
|
4
|
+
browser b
|
5
|
+
end
|
6
|
+
|
7
|
+
enable_jasmine
|
8
|
+
measure_coverage
|
9
|
+
|
10
|
+
includes 'test/sample/specs/spec_helper.js'
|
11
|
+
includes 'test/sample/specs/**/*_spec.js'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
function Calculator(initialValue) {
|
2
|
+
this.value = initialValue;
|
3
|
+
}
|
4
|
+
|
5
|
+
Calculator.prototype = {
|
6
|
+
add: function(val) {
|
7
|
+
this.value += val;
|
8
|
+
},
|
9
|
+
multiply: function(val) {
|
10
|
+
this.value *= val;
|
11
|
+
},
|
12
|
+
sub: function(val) {
|
13
|
+
this.value -= val;
|
14
|
+
}
|
15
|
+
};
|
@@ -0,0 +1,19 @@
|
|
1
|
+
describe('Calculator', function () {
|
2
|
+
var calc;
|
3
|
+
|
4
|
+
beforeEach(function () {
|
5
|
+
calc = new Calculator(2);
|
6
|
+
});
|
7
|
+
|
8
|
+
it('adds values', function() {
|
9
|
+
calc.add(2);
|
10
|
+
|
11
|
+
expect(calc.value).toEqual(4);
|
12
|
+
});
|
13
|
+
|
14
|
+
it('multiplies values', function() {
|
15
|
+
calc.multiply(3);
|
16
|
+
|
17
|
+
expect(calc.value).toEqual(6);
|
18
|
+
});
|
19
|
+
});
|
data/test/unit/config_test.rb
CHANGED
@@ -253,5 +253,18 @@ module JsTestDriver
|
|
253
253
|
assert Dir[config.included_files[1]].size > 0
|
254
254
|
end
|
255
255
|
|
256
|
+
def test_with_coverage_measuring_enabled
|
257
|
+
# given
|
258
|
+
config = given_an_empty_config
|
259
|
+
|
260
|
+
# when
|
261
|
+
config.measure_coverage
|
262
|
+
|
263
|
+
# then
|
264
|
+
assert_config_includes config, 'plugin' => [{'name' => 'coverage',
|
265
|
+
'jar' => File.expand_path('../../../vendor/coverage.jar', __FILE__),
|
266
|
+
'module' => 'com.google.jstestdriver.coverage.CoverageModule'}]
|
267
|
+
end
|
268
|
+
|
256
269
|
end
|
257
270
|
end
|
data/test/unit/runner_test.rb
CHANGED
@@ -92,5 +92,16 @@ module JsTestDriver
|
|
92
92
|
runner.start_server_capture_and_run('TestCase', 'aaa,bbb', '.js_test_driver', true)
|
93
93
|
end
|
94
94
|
|
95
|
+
def test_when_measuring_coverage
|
96
|
+
config = JsTestDriver::Config.new
|
97
|
+
config.measure_coverage
|
98
|
+
runner = given_a_runner(:config => config)
|
99
|
+
|
100
|
+
JsTestDriver::Runner::Command.any_instance.expects(:system)
|
101
|
+
runner.expects(:system).with("genhtml -o #{File.expand_path('.js_test_driver/coverage')} #{File.expand_path('.js_test_driver/jsTestDriver.conf-coverage.dat')}")
|
102
|
+
|
103
|
+
runner.start_server_capture_and_run(nil, 'aaa', '.js_test_driver')
|
104
|
+
end
|
105
|
+
|
95
106
|
end
|
96
107
|
end
|
data/vendor/coverage.jar
ADDED
Binary file
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
- 3
|
8
7
|
- 4
|
9
|
-
|
8
|
+
- 0
|
9
|
+
version: 0.4.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Adam Pohorecki
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-04-
|
17
|
+
date: 2011-04-27 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -87,12 +87,18 @@ files:
|
|
87
87
|
- test/fixtures/foo/a.html
|
88
88
|
- test/fixtures/foo/bar/a.html
|
89
89
|
- test/fixtures/hello.txt
|
90
|
+
- test/integration/sample_test.rb
|
91
|
+
- test/sample/config/js_test_driver.rb
|
92
|
+
- test/sample/lib/calculator.js
|
93
|
+
- test/sample/specs/calculator_spec.js
|
94
|
+
- test/sample/specs/spec_helper.js
|
90
95
|
- test/test_helper.rb
|
91
96
|
- test/unit/config_test.rb
|
92
97
|
- test/unit/html_fixture_test.rb
|
93
98
|
- test/unit/runner_test.rb
|
94
99
|
- vendor/JasmineAdapter.js
|
95
100
|
- vendor/VERSIONS
|
101
|
+
- vendor/coverage.jar
|
96
102
|
- vendor/jasmine.js
|
97
103
|
- vendor/js_test_driver.jar
|
98
104
|
has_rdoc: true
|