jasmine-core 2.0.0.rc3 → 2.0.0.rc5

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.
Files changed (30) hide show
  1. data/lib/console/console.js +160 -0
  2. data/lib/jasmine-core/boot.js +84 -8
  3. data/lib/jasmine-core/boot/boot.js +84 -8
  4. data/lib/jasmine-core/jasmine-html.js +6 -3
  5. data/lib/jasmine-core/jasmine.js +236 -260
  6. data/lib/jasmine-core/spec/core/AnySpec.js +1 -1
  7. data/lib/jasmine-core/spec/core/ClockSpec.js +0 -20
  8. data/lib/jasmine-core/spec/core/CustomMatchersSpec.js +149 -96
  9. data/lib/jasmine-core/spec/core/EnvSpec.js +7 -39
  10. data/lib/jasmine-core/spec/core/ExceptionsSpec.js +13 -19
  11. data/lib/jasmine-core/spec/core/ExpectationSpec.js +74 -1
  12. data/lib/jasmine-core/spec/core/JsApiReporterSpec.js +0 -1
  13. data/lib/jasmine-core/spec/core/ObjectContainingSpec.js +1 -1
  14. data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +28 -20
  15. data/lib/jasmine-core/spec/core/ReportDispatcherSpec.js +1 -1
  16. data/lib/jasmine-core/spec/core/SpecRunningSpec.js +0 -1
  17. data/lib/jasmine-core/spec/core/SpecSpec.js +2 -11
  18. data/lib/jasmine-core/spec/core/SuiteSpec.js +2 -50
  19. data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +13 -1
  20. data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +4 -4
  21. data/lib/jasmine-core/spec/core/matchers/toThrowSpec.js +3 -2
  22. data/lib/jasmine-core/spec/html/HtmlSpecFilterSpec.js +1 -1
  23. data/lib/jasmine-core/spec/html/MatchersHtmlSpec.js +0 -1
  24. data/lib/jasmine-core/spec/html/QueryStringSpec.js +1 -1
  25. data/lib/jasmine-core/spec/html/ResultsNodeSpec.js +1 -1
  26. data/lib/jasmine-core/spec/node_suite.js +13 -11
  27. data/lib/jasmine-core/spec/support/dev_boot.js +17 -6
  28. data/lib/jasmine-core/version.rb +1 -1
  29. metadata +41 -13
  30. checksums.yaml +0 -7
