jasmine-core 2.6.3 → 2.6.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0204503a0e9c2cd889879c645c304d026a90e52b
4
- data.tar.gz: 4a56201ba113f13b9d1880c1241266e00267fb56
3
+ metadata.gz: c673112abd7b640e9bd6b9cf88f17880f8a64a0f
4
+ data.tar.gz: a05601e46292ec06611cfd192eff15c0fbd03f68
5
5
  SHA512:
6
- metadata.gz: 42bef502da07b4a5a056353a0dec09c4a3ef666df94d5f3504c1ef244ddb65f7c86c87e7bc33b08e77e1cabf5faca4c5369c13cf37ec75937467096420d9fe8c
7
- data.tar.gz: df306111e737b9d84a67cf9857896db6f1a322e522d73d12f3ac2f0f8813b64f92e31006ac63c35660ee9792e1d0790ca523f4121528a6d3944629e1f5b53725
6
+ metadata.gz: cf3a294a022aa965aaf9f16475003f0901f8a1724b340575a6cfac372d9008cc153109c5888bec22525e8e8fdd8849effb7a843db02bd21955dcc26384ce8d6b
7
+ data.tar.gz: 8b02dfb58fa1dfd5eaec2d4f4150dfc55625c9f30b4c1e0e64e736297141b7ce8da156273e9b4e941666fe3cc3f7146f3c2aedf9f21f6af111122354a67a1de6
@@ -1600,7 +1600,9 @@ getJasmineRequireObj().CallTracker = function(j$) {
1600
1600
  };
1601
1601
 
