jasmine-coverage 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 742de221f16674814b07fcb8f50c49b82f178bbb
4
+ data.tar.gz: 3231a36eba66db48040d1c3efd158ebdf5482d2c
5
+ SHA512:
6
+ metadata.gz: 6ea74c9d27feb0b65ff1b198c7502f724da6eafde51c3056115b579ad2b25638362583a6b2c3b5ddb828d2d5dedd31801a64982456e1558413c7f83913929c87
7
+ data.tar.gz: 175e4726a4e0617ec6758df209323af1eb72737f5bc08488903f08e1ad6c3de6b6a1eb692eea9756d16ba623e639007b4fda4040ec16cc99ff5f5edc03b58e80
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Jasmine Coverage
1
+ ## Jasmine Coverage
2
2
 
3
3
  A transcendent blend of useful JS unit testing and colourful coverage graphs.
4
4
 
@@ -8,7 +8,7 @@ failing it if it falls below a configurable level.
8
8
 
9
9
  Coverage is provided by the [jscoverage](http://siliconforks.com/jscoverage/manual.html) project.
10
10
 
11
- # Installation
11
+ ## Installation
12
12
 
13
13
  First, ensure you have a binary of [jscoverage](http://siliconforks.com/jscoverage/manual.html)
14
14
  available on your path. The installation steps are on the webpage.
@@ -24,13 +24,13 @@ Finally, add this to your Rakefile
24
24
 
25
25
  require 'jasmine/coverage'
26
26
 
27
- # Usage
27
+ ## Usage
28
28
 
29
29
  To use jasmine-coverage, run the rake task.
30
30
 
31
31
  bundle exec rake jasmine:coverage
32
32
 
33
- # Output
33
+ ## Output
34
34
 
35
35
  You will see the tests execute, then a large blob of text, and finally a summary of the test coverage results.
36
36
  An HTML file will also be saved that lets you view the results graphically, but only if served up from a server,
@@ -47,23 +47,23 @@ Files generated will be
47
47
  target/jscoverage/jscoverage.json - The report data
48
48
  target/jscoverage/jscoverage-test-rig.html - The actual page that the tests executed in
49
49
 
50
- # Configuration
50
+ ## Configuration
51
51
 
52
52
  You can set a failure level percentage.
53
53
 
54
54
  bundle exec rake jasmine:coverage JASMINE_COVERAGE_MINIMUM=75
55
55
 
56
56
  In addition, as jasmine-coverage has to create a single folder environment for the Javascript sandbox to function correctly, it has to copy
57
- 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
58
- it generates regardless, you can specify that in an environment variable.
57
+ files into the _target/jscoverage/test-rig_ folder. By default, this is left for you if the tests pass. If you'd like it cleaned up,
58
+ you can specify that in an environment variable.
59
59
 
60
- bundle exec rake jasmine:coverage JASMINE_COVERAGE_KEEP_TEST_RIG=true
60
+ bundle exec rake jasmine:coverage JASMINE_COVERAGE_KEEP_TEST_RIG=false
61
61
 
62
62
  You can also specify if you want missing coverage warnings
63
63
 
64
64
  bundle exec rake jasmine:coverage JASMINE_COVERAGE_WARNINGS=true
65
65
 
66
- # How it works
66
+ ## How it works
67
67
 
68
68
  First Sprockets is interrogated to get a list of JS files concerned. This way, the right JS files
69
69
  are required *in the same order that your app uses them*. JSCoverage then runs over them, and outputs the
@@ -74,4 +74,13 @@ The data we get from the coverage can only "leave" the JS sandbox one way: via t
74
74
  a large block of Base64 encoded rubbish flying past as the build progresses. The console data is captured by Jasmine
75
75
  Coverage, which decodes it and builds the results HTML page, and gives a short summary in the console.
76
76
 
77
- You're done.
77
+ You're done.
78
+
79
+ ## Mac Support
80
+
81
+ The tool uses the headless gem, which needs to create an X virtual frame buffer. Linux machines should work out the box,
82
+ but since Mac uses Quartz, you may get
83
+
84
+ Xvfb not found on your system
85
+
86
+ To solve that just install XQuartz and add /usr/X11/bin to your PATH (thanks @shell).
@@ -1,5 +1,5 @@
1
1
  module Jasmine
2
2
  module Coverage
3
- VERSION = '0.2.4'
3
+ VERSION = '0.2.5'
4
4
  end
5
5
  end
@@ -66,7 +66,11 @@ function coverageForAllFiles() {
66
66
  }
67
67
 
68
68
  var fraction = (simple_file_coverage['executed'] + "/" + simple_file_coverage['statements']).lpad(' ', 10);
69
- output += fraction + (" = " + simple_file_coverage['percentage'] + "").lpad(' ', 3) + "% for " + file_name + "\n";
69
+ var perc = simple_file_coverage['percentage'];
70
+ if (parseInt(simple_file_coverage['statements']) === 0){
71
+ perc = 100;
72
+ }
73
+ output += fraction + (" = " + perc + "").lpad(' ', 3) + "% for " + file_name + "\n";
70
74
  }
71
75
 
72
76
  var coverage = parseInt(100 * totals['executed'] / totals['statements']);
@@ -43,23 +43,35 @@ if env =~ /^(development|test)$/
43
43
  Jasmine::Coverage.output_dir = output_dir
44
44
  test_rig_folder = "#{Jasmine::Coverage.output_dir}/test-rig"
45
45
 
46
- 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"
46
+ rr_file = "#{output_dir}/rawreport.txt"
47
+ puts "\nCoverage will now be run. Expect a large block of compiled coverage data. This will be processed for you into target/jscoverage (#{rr_file}).\n\n"
48
+
49
+ # Check we can write to the output file
50
+ begin
51
+ File.open(rr_file, 'w') { |f| f.write('test-write') }
52
+ File.delete(rr_file)
53
+ rescue
54
+ raise "There was an error writing to the report file #{rr_file}.\nDo you have permissions to do so?"
55
+ end
47
56
 
48
57
  # Run Jasmine using the original config.
49
58
  status_code = Jasmine::Headless::Runner.run(
50
59
  # Any options from the options.rb file in jasmine-headless-webkit can be used here.
51
60
 
52
- :reporters => [['File', "#{output_dir}/rawreport.txt"]]
61
+ :reporters => [['Console'], ['File', rr_file]]
53
62
  )
54
63
  errStr = <<-EOS
64
+ **********************************************************************************************
65
+
55
66
  JSCoverage exited with error code: #{status_code}
56
67
 
57
- This implies one of five things:
68
+ This implies one of six things:
58
69
  0) Your JS files had exactly zero instructions. Are they all blank or just comments?
