Skip to content

Commit

Permalink
Refactor the Es6RewriteModules interop tests to have more consistent …
Browse files Browse the repository at this point in the history
…names and grouping.

Note that "GoogRequire" is added to the name of some tests in preparation for an upcoming CL that adds corresponding "GoogRequireType" tests.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=214955435
  • Loading branch information
tjgq authored and lauraharker committed Oct 2, 2018
1 parent f73fc6f commit 9469881
Showing 1 changed file with 43 additions and 34 deletions.
Expand Up @@ -113,20 +113,29 @@ public void testClosureFilesUnchanged() {
} }


@Test @Test
public void testGoogRequiresInNonEs6ModuleUnchanged() { public void testGoogRequireInNonEs6ModuleUnchanged() {
testSame("goog.require('foo.bar');"); testSame("goog.require('foo.bar');");
testSame("var bar = goog.require('foo.bar');"); testSame("var bar = goog.require('foo.bar');");
} }


@Test
public void testForwardDeclareInNonEs6ModuleUnchanged() {
testSame("goog.forwardDeclare('foo.bar');");
testSame("var bar = goog.forwardDeclare('foo.bar');");
}

@Test @Test
public void testGoogRequireInEs6ModuleDoesNotExistIsError() { public void testGoogRequireInEs6ModuleDoesNotExistIsError() {
testError("export var x; goog.require('foo.bar');", MISSING_MODULE_OR_PROVIDE); testError("export var x; goog.require('foo.bar');", MISSING_MODULE_OR_PROVIDE);
} }


// TODO(tjgq): Add tests for require and forwardDeclare with an invalid namespace.
// They currently produce a DEPS_PARSE_ERROR in JsFileLineParser.

@Test @Test
public void testGoogModuleGetNonStringIsError() { public void testGoogModuleGetNonStringIsError() {
testError("const y = goog.module.get();\nexport {};", INVALID_GET_NAMESPACE); testError(lines("const y = goog.module.get();", "export {};"), INVALID_GET_NAMESPACE);
testError("const y = goog.module.get(0);\nexport {};", INVALID_GET_NAMESPACE); testError(lines("const y = goog.module.get(0);", "export {};"), INVALID_GET_NAMESPACE);
} }


