Remove unnecessary coupling between Promise tests and Object.observe
authoradamk <adamk@chromium.org>
Tue, 21 Jul 2015 17:16:57 +0000 (10:16 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 21 Jul 2015 17:17:07 +0000 (17:17 +0000)
Many mjsunit tests (as well as the promises-aplus adapter scripts) were
using Object.observe simply for microtask-enqueueing purposes. Replaced
such uses with %EnqueueMicrotask.

Review URL: https://codereview.chromium.org/1246933002

Cr-Commit-Position: refs/heads/master@{#29779}

19 files changed:
test/mjsunit/es6/debug-promises/events.js
test/mjsunit/es6/debug-promises/reject-caught-all.js
test/mjsunit/es6/debug-promises/reject-caught-by-default-reject-handler.js
test/mjsunit/es6/debug-promises/reject-uncaught-all.js
test/mjsunit/es6/debug-promises/reject-uncaught-late.js
test/mjsunit/es6/debug-promises/reject-uncaught-uncaught.js
test/mjsunit/es6/debug-promises/reject-with-invalid-reject.js
test/mjsunit/es6/debug-promises/reject-with-throw-in-reject.js
test/mjsunit/es6/debug-promises/reject-with-undefined-reject.js
test/mjsunit/es6/debug-promises/throw-caught-all.js
test/mjsunit/es6/debug-promises/throw-caught-by-default-reject-handler.js
test/mjsunit/es6/debug-promises/throw-uncaught-all.js
test/mjsunit/es6/debug-promises/throw-uncaught-uncaught.js
test/mjsunit/es6/debug-promises/throw-with-throw-in-reject.js
test/mjsunit/es6/debug-promises/throw-with-undefined-reject.js
test/mjsunit/es6/promises.js
test/promises-aplus/lib/global.js
test/promises-aplus/lib/mocha.js
test/promises-aplus/testcfg.py

index a9f9454..3fcb22f 100644 (file)
@@ -116,9 +116,7 @@ function testDone(iteration) {
   }
 
   var iteration = iteration || 0;
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone();
index 0fca577..fd4770e 100644 (file)
@@ -63,10 +63,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 63151df..b7c5861 100644 (file)
@@ -77,10 +77,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index beaf187..0b0c0c8 100644 (file)
@@ -60,10 +60,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 4a883da..db58790 100644 (file)
@@ -67,10 +67,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 86e2a81..ac23b48 100644 (file)
@@ -60,10 +60,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index fc6233d..fa26345 100644 (file)
@@ -66,10 +66,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 15e464e..6b7dc1a 100644 (file)
@@ -78,10 +78,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index d11c01f..4c57cf0 100644 (file)
@@ -66,10 +66,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 2fbf051..bd6d343 100644 (file)
@@ -62,10 +62,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 36b5565..3c30ad3 100644 (file)
@@ -78,10 +78,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 72f800b..c4bc6c4 100644 (file)
@@ -61,10 +61,7 @@ function testDone(iteration) {
     }
   }
 
-  // Rerun testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 69aa8eb..ba82a1f 100644 (file)
@@ -61,10 +61,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 1ea1c7f..bd39a15 100644 (file)
@@ -81,10 +81,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 94dcdff..c88feb9 100644 (file)
@@ -79,10 +79,7 @@ function testDone(iteration) {
     }
   }
 
-  // Run testDone through the Object.observe processing loop.
-  var dummy = {};
-  Object.observe(dummy, checkResult);
-  dummy.dummy = dummy;
+  %EnqueueMicrotask(checkResult);
 }
 
 testDone(0);
index 63b6d2f..19239b6 100644 (file)
@@ -29,7 +29,6 @@
 
 // Make sure we don't rely on functions patchable by monkeys.
 var call = Function.prototype.call.call.bind(Function.prototype.call)
-var observe = Object.observe;
 var getOwnPropertyNames = Object.getOwnPropertyNames;
 var defineProperty = Object.defineProperty;
 var numberPrototype = Number.prototype;
