浏览代码

Use Test262Harness to run tests (#1039)

Marko Lahma 3 年之前
父节点
当前提交
ba1eb4188f
共有 90 个文件被更改,包括 803 次插入2117 次删除
  1. 3 4
      .github/workflows/build.yml
  2. 6 8
      .github/workflows/pr.yml
  3. 3 4
      .github/workflows/release.yml
  4. 3 0
      .gitignore
  5. 0 21
      Jint.Tests.Ecma/Jint.Tests.Ecma.csproj
  6. 12 0
      Jint.Tests.Test262/.config/dotnet-tools.json
  7. 0 15
      Jint.Tests.Test262/BuiltIns/AnnexB/EscapeTests.cs
  8. 0 15
      Jint.Tests.Test262/BuiltIns/AnnexB/UnescapeTests.cs
  9. 0 15
      Jint.Tests.Test262/BuiltIns/ArrayBufferTests.cs
  10. 0 23
      Jint.Tests.Test262/BuiltIns/ArrayTests.cs
  11. 0 15
      Jint.Tests.Test262/BuiltIns/BigIntTests.cs
  12. 0 15
      Jint.Tests.Test262/BuiltIns/BooleanTests.cs
  13. 0 15
      Jint.Tests.Test262/BuiltIns/DataViewTests.cs
  14. 0 15
      Jint.Tests.Test262/BuiltIns/DateTests.cs
  15. 0 15
      Jint.Tests.Test262/BuiltIns/DecodeUriComponentTests.cs
  16. 0 15
      Jint.Tests.Test262/BuiltIns/DecodeUriTests.cs
  17. 0 15
      Jint.Tests.Test262/BuiltIns/EncodeUriComponentTests.cs
  18. 0 15
      Jint.Tests.Test262/BuiltIns/EncodeUriTests.cs
  19. 0 15
      Jint.Tests.Test262/BuiltIns/ErrorTests.cs
  20. 0 15
      Jint.Tests.Test262/BuiltIns/FunctionTests.cs
  21. 0 23
      Jint.Tests.Test262/BuiltIns/GeneratorTests.cs
  22. 0 15
      Jint.Tests.Test262/BuiltIns/GlobalTests.cs
  23. 0 15
      Jint.Tests.Test262/BuiltIns/InfinityTests.cs
  24. 0 15
      Jint.Tests.Test262/BuiltIns/IsFiniteTests.cs
  25. 0 15
      Jint.Tests.Test262/BuiltIns/IsNaNTests.cs
  26. 0 15
      Jint.Tests.Test262/BuiltIns/JSONTests.cs
  27. 0 23
      Jint.Tests.Test262/BuiltIns/MapTests.cs
  28. 0 15
      Jint.Tests.Test262/BuiltIns/MathTests.cs
  29. 0 15
      Jint.Tests.Test262/BuiltIns/NaNTests.cs
  30. 0 15
      Jint.Tests.Test262/BuiltIns/NumberTests.cs
  31. 0 15
      Jint.Tests.Test262/BuiltIns/ObjectTests.cs
  32. 0 15
      Jint.Tests.Test262/BuiltIns/ParseFloatTests.cs
  33. 0 15
      Jint.Tests.Test262/BuiltIns/ParseIntTests.cs
  34. 0 15
      Jint.Tests.Test262/BuiltIns/PromiseTests.cs
  35. 0 15
      Jint.Tests.Test262/BuiltIns/ProxyTests.cs
  36. 0 15
      Jint.Tests.Test262/BuiltIns/ReflectTests.cs
  37. 0 23
      Jint.Tests.Test262/BuiltIns/RegExpTests.cs
  38. 0 23
      Jint.Tests.Test262/BuiltIns/SetTests.cs
  39. 0 23
      Jint.Tests.Test262/BuiltIns/StringTests.cs
  40. 0 15
      Jint.Tests.Test262/BuiltIns/SymbolTests.cs
  41. 0 23
      Jint.Tests.Test262/BuiltIns/TypedArrayTests.cs
  42. 0 15
      Jint.Tests.Test262/BuiltIns/UndefinedTests.cs
  43. 0 15
      Jint.Tests.Test262/BuiltIns/WeakMapTests.cs
  44. 0 15
      Jint.Tests.Test262/BuiltIns/WeakSetTests.cs
  45. 0 8
      Jint.Tests.Test262/GlobalSuppressions.cs
  46. 12 7
      Jint.Tests.Test262/Jint.Tests.Test262.csproj
  47. 0 15
      Jint.Tests.Test262/Language/ArgumentsObjectTests.cs
  48. 0 15
      Jint.Tests.Test262/Language/BlockScopeTests.cs
  49. 0 15
      Jint.Tests.Test262/Language/CommentsTests.cs
  50. 0 15
      Jint.Tests.Test262/Language/ComputedPropertyNamesTests.cs
  51. 0 15
      Jint.Tests.Test262/Language/DestructuringTests.cs
  52. 0 15
      Jint.Tests.Test262/Language/Expressions/AdditionTests.cs
  53. 0 15
      Jint.Tests.Test262/Language/Expressions/ArrayTests.cs
  54. 0 15
      Jint.Tests.Test262/Language/Expressions/ArrowFunctionTests.cs
  55. 0 15
      Jint.Tests.Test262/Language/Expressions/AssignmentTests.cs
  56. 0 15
      Jint.Tests.Test262/Language/Expressions/CallTests.cs
  57. 0 15
      Jint.Tests.Test262/Language/Expressions/ClassTests.cs
  58. 0 15
      Jint.Tests.Test262/Language/Expressions/CoalesceTests.cs
  59. 0 15
      Jint.Tests.Test262/Language/Expressions/FunctionTests.cs
  60. 0 15
      Jint.Tests.Test262/Language/Expressions/InstanceOfTests.cs
  61. 0 39
      Jint.Tests.Test262/Language/Expressions/LogicalTests.cs
  62. 0 15
      Jint.Tests.Test262/Language/Expressions/NewTests.cs
  63. 0 15
      Jint.Tests.Test262/Language/Expressions/ObjectTests.cs
  64. 0 15
      Jint.Tests.Test262/Language/Expressions/OptionalChaining.cs
  65. 0 15
      Jint.Tests.Test262/Language/Expressions/SuperTests.cs
  66. 0 15
      Jint.Tests.Test262/Language/Expressions/TemplateLiteralTests.cs
  67. 0 15
      Jint.Tests.Test262/Language/Expressions/TypeOfTests.cs
  68. 0 15
      Jint.Tests.Test262/Language/FunctionCodeTests.cs
  69. 0 15
      Jint.Tests.Test262/Language/GlobalCodeTests.cs
  70. 0 30
      Jint.Tests.Test262/Language/ModuleTests.cs
  71. 0 15
      Jint.Tests.Test262/Language/RestParametersTests.cs
  72. 0 16
      Jint.Tests.Test262/Language/SourceTextTests.cs
  73. 0 15
      Jint.Tests.Test262/Language/Statements/ClassTests.cs
  74. 0 15
      Jint.Tests.Test262/Language/Statements/ConstTests.cs
  75. 0 15
      Jint.Tests.Test262/Language/Statements/ForInTests.cs
  76. 0 15
      Jint.Tests.Test262/Language/Statements/ForOfTests.cs
  77. 0 15
      Jint.Tests.Test262/Language/Statements/ForTests.cs
  78. 0 15
      Jint.Tests.Test262/Language/Statements/LetTests.cs
  79. 0 15
      Jint.Tests.Test262/Language/Statements/TryTests.cs
  80. 0 15
      Jint.Tests.Test262/Language/TypesTests.cs
  81. 0 15
      Jint.Tests.Test262/Language/WhiteSpaceTests.cs
  82. 6 0
      Jint.Tests.Test262/README.md
  83. 0 46
      Jint.Tests.Test262/SingleTest.cs
  84. 21 0
      Jint.Tests.Test262/State.cs
  85. 590 0
      Jint.Tests.Test262/Test262Harness.settings.json
  86. 64 0
      Jint.Tests.Test262/Test262ModuleLoader.cs
  87. 47 400
      Jint.Tests.Test262/Test262Test.cs
  88. 36 0
      Jint.Tests.Test262/TestHarness.cs
  89. 0 422
      Jint.Tests.Test262/test/skipped.json
  90. 0 6
      Jint.sln

+ 3 - 4
.github/workflows/build.yml

@@ -20,10 +20,9 @@ jobs:
     - name: Checkout source code
       uses: actions/checkout@v2
 
-    - name: Setup .NET 6.0
-      uses: actions/setup-dotnet@v1
-      with:
-        dotnet-version: 6.0.*
+    - name: Generate test cases
+      working-directory: ./Jint.Tests.Test262
+      run: dotnet tool restore && dotnet test262 generate
 
     - name: Test
       run: dotnet test --configuration Release

+ 6 - 8
.github/workflows/pr.yml

@@ -20,10 +20,9 @@ jobs:
     - name: Checkout source code
       uses: actions/checkout@v2
 
-    - name: Setup .NET 6.0
-      uses: actions/setup-dotnet@v1
-      with:
-        dotnet-version: 6.0.*
+    - name: Generate test cases
+      working-directory: ./Jint.Tests.Test262
+      run: dotnet tool restore && dotnet test262 generate
 
     - name: Test
       run: dotnet test --configuration Release
@@ -38,10 +37,9 @@ jobs:
     - name: Checkout source code
       uses: actions/checkout@v2
 
-    - name: Setup .NET 6.0
-      uses: actions/setup-dotnet@v1
-      with:
-        dotnet-version: 6.0.*
+    - name: Generate test cases
+      working-directory: ./Jint.Tests.Test262
+      run: dotnet tool restore && dotnet test262 generate
 
     - name: Test
       run: dotnet test --configuration Release

+ 3 - 4
.github/workflows/release.yml

@@ -17,10 +17,9 @@ jobs:
     - name: Checkout source code
       uses: actions/checkout@v2
 
-    - name: Setup .NET 6.0
-      uses: actions/setup-dotnet@v1
-      with:
-        dotnet-version: 6.0.*
+    - name: Generate test cases
+      working-directory: ./Jint.Tests.Test262
+      run: dotnet tool restore && dotnet test262 generate
 
     - name: Test
       run: dotnet test --configuration Release

+ 3 - 0
.gitignore

@@ -162,3 +162,6 @@ project.lock.json
 .idea
 BenchmarkDotNet.Artifacts*
 .vscode
+
+# generated code
+Jint.Tests.Test262/Generated

+ 0 - 21
Jint.Tests.Ecma/Jint.Tests.Ecma.csproj

@@ -1,21 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-  <PropertyGroup>
-    <TargetFramework>net6.0</TargetFramework>
-    <!--<TargetFrameworks Condition="'$(OS)' == 'Windows_NT'">$(TargetFrameworks);net461</TargetFrameworks>-->
-    <IsPackable>false</IsPackable>
-  </PropertyGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Jint\Jint.csproj" />
-  </ItemGroup>
-  <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
-    <PackageReference Include="xunit" Version="2.4.1" />
-    <PackageReference Include="xunit.analyzers" Version="0.10.0" />
-    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
-    <PackageReference Include="xunit.runner.console" Version="2.4.1" />
-    <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Remove="TestCases\ch*\**" />
-  </ItemGroup>
-</Project>

+ 12 - 0
Jint.Tests.Test262/.config/dotnet-tools.json

@@ -0,0 +1,12 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {
+    "test262harness.console": {
+      "version": "0.0.11",
+      "commands": [
+        "test262"
+      ]
+    }
+  }
+}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/AnnexB/EscapeTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns.AnnexB
-{
-    public class EscapeTests : Test262Test
-    {
-        [Theory(DisplayName = "annexB\\built-ins\\escape")]
-        [MemberData(nameof(SourceFiles), "annexB\\built-ins\\escape", false)]
-        [MemberData(nameof(SourceFiles), "annexB\\built-ins\\escape", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/AnnexB/UnescapeTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns.AnnexB
-{
-    public class UnescapeTests : Test262Test
-    {
-        [Theory(DisplayName = "annexB\\built-ins\\unescape")]
-        [MemberData(nameof(SourceFiles), "annexB\\built-ins\\unescape", false)]
-        [MemberData(nameof(SourceFiles), "annexB\\built-ins\\unescape", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/ArrayBufferTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ArrayBufferTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\ArrayBuffer")]
-        [MemberData(nameof(SourceFiles), "built-ins\\ArrayBuffer", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\ArrayBuffer", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 23
Jint.Tests.Test262/BuiltIns/ArrayTests.cs

@@ -1,23 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ArrayTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Array")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Array", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Array", true, Skip = "Skipped")]
-        protected void Array(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "built-ins\\ArrayIteratorPrototype")]
-        [MemberData(nameof(SourceFiles), "built-ins\\ArrayIteratorPrototype", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\ArrayIteratorPrototype", true, Skip = "Skipped")]
-        protected void ArrayIteratorPrototype(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/BigIntTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class BigIntTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\BigInt")]
-        [MemberData(nameof(SourceFiles), "built-ins\\BigInt", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\BigInt", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/BooleanTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class BooleanTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Boolean")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Boolean", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Boolean", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/DataViewTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class DataViewTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\DataView")]
-        [MemberData(nameof(SourceFiles), "built-ins\\DataView", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\DataView", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/DateTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class DateTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Date")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Date", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Date", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/DecodeUriComponentTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class DecodeUriComponentTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\decodeURIComponent")]
-        [MemberData(nameof(SourceFiles), "built-ins\\decodeURIComponent", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\decodeURIComponent", true, Skip = "Skipped")]
-        protected void DecodeUriComponent(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/DecodeUriTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class DecodeUriTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\decodeURI")]
-        [MemberData(nameof(SourceFiles), "built-ins\\decodeURI", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\decodeURI", true, Skip = "Skipped")]
-        protected void DecodeUri(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/EncodeUriComponentTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class EncodeUriComponentTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\encodeURIComponent")]
-        [MemberData(nameof(SourceFiles), "built-ins\\encodeURIComponent", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\encodeURIComponent", true, Skip = "Skipped")]
-        protected void EncodeUriComponent(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/EncodeUriTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class EncodeUriTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\encodeURI")]
-        [MemberData(nameof(SourceFiles), "built-ins\\encodeURI", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\encodeURI", true, Skip = "Skipped")]
-        protected void EncodeUri(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/ErrorTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ErrorTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Error")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Error", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Error", true, Skip = "Skipped")]
-        protected void EncodeUri(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/FunctionTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class FunctionTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Function")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Function", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Function", true, Skip = "Skipped")]
-        protected void Function(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 23
Jint.Tests.Test262/BuiltIns/GeneratorTests.cs

@@ -1,23 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class GeneratorTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\GeneratorFunction", Skip = "TODO")]
-        [MemberData(nameof(SourceFiles), "built-ins\\GeneratorFunction", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\GeneratorFunction", true, Skip = "Skipped")]
-        protected void GeneratorFunction(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "built-ins\\GeneratorPrototype")]
-        [MemberData(nameof(SourceFiles), "built-ins\\GeneratorPrototype", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\GeneratorPrototype", true, Skip = "Skipped")]
-        protected void GeneratorPrototype(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/GlobalTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class GlobalTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\global")]
-        [MemberData(nameof(SourceFiles), "built-ins\\global", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\global", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/InfinityTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class InfinityTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Infinity")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Infinity", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Infinity", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/IsFiniteTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class IsFiniteTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\isFinite")]
-        [MemberData(nameof(SourceFiles), "built-ins\\isFinite", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\isFinite", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/IsNaNTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class IsNaNTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\isNaN")]
-        [MemberData(nameof(SourceFiles), "built-ins\\isNaN", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\isNaN", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/JSONTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class JSONTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\JSON")]
-        [MemberData(nameof(SourceFiles), "built-ins\\JSON", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\JSON", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 23
Jint.Tests.Test262/BuiltIns/MapTests.cs

@@ -1,23 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class MapTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Map")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Map", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Map", true, Skip = "Skipped")]
-        protected void Map(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "built-ins\\MapIteratorPrototype")]
-        [MemberData(nameof(SourceFiles), "built-ins\\MapIteratorPrototype", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\MapIteratorPrototype", true, Skip = "Skipped")]
-        protected void MapIteratorPrototype(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/MathTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class MathTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Math")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Math", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Math", true, Skip = "Skipped")]
-        protected void Math(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/NaNTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class NaNTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\NaN")]
-        [MemberData(nameof(SourceFiles), "built-ins\\NaN", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\NaN", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/NumberTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class NumberTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Number")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Number", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Number", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/ObjectTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ObjectTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Object")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Object", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Object", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/ParseFloatTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ParseFloatTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\parseFloat")]
-        [MemberData(nameof(SourceFiles), "built-ins\\parseFloat", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\parseFloat", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/ParseIntTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ParseIntTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\parseInt")]
-        [MemberData(nameof(SourceFiles), "built-ins\\parseInt", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\parseInt", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/PromiseTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class PromiseTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Promise")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Promise", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Promise", true, Skip = "Skipped")]
-        protected void Promise(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/ProxyTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ProxyTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Proxy")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Proxy", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Proxy", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/ReflectTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class ReflectTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Reflect")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Reflect", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Reflect", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 23
Jint.Tests.Test262/BuiltIns/RegExpTests.cs

@@ -1,23 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class RegExpTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\RegExp")]
-        [MemberData(nameof(SourceFiles), "built-ins\\RegExp", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\RegExp", true, Skip = "Skipped")]
-        protected void RegExp(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "built-ins\\RegExpStringIteratorPrototype")]
-        [MemberData(nameof(SourceFiles), "built-ins\\RegExpStringIteratorPrototype", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\RegExpStringIteratorPrototype", true, Skip = "Skipped")]
-        protected void RegExpStringIteratorPrototype(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 23
Jint.Tests.Test262/BuiltIns/SetTests.cs

@@ -1,23 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class SetTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Set")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Set", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Set", true, Skip = "Skipped")]
-        protected void Set(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "built-ins\\SetIteratorPrototype")]
-        [MemberData(nameof(SourceFiles), "built-ins\\SetIteratorPrototype", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\SetIteratorPrototype", true, Skip = "Skipped")]
-        protected void SetIteratorPrototype(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 23
Jint.Tests.Test262/BuiltIns/StringTests.cs

@@ -1,23 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class StringTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\String")]
-        [MemberData(nameof(SourceFiles), "built-ins\\String", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\String", true, Skip = "Skipped")]
-        protected void String(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "built-ins\\StringIteratorPrototype")]
-        [MemberData(nameof(SourceFiles), "built-ins\\StringIteratorPrototype", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\StringIteratorPrototype", true, Skip = "Skipped")]
-        protected void StringIteratorPrototype(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/SymbolTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class SymbolTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\Symbol")]
-        [MemberData(nameof(SourceFiles), "built-ins\\Symbol", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\Symbol", true, Skip = "Skipped")]
-        protected void Symbol(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 23
Jint.Tests.Test262/BuiltIns/TypedArrayTests.cs

@@ -1,23 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class TypedArrayTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\TypedArray")]
-        [MemberData(nameof(SourceFiles), "built-ins\\TypedArray", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\TypedArray", true, Skip = "Skipped")]
-        protected void TypedArray(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "built-ins\\TypedArrayConstructors")]
-        [MemberData(nameof(SourceFiles), "built-ins\\TypedArrayConstructors", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\TypedArrayConstructors", true, Skip = "Skipped")]
-        protected void TypedArrayConstructors(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/UndefinedTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class UndefinedTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\undefined")]
-        [MemberData(nameof(SourceFiles), "built-ins\\undefined", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\undefined", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/WeakMapTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class WeakMapTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\WeakMap")]
-        [MemberData(nameof(SourceFiles), "built-ins\\WeakMap", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\WeakMap", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/BuiltIns/WeakSetTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.BuiltIns
-{
-    public class WeakSetTests : Test262Test
-    {
-        [Theory(DisplayName = "built-ins\\WeakSet")]
-        [MemberData(nameof(SourceFiles), "built-ins\\WeakSet", false)]
-        [MemberData(nameof(SourceFiles), "built-ins\\WeakSet", true, Skip = "Skipped")]
-        protected void RunTest(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 8
Jint.Tests.Test262/GlobalSuppressions.cs

@@ -1,8 +0,0 @@
-
-// This file is used by Code Analysis to maintain SuppressMessage 
-// attributes that are applied to this project.
-// Project-level suppressions either have no target or are given 
-// a specific target and scoped to a namespace, type, member, etc.
-
-[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "xUnit1004:Test methods should not be skipped", Justification = "<Pending>", Scope = "module")]
-

+ 12 - 7
Jint.Tests.Test262/Jint.Tests.Test262.csproj

@@ -10,12 +10,17 @@
     <ProjectReference Include="..\Jint\Jint.csproj" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.10.0" />
-    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
-    <PackageReference Include="xunit" Version="2.4.1" />
-    <PackageReference Include="xunit.analyzers" Version="0.10.0" />
-    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
-    <PackageReference Include="xunit.runner.console" Version="2.4.1" />
-    <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
+    <PackageReference Include="NUnit" Version="3.13.3" />
+    <PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
+    <PackageReference Include="Test262Harness" Version="0.0.11" />
+  </ItemGroup>
+  <ItemGroup>
+    <Using Include="NUnit.Framework" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Remove="harness\**" />
+    <None Remove="test\**" />
+    <Content Include=".config\*" />
   </ItemGroup>
 </Project>

+ 0 - 15
Jint.Tests.Test262/Language/ArgumentsObjectTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class ArgumentsObjectTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\arguments-object")]
-        [MemberData(nameof(SourceFiles), "language\\arguments-object", false)]
-        [MemberData(nameof(SourceFiles), "language\\arguments-object", true, Skip = "Skipped")]
-        protected void ArgumentsObject(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/BlockScopeTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class BlockScopeTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\block-scope")]
-        [MemberData(nameof(SourceFiles), "language\\block-scope", false)]
-        [MemberData(nameof(SourceFiles), "language\\block-scope", true, Skip = "Skipped")]
-        protected void BlockScope(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/CommentsTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class CommentsTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\comments")]
-        [MemberData(nameof(SourceFiles), "language\\comments", false)]
-        [MemberData(nameof(SourceFiles), "language\\comments", true, Skip = "Skipped")]
-        protected void Comments(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/ComputedPropertyNamesTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class ComputedPropertyNamesTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\computed-property-names")]
-        [MemberData(nameof(SourceFiles), "language\\computed-property-names", false)]
-        [MemberData(nameof(SourceFiles), "language\\computed-property-names", true, Skip = "Skipped")]
-        protected void ComputedPropertyNames(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/DestructuringTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class DestructuringTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\destructuring")]
-        [MemberData(nameof(SourceFiles), "language\\destructuring", false)]
-        [MemberData(nameof(SourceFiles), "language\\destructuring", true, Skip = "Skipped")]
-        protected void Destructuring(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/AdditionTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class AdditionTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\addition")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\addition", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\addition", true, Skip = "Skipped")]
-        protected void Addition(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/ArrayTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class ArrayTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\array")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\array", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\array", true, Skip = "Skipped")]
-        protected void Array(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/ArrowFunctionTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class ArrowFunctionTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\arrow-function")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\arrow-function", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\arrow-function", true, Skip = "Skipped")]
-        protected void ArrowFunction(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/AssignmentTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class AssignmentTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\assignment")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\assignment", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\assignment", true, Skip = "Skipped")]
-        protected void Assignment(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/CallTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class CallTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\call")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\call", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\call", true, Skip = "Skipped")]
-        protected void Call(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/ClassTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class ClassTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\class")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\class", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\class", true, Skip = "Skipped")]
-        protected void Class(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/CoalesceTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class CoalesceTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\\\coalesce")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\\\coalesce", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\\\coalesce", true, Skip = "Skipped")]
-        protected void Addition(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/FunctionTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class FunctionTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\function")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\function", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\function", true, Skip = "Skipped")]
-        protected void Function(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/InstanceOfTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class InstanceOfTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\instanceof")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\instanceof", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\instanceof", true, Skip = "Skipped")]
-        protected void New(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 39
Jint.Tests.Test262/Language/Expressions/LogicalTests.cs

@@ -1,39 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class LogicalTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\logical-and")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-and", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-and", true, Skip = "Skipped")]
-        protected void LogicalAnd(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "language\\expressions\\logical-assignment")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-assignment", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-assignment", true, Skip = "Skipped")]
-        protected void LogicalAssignment(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "language\\expressions\\logical-not")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-not", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-not", true, Skip = "Skipped")]
-        protected void LogicalNot(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-
-        [Theory(DisplayName = "language\\expressions\\logical-or")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-or", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\logical-or", true, Skip = "Skipped")]
-        protected void LogicalOr(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/NewTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class NewTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\new")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\new", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\new", true, Skip = "Skipped")]
-        protected void New(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/ObjectTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class ObjectTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\object")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\object", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\object", true, Skip = "Skipped")]
-        protected void Object(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/OptionalChaining.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class OptionalChaining : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\optional-chaining")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\optional-chaining", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\optional-chaining", true, Skip = "Skipped")]
-        protected void Chaining(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/SuperTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class SuperTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\super")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\super", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\super", true, Skip = "Skipped")]
-        protected void Super(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/TemplateLiteralTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class TemplateLiteralTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\template-literal")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\template-literal", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\template-literal", true, Skip = "Skipped")]
-        protected void TemplateLiteral(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Expressions/TypeOfTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Expressions
-{
-    public class TypeOfTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\expressions\\typeof")]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\typeof", false)]
-        [MemberData(nameof(SourceFiles), "language\\expressions\\typeof", true, Skip = "Skipped")]
-        protected void TemplateLiteral(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/FunctionCodeTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class FunctionCodeTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\function-code")]
-        [MemberData(nameof(SourceFiles), "language\\function-code", false)]
-        [MemberData(nameof(SourceFiles), "language\\function-code", true, Skip = "Skipped")]
-        protected void FunctionCode(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/GlobalCodeTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class GlobalCodeTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\global-code")]
-        [MemberData(nameof(SourceFiles), "language\\global-code", false)]
-        [MemberData(nameof(SourceFiles), "language\\global-code", true, Skip = "Skipped")]
-        protected void GlobalCode(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 30
Jint.Tests.Test262/Language/ModuleTests.cs

@@ -1,30 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language;
-
-public class ModuleTests : Test262Test
-{
-    [Theory(DisplayName = "language\\module-code")]
-    [MemberData(nameof(SourceFiles), "language\\module-code", false)]
-    [MemberData(nameof(SourceFiles), "language\\module-code", true, Skip = "Skipped")]
-    protected void ModuleCode(SourceFile sourceFile)
-    {
-        RunTestInternal(sourceFile);
-    }
-
-    [Theory(DisplayName = "language\\export")]
-    [MemberData(nameof(SourceFiles), "language\\export", false)]
-    [MemberData(nameof(SourceFiles), "language\\export", true, Skip = "Skipped")]
-    protected void Export(SourceFile sourceFile)
-    {
-        RunTestInternal(sourceFile);
-    }
-
-    [Theory(DisplayName = "language\\import")]
-    [MemberData(nameof(SourceFiles), "language\\import", false)]
-    [MemberData(nameof(SourceFiles), "language\\import", true, Skip = "Skipped")]
-    protected void Import(SourceFile sourceFile)
-    {
-        RunTestInternal(sourceFile);
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/RestParametersTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class RestParametersTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\rest-parameters")]
-        [MemberData(nameof(SourceFiles), "language\\rest-parameters", false)]
-        [MemberData(nameof(SourceFiles), "language\\rest-parameters", true, Skip = "Skipped")]
-        protected void RestParameters(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 16
Jint.Tests.Test262/Language/SourceTextTests.cs

@@ -1,16 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class SourceTextTests : Test262Test
-    {
-
-        [Theory(DisplayName = "language\\source-text")]
-        [MemberData(nameof(SourceFiles), "language\\source-text", false)]
-        [MemberData(nameof(SourceFiles), "language\\source-text", true, Skip = "Skipped")]
-        protected void SourceText(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Statements/ClassTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Statements
-{
-    public class ClassTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\statements\\class")]
-        [MemberData(nameof(SourceFiles), "language\\statements\\class", false)]
-        [MemberData(nameof(SourceFiles), "language\\statements\\class", true, Skip = "Skipped")]
-        protected void Class(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Statements/ConstTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Statements
-{
-    public class ConstTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\statements\\const")]
-        [MemberData(nameof(SourceFiles), "language\\statements\\const", false)]
-        [MemberData(nameof(SourceFiles), "language\\statements\\const", true, Skip = "Skipped")]
-        protected void For(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Statements/ForInTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Statements
-{
-    public class ForInTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\statements\\for-in")]
-        [MemberData(nameof(SourceFiles), "language\\statements\\for-in", false)]
-        [MemberData(nameof(SourceFiles), "language\\statements\\for-in", true, Skip = "Skipped")]
-        protected void ForIn(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Statements/ForOfTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Statements
-{
-    public class ForOfTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\statements\\for-of")]
-        [MemberData(nameof(SourceFiles), "language\\statements\\for-of", false)]
-        [MemberData(nameof(SourceFiles), "language\\statements\\for-of", true, Skip = "Skipped")]
-        protected void ForOf(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Statements/ForTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Statements
-{
-    public class ForTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\statements\\for")]
-        [MemberData(nameof(SourceFiles), "language\\statements\\for", false)]
-        [MemberData(nameof(SourceFiles), "language\\statements\\for", true, Skip = "Skipped")]
-        protected void For(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Statements/LetTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Statements
-{
-    public class LetTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\statements\\let")]
-        [MemberData(nameof(SourceFiles), "language\\statements\\let", false)]
-        [MemberData(nameof(SourceFiles), "language\\statements\\let", true, Skip = "Skipped")]
-        protected void For(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/Statements/TryTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language.Statements
-{
-    public class TryTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\statements\\try")]
-        [MemberData(nameof(SourceFiles), "language\\statements\\try", false)]
-        [MemberData(nameof(SourceFiles), "language\\statements\\try", true, Skip = "Skipped")]
-        protected void For(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/TypesTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class TypesTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\types")]
-        [MemberData(nameof(SourceFiles), "language\\types", false)]
-        [MemberData(nameof(SourceFiles), "language\\types", true, Skip = "Skipped")]
-        protected void Types(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 0 - 15
Jint.Tests.Test262/Language/WhiteSpaceTests.cs

@@ -1,15 +0,0 @@
-using Xunit;
-
-namespace Jint.Tests.Test262.Language
-{
-    public class WhiteSpaceTests : Test262Test
-    {
-        [Theory(DisplayName = "language\\white-space")]
-        [MemberData(nameof(SourceFiles), "language\\white-space", false)]
-        [MemberData(nameof(SourceFiles), "language\\white-space", true, Skip = "Skipped")]
-        protected void WhiteSpace(SourceFile sourceFile)
-        {
-            RunTestInternal(sourceFile);
-        }
-    }
-}

+ 6 - 0
Jint.Tests.Test262/README.md

@@ -0,0 +1,6 @@
+To generate test suite, run:
+
+```
+dotnet tool restore
+dotnet test262 generate
+```

+ 0 - 46
Jint.Tests.Test262/SingleTest.cs

@@ -1,46 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using Xunit;
-
-namespace Jint.Tests.Test262
-{
-    public class RunnableInDebugOnlyAttribute : FactAttribute
-    {
-        public RunnableInDebugOnlyAttribute()
-        {
-            if (!Debugger.IsAttached)
-            {
-                Skip = "Only running in interactive mode.";
-            }
-        }
-    }
-
-    public class SingleTest : Test262Test
-    {
-        // helper to test single test case
-        [RunnableInDebugOnly]
-        public void TestSingle()
-        {
-            const string Target = @"language/statements/for/dstr-const-ary-init-iter-close.js";
-            //const string Target = @"built-ins/Array/from/calling-from-valid-2.js";
-            var sourceFile = SourceFiles("language/statements", false)
-                .SelectMany(x => x)
-                .Cast<SourceFile>()
-                .First(x => x.Source == Target);
-
-            var code = File.ReadAllText(sourceFile.FullPath);
-
-            if (code.IndexOf("onlyStrict", StringComparison.Ordinal) < 0)
-            {
-                RunTestCode(sourceFile.Source, code, strict: false, null);
-            }
-
-            if (code.IndexOf("noStrict", StringComparison.Ordinal) < 0)
-            {
-                RunTestCode(sourceFile.Source, code, strict: true, null);
-            }
-        }
-    }
-}

+ 21 - 0
Jint.Tests.Test262/State.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using Esprima.Ast;
+
+namespace Jint.Tests.Test262;
+
+/// <summary>
+/// Custom state for Jint.
+/// </summary>
+public static partial class State
+{
+    /// <summary>
+    /// Pre-compiled scripts for faster execution.
+    /// </summary>
+    public static readonly Dictionary<string, Script> Sources = new(StringComparer.OrdinalIgnoreCase);
+
+    /// <summary>
+    /// Time zone to use by default.
+    /// </summary>
+    public static TimeZoneInfo TimeZone;
+}

+ 590 - 0
Jint.Tests.Test262/Test262Harness.settings.json

@@ -0,0 +1,590 @@
+{
+  "SuiteGitSha": "91356f52f92691abe62c06d00677332212e99dc8",
+  //"SuiteDirectory": "//mnt/c/work/test262",
+  "TargetPath": "./Generated",
+  "Namespace": "Jint.Tests.Test262",
+  "Parallel": true,
+  "ExcludedFeatures": [
+    "__getter__",
+    "__setter__",
+    "__proto__",
+    "AggregateError",
+    "async-functions",
+    "async-iteration",
+    "Atomics",
+    "class-fields-private",
+    "class-fields-public",
+    "class-methods-private",
+    "class-static-block",
+    "class-static-fields-private",
+    "class-static-fields-public",
+    "class-static-methods-private",
+    "FinalizationRegistry",
+    "generators",
+    "hashbang",
+    "import-assertions",
+    "import.meta",
+    "numeric-separator-literal",
+    "Promise.allSettled",
+    "Promise.any",
+    "regexp-match-indices",
+    "regexp-named-groups",
+    "regexp-lookbehind",
+    "regexp-unicode-property-escapes",
+    "resizable-arraybuffer",
+    "ShadowRealm",
+    "SharedArrayBuffer",
+    "String.prototype.replaceAll",
+    "tail-call-optimization",
+    "top-level-await",
+    "Temporal",
+    "u180e",
+    "WeakRef",
+    "well-formed-json-stringify"
+  ],
+  "ExcludedFlags": [
+    "async"
+  ],
+  "ExcludedDirectories": [
+    "annexB",
+    "intl402"
+  ],
+  "ExcludedFiles": [
+    // Esprima problem, Unexpected token *
+    "language/expressions/object/dstr-async-gen-meth-*",
+
+    // Currently quite impossible to detect if assignment target is CoverParenthesizedExpression
+    "language/expressions/assignment/fn-name-lhs-cover.js",
+
+    // Unicode support not built-in to .NET the same way, requires more work
+    "built-ins/RegExp/character-class-escape-non-whitespace.js",
+    "built-ins/RegExp/property-escapes/character-class.js",
+    "built-ins/RegExp/prototype/Symbol.match/builtin-infer-unicode.js",
+    "built-ins/RegExp/prototype/Symbol.match/builtin-success-u-return-val-groups.js",
+    "built-ins/RegExp/prototype/Symbol.match/u-advance-after-empty.js",
+    "built-ins/RegExp/prototype/Symbol.replace/u-advance-after-empty.js",
+    "built-ins/RegExp/prototype/Symbol.search/u-lastindex-advance.js",
+    "built-ins/RegExp/unicode_restricted_quantifiable_assertion.js",
+    "built-ins/RegExp/prototype/exec/u-lastindex-value.js",
+    "built-ins/RegExp/unicode_restricted_character_class_escape.js",
+    "built-ins/RegExp/unicode_restricted_identity_escape.js",
+    "built-ins/RegExp/unicode_restricted_identity_escape_alpha.js",
+    "built-ins/RegExp/unicode_restricted_identity_escape_c.js",
+    "built-ins/RegExp/unicode_restricted_identity_escape_u.js",
+
+    // Issue with \r in source string
+    "built-ins/RegExp/dotall/without-dotall.js",
+    "built-ins/RegExp/dotall/without-dotall-unicode.js",
+
+    // requires investigation how to process complex function name evaluation for property
+    "built-ins/Function/prototype/toString/method-computed-property-name.js",
+
+    // http://www.ecma-international.org/ecma-262/#sec-block-level-function-declarations-web-legacy-compatibility-semantics not implemented (block level functions)
+    "language/statements/let/block-local-closure-set-before-initialization.js",
+
+    // not implemented (block level functions)
+    "language/block-scope/shadowing/dynamic-lookup-from-closure.js",
+    "language/block-scope/shadowing/lookup-from-closure.js",
+
+    // Logic difference in .NET RegExp / skipped in ECMA tests too
+    "built-ins/RegExp/S15.10.2.11_A1_T5.js",
+    "built-ins/RegExp/S15.10.2.11_A1_T7.js",
+    "built-ins/RegExp/S15.10.4.1_A8_T2.js",
+    "built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T6.js",
+    "built-ins/RegExp/S15.10.2.5_A1_T4.js",
+
+    "built-ins/RegExp/prototype/exec/u-lastindex-adv.js", // Esprima strips unicode sequence and match logic does not work
+    "built-ins/String/raw/special-characters.js", // Windows line ending differences
+    "language/expressions/object/method-definition/object-method-returns-promise.js", // Promise not implemented
+    "language/statements/class/definition/class-method-returns-promise.js", // Promise not implemented
+
+    // there is bug in suite and bug in Jint, refer to https://github.com/sebastienros/jint/issues/888 and https://github.com/tc39/test262/issues/2985
+    "built-ins/Promise/race/resolve-element-function-name.js",
+
+    "built-ins/Symbol/species/subclassing.js", // subclassing not implemented
+    "built-ins/Date/subclassing.js", // subclassing not implemented
+
+    // parsing of large/small years not implemented in .NET (-271821, +271821)
+    "built-ins/Date/parse/time-value-maximum-range.js",
+
+    // for-of not implemented
+    "built-ins/Proxy/enumerate/removed-does-not-trigger.js",
+
+    // delete/add detection not implemented for map iterator during iteration
+    "built-ins/Map/prototype/forEach/iterates-values-deleted-then-readded.js",
+    "built-ins/MapIteratorPrototype/next/iteration-mutable.js",
+    "built-ins/Set/prototype/forEach/iterates-values-revisits-after-delete-re-add.js",
+
+    // requires toLocaleString changes
+    "built-ins/Array/prototype/toLocaleString/primitive_this_value.js",
+    "built-ins/Array/prototype/toLocaleString/primitive_this_value_getter.js",
+    "built-ins/Object/prototype/toLocaleString/primitive_this_value_getter.js",
+
+    // observables not implemented
+    "built-ins/String/prototype/padEnd/observable-operations.js",
+    "built-ins/String/prototype/padStart/observable-operations.js",
+
+    // code point iteration not implemented
+    "built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js",
+
+    // Line feed problems (git, windows, linux)
+    "language/expressions/template-literal/tv-line-terminator-sequence.js",
+
+    // 100 fraction digits is not supported due to .NET format specifier limitation
+    "built-ins/Number/prototype/toFixed/range.js",
+
+    // C# can't distinguish 1.797693134862315808e+308 and 1.797693134862315708145274237317e+308
+    "language/types/number/8.5.1.js",
+
+    // inner binding is immutable (from parameters) Expected SameValue(«null», «function() {{ ... }}») to be true
+    "language/expressions/function/scope-name-var-open-non-strict.js",
+    "language/expressions/function/scope-name-var-open-strict.js",
+
+    // yield not implemented
+    "built-ins/TypedArrayConstructors/ctors-bigint/object-arg/as-generator-iterable-returns.js",
+    "built-ins/TypedArrayConstructors/ctors-bigint/object-arg/iterating-throws.js",
+    "language/expressions/object/accessor-name-computed-yield-id.js", // accessor / yield not implemented
+    "language/expressions/object/accessor-name-computed.js",
+    "built-ins/TypedArrayConstructors/ctors/object-arg/as-generator-iterable-returns.js",
+    "language/expressions/object/method-definition/name-prop-name-yield-id.js",
+
+    // accessor not implemented
+    "language/expressions/object/prop-dup-set-get-set.js",
+    "language/expressions/object/accessor-name-computed-err-to-prop-key.js",
+    "language/expressions/object/accessor-name-computed-err-unresolvable.js",
+    "language/expressions/object/accessor-name-computed-in.js",
+    "language/expressions/object/accessor-name-literal-numeric-leading-decimal.js",
+    "language/expressions/object/accessor-name-literal-numeric-non-canonical.js",
+    "language/expressions/object/fn-name-accessor-get.js",
+    "language/expressions/object/fn-name-accessor-set.js",
+
+    // super not implemented
+    "language/expressions/object/method.js",
+    "language/expressions/object/setter-super-prop.js",
+    "language/expressions/object/getter-super-prop.js",
+
+    // not implemented: Creation of new variable environment for the function body (as distinct from that for the function's parameters)
+    "language/expressions/arrow-function/scope-paramsbody-var-open.js",
+    "language/expressions/function/scope-paramsbody-var-open.js",
+    "language/expressions/object/scope-meth-paramsbody-var-open.js",
+    "language/expressions/object/scope-setter-paramsbody-var-open.js",
+
+    // generators not implemented
+    "built-ins/Object/prototype/toString/proxy-function.js",
+    "language/statements/class/subclass/builtin-objects/GeneratorFunction/*.js",
+    "language/**/*-yield-*.js",
+
+    // JavaScriptParser cannot handle direct 'super.property' script code
+    "language/expressions/super/prop-dot-cls-val-from-eval.js",
+    "language/expressions/super/prop-dot-obj-val-from-eval.js",
+    "language/expressions/super/prop-expr-cls-val-from-eval.js",
+    "language/expressions/super/prop-expr-obj-val-from-eval.js",
+
+    // Esprima problem
+    "built-ins/RegExp/quantifier-integer-limit.js",
+    "built-ins/String/prototype/split/separator-regexp.js",
+    "language/expressions/object/method-definition/name-super-prop-param.js",
+    "language/expressions/optional-chaining/member-expression.js",
+    "language/statements/for-of/dstr-obj-id-init-let.js",
+    "language/statements/for/head-lhs-let.js",
+    "language/expressions/object/yield-non-strict-access.js",
+    "language/expressions/object/yield-non-strict-syntax.js",
+    "built-ins/RegExp/prototype/source/value-u.js",
+    "built-ins/RegExp/prototype/source/value-line-terminator.js",
+    "built-ins/RegExp/S15.10.2.13_A1_T1.js",
+    "built-ins/RegExp/S15.10.2.13_A1_T17.js",
+    "built-ins/RegExp/S15.10.2.13_A1_T2.js",
+    "built-ins/RegExp/S15.10.2.13_A2_T1.js",
+    "built-ins/RegExp/S15.10.2.13_A2_T2.js",
+    "built-ins/RegExp/S15.10.2.13_A2_T8.js",
+    "language/expressions/object/let-non-strict-access.js",
+    "language/expressions/object/let-non-strict-syntax.js",
+    "language/expressions/assignment/dstr-obj-id-identifier-yield-ident-valid.js",
+    "language/statements/for-of/dstr-obj-id-identifier-yield-ident-valid.js",
+    "language/white-space/mongolian-vowel-separator-eval.js",
+
+    // SharedArrayBuffer not implemented
+    "built-ins/SharedArrayBuffer/prototype/prop-desc.js",
+
+    // Esprima has parsing problems with weirdish unicode identifiers
+    "language/identifiers/*-unicode-*.js",
+
+    // async not implemented
+    "built-ins/AsyncFunction/*.js",
+    "language/statements/async-function/*.js",
+    "language/expressions/async-function/*.js",
+    "language/expressions/async-generator/*.js",
+
+    // special casing data
+    "built-ins/**/special_casing*.js",
+
+    // negative years, c'mon...
+    "built-ins/Date/prototype/*/negative-year.js",
+    
+    // failing tests in new test suite (due to updating to latest and using whole set)
+    "built-ins/Date/prototype/setDate/arg-coercion-order.js",
+    "built-ins/Date/prototype/setHours/arg-coercion-order.js",
+    "built-ins/Date/prototype/setMilliseconds/arg-coercion-order.js",
+    "built-ins/Date/prototype/setMinutes/arg-coercion-order.js",
+    "built-ins/Date/prototype/setMonth/arg-coercion-order.js",
+    "built-ins/Date/prototype/setSeconds/arg-coercion-order.js",
+    "built-ins/Date/prototype/setUTCDate/arg-coercion-order.js",
+    "built-ins/Date/prototype/setUTCHours/arg-coercion-order.js",
+    "built-ins/Date/prototype/setUTCMilliseconds/arg-coercion-order.js",
+    "built-ins/Date/prototype/setUTCMinutes/arg-coercion-order.js",
+    "built-ins/Date/prototype/setUTCMonth/arg-coercion-order.js",
+    "built-ins/Date/prototype/setUTCSeconds/arg-coercion-order.js",
+    "language/arguments-object/mapped/nonconfigurable-descriptors-define-failure.js",
+    "language/destructuring/binding/syntax/destructuring-array-parameters-function-arguments-length.js",
+    "language/destructuring/binding/syntax/destructuring-object-parameters-function-arguments-length.js",
+    "language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js",
+    "language/eval-code/direct/arrow-fn-a-following-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js",
+    "language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js",
+    "language/eval-code/direct/arrow-fn-a-preceding-parameter-is-named-arguments-arrow-func-declare-arguments-assign.js",
+    "language/eval-code/direct/arrow-fn-body-cntns-arguments-func-decl-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js",
+    "language/eval-code/direct/arrow-fn-body-cntns-arguments-lex-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js",
+    "language/eval-code/direct/arrow-fn-body-cntns-arguments-var-bind-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js",
+    "language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign-incl-def-param-arrow-arguments.js",
+    "language/eval-code/direct/arrow-fn-no-pre-existing-arguments-bindings-are-present-arrow-func-declare-arguments-assign.js",
+    "language/eval-code/direct/async-gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-expr-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/async-gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/async-gen-named-func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-named-func-expr-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-named-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-named-func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-named-func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/async-gen-named-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/async-gen-named-func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-decl-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-expr-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-expr-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-expr-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-expr-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-expr-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/func-expr-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-decl-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-decl-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-decl-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-decl-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-named-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-named-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-named-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-named-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-nameless-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-nameless-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-nameless-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-func-expr-nameless-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-meth-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-meth-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-meth-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-meth-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/gen-meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/meth-a-following-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments-and-assign.js",
+    "language/eval-code/direct/meth-a-preceding-parameter-is-named-arguments-declare-arguments.js",
+    "language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments-and-assign.js",
+    "language/eval-code/direct/meth-fn-body-cntns-arguments-func-decl-declare-arguments.js",
+    "language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/meth-fn-body-cntns-arguments-lex-bind-declare-arguments.js",
+    "language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments-and-assign.js",
+    "language/eval-code/direct/meth-fn-body-cntns-arguments-var-bind-declare-arguments.js",
+    "language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments-and-assign.js",
+    "language/eval-code/direct/meth-no-pre-existing-arguments-bindings-are-present-declare-arguments.js",
+    "language/eval-code/direct/new.target-fn.js",
+    "language/eval-code/direct/super-prop-method.js",
+    "language/eval-code/indirect/always-non-strict.js",
+    "language/eval-code/indirect/non-definable-global-function.js",
+    "language/eval-code/indirect/non-definable-global-var.js",
+    "language/eval-code/indirect/realm.js",
+    "language/eval-code/indirect/var-env-func-init-global-new.js",
+    "language/eval-code/indirect/var-env-func-init-global-update-configurable.js",
+    "language/eval-code/indirect/var-env-func-init-multi.js",
+    "language/eval-code/indirect/var-env-func-non-strict.js",
+    "language/eval-code/indirect/var-env-global-lex-non-strict.js",
+    "language/eval-code/indirect/var-env-var-init-global-exstng.js",
+    "language/eval-code/indirect/var-env-var-init-global-new.js",
+    "language/eval-code/indirect/var-env-var-non-strict.js",
+    "language/expressions/arrow-function/dstr/ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/arrow-function/dstr/dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/arrow-function/eval-var-scope-syntax-err.js",
+    "language/expressions/arrow-function/scope-param-elem-var-close.js",
+    "language/expressions/arrow-function/scope-param-elem-var-open.js",
+    "language/expressions/arrow-function/scope-param-rest-elem-var-close.js",
+    "language/expressions/arrow-function/scope-param-rest-elem-var-open.js",
+    "language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval--1.js",
+    "language/expressions/assignment/assignment-operator-calls-putvalue-lref--rval-.js",
+    "language/expressions/assignment/dstr/array-elem-put-obj-literal-prop-ref-init-active.js",
+    "language/expressions/assignment/dstr/array-elem-put-obj-literal-prop-ref-init.js",
+    "language/expressions/assignment/dstr/obj-prop-elem-target-obj-literal-prop-ref-init-active.js",
+    "language/expressions/assignment/dstr/obj-prop-elem-target-obj-literal-prop-ref-init.js",
+    "language/expressions/assignment/fn-name-lhs-member.js",
+    "language/expressions/assignment/target-member-computed-reference-null.js",
+    "language/expressions/assignment/target-member-computed-reference-undefined.js",
+    "language/expressions/assignment/target-member-identifier-reference-null.js",
+    "language/expressions/assignment/target-member-identifier-reference-undefined.js",
+    "language/expressions/assignment/target-super-computed-reference-null.js",
+    "language/expressions/assignment/target-super-identifier-reference-null.js",
+    "language/expressions/class/dstr/meth-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/class/name.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--1.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--10.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--11.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--12.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--13.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--14.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--15.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--16.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--17.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--18.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--19.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--2.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--20.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--21.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--3.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--4.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--5.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--6.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--7.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--8.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v--9.js",
+    "language/expressions/compound-assignment/compound-assignment-operator-calls-putvalue-lref--v-.js",
+    "language/expressions/delete/super-property-null-base.js",
+    "language/expressions/function/dstr/ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/function/dstr/dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/function/eval-var-scope-syntax-err.js",
+    "language/expressions/function/name.js",
+    "language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-arrow.js",
+    "language/expressions/function/named-no-strict-reassign-fn-name-in-body-in-eval.js",
+    "language/expressions/function/named-no-strict-reassign-fn-name-in-body.js",
+    "language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-arrow.js",
+    "language/expressions/function/named-strict-error-reassign-fn-name-in-body-in-eval.js",
+    "language/expressions/function/named-strict-error-reassign-fn-name-in-body.js",
+    "language/expressions/function/scope-param-elem-var-close.js",
+    "language/expressions/function/scope-param-elem-var-open.js",
+    "language/expressions/function/scope-param-rest-elem-var-close.js",
+    "language/expressions/function/scope-param-rest-elem-var-open.js",
+    "language/expressions/object/__proto__-duplicate-computed.js",
+    "language/expressions/object/__proto__-fn-name.js",
+    "language/expressions/object/__proto__-poisoned-object-prototype.js",
+    "language/expressions/object/__proto__-value-non-object.js",
+    "language/expressions/object/__proto__-value-null.js",
+    "language/expressions/object/__proto__-value-obj.js",
+    "language/expressions/object/cpn-obj-lit-computed-property-name-from-null.js",
+    "language/expressions/object/dstr/meth-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/object/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/expressions/object/dstr/object-rest-proxy-get-not-called-on-dontenum-keys.js",
+    "language/expressions/object/dstr/object-rest-proxy-gopd-not-called-on-excluded-keys.js",
+    "language/expressions/object/method-definition/forbidden-ext/b1/meth-forbidden-ext-direct-access-prop-arguments.js",
+    "language/expressions/object/method-definition/forbidden-ext/b1/meth-forbidden-ext-direct-access-prop-caller.js",
+    "language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js",
+    "language/expressions/object/object-spread-proxy-get-not-called-on-dontenum-keys.js",
+    "language/expressions/object/scope-meth-param-elem-var-close.js",
+    "language/expressions/object/scope-meth-param-elem-var-open.js",
+    "language/expressions/object/scope-meth-param-rest-elem-var-close.js",
+    "language/expressions/object/scope-meth-param-rest-elem-var-open.js",
+    "language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue--1.js",
+    "language/expressions/postfix-decrement/operator-x-postfix-decrement-calls-putvalue-lhs-newvalue-.js",
+    "language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue--1.js",
+    "language/expressions/postfix-increment/operator-x-postfix-increment-calls-putvalue-lhs-newvalue-.js",
+    "language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue--1.js",
+    "language/expressions/prefix-decrement/operator-prefix-decrement-x-calls-putvalue-lhs-newvalue-.js",
+    "language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue--1.js",
+    "language/expressions/prefix-increment/operator-prefix-increment-x-calls-putvalue-lhs-newvalue-.js",
+    "language/expressions/super/call-proto-not-ctor.js",
+    "language/expressions/tagged-template/cache-different-functions-same-site.js",
+    "language/expressions/tagged-template/cache-eval-inner-function.js",
+    "language/expressions/tagged-template/cache-same-site-top-level.js",
+    "language/expressions/tagged-template/cache-same-site.js",
+    "language/expressions/tagged-template/invalid-escape-sequences.js",
+    "language/expressions/tagged-template/member-expression-context.js",
+    "language/expressions/tagged-template/template-object-frozen-non-strict.js",
+    "language/expressions/tagged-template/template-object-frozen-strict.js",
+    "language/expressions/tagged-template/template-object-template-map.js",
+    "language/expressions/tagged-template/template-object.js",
+    "language/expressions/template-literal/tv-line-continuation.js",
+    "language/function-code/eval-param-env-with-computed-key.js",
+    "language/function-code/eval-param-env-with-prop-initializer.js",
+    "language/literals/regexp/u-astral.js",
+    "language/literals/regexp/u-case-mapping.js",
+    "language/literals/regexp/u-null-character-escape.js",
+    "language/literals/regexp/u-surrogate-pairs-atom-char-class.js",
+    "language/literals/regexp/u-surrogate-pairs-atom-escape-decimal.js",
+    "language/literals/regexp/u-surrogate-pairs.js",
+    "language/literals/regexp/u-unicode-esc.js",
+    "language/literals/string/line-separator-eval.js",
+    "language/literals/string/line-separator.js",
+    "language/literals/string/paragraph-separator-eval.js",
+    "language/literals/string/paragraph-separator.js",
+    "language/module-code/eval-self-once.js",
+    "language/module-code/export-expname-binding-index.js",
+    "language/module-code/instn-iee-bndng-cls.js",
+    "language/module-code/instn-iee-bndng-const.js",
+    "language/module-code/instn-iee-bndng-fun.js",
+    "language/module-code/instn-iee-bndng-let.js",
+    "language/module-code/instn-iee-bndng-var.js",
+    "language/module-code/instn-local-bndng-export-gen.js",
+    "language/module-code/instn-local-bndng-gen.js",
+    "language/module-code/instn-named-bndng-cls.js",
+    "language/module-code/instn-named-bndng-const.js",
+    "language/module-code/instn-named-bndng-dflt-cls.js",
+    "language/module-code/instn-named-bndng-dflt-expr.js",
+    "language/module-code/instn-named-bndng-dflt-fun-anon.js",
+    "language/module-code/instn-named-bndng-dflt-named.js",
+    "language/module-code/instn-named-bndng-dflt-star.js",
+    "language/module-code/instn-named-bndng-let.js",
+    "language/module-code/instn-named-bndng-trlng-comma.js",
+    "language/module-code/instn-named-bndng-var.js",
+    "language/module-code/namespace/internals/delete-exported-uninit.js",
+    "language/module-code/namespace/internals/enumerate-binding-uninit.js",
+    "language/module-code/namespace/internals/get-own-property-str-found-uninit.js",
+    "language/module-code/namespace/internals/get-str-found-uninit.js",
+    "language/module-code/namespace/internals/object-hasOwnProperty-binding-uninit.js",
+    "language/module-code/namespace/internals/object-keys-binding-uninit.js",
+    "language/module-code/namespace/internals/object-propertyIsEnumerable-binding-uninit.js",
+    "language/statementList/eval-block-with-statment-block.js",
+    "language/statements/class/dstr/meth-ary-init-iter-get-err-array-prototype.js",
+    "language/statements/class/dstr/meth-dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/statements/class/dstr/meth-static-ary-init-iter-get-err-array-prototype.js",
+    "language/statements/class/dstr/meth-static-dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/statements/class/subclass/default-constructor-spread-override.js",
+    "language/statements/for-of/dstr/array-elem-put-obj-literal-prop-ref-init-active.js",
+    "language/statements/for-of/dstr/array-elem-put-obj-literal-prop-ref-init.js",
+    "language/statements/for-of/dstr/obj-id-init-let.js",
+    "language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref-init-active.js",
+    "language/statements/for-of/dstr/obj-prop-elem-target-obj-literal-prop-ref-init.js",
+    "language/statements/for-of/head-lhs-async-dot.js",
+    "language/statements/for-of/head-lhs-async-escaped.js",
+    "language/statements/function/13.0-12-s.js",
+    "language/statements/function/cptn-decl.js",
+    "language/statements/function/dstr/ary-init-iter-get-err-array-prototype.js",
+    "language/statements/function/dstr/dflt-ary-init-iter-get-err-array-prototype.js",
+    "language/statements/function/eval-var-scope-syntax-err.js",
+    "language/statements/function/S13_A12_T2.js",
+    "language/statements/function/scope-param-elem-var-close.js",
+    "language/statements/function/scope-param-elem-var-open.js",
+    "language/statements/function/scope-param-rest-elem-var-close.js",
+    "language/statements/function/scope-param-rest-elem-var-open.js",
+    "language/statements/if/cptn-else-false-abrupt-empty.js",
+    "language/statements/if/cptn-else-true-abrupt-empty.js",
+    "language/statements/if/cptn-no-else-false.js",
+    "language/statements/if/cptn-no-else-true-abrupt-empty.js",
+    "language/statements/switch/cptn-a-abrupt-empty.js",
+    "language/statements/switch/cptn-a-fall-thru-abrupt-empty.js",
+    "language/statements/switch/cptn-a-fall-thru-nrml.js",
+    "language/statements/switch/cptn-b-abrupt-empty.js",
+    "language/statements/switch/cptn-b-fall-thru-abrupt-empty.js",
+    "language/statements/switch/cptn-b-fall-thru-nrml.js",
+    "language/statements/switch/cptn-dflt-abrupt-empty.js",
+    "language/statements/switch/cptn-dflt-b-abrupt-empty.js",
+    "language/statements/switch/cptn-dflt-b-fall-thru-abrupt-empty.js",
+    "language/statements/switch/cptn-dflt-b-fall-thru-nrml.js",
+    "language/statements/switch/cptn-dflt-b-final.js",
+    "language/statements/switch/cptn-dflt-fall-thru-abrupt-empty.js",
+    "language/statements/switch/cptn-dflt-fall-thru-nrml.js",
+    "language/statements/switch/cptn-no-dflt-match-abrupt-empty.js",
+    "language/statements/switch/cptn-no-dflt-match-fall-thru-abrupt-empty.js",
+    "language/statements/switch/cptn-no-dflt-match-fall-thru-nrml.js",
+    "language/statements/switch/scope-lex-async-function.js",
+    "language/statements/switch/scope-lex-async-generator.js",
+    "language/statements/switch/scope-lex-class.js",
+    "language/statements/switch/scope-lex-close-case.js",
+    "language/statements/switch/scope-lex-close-dflt.js",
+    "language/statements/switch/scope-lex-generator.js",
+    "language/statements/variable/12.2.1-10-s.js",
+    "language/statements/variable/12.2.1-17-s.js",
+    "language/statements/variable/12.2.1-21-s.js",
+    "language/statements/variable/12.2.1-6-s.js",
+    "language/statements/with/cptn-abrupt-empty.js"
+  ]
+}

+ 64 - 0
Jint.Tests.Test262/Test262ModuleLoader.cs

@@ -0,0 +1,64 @@
+#nullable enable
+
+using System;
+using System.IO;
+using Esprima;
+using Esprima.Ast;
+using Jint.Runtime;
+using Jint.Runtime.Modules;
+using Zio;
+
+namespace Jint.Tests.Test262;
+
+internal sealed class Test262ModuleLoader : IModuleLoader
+{
+    private readonly IFileSystem _fileSystem;
+    private readonly string _basePath;
+
+    public Test262ModuleLoader(IFileSystem fileSystem, string basePath)
+    {
+        _fileSystem = fileSystem;
+        _basePath = "/test/" + basePath.TrimStart('\\').TrimStart('/');
+    }
+
+    public ResolvedSpecifier Resolve(string? referencingModuleLocation, string specifier)
+    {
+        return new ResolvedSpecifier(referencingModuleLocation ?? "", specifier ?? "", null, SpecifierType.Bare);
+    }
+
+    public Module LoadModule(Engine engine, ResolvedSpecifier resolved)
+    {
+        Module module;
+        try
+        {
+            string code;
+            lock (_fileSystem)
+            {
+                var fileName = Path.Combine(_basePath, resolved.Key).Replace('\\', '/');
+                using var stream = new StreamReader(_fileSystem.OpenFile(fileName, FileMode.Open, FileAccess.Read));
+                code = stream.ReadToEnd();
+            }
+            
+            var parserOptions = new ParserOptions(resolved.Uri?.LocalPath!)
+            {
+                AdaptRegexp = true,
+                Tolerant = true
+            };
+
+            module = new JavaScriptParser(code, parserOptions).ParseModule();
+        }
+        catch (ParserException ex)
+        {
+            ExceptionHelper.ThrowSyntaxError(engine.Realm, $"Error while loading module: error in module '{resolved.Uri?.LocalPath}': {ex.Error}");
+            module = null;
+        }
+        catch (Exception ex)
+        {
+            var message = $"Could not load module {resolved.Uri?.LocalPath}: {ex.Message}";
+            ExceptionHelper.ThrowJavaScriptException(engine, message, Completion.Empty());
+            module = null;
+        }
+
+        return module;
+    }
+}

+ 47 - 400
Jint.Tests.Test262/Test262Test.cs

@@ -1,439 +1,86 @@
 using System;
-using System.Collections.Concurrent;
-using System.Collections.Generic;
 using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text.RegularExpressions;
 using Esprima;
-using Esprima.Ast;
 using Jint.Native;
 using Jint.Native.ArrayBuffer;
 using Jint.Runtime;
 using Jint.Runtime.Descriptors;
 using Jint.Runtime.Interop;
-using Newtonsoft.Json.Linq;
-using Xunit.Abstractions;
-using Xunit.Sdk;
+using Test262Harness;
 
-namespace Jint.Tests.Test262
+namespace Jint.Tests.Test262;
+
+public abstract partial class Test262Test
 {
-    public abstract class Test262Test
+    private Engine BuildTestExecutor(Test262File file)
     {
-        private static readonly Dictionary<string, Script> Sources;
-
-        protected static readonly string BasePath;
-
-        private static readonly TimeZoneInfo _pacificTimeZone;
-
-        private static readonly Dictionary<string, string> _skipReasons = new(StringComparer.OrdinalIgnoreCase);
-
-        private static readonly HashSet<string> _strictSkips = new(StringComparer.OrdinalIgnoreCase);
-
-        private static readonly Regex _moduleFlagRegex = new Regex(@"flags:\s*?\[.*?module.*?]", RegexOptions.Compiled);
-
-        static Test262Test()
+        var engine = new Engine(cfg =>
         {
-            //NOTE: The Date tests in test262 assume the local timezone is Pacific Standard Time
-            try
-            {
-                _pacificTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
-            }
-            catch (TimeZoneNotFoundException)
-            {
-                // https://stackoverflow.com/questions/47848111/how-should-i-fetch-timezoneinfo-in-a-platform-agnostic-way
-                // should be natively supported soon https://github.com/dotnet/runtime/issues/18644
-                _pacificTimeZone = TimeZoneInfo.FindSystemTimeZoneById("America/Los_Angeles");
-            }
-
-            var assemblyPath = new Uri(typeof(Test262Test).GetTypeInfo().Assembly.Location).LocalPath;
-            var assemblyDirectory = new FileInfo(assemblyPath).Directory;
-
-            BasePath = assemblyDirectory.Parent.Parent.Parent.FullName;
-
-            string[] files =
-            {
-                "sta.js",
-                "assert.js",
-                "arrayContains.js",
-                "isConstructor.js",
-                "promiseHelper.js",
-                "propertyHelper.js",
-                "compareArray.js",
-                "decimalToHexString.js",
-                "deepEqual.js",
-                "proxyTrapsHelper.js",
-                "dateConstants.js",
-                "assertRelativeDateMs.js",
-                "regExpUtils.js",
-                "nans.js",
-                "compareIterator.js",
-                "nativeFunctionMatcher.js",
-                "wellKnownIntrinsicObjects.js",
-                "fnGlobalObject.js",
-                "testTypedArray.js",
-                "detachArrayBuffer.js",
-                "byteConversionValues.js",
-                "hidden-constructors.js",
-                "testBigIntTypedArray.js"
-            };
+            cfg
+                .LocalTimeZone(State.TimeZone);
 
-            Sources = new Dictionary<string, Script>(files.Length);
-            for (var i = 0; i < files.Length; i++)
-            {
-                var source = File.ReadAllText(Path.Combine(BasePath, "harness", files[i]));
-                Sources[files[i]] = new JavaScriptParser(source, new ParserOptions(files[i])).ParseScript();
-            }
+            var relativePath = Path.GetDirectoryName(file.FileName);
+            cfg.EnableModules(new Test262ModuleLoader(State.Test262Stream.Options.FileSystem, relativePath));
+        });
 
-            var content = File.ReadAllText(Path.Combine(BasePath, "test/skipped.json"));
-            var doc = JArray.Parse(content);
-            foreach (var entry in doc.Values<JObject>())
-            {
-                var source = entry["source"].Value<string>();
-                _skipReasons[source] = entry["reason"].Value<string>();
-                if (entry.TryGetValue("mode", out var mode) && mode.Value<string>() == "strict")
-                {
-                    _strictSkips.Add(source);
-                }
-            }
-        }
+        engine.Execute(State.Sources["assert.js"]);
+        engine.Execute(State.Sources["sta.js"]);
 
-        protected void RunTestCode(string fileName, string code, bool strict, string fullPath)
-        {
-            var module = _moduleFlagRegex.IsMatch(code);
+        engine.SetValue("print",
+            new ClrFunctionInstance(engine, "print", (thisObj, args) => TypeConverter.ToString(args.At(0))));
 
-            var engine = new Engine(cfg =>
+        var o = engine.Realm.Intrinsics.Object.Construct(Arguments.Empty);
+        o.FastSetProperty("evalScript", new PropertyDescriptor(new ClrFunctionInstance(engine, "evalScript",
+            (thisObj, args) =>
             {
-                cfg.LocalTimeZone(_pacificTimeZone);
-                cfg.Strict(strict);
-                if (module)
+                if (args.Length > 1)
                 {
-                    cfg.EnableModules(Path.Combine(BasePath, "test", Path.GetDirectoryName(fullPath)!));
+                    throw new Exception("only script parsing supported");
                 }
-            });
-
-            engine.Execute(Sources["sta.js"]);
-            engine.Execute(Sources["assert.js"]);
-            engine.SetValue("print",
-                new ClrFunctionInstance(engine, "print", (thisObj, args) => TypeConverter.ToString(args.At(0))));
-
-            var o = engine.Realm.Intrinsics.Object.Construct(Arguments.Empty);
-            o.FastSetProperty("evalScript", new PropertyDescriptor(new ClrFunctionInstance(engine, "evalScript",
-                (thisObj, args) =>
-                {
-                    if (args.Length > 1)
-                    {
-                        throw new Exception("only script parsing supported");
-                    }
-
-                    var options = new ParserOptions {AdaptRegexp = true, Tolerant = false};
-                    var parser = new JavaScriptParser(args.At(0).AsString(), options);
-                    var script = parser.ParseScript(strict);
 
-                    return engine.Evaluate(script);
-                }), true, true, true));
+                var options = new ParserOptions { AdaptRegexp = true, Tolerant = false };
+                var parser = new JavaScriptParser(args.At(0).AsString(), options);
+                var script = parser.ParseScript();
 
-            o.FastSetProperty("createRealm", new PropertyDescriptor(new ClrFunctionInstance(engine, "createRealm",
-                (thisObj, args) =>
-                {
-                    var realm = engine._host.CreateRealm();
-                    realm.GlobalObject.Set("global", realm.GlobalObject);
-                    return realm.GlobalObject;
-                }), true, true, true));
+                return engine.Evaluate(script);
+            }), true, true, true));
 
-            o.FastSetProperty("detachArrayBuffer", new PropertyDescriptor(new ClrFunctionInstance(engine, "detachArrayBuffer",
-                (thisObj, args) =>
-                {
-                    var buffer = (ArrayBufferInstance) args.At(0);
-                    buffer.DetachArrayBuffer();
-                    return JsValue.Undefined;
-                }), true, true, true));
-
-            engine.SetValue("$262", o);
-
-            var includes = Regex.Match(code, @"includes: \[(.+?)\]");
-            if (includes.Success)
+        o.FastSetProperty("createRealm", new PropertyDescriptor(new ClrFunctionInstance(engine, "createRealm",
+            (thisObj, args) =>
             {
-                var files = includes.Groups[1].Captures[0].Value.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);
-                foreach (var file in files)
-                {
-                    engine.Execute(Sources[file.Trim()]);
-                }
-            }
+                var realm = engine._host.CreateRealm();
+                realm.GlobalObject.Set("global", realm.GlobalObject);
+                return realm.GlobalObject;
+            }), true, true, true));
 
-            if (code.IndexOf("propertyHelper.js", StringComparison.OrdinalIgnoreCase) != -1)
+        o.FastSetProperty("detachArrayBuffer", new PropertyDescriptor(new ClrFunctionInstance(engine, "detachArrayBuffer",
+            (thisObj, args) =>
             {
-                engine.Execute(Sources["propertyHelper.js"]);
-            }
+                var buffer = (ArrayBufferInstance) args.At(0);
+                buffer.DetachArrayBuffer();
+                return JsValue.Undefined;
+            }), true, true, true));
 
-            string lastError = null;
+        engine.SetValue("$262", o);
 
-            bool negative = code.IndexOf("negative:", StringComparison.Ordinal) > -1;
-            try
-            {
-                if (module)
-                {
-                    engine.AddModule(fullPath, builder => builder.AddSource(code));
-                    engine.ImportModule(fullPath);
-                }
-                else
-                {
-                    engine.Execute(new JavaScriptParser(code, new ParserOptions(fileName)).ParseScript());
-                }
-            }
-            catch (JavaScriptException j)
-            {
-                lastError = j.ToString();
-            }
-            catch (Exception e)
-            {
-                lastError = e.ToString();
-            }
-
-            if (!negative && !string.IsNullOrWhiteSpace(lastError))
-            {
-                throw new XunitException($"{Environment.NewLine}{fileName}{Environment.NewLine}{Environment.NewLine}{lastError}");
-            }
-        }
-
-        protected void RunTestInternal(SourceFile sourceFile)
+        foreach (var include in file.Includes)
         {
-            if (sourceFile.Skip)
-            {
-                return;
-            }
-
-            if (sourceFile.Code.IndexOf("onlyStrict", StringComparison.Ordinal) < 0 && !_moduleFlagRegex.IsMatch(sourceFile.Code))
-            {
-                RunTestCode(sourceFile.Source, sourceFile.Code, strict: false, fullPath: sourceFile.FullPath);
-            }
-
-            if (!_strictSkips.Contains(sourceFile.Source)
-                && sourceFile.Code.IndexOf("noStrict", StringComparison.Ordinal) < 0)
-            {
-                RunTestCode(sourceFile.Source, sourceFile.Code, strict: true, fullPath: sourceFile.FullPath);
-            }
+            engine.Execute(State.Sources[include]);
         }
 
-        public static IEnumerable<object[]> SourceFiles(string pathPrefix, bool skipped)
-        {
-            var results = new ConcurrentBag<object[]>();
-            var fixturesPath = Path.Combine(BasePath, "test");
-            var segments = pathPrefix.Split('\\');
-            var searchPath = Path.Combine(fixturesPath, Path.Combine(segments));
-            var files = Directory.GetFiles(searchPath, "*", SearchOption.AllDirectories);
-
-            foreach (var file in files)
-            {
-                if (file.IndexOf("_FIXTURE", StringComparison.OrdinalIgnoreCase) != -1)
-                {
-                    // Files bearing a name which includes the sequence _FIXTURE MUST NOT be interpreted
-                    // as standalone tests; they are intended to be referenced by test files.
-                    continue;
-                }
-
-                var name = file.Substring(fixturesPath.Length + 1).Replace("\\", "/");
-                bool skip = _skipReasons.TryGetValue(name, out var reason);
-
-                var code = skip ? "" : File.ReadAllText(file);
-
-                var flags = Regex.Match(code, "flags: \\[(.+?)\\]");
-                if (flags.Success)
-                {
-                    var items = flags.Groups[1].Captures[0].Value.Split(',');
-                    foreach (var item in items.Select(x => x.Trim()))
-                    {
-                        switch (item)
-                        {
-                            // TODO implement
-                            case "async":
-                                skip = true;
-                                reason = "async not implemented";
-                                break;
-                        }
-                    }
-                }
-
-                var features = Regex.Match(code, "features: \\[(.+?)\\]");
-                if (features.Success)
-                {
-                    var items = features.Groups[1].Captures[0].Value.Split(',');
-                    foreach (var item in items.Select(x => x.Trim()))
-                    {
-                        switch (item)
-                        {
-                            // TODO implement
-                            case "tail-call-optimization":
-                                skip = true;
-                                reason = "tail-calls not implemented";
-                                break;
-                            case "generators":
-                                skip = true;
-                                reason = "generators not implemented";
-                                break;
-                            case "async-functions":
-                                skip = true;
-                                reason = "async-functions not implemented";
-                                break;
-                            case "async-iteration":
-                                skip = true;
-                                reason = "async not implemented";
-                                break;
-                            case "class-fields-private":
-                            case "class-fields-public":
-                                skip = true;
-                                reason = "private/public class fields not implemented in esprima";
-                                break;
-                            case "String.prototype.replaceAll":
-                                skip = true;
-                                reason = "not in spec yet";
-                                break;
-                            case "regexp-match-indices":
-                                skip = true;
-                                reason = "regexp-match-indices not implemented";
-                                break;
-                            case "regexp-named-groups":
-                                skip = true;
-                                reason = "regexp-named-groups not implemented";
-                                break;
-                            case "regexp-lookbehind":
-                                skip = true;
-                                reason = "regexp-lookbehind not implemented";
-                                break;
-                            case "SharedArrayBuffer":
-                                skip = true;
-                                reason = "SharedArrayBuffer not implemented";
-                                break;
-                            case "resizable-arraybuffer":
-                                skip = true;
-                                reason = "resizable-arraybuffer not implemented";
-                                break;
-                            case "json-modules":
-                                skip = true;
-                                reason = "json-modules not implemented";
-                                break;
-                            case "top-level-await":
-                                skip = true;
-                                reason = "top-level-await not implemented";
-                                break;
-                            case "import-assertions":
-                                skip = true;
-                                reason = "import-assertions not implemented";
-                                break;
-                        }
-                    }
-                }
-
-                if (code.IndexOf("SpecialCasing.txt") > -1)
-                {
-                    skip = true;
-                    reason = "SpecialCasing.txt not implemented";
-                }
-
-                if (name.StartsWith("language/expressions/object/dstr-async-gen-meth-"))
-                {
-                    skip = true;
-                    reason = "Esprima problem, Unexpected token *";
-                }
-
-                // Unicode regular expressions
-
-                if (name.StartsWith("built-ins/RegExp/property-escapes/generated/"))
-                {
-                    skip = true;
-                    reason = "Esprima problem";
-                }
-
-                // Promises
-                if (name.StartsWith("built-ins/Promise/allSettled") ||
-                    name.StartsWith("built-ins/Promise/any"))
-                {
-                    skip = true;
-                    reason = "Promise.any and Promise.allSettled are not implemented yet";
-                }
-
-                if (file.EndsWith("tv-line-continuation.js")
-                    || file.EndsWith("tv-line-terminator-sequence.js")
-                    || file.EndsWith("special-characters.js"))
-                {
-                    // LF endings required
-                    code = code.Replace("\r\n", "\n");
-                }
-
-                var sourceFile = new SourceFile(
-                    name,
-                    file,
-                    skip,
-                    reason,
-                    code);
-
-                if (skipped == sourceFile.Skip)
-                {
-                    results.Add(new object[]
-                    {
-                        sourceFile
-                    });
-                }
-            }
-
-            return results;
-        }
-
-        private static ParserOptions CreateParserOptions(string fileName) =>
-            new ParserOptions(fileName)
-            {
-                AdaptRegexp = true,
-                Tolerant = true
-            };
+        return engine;
     }
 
-    public class SourceFile : IXunitSerializable
+    private static void ExecuteTest(Engine engine, Test262File file)
     {
-        public SourceFile()
+        if (file.Type == ProgramType.Module)
         {
+            engine.AddModule(file.FileName, builder => builder.AddSource(file.Program));
+            engine.ImportModule(file.FileName);
         }
-
-        public SourceFile(
-            string source,
-            string fullPath,
-            bool skip,
-            string reason,
-            string code)
-        {
-            Skip = skip;
-            Source = source;
-            Reason = reason;
-            FullPath = fullPath;
-            Code = code;
-        }
-
-        public string Source { get; set; }
-        public bool Skip { get; set; }
-        public string Reason { get; set; }
-        public string FullPath { get; set; }
-        public string Code { get; set; }
-
-        public void Deserialize(IXunitSerializationInfo info)
-        {
-            Skip = info.GetValue<bool>(nameof(Skip));
-            Source = info.GetValue<string>(nameof(Source));
-            Reason = info.GetValue<string>(nameof(Reason));
-            FullPath = info.GetValue<string>(nameof(FullPath));
-            Code = info.GetValue<string>(nameof(Code));
-        }
-
-        public void Serialize(IXunitSerializationInfo info)
-        {
-            info.AddValue(nameof(Skip), Skip);
-            info.AddValue(nameof(Source), Source);
-            info.AddValue(nameof(Reason), Reason);
-            info.AddValue(nameof(FullPath), FullPath);
-            info.AddValue(nameof(Code), Code);
-        }
-
-        public override string ToString()
+        else
         {
-            return Source;
+            engine.Execute(new JavaScriptParser(file.Program, new ParserOptions(file.FileName)).ParseScript());
         }
     }
 }

+ 36 - 0
Jint.Tests.Test262/TestHarness.cs

@@ -0,0 +1,36 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+
+using Esprima;
+
+namespace Jint.Tests.Test262;
+
+/// <summary>
+/// Handles initializing testing state.
+/// </summary>
+public partial class TestHarness
+{
+    private static partial Task InitializeCustomState()
+    {
+        // NOTE: The Date tests in test262 assume the local timezone is Pacific Standard Time
+        try
+        {
+            State.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
+        }
+        catch (TimeZoneNotFoundException)
+        {
+            // https://stackoverflow.com/questions/47848111/how-should-i-fetch-timezoneinfo-in-a-platform-agnostic-way
+            // should be natively supported soon https://github.com/dotnet/runtime/issues/18644
+            State.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("America/Los_Angeles");
+        }
+
+        foreach (var file in State.HarnessFiles)
+        {
+            var source = file.Program;
+            State.Sources[Path.GetFileName(file.FileName)] = new JavaScriptParser(source, new ParserOptions(file.FileName)).ParseScript();
+        }
+
+        return Task.CompletedTask;
+    }
+}

+ 0 - 422
Jint.Tests.Test262/test/skipped.json

@@ -1,422 +0,0 @@
-[
-    {
-        "source": "language/expressions/assignment/fn-name-lhs-cover.js",
-        "reason": "Currently quite impossible to detect if assignment target is CoverParenthesizedExpression"
-    },
-    {
-        "source": "built-ins/RegExp/character-class-escape-non-whitespace.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/property-escapes/character-class.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/Symbol.match/builtin-infer-unicode.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/Symbol.match/builtin-success-u-return-val-groups.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/Symbol.match/u-advance-after-empty.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/Symbol.replace/u-advance-after-empty.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/Symbol.search/u-lastindex-advance.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/unicode_restricted_quantifiable_assertion.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/dotall/without-dotall.js",
-        "reason": "Issue with \\r in source string"
-    },
-    {
-        "source": "built-ins/RegExp/dotall/without-dotall-unicode.js",
-        "reason": "Issue with \\r in source string"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/exec/u-lastindex-value.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/unicode_restricted_character_class_escape.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/unicode_restricted_identity_escape.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/unicode_restricted_identity_escape_alpha.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/unicode_restricted_identity_escape_c.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-    {
-        "source": "built-ins/RegExp/unicode_restricted_identity_escape_u.js",
-        "reason": "Unicode support not built-in to .NET the same way, requires more work"
-    },
-
-    {
-        "source": "built-ins/Function/prototype/toString/method-computed-property-name.js",
-        "reason": "requires investigation how to process complex function name evaluation for property"
-    },
-
-
-    // http://www.ecma-international.org/ecma-262/#sec-block-level-function-declarations-web-legacy-compatibility-semantics
-    {
-        "source": "language/statements/let/block-local-closure-set-before-initialization.js",
-        "reason": "not implemented (block level functions)"
-    },
-    {
-        "source": "language/block-scope/shadowing/dynamic-lookup-from-closure.js",
-        "reason": "not implemented (block level functions)"
-    },
-    {
-        "source": "language/block-scope/shadowing/lookup-from-closure.js",
-        "reason": "not implemented (block level functions)"
-    },
-
-    {
-        "source": "language/statements/let/block-local-closure-set-before-initialization.js",
-        "reason": "http://www.ecma-international.org/ecma-262/#sec-block-level-function-declarations-web-legacy-compatibility-semantics not implemented (block level functions)"
-    },
-
-    {
-        "source": "built-ins/RegExp/S15.10.2.11_A1_T5.js",
-        "reason": "Logic difference in .NET RegExp / skipped in ECMA tests too"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.11_A1_T7.js",
-        "reason": "Logic difference in .NET RegExp / skipped in ECMA tests too"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.4.1_A8_T2.js",
-        "reason": "Logic difference in .NET RegExp / skipped in ECMA tests too"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T6.js",
-        "reason": "Logic difference in .NET RegExp / skipped in ECMA tests too"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.5_A1_T4.js",
-        "reason": "Logic difference in .NET RegExp / skipped in ECMA tests too"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/exec/u-lastindex-adv.js",
-        "reason": "Esprima strips unicode sequence and match logic does not work"
-    },
-    {
-        "source": "built-ins/String/raw/special-characters.js",
-        "reason": "Windows line ending differences"
-    },
-    {
-        "source": "language/expressions/object/method-definition/object-method-returns-promise.js",
-        "reason": "Promise not implemented"
-    },
-    {
-        "source": "language/statements/class/definition/class-method-returns-promise.js",
-        "reason": "Promise not implemented"
-    },
-    {
-        "source": "built-ins/Promise/race/resolve-element-function-name.js",
-        "reason": "there is bug in suite and bug in Jint, refer to https://github.com/sebastienros/jint/issues/888 and https://github.com/tc39/test262/issues/2985"
-    },
-    {
-        "source": "built-ins/Symbol/species/subclassing.js",
-        "reason": "subclassing not implemented"
-    },
-    {
-        "source": "built-ins/Date/subclassing.js",
-        "reason": "subclassing not implemented"
-    },
-    {
-        "source": "built-ins/Date/parse/time-value-maximum-range.js",
-        "reason": "parsing of large/small years not implemented in .NET (-271821, +271821)"
-    },
-    {
-        "source": "built-ins/Proxy/enumerate/removed-does-not-trigger.js",
-        "reason": "for-of not implemented"
-    },
-    {
-        "source": "built-ins/Map/prototype/forEach/iterates-values-deleted-then-readded.js",
-        "reason": "delete/add detection not implemented for map iterator during iteration"
-    },
-    {
-        "source": "built-ins/MapIteratorPrototype/next/iteration-mutable.js",
-        "reason": "delete/add detection not implemented for map iterator during iteration"
-    },
-    {
-        "source": "built-ins/Set/prototype/forEach/iterates-values-revisits-after-delete-re-add.js",
-        "reason": "delete/add detection not implemented for set iterator during iteration"
-    },
-    {
-        "source": "built-ins/Array/prototype/toLocaleString/primitive_this_value.js",
-        "reason": "requires toLocaleString changes"
-    },
-    {
-        "source": "built-ins/Array/prototype/toLocaleString/primitive_this_value_getter.js",
-        "reason": "requires toLocaleString changes"
-    },
-    {
-        "source": "built-ins/Object/prototype/toLocaleString/primitive_this_value_getter.js",
-        "reason": "requires toLocaleString changes"
-    },
-
-    {
-        "source": "built-ins/String/prototype/padEnd/observable-operations.js",
-        "reason": "observables not implemented"
-    },
-    {
-        "source": "built-ins/String/prototype/padStart/observable-operations.js",
-        "reason": "observables not implemented"
-    },
-    {
-        "source": "built-ins/StringIteratorPrototype/next/next-iteration-surrogate-pairs.js",
-        "reason": "code point iteration not implemented"
-    },
-    {
-        "source": "language/expressions/template-literal/tv-line-terminator-sequence.js",
-        "reason": "Line feed problems (git, windows, linux)"
-    },
-    {
-        "source": "built-ins/Number/prototype/toFixed/range.js",
-        "reason": "100 fraction digits is not supported due to .NET format specifier limitation"
-    },
-    {
-        "source": "language/types/number/8.5.1.js",
-        "reason": "C# can't distinguish 1.797693134862315808e+308 and 1.797693134862315708145274237317e+308"
-    },
-
-    // function behaviour to be implemented
-    {
-        "source": "language/expressions/function/scope-name-var-open-non-strict.js",
-        "reason": "inner binding is immutable (from parameters) Expected SameValue(«null», «function() {{ ... }}») to be true"
-    },
-    {
-        "source": "language/expressions/function/scope-name-var-open-strict.js",
-        "reason": "inner binding rejects modification (from parameters) Expected a Error to be thrown but no exception was thrown at all"
-    },
-
-    {
-        "source": "built-ins/TypedArrayConstructors/ctors-bigint/object-arg/as-generator-iterable-returns.js",
-        "reason": "yield not implemented"
-    },
-    {
-        "source": "built-ins/TypedArrayConstructors/ctors-bigint/object-arg/iterating-throws.js",
-        "reason": "yield not implemented"
-    },
-    {
-        "source": "language/expressions/object/accessor-name-computed-yield-id.js",
-        "reason": "accessor / yield not implemented"
-    },
-    {
-        "source": "language/expressions/object/accessor-name-computed.js",
-        "reason": "yield not implemented"
-    },
-    {
-        "source": "built-ins/TypedArrayConstructors/ctors/object-arg/as-generator-iterable-returns.js",
-        "reason": "yield not implemented"
-    },
-    {
-        "source": "language/expressions/object/prop-dup-set-get-set.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/accessor-name-computed-err-to-prop-key.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/accessor-name-computed-err-unresolvable.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/accessor-name-computed-in.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/accessor-name-literal-numeric-leading-decimal.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/accessor-name-literal-numeric-non-canonical.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/fn-name-accessor-get.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/fn-name-accessor-set.js",
-        "reason": "accessor not implemented"
-    },
-    {
-        "source": "language/expressions/object/method-definition/name-prop-name-yield-id.js",
-        "reason": "yield not implemented"
-    },
-
-
-    {
-        "source": "language/expressions/object/method.js",
-        "reason": "super not implemented"
-    },
-    {
-        "source": "language/expressions/object/setter-super-prop.js",
-        "reason": "super not implemented"
-    },
-    {
-        "source": "language/expressions/object/getter-super-prop.js",
-        "reason": "super not implemented"
-    },
-
-
-    {
-        "source": "language/expressions/arrow-function/scope-paramsbody-var-open.js",
-        "reason": "not implemented: Creation of new variable environment for the function body (as distinct from that for the function's parameters)"
-    },
-    {
-        "source": "language/expressions/function/scope-paramsbody-var-open.js",
-        "reason": "not implemented: Creation of new variable environment for the function body (as distinct from that for the function's parameters)"
-    },
-    {
-        "source": "language/expressions/object/scope-meth-paramsbody-var-open.js",
-        "reason": "not implemented: Creation of new variable environment for the function body (as distinct from that for the function's parameters)"
-    },
-    {
-        "source": "language/expressions/object/scope-setter-paramsbody-var-open.js",
-        "reason": "not implemented: Creation of new variable environment for the function body (as distinct from that for the function's parameters)"
-    },
-
-    {
-        "source": "built-ins/Object/prototype/toString/proxy-function.js",
-        "reason": "generators not implemented"
-    },
-    {
-        "source": "language/statements/class/subclass/builtin-objects/GeneratorFunction/instance-prototype.js",
-        "reason": "generators not implemented"
-    },
-    {
-        "source": "language/statements/class/subclass/builtin-objects/GeneratorFunction/regular-subclassing.js",
-        "reason": "generators not implemented"
-    },
-    {
-        "source": "language/module-code/instn-local-bndng-export-gen.js",
-        "reason": "generators not implemented"
-    },
-    {
-        "source": "language/module-code/instn-local-bndng-gen.js",
-        "reason": "generators not implemented"
-    },
-
-    // Eval problems
-
-    {
-        "source": "language/expressions/super/prop-dot-cls-val-from-eval.js",
-        "reason": "JavaScriptParser cannot handle direct 'super.property' script code"
-    },
-
-    {
-        "source": "language/expressions/super/prop-dot-obj-val-from-eval.js",
-        "reason": "JavaScriptParser cannot handle direct 'super.property' script code"
-    },
-
-    {
-        "source": "language/expressions/super/prop-expr-cls-val-from-eval.js",
-        "reason": "JavaScriptParser cannot handle direct 'super.property' script code"
-    },
-
-    {
-        "source": "language/expressions/super/prop-expr-obj-val-from-eval.js",
-        "reason": "JavaScriptParser cannot handle direct 'super.property' script code"
-    },
-
-    // Esprima problems
-
-    {
-        "source": "language/expressions/object/method-definition/name-super-prop-param.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/expressions/optional-chaining/member-expression.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/statements/for-of/dstr-obj-id-init-let.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/statements/for/head-lhs-let.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/expressions/object/yield-non-strict-access.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/expressions/object/yield-non-strict-syntax.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/source/value-u.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/prototype/source/value-line-terminator.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.13_A1_T1.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.13_A1_T17.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.13_A1_T2.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.13_A2_T1.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.13_A2_T2.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "built-ins/RegExp/S15.10.2.13_A2_T8.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/expressions/object/let-non-strict-access.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/expressions/object/let-non-strict-syntax.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/expressions/assignment/dstr-obj-id-identifier-yield-ident-valid.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/statements/for-of/dstr-obj-id-identifier-yield-ident-valid.js",
-        "reason": "Esprima problem"
-    },
-    {
-        "source": "language/white-space/mongolian-vowel-separator-eval.js",
-        "reason": "Esprima problem"
-    }
-]

+ 0 - 6
Jint.sln

@@ -11,8 +11,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Jint.Repl", "Jint.Repl\Jint
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Jint.Tests", "Jint.Tests\Jint.Tests.csproj", "{9FBCAB58-FE6D-4804-92B8-7CF886113708}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Jint.Tests.Ecma", "Jint.Tests.Ecma\Jint.Tests.Ecma.csproj", "{2CC1F6A6-7DCC-4C7C-A619-ACE1A4296446}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Jint.Tests.CommonScripts", "Jint.Tests.CommonScripts\Jint.Tests.CommonScripts.csproj", "{B815F239-6409-4BA7-9461-18317AA2DBED}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Jint.Tests.Test262", "Jint.Tests.Test262\Jint.Tests.Test262.csproj", "{62FFFDBD-AB58-490D-9A50-AA7C53BF0409}"
@@ -39,10 +37,6 @@ Global
 		{9FBCAB58-FE6D-4804-92B8-7CF886113708}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{9FBCAB58-FE6D-4804-92B8-7CF886113708}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{9FBCAB58-FE6D-4804-92B8-7CF886113708}.Release|Any CPU.Build.0 = Release|Any CPU
-		{2CC1F6A6-7DCC-4C7C-A619-ACE1A4296446}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{2CC1F6A6-7DCC-4C7C-A619-ACE1A4296446}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{2CC1F6A6-7DCC-4C7C-A619-ACE1A4296446}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{2CC1F6A6-7DCC-4C7C-A619-ACE1A4296446}.Release|Any CPU.Build.0 = Release|Any CPU
 		{B815F239-6409-4BA7-9461-18317AA2DBED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{B815F239-6409-4BA7-9461-18317AA2DBED}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{B815F239-6409-4BA7-9461-18317AA2DBED}.Release|Any CPU.ActiveCfg = Release|Any CPU