@Test @Test
Expand All @@ -140,9 +149,9 @@ public void testGoogRequireForProvide() {
@Test @Test
public void testGoogRequireForProvideWithDestructure() { public void testGoogRequireForProvideWithDestructure() {
testModules( testModules(
lines("const {a, b:c} = goog.require('closure.provide');", "use(a, a.z, c)", "export {};"), lines("const {a, b:c} = goog.require('closure.provide');", "use(a, a.d, c)", "export {};"),
lines( lines(
"use(closure.provide.a, closure.provide.a.z, closure.provide.b);", "use(closure.provide.a, closure.provide.a.d, closure.provide.b);",
"/** @const */ var module$testcode = {};")); "/** @const */ var module$testcode = {};"));
} }


Expand All @@ -158,22 +167,13 @@ public void testGoogRequireForGoogModule() {
@Test @Test
public void testGoogRequireForGoogModuleWithDestructure() { public void testGoogRequireForGoogModuleWithDestructure() {
testModules( testModules(
lines("const {a, b:c} = goog.require('closure.module');", "use(a, a.z, c)", "export {};"), lines("const {a, b:c} = goog.require('closure.module');", "use(a, a.d, c)", "export {};"),
lines( lines(
"use(module$exports$closure$module.a, module$exports$closure$module.a.z,", "use(module$exports$closure$module.a, module$exports$closure$module.a.d,",
" module$exports$closure$module.b);", " module$exports$closure$module.b);",
"/** @const */ var module$testcode = {};")); "/** @const */ var module$testcode = {};"));
} }


@Test
public void testGoogModuleGetForGoogModule() {
testModules(
"function foo() { const y = goog.module.get('closure.module'); }\nexport {};",
lines(
"function foo$$module$testcode() { const y = module$exports$closure$module; }",
"/** @const */ var module$testcode = {};"));
}

@Test @Test
public void testGoogRequireForLegacyGoogModule() { public void testGoogRequireForLegacyGoogModule() {
testModules( testModules(
Expand All @@ -188,10 +188,19 @@ public void testGoogRequireForLegacyGoogModuleWithDestructure() {
testModules( testModules(
lines( lines(
"const {a, b:c} = goog.require('closure.legacy.module');", "const {a, b:c} = goog.require('closure.legacy.module');",
"use(a, a.z, c)", "use(a, a.d, c)",
"export {};"), "export {};"),
lines( lines(
"use(closure.legacy.module.a, closure.legacy.module.a.z, closure.legacy.module.b);", "use(closure.legacy.module.a, closure.legacy.module.a.d, closure.legacy.module.b);",
"/** @const */ var module$testcode = {};"));
}

@Test
public void testGoogModuleGetForGoogModule() {
testModules(
lines("function foo() { const y = goog.module.get('closure.module'); } export {};"),
lines(
"function foo$$module$testcode() { const y = module$exports$closure$module; }",
"/** @const */ var module$testcode = {};")); "/** @const */ var module$testcode = {};"));
} }


Expand All @@ -208,7 +217,7 @@ public void testGoogModuleGetForLegacyGoogModule() {
public void testGoogModuleGetForEs6Module() { public void testGoogModuleGetForEs6Module() {
test( test(
srcs( srcs(
SourceFile.fromCode("es6.js", "export{}; goog.declareModuleId('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.declareModuleId('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
"goog.module('my.module'); function f() { const y = goog.module.get('es6'); }")), "goog.module('my.module'); function f() { const y = goog.module.get('es6'); }")),
Expand All @@ -222,7 +231,7 @@ public void testGoogModuleGetForEs6Module() {
public void testGoogModuleGetForEs6ModuleDeclaresNamespace() { public void testGoogModuleGetForEs6ModuleDeclaresNamespace() {
test( test(
srcs( srcs(
SourceFile.fromCode("es6.js", "export{}; goog.module.declareNamespace('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.module.declareNamespace('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
"goog.module('my.module'); function f() { const y = goog.module.get('es6'); }")), "goog.module('my.module'); function f() { const y = goog.module.get('es6'); }")),
Expand Down Expand Up @@ -320,11 +329,11 @@ public void testDestructureDeclareNamespace() {
@Test @Test
public void testGoogRequireLhsNonConstIsError() { public void testGoogRequireLhsNonConstIsError() {
testModulesError( testModulesError(
"var bar = goog.require('closure.provide');\nexport var x;", lines("var bar = goog.require('closure.provide');", "export var x;"),
LHS_OF_GOOG_REQUIRE_MUST_BE_CONST); LHS_OF_GOOG_REQUIRE_MUST_BE_CONST);


testModulesError( testModulesError(
"export var x;\nvar bar = goog.require('closure.provide');", lines("export var x;", "var bar = goog.require('closure.provide');"),
LHS_OF_GOOG_REQUIRE_MUST_BE_CONST); LHS_OF_GOOG_REQUIRE_MUST_BE_CONST);


testModulesError( testModulesError(
Expand All @@ -344,7 +353,7 @@ public void testNamespaceImports() {


testModules( testModules(
lines("import {x, y} from 'goog:closure.provide';", "use(x);", "use(y);"), lines("import {x, y} from 'goog:closure.provide';", "use(x);", "use(y);"),
"use(closure.provide.x);\n use(closure.provide.y);/** @const */ var module$testcode = {};"); "use(closure.provide.x); use(closure.provide.y);/** @const */ var module$testcode = {};");


testModules( testModules(
lines("import Foo from 'goog:closure.provide';", "/** @type {Foo} */ var foo = new Foo();"), lines("import Foo from 'goog:closure.provide';", "/** @type {Foo} */ var foo = new Foo();"),
Expand Down Expand Up @@ -388,7 +397,7 @@ public void testGoogModuleGetCannotBeModuleHoistScope() {
} }


@Test @Test
public void testExportSpecRequiredSymbol() { public void testExportSpecGoogRequire() {
testModules( testModules(
lines("const {a} = goog.require('closure.provide');", "export {a};"), lines("const {a} = goog.require('closure.provide');", "export {a};"),
lines( lines(
Expand All @@ -410,7 +419,7 @@ public void testRequireAndStoreGlobalUnqualifiedProvide() {
} }


@Test @Test
public void testTypeNodeIsRenamed() { public void testGoogRequireAnnotationIsRenamed() {
testModules( testModules(
lines("const {Type} = goog.require('closure.provide');", "export let /** !Type */ value;"), lines("const {Type} = goog.require('closure.provide');", "export let /** !Type */ value;"),
lines( lines(
Expand All @@ -427,7 +436,7 @@ public void testTypeNodeIsRenamed() {
} }


@Test @Test
public void testCorrectTypeNodeIsRenamed() { public void testGoogRequireCorrectAnnotationIsRenamed() {
testModules( testModules(
lines( lines(
"const {Type} = goog.require('closure.provide');", "const {Type} = goog.require('closure.provide');",
Expand All @@ -450,7 +459,7 @@ public void testCorrectTypeNodeIsRenamed() {
public void testForwardDeclareEs6Module() { public void testForwardDeclareEs6Module() {
test( test(
srcs( srcs(
SourceFile.fromCode("es6.js", "export{}; goog.declareModuleId('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.declareModuleId('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
lines( lines(
Expand All @@ -466,7 +475,7 @@ public void testForwardDeclareEs6Module() {


test( test(
srcs( srcs(
SourceFile.fromCode("es6.js", "export{}; goog.declareModuleId('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.declareModuleId('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
lines( lines(
Expand All @@ -482,7 +491,7 @@ public void testForwardDeclareEs6Module() {


testError( testError(
ImmutableList.of( ImmutableList.of(
SourceFile.fromCode("es6.js", "export{}; goog.declareModuleId('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.declareModuleId('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
lines( lines(
Expand All @@ -497,7 +506,7 @@ public void testForwardDeclareEs6Module() {
public void testForwardDeclareEs6ModuleDeclareNamespace() { public void testForwardDeclareEs6ModuleDeclareNamespace() {
test( test(
srcs( srcs(
SourceFile.fromCode("es6.js", "export{}; goog.module.declareNamespace('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.module.declareNamespace('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
lines( lines(
Expand All @@ -513,7 +522,7 @@ public void testForwardDeclareEs6ModuleDeclareNamespace() {


test( test(
srcs( srcs(
SourceFile.fromCode("es6.js", "export{}; goog.module.declareNamespace('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.module.declareNamespace('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
lines( lines(
Expand All @@ -529,7 +538,7 @@ public void testForwardDeclareEs6ModuleDeclareNamespace() {


testError( testError(
ImmutableList.of( ImmutableList.of(
SourceFile.fromCode("es6.js", "export{}; goog.module.declareNamespace('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.module.declareNamespace('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
lines( lines(
Expand Down Expand Up @@ -614,7 +623,7 @@ public void testForwardDeclareEs6ModuleInEs6Module() {


test( test(
srcs( srcs(
SourceFile.fromCode("es6.js", "export{}; goog.module.declareNamespace('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.module.declareNamespace('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"forwarddeclare.js", "forwarddeclare.js",
lines( lines(
Expand All @@ -633,7 +642,7 @@ public void testForwardDeclareEs6ModuleInEs6Module() {


testError( testError(
ImmutableList.of( ImmutableList.of(
SourceFile.fromCode("es6.js", "export{}; goog.module.declareNamespace('es6');"), SourceFile.fromCode("es6.js", "export {}; goog.module.declareNamespace('es6');"),
SourceFile.fromCode( SourceFile.fromCode(
"closure.js", "closure.js",
lines( lines(
Expand Down

0 comments on commit 9469881

Please sign in to comment.