59
- 1) A test failed (run bundle exec rake jasmine:headless to see a better error)
60
- 2) The sourcecode has a syntax error (which JSLint should find)
61
- 3) An error occurred in a deferred block, e.g. a setTimeout or underscore _.defer. This caused a window error which Jasmine will never see.
62
- 4) The source files are being loaded out of sequence (so global variables are not being declared in order)
70
+ 1) The Jasmine Headless gem failed. Run bundle exec rake jasmine:headless to see what it might be.
71
+ 2) A test failed - you should be able to see the errors just above this text block (or run bundle exec rake jasmine:headless to see a simple error without coverage).
72
+ 3) The sourcecode has a syntax error (which JSLint should find)
73
+ 4) An error occurred in a deferred block, e.g. a setTimeout or underscore _.defer. This caused a window error which Jasmine will never see.
74
+ 5) The source files are being loaded out of sequence (so global variables are not being declared in order)
63
75
  To check this, run bundle exec jasmine-headless-webkit -l to see the ordering
64
76
 
65
77
  In any case, try running the standard jasmine command to get better errors:
@@ -68,10 +80,6 @@ bundle exec rake jasmine:headless
68
80
 
69
81
  Finally, try opening the test-rig in firefox to see the tests run in a browser and get a stacktrace. Chrome has strict security settings