1602
1602
  getJasmineRequireObj().clearStack = function(j$) {
1603
- function messageChannelImpl(global) {
1603
+ var maxInlineCallCount = 10;
1604
+
1605
+ function messageChannelImpl(global, setTimeout) {
1604
1606
  var channel = new global.MessageChannel(),
1605
1607
  head = {},
1606
1608
  tail = head;
@@ -1623,25 +1625,44 @@ getJasmineRequireObj().clearStack = function(j$) {
1623
1625
  }
1624
1626
  };
1625
1627
 
1628
+ var currentCallCount = 0;
1626
1629
  return function clearStack(fn) {
1627
- tail = tail.next = { task: fn };
1628
- channel.port2.postMessage(0);
1630
+ currentCallCount++;
1631
+
1632
+ if (currentCallCount < maxInlineCallCount) {
1633
+ tail = tail.next = { task: fn };
1634
+ channel.port2.postMessage(0);
1635
+ } else {
1636
+ currentCallCount = 0;
1637
+ setTimeout(fn);
1638
+ }
1629
1639
  };
1630
1640
  }
1631
1641
 
1632
1642
  function getClearStack(global) {
1643
+ var currentCallCount = 0;
1644
+ var realSetTimeout = global.setTimeout;
1645
+ var setTimeoutImpl = function clearStack(fn) {
1646
+ Function.prototype.apply.apply(realSetTimeout, [global, [fn, 0]]);
1647
+ };
1648
+
1633
1649
  if (j$.isFunction_(global.setImmediate)) {
1634
1650
  var realSetImmediate = global.setImmediate;
1635
1651
  return function(fn) {
1636
- realSetImmediate(fn);
1652
+ currentCallCount++;
1653
+
1654
+ if (currentCallCount < maxInlineCallCount) {
1655
+ realSetImmediate(fn);
1656
+ } else {
1657
+ currentCallCount = 0;
1658
+
1659
+ setTimeoutImpl(fn);
1660
+ }
1637
1661
  };
1638
1662
  } else if (!j$.util.isUndefined(global.MessageChannel)) {
1639
- return messageChannelImpl(global);
1663
+ return messageChannelImpl(global, setTimeoutImpl);
1640
1664
  } else {
1641
- var realSetTimeout = global.setTimeout;
1642
- return function clearStack(fn) {
1643
- Function.prototype.apply.apply(realSetTimeout, [global, [fn, 0]]);
1644
- };
1665
+ return setTimeoutImpl;
1645
1666
  }
1646
1667
  }
1647
1668
 
@@ -4976,5 +4997,5 @@ getJasmineRequireObj().TreeProcessor = function() {
4976
4997
  };
4977
4998
 
4978
4999
  getJasmineRequireObj().version = function() {
4979
- return '2.6.3';
5000
+ return '2.6.4';
4980
5001
  };
@@ -21,6 +21,34 @@ describe("ClearStack", function() {
21
21
  expect(setImmediate).toHaveBeenCalled();
22
22
  });
23
23
 
24
+ it("uses setTimeout instead of setImmediate every 10 calls to make sure we release the CPU", function() {
25
+ var setImmediate = jasmine.createSpy('setImmediate'),
26
+ setTimeout = jasmine.createSpy('setTimeout'),
27
+ global = { setImmediate: setImmediate, setTimeout: setTimeout },
28
+ clearStack = jasmineUnderTest.getClearStack(global);
29
+
30
+ clearStack(function() { });
31
+ clearStack(function() { });
32
+ clearStack(function() { });
33
+ clearStack(function() { });
34
+ clearStack(function() { });
35
+ clearStack(function() { });
36
+ clearStack(function() { });
37
+ clearStack(function() { });
38
+ clearStack(function() { });
39
+
40
+ expect(setImmediate).toHaveBeenCalled();
41
+ expect(setTimeout).not.toHaveBeenCalled();
42
+
43
+ clearStack(function() { });
44
+ expect(setImmediate.calls.count()).toEqual(9);
45
+ expect(setTimeout.calls.count()).toEqual(1);
46
+
47
+ clearStack(function() { });
48
+ expect(setImmediate.calls.count()).toEqual(10);
49
+ expect(setTimeout.calls.count()).toEqual(1);
50
+ });
51
+
24
52
  it("uses MessageChannels when available", function() {
25
53
  var fakeChannel = {
26
54
  port1: {},
@@ -37,6 +65,41 @@ describe("ClearStack", function() {
37
65
  expect(called).toBe(true);
38
66
  });
39
67
 
68
+ it("uses setTimeout instead of MessageChannel every 10 calls to make sure we release the CPU", function() {
69
+ var fakeChannel = {
70
+ port1: {},
71
+ port2: {
72
+ postMessage: jasmine.createSpy('postMessage').and.callFake(function() {
73
+ fakeChannel.port1.onmessage();
74
+ })
75
+ }
76
+ },
77
+ setTimeout = jasmine.createSpy('setTimeout'),
78
+ global = { MessageChannel: function() { return fakeChannel; }, setTimeout: setTimeout },
79
+ clearStack = jasmineUnderTest.getClearStack(global);
80
+
81
+ clearStack(function() { });
82
+ clearStack(function() { });
83
+ clearStack(function() { });
84
+ clearStack(function() { });
85
+ clearStack(function() { });
86
+ clearStack(function() { });
87
+ clearStack(function() { });
88
+ clearStack(function() { });
89
+ clearStack(function() { });
90
+
91
+ expect(fakeChannel.port2.postMessage).toHaveBeenCalled();
92
+ expect(setTimeout).not.toHaveBeenCalled();
93
+
94
+ clearStack(function() { });
95
+ expect(fakeChannel.port2.postMessage.calls.count()).toEqual(9);
96
+ expect(setTimeout.calls.count()).toEqual(1);
97
+
98
+ clearStack(function() { });
99
+ expect(fakeChannel.port2.postMessage.calls.count()).toEqual(10);
100
+ expect(setTimeout.calls.count()).toEqual(1);
101
+ });
102
+
40
103
  it("calls setTimeout when onmessage is called recursively", function() {
41
104
  var fakeChannel = {
42
105
  port1: {},
@@ -952,16 +952,15 @@ describe("Env integration", function() {
952
952
  });
953
953
 
954
954
  describe("with a mock clock", function() {
955
- var originalTimeout;
956
-
957
955
  beforeEach(function() {
958
- originalTimeout = jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL;
956
+ this.originalTimeout = jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL;
957
+ this.realSetTimeout = setTimeout;
959
958
  jasmine.clock().install();
960
959
  });
961
960
 
962
961
  afterEach(function() {
963
962
  jasmine.clock().uninstall();
964
- jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
963
+ jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL = this.originalTimeout;
965
964
  });
966
965
 
967
966
  it("should wait a specified interval before failing specs haven't called done yet", function(done) {
@@ -1080,7 +1079,8 @@ describe("Env integration", function() {
1080
1079
 
1081
1080
  it('should wait a custom interval before reporting async functions that fail to call done', function(done) {
1082
1081
  var env = new jasmineUnderTest.Env(),
1083
- reporter = jasmine.createSpyObj('fakeReport', ['jasmineDone', 'suiteDone', 'specDone']);
1082
+ reporter = jasmine.createSpyObj('fakeReport', ['jasmineDone', 'suiteDone', 'specDone']),
1083
+ realSetTimeout = this.realSetTimeout;
1084
1084
 
1085
1085
  reporter.jasmineDone.and.callFake(function() {
1086
1086
  expect(reporter.specDone).toHaveFailedExpecationsForRunnable('suite beforeAll times out', [
@@ -1110,6 +1110,11 @@ describe("Env integration", function() {
1110
1110
  jasmineUnderTest.DEFAULT_TIMEOUT_INTERVAL = 10000;
1111
1111
 
1112
1112
  env.describe('suite', function() {
1113
+ env.afterAll(function() {
1114
+ realSetTimeout(function() {
1115
+ jasmine.clock().tick(10);
1116
+ }, 100);
1117
+ });
1113
1118
  env.describe('beforeAll', function() {
1114
1119
  env.beforeAll(function(innerDone) {
1115
1120
  jasmine.clock().tick(5001);
@@ -4,6 +4,6 @@
4
4
  #
5
5
  module Jasmine
6
6
  module Core
7
- VERSION = "2.6.3"
7
+ VERSION = "2.6.4"
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.3
4
+ version: 2.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Van Hove
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-07 00:00:00.000000000 Z
11
+ date: 2017-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake