jasmine-rails 0.5.6 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,13 +19,25 @@ module JasmineRails
19
19
  # * jasmine-specs.js built by asset pipeline which merges application specific libraries and specs
20
20
  def jasmine_js_files
21
21
  files = Jasmine::Core.js_files
22
+ files << jasmine_boot_file
22
23
  if params[:console]
23
24
  files << 'jasmine-console-shims.js'
24
25
  files << 'jasmine-console-reporter.js'
25
26
  end
26
- files << 'jasmine-boot.js'
27
27
  files << 'jasmine-specs.js'
28
28
  files
29
29
  end
30
+
31
+ def jasmine_boot_file
32
+ if jasmine2?
33
+ Jasmine::Core.boot_files.first
34
+ else
35
+ 'jasmine-boot.js'
36
+ end
37
+ end
38
+
39
+ def jasmine2?
40
+ Jasmine::Core.respond_to?(:boot_files)
41
+ end
30
42
  end
31
43
  end
@@ -1,7 +1,6 @@
1
1
  var jsApiReporter;
2
2
  (function() {
3
3
  var jasmineEnv = jasmine.getEnv();
4
-
5
4
  jsApiReporter = new jasmine.JsApiReporter();
6
5
  jasmineEnv.addReporter(jsApiReporter);
7
6
 
@@ -11,10 +10,6 @@ var jsApiReporter;
11
10
  return htmlReporter.specFilter(spec);
12
11
  };
13
12
 
14
- if (jasmine.ConsoleReporter) {
15
- jasmineEnv.addReporter(new jasmine.ConsoleReporter());
16
- }
17
-
18
13
  function execJasmine() {
19
14
  jasmineEnv.execute();
20
15
  }
@@ -4,27 +4,29 @@
4
4
 
5
5
  Usage:
6
6
  // From your html file that loads jasmine:
7
- jasmine.getEnv().addReporter(new jasmine.ConsoleReporter());
8
7
  jasmine.getEnv().execute();
9
8
  */
10
9
 
11
- (function(jasmine, console) {
10
+ (function() {
11
+ var ConsoleReporter,
12
+ root = this;
13
+
12
14
  if (!jasmine) {
13
15
  throw "jasmine library isn't loaded!";
14
16
  }
15
17
 
16
- var ANSI = {}
18
+ var ANSI = {};
17
19
  ANSI.color_map = {
18
20
  "green" : 32,
19
21
  "red" : 31
20
- }
22
+ };
21
23
 
22
24
  ANSI.colorize_text = function(text, color) {
23
25
  var color_code = this.color_map[color];
24
26
  return "\033[" + color_code + "m" + text + "\033[0m";
25
- }
27
+ };
26
28
 
27
- var ConsoleReporter = function() {
29
+ ConsoleReporter = function() {
28
30
  if (!console || !console.log) { throw "console isn't present!"; }
29
31
  this.status = this.statuses.stopped;
30
32
  };
@@ -37,7 +39,7 @@
37
39
  success : "success"
38
40
  };
39
41
 
40
- proto.reportRunnerStarting = function(runner) {
42
+ proto.reportRunnerStarting = proto.jasmineStarted = function(runner) {
41
43
  this.status = this.statuses.running;
42
44
  this.start_time = (new Date()).getTime();
43
45
  this.executed_specs = 0;
@@ -45,7 +47,7 @@
45
47
  this.log("Starting...");
46
48
  };
47
49
 
48
- proto.reportRunnerResults = function(runner) {
50
+ proto.reportRunnerResults = proto.jasmineDone = function(runner) {
49
51
  var failed = this.executed_specs - this.passed_specs;
50
52
  var spec_str = this.executed_specs + (this.executed_specs === 1 ? " spec, " : " specs, ");
51
53
  var fail_str = failed + (failed === 1 ? " failure in " : " failures in ");
@@ -65,40 +67,51 @@
65
67
  this.log("ConsoleReporter finished");
66
68
  };
67
69
 
68
-
69
- proto.reportSpecStarting = function(spec) {
70
+ proto.reportSpecStarting = proto.specStarted = function(spec) {
70
71
  this.executed_specs++;
71
72
  };
72
73
 
73
- proto.reportSpecResults = function(spec) {
74
- if (spec.results().skipped) {
75
- return;
74
+ proto.reportSpecResults = proto.specDone = function(spec) {
75
+ if(spec.results) { //jasmine 1.x
76
+ var specResult = spec.results()
77
+ if(specResult.skipped) {
78
+ return;
79
+ } else if(specResult.passed()) {
80
+ this.passed_specs++;
81
+ return;
82
+ }
83
+ } else { //jasmine 2.x
84
+ if(spec.status === "passed") {
85
+ this.passed_specs++;
86
+ return;
87
+ } else if(spec.status !== "failed") {
88
+ //Skipped or Pending
89
+ return;
90
+ }
76
91
  }
77
- if (spec.results().passed()) {
78
- this.passed_specs++;
79
- return;
80
- }
81
-
82
- var resultText = spec.suite.description + " : " + spec.description;
83
- this.log(resultText, "red");
84
92
 
85
- var items = spec.results().getItems()
86
- for (var i = 0; i < items.length; i++) {
87
- var item = items[i];
88
- var output = ' ' + item.message;
89
- this.log(output, "red");
93
+ var fullName, failedExpectations;
94
+ if(spec.suite) { //jasmine 1.x
95
+ fullName = spec.suite.description + " " + spec.description;
96
+ failedExpectations = spec.results().getItems().map(function(expectation){
97
+ console.log(JSON.stringify(expectation))
98
+ return " " + expectation.message +
99
+ (expectation.trace && expectation.trace.stack ? "\n " + expectation.trace.stack : "" );
100
+ });
101
+ } else { //jasmine 2.x
102
+ fullName = spec.fullName;
103
+ failedExpectations = spec.failedExpectations.map(function(expectation){
104
+ if(expectation.message === "undefined: undefined") {
105
+ return " An unstructured exception was thrown (use `new Error(message)` for better output).";
106
+ } else {
107
+ return " " + expectation.message + "\n" +
108
+ " " + expectation.stack;
109
+ }
110
+ });
90
111
  }
91
- };
92
112
 
93
- proto.reportSuiteResults = function(suite) {
94
- if (suite.parentSuite) { return; }
95
- var results = suite.results();
96
- if (results.totalCount === 0) {
97
- return;
98
- }
99
- var failed = results.totalCount - results.passedCount;
100
- var color = (failed > 0)? "red" : "green";
101
- this.log(suite.description + ": " + results.passedCount + " of " + results.totalCount + " passed.", color);
113
+ this.log(fullName, "red");
114
+ this.log(failedExpectations.join("\n\n"), "red");
102
115
  };
103
116
 
104
117
  proto.log = function(str, color) {
@@ -107,4 +120,5 @@
107
120
  };
108
121
 
109
122
  jasmine.ConsoleReporter = ConsoleReporter;
110
- })(jasmine, console);
123
+ jasmine.getEnv().addReporter(new jasmine.ConsoleReporter());
124
+ })();
@@ -47,17 +47,34 @@
47
47
  page.onInitialized = function() {
48
48
  return page.evaluate(function() {
49
49
  return window.onload = function() {
50
- jsApiReporter.exitCode = 0;
50
+ var exitCode = 0,
51
+ originalReportSpecResults = jsApiReporter.reportSpecResults,
52
+ originalJasmineDone = jsApiReporter.reportRunnerResults || jsApiReporter.jasmineDone;
53
+
54
+ //jasmine 1.x - determine failure by overwriting #reportSpecResults
51
55
  jsApiReporter.reportSpecResults = function(spec) {
56
+ originalReportSpecResults.call(jsApiReporter, spec);
52
57
  if (spec.results().failedCount > 0) {
53
- jsApiReporter.exitCode = 1;
58
+ exitCode = 1;
54
59
  }
55
60
  };
56
- jsApiReporter.reportRunnerResults = function() {
61
+
62
+ jsApiReporter.reportRunnerResults = jsApiReporter.jasmineDone = function(runner) {
63
+ originalJasmineDone.call(jsApiReporter, runner);
64
+
65
+ //jasmine 2.x - loop over the specs stored on the reporter to find failures
66
+ if(jsApiReporter.specs) {
67
+ jsApiReporter.specs().forEach(function(spec) {
68
+ if(spec.status === "failed") {
69
+ exitCode = 1;
70
+ }
71
+ })
72
+ }
73
+
57
74
  setTimeout(function() {
58
75
  window.callPhantom({
59
76
  event: 'exit',
60
- exitCode: jsApiReporter.exitCode
77
+ exitCode: exitCode
61
78
  });
62
79
  }, 1);
63
80
  };
@@ -57,7 +57,10 @@ module JasmineRails
57
57
  JasmineRails::OfflineAssetPaths.disabled = false
58
58
  app.get path, :console => 'true', :spec => spec_filter
59
59
  JasmineRails::OfflineAssetPaths.disabled = true
60
- raise "Jasmine runner at '#{path}' returned a #{app.response.status} error: #{app.response.message}" unless app.response.success?
60
+ unless app.response.success?
61
+ raise "Jasmine runner at '#{path}' returned a #{app.response.status} error: #{app.response.message} \n\n" +
62
+ "The most common cause is an asset compilation failure. Full HTML response: \n\n #{app.response.body}"
63
+ end
61
64
  app.response.body
62
65
  end
63
66
 
@@ -1,3 +1,3 @@
1
1
  module JasmineRails
2
- VERSION = "0.5.6"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-02-11 00:00:00.000000000 Z
14
+ date: 2014-02-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -50,17 +50,23 @@ dependencies:
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
- - - ~>
53
+ - - ! '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.3'
56
+ - - <
57
+ - !ruby/object:Gem::Version
58
+ version: '3.0'
56
59
  type: :runtime
57
60
  prerelease: false
58
61
  version_requirements: !ruby/object:Gem::Requirement
59
62
  none: false
60
63
  requirements:
61
- - - ~>
64
+ - - ! '>='
62
65
  - !ruby/object:Gem::Version
63
66
  version: '1.3'
67
+ - - <
68
+ - !ruby/object:Gem::Version
69
+ version: '3.0'
64
70
  - !ruby/object:Gem::Dependency
65
71
  name: phantomjs
66
72
  requirement: !ruby/object:Gem::Requirement
@@ -142,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
148
  version: '0'
143
149
  segments:
144
150
  - 0
145
- hash: 3911435305490844820
151
+ hash: -2098666322319327429
146
152
  required_rubygems_version: !ruby/object:Gem::Requirement
147
153
  none: false
148
154
  requirements:
@@ -151,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
157
  version: '0'
152
158
  segments:
153
159
  - 0
154
- hash: 3911435305490844820
160
+ hash: -2098666322319327429
155
161
  requirements: []
156
162
  rubyforge_project:
157
163
  rubygems_version: 1.8.23