Skip to content

Commit 376876a

Browse files
committed
[MERGE chakra-core#4461 @obastemur] Enable previously flaky test module-namespace
Merge pull request chakra-core#4461 from obastemur:en_test_mod_nam Fixes chakra-core#3778 Enabling a previously disabled flaky test back due to no repro. xplat case tested (2k times) ``` CT=0 while [ $CT -lt 2000 ]; do RESULT=`test/runtests.py -d test/es6/module-namespace.js` if [[ $? != 0 ]]; then echo $RESULT exit 1 fi let CT=CT+1 done ``` Windows - ChakraFull (2k times) ``` @echo off IF EXIST module-namespace.js ( FOR /L %%A IN (1,1,2000) DO ( ..\..\..\Build\VcBuild\bin\x64_debug\jshost.exe -bvt -BaselineMode -maxInterpretCount:1 -maxSimpleJitRunCount:1 -bgjit- -dynamicprofilecache:profile.dpl.UnnamedTest1785 -NoNative -ES6Module -Es6ToStringTag -args summary -endargs module-namespace.js IF %ERRORLEVEL% NEQ 0 ( echo "FAILED!" %ERRORLEVEL% goto :eof ) ) ) ELSE ( echo "Run this script under test/es6 OR core/test/es6 (under full)" ) ``` After not being able to repro, I was looking at the changes to the module namespace and the details of the bug; It is likely that the bug wasn't directly module namespace related but somehow triggered on this particular test. There are many improvements to property implementation since this test considered as flaky. It is likely we may not repro this issue via this file for the time being. Enabling it back. - also fixed the tabs on the test file
2 parents 63ca89c + 3f71d77 commit 376876a

2 files changed

Lines changed: 135 additions & 137 deletions

File tree

test/es6/module-namespace.js

Lines changed: 135 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var tests = [
3434
{
3535
name: "Issue3249: Namespace object's property attributes",
3636
body: function () {
37-
testModuleScript(`
37+
testModuleScript(`
3838
function verifyPropertyDesc(obj, prop, desc, propName) {
3939
var actualDesc = Object.getOwnPropertyDescriptor(obj, prop);
4040
if (typeof propName === "undefined") { propName = prop; }
@@ -43,7 +43,7 @@ var tests = [
4343
assert.areEqual(desc.writable, actualDesc.writable, propName+"'s attribute: writable");
4444
}
4545
46-
import * as foo from "ValidExportStatements.js";
46+
import * as foo from "ValidExportStatements.js";
4747
assert.areEqual("Module", foo[Symbol.toStringTag], "@@toStringTag is the String value'Module'");
4848
verifyPropertyDesc(foo, Symbol.toStringTag, {configurable:false, enumerable: false, writable: false}, "Symbol.toStringTag");
4949
verifyPropertyDesc(foo, "default", {configurable:false, enumerable: true, writable: true});
@@ -96,168 +96,168 @@ var tests = [
9696
verifyPropertyDesc(foo2, "localfoo", {configurable:false, enumerable: true, writable: true});
9797
verifyPropertyDesc(foo2, "baz", {configurable:false, enumerable: true, writable: true});
9898
verifyPropertyDesc(foo2, "foo", {configurable:false, enumerable: true, writable: true});
99-
`, '', false);
99+
`, '', false);
100100
}
101101
},
102102
{
103103
name: "Basic import namespace",
104104
body: function () {
105-
testModuleScript(`
106-
import * as foo from "ValidExportStatements.js";
107-
assert.areEqual("default", foo.default, "default");
108-
assert.areEqual(undefined, foo.var7, "var7");
109-
assert.areEqual(undefined, foo.var6, "var6");
110-
assert.areEqual(undefined, foo.var5, "var5");
111-
assert.areEqual(undefined, foo.var4, "var4");
112-
assert.areEqual(5, foo.var3, "var3");
113-
assert.areEqual(undefined, foo.var2, "var2");
114-
assert.areEqual("string", foo.var1, "var1");
115-
assert.areEqual("function foo() { }", foo.foo4.toString(), "foo4");
116-
assert.areEqual("class bar { }", foo.bar2.toString(), "bar2");
117-
assert.areEqual("function foobar() { }", foo.foobar.toString(), "foobar");
118-
assert.areEqual("function foo() { }", foo.foo3.toString(), "foo3");
119-
assert.areEqual("function* baz() { }", foo.baz2.toString(), "baz2");
120-
assert.areEqual("function foo() { }", foo.foo2.toString(), "foo2");
121-
assert.areEqual("function* baz() { }", foo.baz.toString(), "baz");
122-
assert.areEqual("class bar { }", foo.bar.toString(), "bar");
123-
assert.areEqual("function foo() { }", foo.foo.toString(), "foo");
124-
assert.areEqual([], foo.const6, "const6");
125-
assert.areEqual({}, foo.const5, "const5");
126-
assert.areEqual(4, foo.const4, "const4");
127-
assert.areEqual(3, foo.const3, "const3");
128-
assert.areEqual("str", foo.const2, "const2");
129-
assert.areEqual([], foo.let7, "let7");
130-
assert.areEqual({}, foo.let6, "let6");
131-
assert.areEqual(undefined, foo.let5, "let5");
132-
assert.areEqual(undefined, foo.let4, "let4");
133-
assert.areEqual(undefined, foo.let3, "let3");
134-
assert.areEqual(2, foo.let2, "let2");
135-
assert.areEqual(undefined, foo.let1, "let1");
136-
assert.areEqual("class cl2 { }", foo.cl2.toString(), "cl2");
137-
assert.areEqual("class cl1 { }", foo.cl1.toString(), "cl1");
138-
assert.areEqual("function* gn2() { }", foo.gn2.toString(), "gn2");
139-
assert.areEqual("function* gn1() { }", foo.gn1.toString(), "gn1");
140-
assert.areEqual("function fn2() { }", foo.fn2.toString(), "fn2");
141-
assert.areEqual("function fn1() { }", foo.fn1.toString(), "fn1");
142-
`, '', false);
105+
testModuleScript(`
106+
import * as foo from "ValidExportStatements.js";
107+
assert.areEqual("default", foo.default, "default");
108+
assert.areEqual(undefined, foo.var7, "var7");
109+
assert.areEqual(undefined, foo.var6, "var6");
110+
assert.areEqual(undefined, foo.var5, "var5");
111+
assert.areEqual(undefined, foo.var4, "var4");
112+
assert.areEqual(5, foo.var3, "var3");
113+
assert.areEqual(undefined, foo.var2, "var2");
114+
assert.areEqual("string", foo.var1, "var1");
115+
assert.areEqual("function foo() { }", foo.foo4.toString(), "foo4");
116+
assert.areEqual("class bar { }", foo.bar2.toString(), "bar2");
117+
assert.areEqual("function foobar() { }", foo.foobar.toString(), "foobar");
118+
assert.areEqual("function foo() { }", foo.foo3.toString(), "foo3");
119+
assert.areEqual("function* baz() { }", foo.baz2.toString(), "baz2");
120+
assert.areEqual("function foo() { }", foo.foo2.toString(), "foo2");
121+
assert.areEqual("function* baz() { }", foo.baz.toString(), "baz");
122+
assert.areEqual("class bar { }", foo.bar.toString(), "bar");
123+
assert.areEqual("function foo() { }", foo.foo.toString(), "foo");
124+
assert.areEqual([], foo.const6, "const6");
125+
assert.areEqual({}, foo.const5, "const5");
126+
assert.areEqual(4, foo.const4, "const4");
127+
assert.areEqual(3, foo.const3, "const3");
128+
assert.areEqual("str", foo.const2, "const2");
129+
assert.areEqual([], foo.let7, "let7");
130+
assert.areEqual({}, foo.let6, "let6");
131+
assert.areEqual(undefined, foo.let5, "let5");
132+
assert.areEqual(undefined, foo.let4, "let4");
133+
assert.areEqual(undefined, foo.let3, "let3");
134+
assert.areEqual(2, foo.let2, "let2");
135+
assert.areEqual(undefined, foo.let1, "let1");
136+
assert.areEqual("class cl2 { }", foo.cl2.toString(), "cl2");
137+
assert.areEqual("class cl1 { }", foo.cl1.toString(), "cl1");
138+
assert.areEqual("function* gn2() { }", foo.gn2.toString(), "gn2");
139+
assert.areEqual("function* gn1() { }", foo.gn1.toString(), "gn1");
140+
assert.areEqual("function fn2() { }", foo.fn2.toString(), "fn2");
141+
assert.areEqual("function fn1() { }", foo.fn1.toString(), "fn1");
142+
`, '', false);
143143
}
144144
},
145145
{
146146
name: "import namespace with verification",
147147
body: function () {
148-
testModuleScript(`
149-
import * as foo from "moduleExport1.js";
150-
assert.areEqual("default", foo.default, "default");
151-
assert.areEqual(undefined, foo.var7, "var7");
152-
assert.areEqual(undefined, foo.var6, "var6");
153-
assert.areEqual(undefined, foo.var5, "var5");
154-
assert.areEqual(undefined, foo.var4, "var4");
155-
assert.areEqual(5, foo.var3, "var3");
156-
assert.areEqual(undefined, foo.var2, "var2");
157-
assert.areEqual("string", foo.var1, "var1");
158-
assert.areEqual("function foo() { }", foo.foo4.toString(), "foo4");
159-
assert.areEqual("class bar { }", foo.bar2.toString(), "bar2");
160-
assert.areEqual("function foobar() { }", foo.foobar.toString(), "foobar");
161-
assert.areEqual("function foo() { }", foo.foo3.toString(), "foo3");
162-
assert.areEqual("function* baz() { }", foo.baz2.toString(), "baz2");
163-
assert.areEqual("function foo() { }", foo.foo2.toString(), "foo2");
164-
assert.areEqual("function* baz() { }", foo.baz.toString(), "baz");
165-
assert.areEqual("class bar { }", foo.bar.toString(), "bar");
166-
assert.areEqual("function foo() { }", foo.foo.toString(), "foo");
167-
assert.areEqual([], foo.const6, "const6");
168-
assert.areEqual({}, foo.const5, "const5");
169-
assert.areEqual(4, foo.const4, "const4");
170-
assert.areEqual(3, foo.const3, "const3");
171-
assert.areEqual("str", foo.const2, "const2");
172-
assert.areEqual([], foo.let7, "let7");
173-
assert.areEqual({}, foo.let6, "let6");
174-
assert.areEqual(undefined, foo.let5, "let5");
175-
assert.areEqual(undefined, foo.let4, "let4");
176-
assert.areEqual(undefined, foo.let3, "let3");
177-
assert.areEqual(2, foo.let2, "let2");
178-
assert.areEqual(undefined, foo.let1, "let1");
179-
assert.areEqual("class cl2 { }", foo.cl2.toString(), "cl2");
180-
assert.areEqual("class cl1 { }", foo.cl1.toString(), "cl1");
181-
assert.areEqual("function* gn2() { }", foo.gn2.toString(), "gn2");
182-
assert.areEqual("function* gn1() { }", foo.gn1.toString(), "gn1");
183-
assert.areEqual("function fn2() { }", foo.fn2.toString(), "fn2");
184-
assert.areEqual("function fn1() { }", foo.fn1.toString(), "fn1");
185-
foo.verifyNamespace(foo);
186-
foo.changeContext();
187-
foo.verifyNamespace(foo);
188-
`, '', false);
148+
testModuleScript(`
149+
import * as foo from "moduleExport1.js";
150+
assert.areEqual("default", foo.default, "default");
151+
assert.areEqual(undefined, foo.var7, "var7");
152+
assert.areEqual(undefined, foo.var6, "var6");
153+
assert.areEqual(undefined, foo.var5, "var5");
154+
assert.areEqual(undefined, foo.var4, "var4");
155+
assert.areEqual(5, foo.var3, "var3");
156+
assert.areEqual(undefined, foo.var2, "var2");
157+
assert.areEqual("string", foo.var1, "var1");
158+
assert.areEqual("function foo() { }", foo.foo4.toString(), "foo4");
159+
assert.areEqual("class bar { }", foo.bar2.toString(), "bar2");
160+
assert.areEqual("function foobar() { }", foo.foobar.toString(), "foobar");
161+
assert.areEqual("function foo() { }", foo.foo3.toString(), "foo3");
162+
assert.areEqual("function* baz() { }", foo.baz2.toString(), "baz2");
163+
assert.areEqual("function foo() { }", foo.foo2.toString(), "foo2");
164+
assert.areEqual("function* baz() { }", foo.baz.toString(), "baz");
165+
assert.areEqual("class bar { }", foo.bar.toString(), "bar");
166+
assert.areEqual("function foo() { }", foo.foo.toString(), "foo");
167+
assert.areEqual([], foo.const6, "const6");
168+
assert.areEqual({}, foo.const5, "const5");
169+
assert.areEqual(4, foo.const4, "const4");
170+
assert.areEqual(3, foo.const3, "const3");
171+
assert.areEqual("str", foo.const2, "const2");
172+
assert.areEqual([], foo.let7, "let7");
173+
assert.areEqual({}, foo.let6, "let6");
174+
assert.areEqual(undefined, foo.let5, "let5");
175+
assert.areEqual(undefined, foo.let4, "let4");
176+
assert.areEqual(undefined, foo.let3, "let3");
177+
assert.areEqual(2, foo.let2, "let2");
178+
assert.areEqual(undefined, foo.let1, "let1");
179+
assert.areEqual("class cl2 { }", foo.cl2.toString(), "cl2");
180+
assert.areEqual("class cl1 { }", foo.cl1.toString(), "cl1");
181+
assert.areEqual("function* gn2() { }", foo.gn2.toString(), "gn2");
182+
assert.areEqual("function* gn1() { }", foo.gn1.toString(), "gn1");
183+
assert.areEqual("function fn2() { }", foo.fn2.toString(), "fn2");
184+
assert.areEqual("function fn1() { }", foo.fn1.toString(), "fn1");
185+
foo.verifyNamespace(foo);
186+
foo.changeContext();
187+
foo.verifyNamespace(foo);
188+
`, '', false);
189189
}
190190
},
191191
{
192192
name: "reexport only",
193193
body: function () {
194194
testModuleScript(`
195195
import * as foo from "ValidReExportStatements.js";
196-
assert.areEqual("function foo() { }", foo.foo.toString(), "foo");
197-
assert.areEqual("class bar { }", foo.bar.toString(), "bar");
198-
assert.areEqual("function* baz() { }", foo.baz.toString(), "baz");
199-
assert.areEqual("function foo() { }", foo.foo2.toString(), "foo2");
200-
assert.areEqual("class bar { }", foo.bar2.toString(), "bar2");
201-
assert.areEqual("function foo() { }", foo.foo3.toString(), "foo3");
202-
`, '', false);
196+
assert.areEqual("function foo() { }", foo.foo.toString(), "foo");
197+
assert.areEqual("class bar { }", foo.bar.toString(), "bar");
198+
assert.areEqual("function* baz() { }", foo.baz.toString(), "baz");
199+
assert.areEqual("function foo() { }", foo.foo2.toString(), "foo2");
200+
assert.areEqual("class bar { }", foo.bar2.toString(), "bar2");
201+
assert.areEqual("function foo() { }", foo.foo3.toString(), "foo3");
202+
`, '', false);
203203
}
204204
},
205205
{
206206
name: "complex reexport",
207207
body: function () {
208208
testModuleScript(`import * as fooComplex from "ModuleComplexReexports.js";
209-
assert.areEqual("function bar() { return 'bar'; }", fooComplex.ModuleComplexReexports_foo.toString(), "ModuleComplexReexports_foo");
210-
assert.areEqual(undefined, fooComplex.switch, "switch");
211-
assert.areEqual("function foo() { return 'foo'; }", fooComplex.bar2.toString(), "bar2");
212-
assert.areEqual("function foo() { return 'foo'; }", fooComplex.localfoo2.toString(), "localfoo2");
213-
assert.areEqual("function foo() { return 'foo'; }", fooComplex.bar.toString(), "bar");
214-
assert.areEqual("function foo() { return 'foo'; }", fooComplex.localfoo.toString(), "localfoo");
215-
assert.areEqual("function foo() { return 'foo'; }", fooComplex.baz.toString(), "baz");
216-
assert.areEqual("function foo() { return 'foo'; }", fooComplex.foo.toString(), "foo");
217-
`, '', false);
209+
assert.areEqual("function bar() { return 'bar'; }", fooComplex.ModuleComplexReexports_foo.toString(), "ModuleComplexReexports_foo");
210+
assert.areEqual(undefined, fooComplex.switch, "switch");
211+
assert.areEqual("function foo() { return 'foo'; }", fooComplex.bar2.toString(), "bar2");
212+
assert.areEqual("function foo() { return 'foo'; }", fooComplex.localfoo2.toString(), "localfoo2");
213+
assert.areEqual("function foo() { return 'foo'; }", fooComplex.bar.toString(), "bar");
214+
assert.areEqual("function foo() { return 'foo'; }", fooComplex.localfoo.toString(), "localfoo");
215+
assert.areEqual("function foo() { return 'foo'; }", fooComplex.baz.toString(), "baz");
216+
assert.areEqual("function foo() { return 'foo'; }", fooComplex.foo.toString(), "foo");
217+
`, '', false);
218218
}
219219
},
220220
{
221221
name: "namespace as prototype",
222222
body: function () {
223223
testModuleScript(`import * as foo from "ValidExportStatements.js";
224-
var childObj = Object.create(foo);
225-
assert.areEqual("default", childObj.default, "default");
226-
assert.areEqual(undefined, childObj.var7, "var7");
227-
assert.areEqual(undefined, childObj.var6, "var6");
228-
assert.areEqual(undefined, childObj.var5, "var5");
229-
assert.areEqual(undefined, childObj.var4, "var4");
230-
assert.areEqual(5, childObj.var3, "var3");
231-
assert.areEqual(undefined, childObj.var2, "var2");
232-
assert.areEqual("string", childObj.var1, "var1");
233-
assert.areEqual("function foo() { }", childObj.foo4.toString(), "foo4");
234-
assert.areEqual("class bar { }", childObj.bar2.toString(), "bar2");
235-
assert.areEqual("function foobar() { }", childObj.foobar.toString(), "foobar");
236-
assert.areEqual("function foo() { }", childObj.foo3.toString(), "foo3");
237-
assert.areEqual("function* baz() { }", childObj.baz2.toString(), "baz2");
238-
assert.areEqual("function foo() { }", childObj.foo2.toString(), "foo2");
239-
assert.areEqual("function* baz() { }", childObj.baz.toString(), "baz");
240-
assert.areEqual("class bar { }", childObj.bar.toString(), "bar");
241-
assert.areEqual("function foo() { }", childObj.foo.toString(), "foo");
242-
assert.areEqual([], childObj.const6, "const6");
243-
assert.areEqual({}, childObj.const5, "const5");
244-
assert.areEqual(4, childObj.const4, "const4");
245-
assert.areEqual(3, childObj.const3, "const3");
246-
assert.areEqual("str", childObj.const2, "const2");
247-
assert.areEqual([], childObj.let7, "let7");
248-
assert.areEqual({}, childObj.let6, "let6");
249-
assert.areEqual(undefined, childObj.let5, "let5");
250-
assert.areEqual(undefined, childObj.let4, "let4");
251-
assert.areEqual(undefined, childObj.let3, "let3");
252-
assert.areEqual(2, childObj.let2, "let2");
253-
assert.areEqual(undefined, childObj.let1, "let1");
254-
assert.areEqual("class cl2 { }", childObj.cl2.toString(), "cl2");
255-
assert.areEqual("class cl1 { }", childObj.cl1.toString(), "cl1");
256-
assert.areEqual("function* gn2() { }", childObj.gn2.toString(), "gn2");
257-
assert.areEqual("function* gn1() { }", childObj.gn1.toString(), "gn1");
258-
assert.areEqual("function fn2() { }", childObj.fn2.toString(), "fn2");
259-
assert.areEqual("function fn1() { }", childObj.fn1.toString(), "fn1");
260-
`, '', false);
224+
var childObj = Object.create(foo);
225+
assert.areEqual("default", childObj.default, "default");
226+
assert.areEqual(undefined, childObj.var7, "var7");
227+
assert.areEqual(undefined, childObj.var6, "var6");
228+
assert.areEqual(undefined, childObj.var5, "var5");
229+
assert.areEqual(undefined, childObj.var4, "var4");
230+
assert.areEqual(5, childObj.var3, "var3");
231+
assert.areEqual(undefined, childObj.var2, "var2");
232+
assert.areEqual("string", childObj.var1, "var1");
233+
assert.areEqual("function foo() { }", childObj.foo4.toString(), "foo4");
234+
assert.areEqual("class bar { }", childObj.bar2.toString(), "bar2");
235+
assert.areEqual("function foobar() { }", childObj.foobar.toString(), "foobar");
236+
assert.areEqual("function foo() { }", childObj.foo3.toString(), "foo3");
237+
assert.areEqual("function* baz() { }", childObj.baz2.toString(), "baz2");
238+
assert.areEqual("function foo() { }", childObj.foo2.toString(), "foo2");
239+
assert.areEqual("function* baz() { }", childObj.baz.toString(), "baz");
240+
assert.areEqual("class bar { }", childObj.bar.toString(), "bar");
241+
assert.areEqual("function foo() { }", childObj.foo.toString(), "foo");
242+
assert.areEqual([], childObj.const6, "const6");
243+
assert.areEqual({}, childObj.const5, "const5");
244+
assert.areEqual(4, childObj.const4, "const4");
245+
assert.areEqual(3, childObj.const3, "const3");
246+
assert.areEqual("str", childObj.const2, "const2");
247+
assert.areEqual([], childObj.let7, "let7");
248+
assert.areEqual({}, childObj.let6, "let6");
249+
assert.areEqual(undefined, childObj.let5, "let5");
250+
assert.areEqual(undefined, childObj.let4, "let4");
251+
assert.areEqual(undefined, childObj.let3, "let3");
252+
assert.areEqual(2, childObj.let2, "let2");
253+
assert.areEqual(undefined, childObj.let1, "let1");
254+
assert.areEqual("class cl2 { }", childObj.cl2.toString(), "cl2");
255+
assert.areEqual("class cl1 { }", childObj.cl1.toString(), "cl1");
256+
assert.areEqual("function* gn2() { }", childObj.gn2.toString(), "gn2");
257+
assert.areEqual("function* gn1() { }", childObj.gn1.toString(), "gn1");
258+
assert.areEqual("function fn2() { }", childObj.fn2.toString(), "fn2");
259+
assert.areEqual("function fn1() { }", childObj.fn1.toString(), "fn1");
260+
`, '', false);
261261
}
262262
},
263263
{

test/es6/rlexe.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,15 +1393,13 @@
13931393
<tags>exclude_sanitize_address</tags>
13941394
</default>
13951395
</test>
1396-
<!-- Test disabled until issue #3778 is resolved
13971396
<test>
13981397
<default>
13991398
<files>module-namespace.js</files>
14001399
<compile-flags>-ES6Module -Es6ToStringTag -args summary -endargs</compile-flags>
14011400
<tags>exclude_dynapogo,exclude_drt,exclude_sanitize_address</tags>
14021401
</default>
14031402
</test>
1404-
-->
14051403
<test>
14061404
<default>
14071405
<files>module-bugfixes.js</files>

0 commit comments

Comments
 (0)