70
82
  that make this difficult since it accesses the local filesystem from Javascript (but you can switch the settings off at the command line).
71
-
72
-
73
- **********************************************************************************************
74
-
75
83
  The 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.
76
84
 
77
85
  The file can be found here: #{test_rig_folder}/jscoverage-test-rig.html
@@ -82,14 +90,14 @@ The file can be found here: #{test_rig_folder}/jscoverage-test-rig.html
82
90
 
83
91
  fail errStr if status_code == 1
84
92
  # Delete the test_rig folder if not required
85
- if ENV['JASMINE_COVERAGE_KEEP_TEST_RIG']
86
- p "A copy of the page and files that were used as the jasmine test environment can be found here: #{test_rig_folder}"
87
- else
93
+ if ENV['JASMINE_COVERAGE_KEEP_TEST_RIG'] == 'false'
88
94
  FileUtils.rm_rf test_rig_folder
95
+ else
96
+ p "A copy of the page and files that were used as the jasmine test environment can be found here: #{test_rig_folder}"
89
97
  end
90
98
 
91
99
  # Obtain the console log, which includes the coverage report encoded within it
92
- contents = File.open("#{output_dir}/rawreport.txt") { |f| f.read }
100
+ contents = File.open(rr_file) { |f| f.read }
93
101
  # Get our Base64.
94
102
  json_report_enc = contents.split(/ENCODED-COVERAGE-EXPORT-STARTS:/m)[1]
95
103
  # Provide warnings to use
metadata CHANGED
@@ -1,62 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine-coverage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
5
- prerelease:
4
+ version: 0.2.5
6
5
  platform: ruby
7
6
  authors:
8
7
  - Harry Lascelles
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-28 00:00:00.000000000 Z
11
+ date: 2013-10-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- type: :runtime
16
14
  name: jasmine-headless-webkit
17
- prerelease: false
18
15
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
16
  requirements:
21
- - - ! '>='
17
+ - - '>='
22
18
  - !ruby/object:Gem::Version
23
19
  version: 0.9.0.rc.2
20
+ type: :runtime
21
+ prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 0.9.0.rc.2
30
27
  - !ruby/object:Gem::Dependency
31
- type: :runtime
32
28
  name: coffee-script-source
33
- prerelease: false
34
29
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
30
  requirements:
37
- - - ! '>='
31
+ - - '>='
38
32
  - !ruby/object:Gem::Version
39
33
  version: '0'
34
+ type: :runtime
35
+ prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
- type: :runtime
48
42
  name: headless
49
- prerelease: false
50
43
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
44
  requirements:
53
- - - ! '>='
45
+ - - '>='
54
46
  - !ruby/object:Gem::Version
55
47
  version: '0'
48
+ type: :runtime
49
+ prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description:
@@ -78,27 +71,26 @@ files:
78
71
  - Rakefile
79
72
  homepage: https://github.com/firstbanco/jasmine-coverage
80
73
  licenses: []
74
+ metadata: {}
81
75
  post_install_message:
82
76
  rdoc_options: []
83
77
  require_paths:
84
78
  - lib
85
79
  required_ruby_version: !ruby/object:Gem::Requirement
86
- none: false
87
80
  requirements:
88
- - - ! '>='
81
+ - - '>='
89
82
  - !ruby/object:Gem::Version
90
83
  version: '0'
91
84
  required_rubygems_version: !ruby/object:Gem::Requirement
92
- none: false
93
85
  requirements:
94
- - - ! '>='
86
+ - - '>='
95
87
  - !ruby/object:Gem::Version
96
88
  version: '0'
97
89
  requirements: []
98
90
  rubyforge_project:
99
- rubygems_version: 1.8.25
91
+ rubygems_version: 2.0.3
100
92
  signing_key:
101
- specification_version: 3
93
+ specification_version: 4
102
94
  summary: A blend of JS unit testing and coverage
103
95
  test_files: []
104
96
  has_rdoc: