var assert = require("assert"); var UglifyJS = require("../node"); describe("async", function() { it("Should reject `await` as symbol name within async functions only", function() { [ "function await() {}", "function(await) {}", "function() { await; }", "function() { await:{} }", "function() { var await; }", "function() { function await() {} }", "function() { try {} catch (await) {} }", ].forEach(function(code) { var ast = UglifyJS.parse("(" + code + ")();"); assert.strictEqual(ast.TYPE, "Toplevel"); assert.strictEqual(ast.body.length, 1); assert.strictEqual(ast.body[0].TYPE, "SimpleStatement"); assert.strictEqual(ast.body[0].body.TYPE, "Call"); assert.strictEqual(ast.body[0].body.expression.TYPE, "Function"); assert.throws(function() { UglifyJS.parse("(async " + code + ")();"); }, function(e) { return e instanceof UglifyJS.JS_Parse_Error; }, code); }); }); it("Should reject `await` expression outside of async functions", function() { [ "await 42;", "function f() { await 42; }", "async function f() { function g() { await 42; } }", ].forEach(function(code) { assert.throws(function() { UglifyJS.parse(code); }, function(e) { return e instanceof UglifyJS.JS_Parse_Error; }, code); }); }); it("Should reject `await` expression directly on computed key of function argument", function() { [ "function f({ [await 42]: a }) {}", "async function f({ [await 42]: a }) {}", ].forEach(function(code) { assert.throws(function() { UglifyJS.parse(code); }, function(e) { return e instanceof UglifyJS.JS_Parse_Error; }, code); }); }); it("Should accept `await` expression nested within computed key of function argument", function() { [ "function f({ [async function() { await 42; }()]: a }) {}", "async function f({ [async function() { await 42; }()]: a }) {}", ].forEach(function(code) { var ast = UglifyJS.parse(code); assert.strictEqual(ast.TYPE, "Toplevel"); assert.strictEqual(ast.body.length, 1); assert.strictEqual(ast.body[0].argnames.length, 1); assert.strictEqual(ast.body[0].argnames[0].TYPE, "DestructuredObject"); }); }); }); 2d38a197f5ea10eefb5f3cd25c3a52e7'>union: Add create-all-directories? parameter to 'union-build'....* guix/build/union.scm (union-build): Add create-all-directories? keyword parameter. * tests/union.scm ("union-build #:create-all-directories? #t"): New test. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Huang Ying 2016-04-03build: Add a Guile custom test driver using SRFI-64....Before that '.log' files for scheme tests were fragmented and not included in test-suite.log. This unifies the semantics of SRFI-64 API with Automake test suite. * build-aux/test-driver.scm: New file. * Makefile.am (SCM_LOG_DRIVER, AM_SCM_LOG_DRIVER_FLAGS): New variables. (SCM_LOG_COMPILER, AM_SCM_LOG_FLAGS): Delete variables. (AM_TESTS_ENVIRONMENT): Set GUILE_AUTO_COMPILE to 0. * test-env.in: Silence guix-daemon. * doc/guix.texi (Running the Test Suite): Describe how to display the detailed results. Bug reports require only 'test-suite.log' file. * tests/base32.scm, tests/build-utils.scm, tests/builders.scm, tests/challenge.scm, tests/cpan.scm, tests/cpio.scm, tests/cran.scm, tests/cve.scm, tests/derivations.scm, tests/elpa.scm, tests/file-systems.scm, tests/gem.scm, tests/gexp.scm, tests/gnu-maintenance.scm, tests/grafts.scm, tests/graph.scm, tests/gremlin.scm, tests/hackage.scm, tests/hash.scm, tests/import-utils.scm, tests/lint.scm, tests/monads.scm, tests/nar.scm, tests/packages.scm, tests/pk-crypto.scm, tests/pki.scm, tests/profiles.scm, tests/publish.scm, tests/pypi.scm, tests/records.scm, tests/scripts-build.scm, tests/scripts.scm, tests/services.scm, tests/sets.scm, tests/size.scm, tests/snix.scm, tests/store.scm, tests/substitute.scm, tests/syscalls.scm, tests/system.scm, tests/ui.scm, tests/union.scm, tests/upstream.scm, tests/utils.scm: Don't exit at the end of test groups. * tests/containers.scm: Likewise. Use 'test-skip' instead of exiting with error code 77. Mathieu Lirzin