@@ -87,19 +86,15 @@ function assertAsync(b, s) {
 }
 
 function assertAsyncDone(iteration) {
-  var iteration = iteration || 0
-  var dummy = {}
-  observe(dummy,
-    function() {
-      if (asyncAssertsExpected === 0)
-        assertAsync(true, "all")
-      else if (iteration > 10)  // Shouldn't take more.
-        assertAsync(false, "all")
-      else
-        assertAsyncDone(iteration + 1)
-    }
-  )
-  dummy.dummy = dummy
+  var iteration = iteration || 0;
+  %EnqueueMicrotask(function() {
+    if (asyncAssertsExpected === 0)
+      assertAsync(true, "all")
+    else if (iteration > 10)  // Shouldn't take more.
+      assertAsync(false, "all")
+    else
+      assertAsyncDone(iteration + 1)
+  });
 }
 
 
index 1466d20..ece338e 100644 (file)
@@ -33,15 +33,6 @@ var clearTimeout;
 var timers = {};
 var currentId = 0;
 
-function PostMicrotask(fn) {
-  var o = {};
-  Object.observe(o, function() {
-    fn();
-  });
-  // Change something to enqueue a microtask.
-  o.x = 'hello';
-}
-
 setInterval = function(fn, delay) {
   var i = 0;
   var id = currentId++;
@@ -52,9 +43,9 @@ setInterval = function(fn, delay) {
     if (i++ >= delay) {
       fn();
     }
-    PostMicrotask(loop);
+    %EnqueueMicrotask(loop);
   }
-  PostMicrotask(loop);
+  %EnqueueMicrotask(loop);
   timers[id] = true;
   return id;
 }
index 24d294e..0a172b9 100644 (file)
@@ -41,15 +41,6 @@ var assert = require('assert');
 (function() {
 var TIMEOUT = 1000;
 
-function PostMicrotask(fn) {
-  var o = {};
-  Object.observe(o, function() {
-    fn();
-  });
-  // Change something to enqueue a microtask.
-  o.x = 'hello';
-}
-
 var context = {
   beingDescribed: undefined,
   currentSuiteIndex: 0,
@@ -162,7 +153,7 @@ TestCase.prototype.Run = function(suite, postAction) {
         if (this.isRegular) {
           print('PASS: ' + suite.description + '#' + this.name);
         }
-        PostMicrotask(postAction);
+        %EnqueueMicrotask(postAction);
       }.bind(this));
     }.bind(this));
   }.bind(this));
@@ -194,14 +185,14 @@ function TestSuite(described) {
 TestSuite.prototype.Run = function() {
   this.hasRun = this.currentIndex === this.cases.length;
   if (this.hasRun) {
-    PostMicrotask(Run);
+    %EnqueueMicrotask(Run);
     return;
   }
 
   // TestCase.prototype.Run cannot throw an exception.
   this.cases[this.currentIndex].Run(this, function() {
     ++this.currentIndex;
-    PostMicrotask(Run);
+    %EnqueueMicrotask(Run);
   }.bind(this));
 };
 
@@ -224,7 +215,7 @@ TestSuite.prototype.ReportError = function(testCase, e) {
   print('FAIL: ' + this.description + '#' + testCase.name + ': ' +
         e.name  + ' (' + e.message + ')');
   ++this.currentIndex;
-  PostMicrotask(Run);
+  %EnqueueMicrotask(Run);
 };
 
 describe = function(description, fn) {
index bd03379..5f447c3 100644 (file)
@@ -77,7 +77,7 @@ class PromiseAplusTestSuite(testsuite.TestSuite):
             if fname.endswith('.js')]
 
   def GetFlagsForTestCase(self, testcase, context):
-    return (testcase.flags + context.mode_flags + ['--harmony'] +
+    return (testcase.flags + context.mode_flags + ['--allow-natives-syntax'] +
             self.helper_files_pre +
             [os.path.join(self.test_files_root, testcase.path + '.js')] +
             self.helper_files_post)