jasmine-coverage 0.1.5 → 0.1.6
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/README.md +12 -4
- data/lib/jasmine/coverage/version.rb +1 -1
- data/lib/tasks/jasmine_coverage.rake +10 -3
- data/lib/tasks/jasmine_headless_coverage_patches.rb +16 -16
- metadata +17 -17
data/README.md
CHANGED
@@ -26,10 +26,6 @@ To use jasmine-coverage, run the rake task.
|
|
26
26
|
|
27
27
|
bundle exec rake jasmine:coverage
|
28
28
|
|
29
|
-
Optionally, add a failure level percentage.
|
30
|
-
|
31
|
-
bundle exec rake jasmine:coverage JASMINE_COVERAGE_MINIMUM=75
|
32
|
-
|
33
29
|
# Output
|
34
30
|
|
35
31
|
You will see the tests execute, then a large blob of text, and finally a summary of the test coverage results.
|
@@ -47,6 +43,18 @@ Files generated will be
|
|
47
43
|
target/jscoverage/jscoverage.json - The report data
|
48
44
|
target/jscoverage/jscoverage-test-rig.html - The actual page that the tests executed in
|
49
45
|
|
46
|
+
# Configuration
|
47
|
+
|
48
|
+
You can set a failure level percentage.
|
49
|
+
|
50
|
+
bundle exec rake jasmine:coverage JASMINE_COVERAGE_MINIMUM=75
|
51
|
+
|
52
|
+
In addition, as jasmine-coverage has to create a single folder environment for the Javascript sandbox to function correctly, it has to copy
|
53
|
+
files into the _target/jscoverage/test_rig_ folder. By default, this is then cleaned up for you if the tests pass. If you'd like to see what files
|
54
|
+
it generates regardless, you can specify that in an environment variable.
|
55
|
+
|
56
|
+
bundle exec rake jasmine:coverage JASMINE_COVERAGE_KEEP_TEST_RIG=true
|
57
|
+
|
50
58
|
# How it works
|
51
59
|
|
52
60
|
First Sprockets is interrogated to get a list of JS files concerned. This way, the right JS files
|
@@ -40,6 +40,7 @@ if env =~ /^(development|test)$/
|
|
40
40
|
|
41
41
|
Jasmine::Coverage.resources = files_map
|
42
42
|
Jasmine::Coverage.output_dir = output_dir
|
43
|
+
test_rig_folder = "#{Jasmine::Coverage.output_dir}/test_rig"
|
43
44
|
|
44
45
|
puts "\nCoverage will now be run. Expect a large block of compiled coverage data. This will be processed for you into target/jscoverage.\n\n"
|
45
46
|
|
@@ -57,14 +58,21 @@ if env =~ /^(development|test)$/
|
|
57
58
|
errStr = errStr +"4) The source files are being loaded out of sequence (so global variables are not being declared in order)\n"
|
58
59
|
errStr = errStr +" To check this, run bundle exec jasmine-headless-webkit -l to see the ordering\n"
|
59
60
|
errStr = errStr +"\nIn any case, try running the standard jasmine command to get better errors:\n\nbundle exec jasmine:headless\n"
|
60
|
-
errStr = errStr +"\nFinally, try opening the
|
61
|
+
errStr = errStr +"\nFinally, try opening the test_rig in firefox to see the tests run in a browser and get a stacktrace. "
|
61
62
|
errStr = errStr +"Chrome has strict security settings that make this difficult since it accesses the local filesystem from Javascript (but you can switch the settings off at the command line)\n\n"
|
62
63
|
errStr = errStr +"\n**********************************************************************************************\n"
|
63
64
|
errStr = errStr +"\nThe test rig file needs to load JS directly off disk, which Chrome prevents by default. Your best bet is to open the rig in Firefox.\n"
|
64
|
-
errStr = errStr +"\nThe file can be found here: #{
|
65
|
+
errStr = errStr +"\nThe file can be found here: #{test_rig_folder}/jscoverage-test-rig.html\n"
|
65
66
|
errStr = errStr +"\n**********************************************************************************************\n"
|
66
67
|
fail errStr if status_code == 1
|
67
68
|
|
69
|
+
# Delete the test_rig folder if not required
|
70
|
+
if ENV['JASMINE_COVERAGE_KEEP_TEST_RIG']
|
71
|
+
p "A copy of the page and files that were used as the jasmine test environment can be found here: #{test_rig_folder}"
|
72
|
+
else
|
73
|
+
FileUtils.rm_rf test_rig_folder
|
74
|
+
end
|
75
|
+
|
68
76
|
# Obtain the console log, which includes the coverage report encoded within it
|
69
77
|
contents = File.open("#{output_dir}/rawreport.txt") { |f| f.read }
|
70
78
|
# Get our Base64.
|
@@ -89,7 +97,6 @@ if env =~ /^(development|test)$/
|
|
89
97
|
conf = (ENV['JSCOVERAGE_MINIMUM'] || ENV['JASMINE_COVERAGE_MINIMUM'])
|
90
98
|
fail "Coverage Fail: Javascript coverage was less than #{conf}%. It was #{coverage_pc}%." if conf && coverage_pc < conf.to_i
|
91
99
|
end
|
92
|
-
|
93
100
|
end
|
94
101
|
|
95
102
|
def instrument folder, instrumented_sub_dir
|
@@ -12,16 +12,16 @@ module Jasmine::Headless
|
|
12
12
|
ret = old_write
|
13
13
|
str = File.open(all_tests_filename, "rb").read
|
14
14
|
|
15
|
-
|
16
|
-
FileUtils.mkdir_p
|
15
|
+
test_rigfolder = Jasmine::Coverage.output_dir+"/test_rig"
|
16
|
+
FileUtils.mkdir_p test_rigfolder
|
17
17
|
|
18
|
-
p "
|
19
|
-
FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../../spec", "#{
|
20
|
-
FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../../app", "#{
|
21
|
-
FileUtils.mkdir_p "#{
|
22
|
-
FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../fixtures", "#{
|
23
|
-
FileUtils.mkdir_p "#{
|
24
|
-
FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../views", "#{
|
18
|
+
p "Copying all view files and potential javascript fixture folders so the jasmine-coverage run has access to the html fixtures."
|
19
|
+
#FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../../spec", "#{test_rigfolder}/spec")
|
20
|
+
#FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../../app", "#{test_rigfolder}/app")
|
21
|
+
FileUtils.mkdir_p "#{test_rigfolder}/target/fixtures"
|
22
|
+
FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../fixtures", "#{test_rigfolder}/target/fixtures") rescue nil
|
23
|
+
FileUtils.mkdir_p "#{test_rigfolder}/target/views"
|
24
|
+
FileUtils.copy_entry("#{Jasmine::Coverage.output_dir}/../views", "#{test_rigfolder}/target/views") rescue nil
|
25
25
|
|
26
26
|
jss = str.scan(/<script type="text\/javascript" src="(.*)"><\/script>/)
|
27
27
|
jss << str.scan(/<link rel="stylesheet" href="(.*)" type="text\/css" \/>/)
|
@@ -30,24 +30,24 @@ module Jasmine::Headless
|
|
30
30
|
jss.each { |s|
|
31
31
|
js = File.basename(s)
|
32
32
|
str.sub!(s, js)
|
33
|
-
if File.exists?("#{
|
34
|
-
s = "\n\n
|
33
|
+
if File.exists?("#{test_rigfolder}/#{js}") && js != 'index.js'
|
34
|
+
s = "\n\n*****************************************************************************************************************\n"
|
35
35
|
s = s + "Cannot copy file '#{js}' into jasmine coverage test rig folder.\n"
|
36
36
|
s = s + "There is already another file of that name. You either have two files with the same name (but in different paths)\n"
|
37
37
|
s = s + "or your filename is the same as that from a third party vendor.\n"
|
38
|
-
s = s + "
|
38
|
+
s = s + "The problem stems from the fact that to run all js files from one folder (as is required by a serverless jasmine\n"
|
39
|
+
s = s + "test), all your js files must have unique names, even if they are in different folders in your app hierarchy.\n"
|
40
|
+
s = s + "*****************************************************************************************************************\n\n"
|
39
41
|
raise s
|
40
42
|
end
|
41
|
-
FileUtils.cp(s,
|
43
|
+
FileUtils.cp(s, test_rigfolder)
|
42
44
|
}
|
43
45
|
|
44
|
-
outfile = "#{
|
46
|
+
outfile = "#{test_rigfolder}/jscoverage-test-rig.html"
|
45
47
|
aFile = File.new(outfile, "w")
|
46
48
|
aFile.write(str)
|
47
49
|
aFile.close
|
48
50
|
|
49
|
-
puts "A copy of the complete page that was used as the test environment can be found here:"
|
50
|
-
puts "#{outfile}"
|
51
51
|
ret
|
52
52
|
end
|
53
53
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine-coverage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,56 +9,56 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
type: :runtime
|
15
16
|
name: jasmine-headless-webkit
|
17
|
+
prerelease: false
|
16
18
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
19
|
requirements:
|
19
20
|
- - ! '>='
|
20
21
|
- !ruby/object:Gem::Version
|
21
22
|
version: 0.9.0.rc.2
|
22
|
-
type: :runtime
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
23
|
none: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
25
|
requirements:
|
27
26
|
- - ! '>='
|
28
27
|
- !ruby/object:Gem::Version
|
29
28
|
version: 0.9.0.rc.2
|
29
|
+
none: false
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
+
type: :runtime
|
31
32
|
name: coffee-script-source
|
33
|
+
prerelease: false
|
32
34
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
35
|
requirements:
|
35
36
|
- - ! '>='
|
36
37
|
- !ruby/object:Gem::Version
|
37
38
|
version: '0'
|
38
|
-
type: :runtime
|
39
|
-
prerelease: false
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
41
|
requirements:
|
43
42
|
- - ! '>='
|
44
43
|
- !ruby/object:Gem::Version
|
45
44
|
version: '0'
|
45
|
+
none: false
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
+
type: :runtime
|
47
48
|
name: headless
|
49
|
+
prerelease: false
|
48
50
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
51
|
requirements:
|
51
52
|
- - ! '>='
|
52
53
|
- !ruby/object:Gem::Version
|
53
54
|
version: '0'
|
54
|
-
type: :runtime
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
55
|
none: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
57
|
requirements:
|
59
58
|
- - ! '>='
|
60
59
|
- !ruby/object:Gem::Version
|
61
60
|
version: '0'
|
61
|
+
none: false
|
62
62
|
description:
|
63
63
|
email:
|
64
64
|
- harry@harrylascelles.com
|
@@ -80,20 +80,20 @@ rdoc_options: []
|
|
80
80
|
require_paths:
|
81
81
|
- lib
|
82
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
-
none: false
|
84
83
|
requirements:
|
85
84
|
- - ! '>='
|
86
85
|
- !ruby/object:Gem::Version
|
87
86
|
version: '0'
|
88
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
87
|
none: false
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
89
|
requirements:
|
91
90
|
- - ! '>='
|
92
91
|
- !ruby/object:Gem::Version
|
93
92
|
version: '0'
|
93
|
+
none: false
|
94
94
|
requirements: []
|
95
95
|
rubyforge_project:
|
96
|
-
rubygems_version: 1.8.
|
96
|
+
rubygems_version: 1.8.23
|
97
97
|
signing_key:
|
98
98
|
specification_version: 3
|
99
99
|
summary: A blend of JS unit testing and coverage
|