@@ -6,7 +6,6 @@ xdescribe('JsApiReporter (integration specs)', function() {
6
6
 
7
7
  beforeEach(function() {
8
8
  env = new j$.Env();
9
- env.updateInterval = 0;
10
9
 
11
10
  suite = env.describe("top-level suite", function() {
12
11
  spec1 = env.it("spec 1", function() {
@@ -61,4 +61,4 @@ describe("ObjectContaining", function() {
61
61
 
62
62
  expect(containing.jasmineToString()).toMatch("<jasmine.objectContaining");
63
63
  });
64
- });
64
+ });
@@ -36,11 +36,20 @@ describe("QueueRunner", function() {
36
36
  expect(asyncContext).toBe(context);
37
37
  });
38
38
 
39
- it("supports asynchronous functions, only advancing to next function after a done() callback", function() {
40
- //TODO: it would be nice if spy arity could match the fake, so we could do something like:
41
- //createSpy('asyncfn').and.callFake(function(done) {});
39
+ describe("with an asynchronous function", function() {
40
+ beforeEach(function() {
41
+ jasmine.clock().install();
42
+ });
43
+
44
+ afterEach(function() {
45
+ jasmine.clock().uninstall();
46
+ });
47
+
48
+ it("supports asynchronous functions, only advancing to next function after a done() callback", function() {
49
+ //TODO: it would be nice if spy arity could match the fake, so we could do something like:
50
+ //createSpy('asyncfn').and.callFake(function(done) {});
42
51
 
43
- var onComplete = jasmine.createSpy('onComplete'),
52
+ var onComplete = jasmine.createSpy('onComplete'),
44
53
  beforeCallback = jasmine.createSpy('beforeCallback'),
45
54
  fnCallback = jasmine.createSpy('fnCallback'),
46
55
  afterCallback = jasmine.createSpy('afterCallback'),
@@ -67,29 +76,28 @@ describe("QueueRunner", function() {
67
76
  onComplete: onComplete
68
77
  });
69
78
 
70
- clock.install();
79
+ queueRunner.execute();
71
80
 
72
- queueRunner.execute();
73
-
74
- expect(beforeCallback).toHaveBeenCalled();
75
- expect(fnCallback).not.toHaveBeenCalled();
76
- expect(afterCallback).not.toHaveBeenCalled();
77
- expect(onComplete).not.toHaveBeenCalled();
81
+ expect(beforeCallback).toHaveBeenCalled();
82
+ expect(fnCallback).not.toHaveBeenCalled();
83
+ expect(afterCallback).not.toHaveBeenCalled();
84
+ expect(onComplete).not.toHaveBeenCalled();
78
85
 
79
- clock.tick(100);
86
+ jasmine.clock().tick(100);
80
87
 
81
- expect(fnCallback).toHaveBeenCalled();
82
- expect(afterCallback).not.toHaveBeenCalled();
83
- expect(onComplete).not.toHaveBeenCalled();
88
+ expect(fnCallback).toHaveBeenCalled();
89
+ expect(afterCallback).not.toHaveBeenCalled();
90
+ expect(onComplete).not.toHaveBeenCalled();
84
91
 
85
- clock.tick(100);
92
+ jasmine.clock().tick(100);
86
93
 
87
- expect(afterCallback).toHaveBeenCalled();
88
- expect(onComplete).not.toHaveBeenCalled();
94
+ expect(afterCallback).toHaveBeenCalled();
95
+ expect(onComplete).not.toHaveBeenCalled();
89
96
 
90
- clock.tick(100);
97
+ jasmine.clock().tick(100);
91
98
 
92
- expect(onComplete).toHaveBeenCalled();
99
+ expect(onComplete).toHaveBeenCalled();
100
+ });
93
101
  });
94
102
 
95
103
  it("calls an exception handler when an exception is thrown in a fn", function() {
@@ -37,4 +37,4 @@ describe("ReportDispatcher", function() {
37
37
  dispatcher.foo(123, 456);
38
38
  }).not.toThrow();
39
39
  });
40
- });
40
+ });
@@ -5,7 +5,6 @@ describe("jasmine spec running", function () {
5
5
 
6
6
  beforeEach(function() {
7
7
  env = new j$.Env();
8
- env.updateInterval = 0;
9
8
  });
10
9
 
11
10
  it('should assign spec ids sequentially', function() {
@@ -189,18 +189,9 @@ describe("Spec", function() {
189
189
  expect(done).toHaveBeenCalled();
190
190
  });
191
191
 
192
- it("#status returns pending by default", function() {
192
+ it("#status returns passing by default", function() {
193
193
  var spec = new j$.Spec({fn: jasmine.createSpy("spec body")});
194
- expect(spec.status()).toEqual('pending');
195
- });
196
-
197
- it("#status returns pending if no expectations were encountered", function() {
198
- var specBody = jasmine.createSpy("spec body"),
199
- spec = new j$.Spec({fn: specBody});
200
-
201
- spec.execute();
202
-
203
- expect(spec.status()).toEqual('pending');
194
+ expect(spec.status()).toEqual('passed');
204
195
  });
205
196
 
206
197
  it("#status returns passed if all expectations in the spec have passed", function() {
@@ -67,54 +67,6 @@ describe("Suite", function() {
67
67
  expect(suite.afterFns).toEqual([innerAfter, outerAfter]);
68
68
  });
69
69
 
70
- it("adds specs", function() {
71
- var env = new j$.Env(),
72
- fakeQueue = {
73
- add: jasmine.createSpy()
74
- },
75
- suite = new j$.Suite({
76
- env: env,
77
- description: "I am a suite",
78
- queueFactory: function() {
79
- return fakeQueue
80
- }
81
- }),
82
- fakeSpec = {};
83
-
84
- expect(suite.specs.length).toEqual(0);
85
-
86
- suite.addSpec(fakeSpec);
87
-
88
- expect(suite.specs.length).toEqual(1);
89
- });
90
-
91
- it("adds suites", function() {
92
- var env = new j$.Env(),
93
- fakeQueue = {
94
- add: jasmine.createSpy()
95
- },
96
- suite = new j$.Suite({
97
- env: env,
98
- description: "I am a suite",
99
- queueFactory: function() {
100
- return fakeQueue
101
- }
102
- }),
103
- anotherSuite = new j$.Suite({
104
- env: env,
105
- description: "I am another suite",
106
- queueFactory: function() {
107
- return fakeQueue
108
- }
109
- });
110
-
111
- expect(suite.suites.length).toEqual(0);
112
-
113
- suite.addSuite(anotherSuite);
114
-
115
- expect(suite.suites.length).toEqual(1);
116
- });
117
-
118
70
  it("can be disabled", function() {
119
71
  var env = new j$.Env(),
120
72
  fakeQueueRunner = jasmine.createSpy('fake queue runner'),
@@ -154,8 +106,8 @@ describe("Suite", function() {
154
106
 
155
107
  spyOn(suite, "execute");
156
108
 
157
- parentSuite.addSpec(fakeSpec1);
158
- parentSuite.addSuite(suite);
109
+ parentSuite.addChild(fakeSpec1);
110
+ parentSuite.addChild(suite);
159
111
 
160
112
  parentSuite.execute(parentSuiteDone);
161
113
 
@@ -153,10 +153,22 @@ describe("matchersUtil", function() {
153
153
  expect(j$.matchersUtil.equals(1, 2, [tester])).toBe(true);
154
154
  });
155
155
 
156
+ it("passes for two empty Objects", function () {
157
+ expect(j$.matchersUtil.equals({}, {})).toBe(true);
158
+ });
159
+
160
+ describe("when a custom equality matcher is installed that returns 'undefined'", function () {
161
+ var tester = function(a, b) { return jasmine.undefined; };
162
+
163
+ it("passes for two empty Objects", function () {
164
+ expect(j$.matchersUtil.equals({}, {}, [tester])).toBe(true);
165
+ });
166
+ });
167
+
156
168
  it("fails for equivalents when a custom equality matcher returns false", function() {
157
169
  var tester = function(a, b) { return false; };
158
170
 
159
- expect(j$.matchersUtil.equals(1, 2, [tester])).toBe(false);
171
+ expect(j$.matchersUtil.equals(1, 1, [tester])).toBe(false);
160
172
  });
161
173
  });
162
174
 
@@ -4,7 +4,7 @@ describe("toThrowError", function() {
4
4
 
5
5
  expect(function() {
6
6
  matcher.compare({});
7
- }).toThrow(new Error("Actual is not a Function")); // TODO: this needs to change for self-test
7
+ }).toThrowError("Actual is not a Function");
8
8
  });
9
9
 
10
10
  it("throws an error when the expected is not an Error, string, or RegExp", function() {
@@ -15,7 +15,7 @@ describe("toThrowError", function() {
15
15
 
16
16
  expect(function() {
17
17
  matcher.compare(fn, 1);
18
- }).toThrow(new Error("Expected is not an Error, string, or RegExp.")); // TODO: this needs to change for self-test
18
+ }).toThrowError("Expected is not an Error, string, or RegExp.");
19
19
  });
20
20
 
21
21
  it("throws an error when the expected error type is not an Error", function() {
@@ -26,7 +26,7 @@ describe("toThrowError", function() {
26
26
 
27
27
  expect(function() {
28
28
  matcher.compare(fn, void 0, "foo");
29
- }).toThrow(new Error("Expected error type is not an Error.")); // TODO: this needs to change for self-test
29
+ }).toThrowError("Expected error type is not an Error.");
30
30
  });
31
31
 
32
32
  it("throws an error when the expected error message is not a string or RegExp", function() {
@@ -37,7 +37,7 @@ describe("toThrowError", function() {
37
37
 
38
38
  expect(function() {
39
39
  matcher.compare(fn, Error, 1);
40
- }).toThrow(new Error("Expected error message is not a string or RegExp.")); // TODO: this needs to change for self-test
40
+ }).toThrowError("Expected error message is not a string or RegExp.");
41
41
  });
42
42
 
43
43
  it("fails if actual does not throw at all", function() {
@@ -4,7 +4,8 @@ describe("toThrow", function() {
4
4
 
5
5
  expect(function() {
6
6
  matcher.compare({});
7
- }).toThrow(new Error("Actual is not a Function")); // TODO: this needs to change for self-test
7
+ matcherComparator({});
8
+ }).toThrowError("Actual is not a Function");
8
9
  });
9
10
 
10
11
  it("fails if actual does not throw", function() {
@@ -95,4 +96,4 @@ describe("toThrow", function() {
95
96
  expect(result.pass).toBe(false);
96
97
  expect(result.message).toEqual("Expected function to throw undefined, but it threw 5.");
97
98
  });
98
- });
99
+ });
@@ -15,4 +15,4 @@ describe("j$.HtmlSpecFilter", function() {
15
15
  expect(specFilter.matches("foo")).toBe(true);
16
16
  expect(specFilter.matches("bar")).toBe(false);
17
17
  });
18
- });
18
+ });
@@ -3,7 +3,6 @@ describe("MatchersSpec - HTML Dependent", function () {
3
3
 
4
4
  beforeEach(function() {
5
5
  env = new j$.Env();
6
- env.updateInterval = 0;
7
6
 
8
7
  var suite = env.describe("suite", function() {
9
8
  spec = env.it("spec", function() {
@@ -40,4 +40,4 @@ describe("QueryString", function() {
40
40
  expect(queryString.getParam("baz")).toBeFalsy();
41
41
  });
42
42
  });
43
- });
43
+ });
@@ -59,4 +59,4 @@ describe("ResultsNode", function() {
59
59
 
60
60
  expect(node.last()).toBe(node.children[node.children.length - 1]);
61
61
  });
62
- });
62
+ });
@@ -6,7 +6,7 @@ var path = require('path');
6
6
  var jasmineRequire = require('../lib/jasmine-core/jasmine.js');
7
7
  var jasmine = jasmineRequire.core(jasmineRequire);
8
8
 
9
- var consoleFns = require('../src/console/console.js');
9
+ var consoleFns = require('../lib/console/console.js');
10
10
  extend(jasmineRequire, consoleFns);
11
11
  jasmineRequire.console(jasmineRequire, jasmine);
12
12
 
@@ -41,20 +41,10 @@ var jasmineInterface = {
41
41
  return env.expect(actual);
42
42
  },
43
43
 
44
- addMatchers: function(matchers) {
45
- return env.addMatchers(matchers);
46
- },
47
-
48
44
  spyOn: function(obj, methodName) {
49
45
  return env.spyOn(obj, methodName);
50
46
  },
51
47
 
52
- clock: env.clock,
53
- setTimeout: env.clock.setTimeout,
54
- clearTimeout: env.clock.clearTimeout,
55
- setInterval: env.clock.setInterval,
56
- clearInterval: env.clock.clearInterval,
57
-
58
48
  jsApiReporter: new jasmine.JsApiReporter({
59
49
  timer: new jasmine.Timer()
60
50
  })
@@ -67,6 +57,18 @@ function extend(destination, source) {
67
57
  return destination;
68
58
  }
69
59
 
60
+ jasmine.addCustomEqualityTester = function(tester) {
61
+ env.addCustomEqualityTester(tester);
62
+ };
63
+
64
+ jasmine.addMatchers = function(matchers) {
65
+ return env.addMatchers(matchers);
66
+ };
67
+
68
+ jasmine.clock = function() {
69
+ return env.clock;
70
+ };
71
+
70
72
  // Jasmine "runner"
71
73
  function executeSpecs(specs, done, isVerbose, showColors) {
72
74
  global.jasmine = jasmine;
@@ -39,15 +39,10 @@
39
39
  return env.pending();
40
40
  },
41
41
 
42
- addMatchers: function(matchers) {
43
- return env.addMatchers(matchers);
44
- },
45
-
46
42
  spyOn: function(obj, methodName) {
47
43
  return env.spyOn(obj, methodName);
48
44
  },
49
45
 
50
- clock: env.clock,
51
46
  jsApiReporter: new jasmine.JsApiReporter({
52
47
  timer: new jasmine.Timer()
53
48
  })
@@ -59,6 +54,18 @@
59
54
  extend(window, jasmineInterface);
60
55
  }
61
56
 
57
+ jasmine.addCustomEqualityTester = function(tester) {
58
+ env.addCustomEqualityTester(tester);
59
+ };
60
+
61
+ jasmine.addMatchers = function(matchers) {
62
+ return env.addMatchers(matchers);
63
+ };
64
+
65
+ jasmine.clock = function() {
66
+ return env.clock;
67
+ };
68
+
62
69
  var queryString = new jasmine.QueryString({
63
70
  getWindowLocation: function() { return window.location; }
64
71
  });
@@ -69,7 +76,6 @@
69
76
 
70
77
  var htmlReporter = new jasmine.HtmlReporter({
71
78
  env: env,
72
- queryString: queryString,
73
79
  onRaiseExceptionsClick: function() { queryString.setParam("catch", !env.catchingExceptions()); },
74
80
  getContainer: function() { return document.body; },
75
81
  createElement: function() { return document.createElement.apply(document, arguments); },
@@ -88,6 +94,11 @@
88
94
  return specFilter.matches(spec.getFullName());
89
95
  };
90
96
 
97
+ window.setTimeout = window.setTimeout;
98
+ window.setInterval = window.setInterval;
99
+ window.clearTimeout = window.clearTimeout;
100
+ window.clearInterval = window.clearInterval;
101
+
91
102
  var currentWindowOnload = window.onload;
92
103
 
93
104
  window.onload = function() {
@@ -4,6 +4,6 @@
4
4
  #
5
5
  module Jasmine
6
6
  module Core
7
- VERSION = "2.0.0.rc3"
7
+ VERSION = "2.0.0.rc5"
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc3
4
+ version: 2.0.0.rc5
5
+ prerelease: 6
5
6
  platform: ruby
6
7
  authors:
7
8
  - Rajan Agaskar
@@ -10,48 +11,70 @@ authors:
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2013-10-03 00:00:00.000000000 Z
14
+ date: 2013-10-30 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: rake
17
18
  requirement: !ruby/object:Gem::Requirement
19
+ none: false
18
20
  requirements:
19
- - - '>='
21
+ - - ! '>='
20
22
  - !ruby/object:Gem::Version
21
23
  version: '0'
22
24
  type: :development
23
25
  prerelease: false
24
26
  version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
25
28
  requirements:
26
- - - '>='
29
+ - - ! '>='
27
30
  - !ruby/object:Gem::Version
28
31
  version: '0'
29
32
  - !ruby/object:Gem::Dependency
30
33
  name: sauce-connect
31
34
  requirement: !ruby/object:Gem::Requirement
35
+ none: false
32
36
  requirements:
33
- - - '>='
37
+ - - ! '>='
34
38
  - !ruby/object:Gem::Version
35
39
  version: '0'
36
40
  type: :development
37
41
  prerelease: false
38
42
  version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
39
44
  requirements:
40
- - - '>='
45
+ - - ! '>='
41
46
  - !ruby/object:Gem::Version
42
47
  version: '0'
43
48
  - !ruby/object:Gem::Dependency
44
49
  name: jasmine_selenium_runner
45
50
  requirement: !ruby/object:Gem::Requirement
51
+ none: false
46
52
  requirements:
47
- - - '>='
53
+ - - ! '>='
48
54
  - !ruby/object:Gem::Version
49
55
  version: '0'
50
56
  type: :development
51
57
  prerelease: false
52
58
  version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
53
60
  requirements:
54
- - - '>='
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
65
+ name: compass
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
55
78
  - !ruby/object:Gem::Version
56
79
  version: '0'
57
80
  description: Test your JavaScript without any framework dependencies, in any environment,
@@ -61,6 +84,7 @@ executables: []
61
84
  extensions: []
62
85
  extra_rdoc_files: []
63
86
  files:
87
+ - ./lib/console/console.js
64
88
  - ./lib/jasmine-core/boot/boot.js
65
89
  - ./lib/jasmine-core/boot.js
66
90
  - ./lib/jasmine-core/example/spec/PlayerSpec.js
@@ -127,25 +151,29 @@ files:
127
151
  homepage: http://pivotal.github.com/jasmine
128
152
  licenses:
129
153
  - MIT
130
- metadata: {}
131
154
  post_install_message:
132
155
  rdoc_options: []
133
156
  require_paths:
134
157
  - lib
135
158
  required_ruby_version: !ruby/object:Gem::Requirement
159
+ none: false
136
160
  requirements:
137
- - - '>='
161
+ - - ! '>='
138
162
  - !ruby/object:Gem::Version
139
163
  version: '0'
164
+ segments:
165
+ - 0
166
+ hash: -465958554793183644
140
167
  required_rubygems_version: !ruby/object:Gem::Requirement
168
+ none: false
141
169
  requirements:
142
- - - '>'
170
+ - - ! '>'
143
171
  - !ruby/object:Gem::Version
144
172
  version: 1.3.1
145
173
  requirements: []
146
174
  rubyforge_project: jasmine-core
147
- rubygems_version: 2.0.5
175
+ rubygems_version: 1.8.25
148
176
  signing_key:
149
- specification_version: 4
177
+ specification_version: 3
150
178
  summary: JavaScript BDD framework
151
179
  test_files: []