goscript 0.1.4 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/cmd/go_js_wasm_exec/main.go +201 -0
- package/cmd/go_js_wasm_exec/main_test.go +83 -0
- package/cmd/goscript/{cmd_compile.go → cmd-compile.go} +7 -0
- package/cmd/goscript/cmd-test.go +14 -0
- package/cmd/goscript/cmd-test_test.go +1 -1
- package/cmd/goscript-wasm/main.go +38 -6
- package/compiler/compile-request.go +12 -9
- package/compiler/compliance_test.go +0 -1
- package/compiler/config.go +2 -0
- package/compiler/diagnostic.go +104 -12
- package/compiler/diagnostic_test.go +106 -0
- package/compiler/gotest/request.go +28 -0
- package/compiler/gotest/runner.go +354 -44
- package/compiler/gotest/runner_test.go +293 -1
- package/compiler/gotest/testdata/browserapi/browserapi_test.go +20 -0
- package/compiler/gotest/testdata/browserapi/go.mod +3 -0
- package/compiler/index.test.ts +23 -0
- package/compiler/lowered-program.go +33 -24
- package/compiler/lowering.go +746 -194
- package/compiler/lowering_bench_test.go +42 -27
- package/compiler/lowering_internal_test.go +18 -0
- package/compiler/override-facts.go +15 -0
- package/compiler/override-parity-verifier.go +450 -0
- package/compiler/override-parity.go +122 -0
- package/compiler/override-registry_test.go +559 -0
- package/compiler/protobuf-ts-binding.go +567 -0
- package/compiler/protobuf-ts-binding_test.go +402 -0
- package/compiler/runtime-contract.go +4 -0
- package/compiler/runtime-contract_test.go +2 -0
- package/compiler/semantic-model-types.go +9 -4
- package/compiler/semantic-model.go +282 -70
- package/compiler/semantic-model_test.go +82 -1
- package/compiler/service.go +21 -1
- package/compiler/skeleton_test.go +118 -10
- package/compiler/typescript-emitter.go +128 -13
- package/compiler/wasm/compile_test.go +37 -4
- package/compiler/{wasm_api.go → wasm-api.go} +57 -7
- package/dist/gs/builtin/hostio.js +5 -0
- package/dist/gs/builtin/hostio.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +13 -2
- package/dist/gs/builtin/slice.js +187 -6
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +13 -5
- package/dist/gs/builtin/type.js +153 -60
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/builtin/varRef.d.ts +11 -0
- package/dist/gs/builtin/varRef.js +57 -2
- package/dist/gs/builtin/varRef.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.js +1 -1
- package/dist/gs/bytes/buffer.gs.js.map +1 -1
- package/dist/gs/bytes/reader.gs.js +1 -1
- package/dist/gs/bytes/reader.gs.js.map +1 -1
- package/dist/gs/compress/zlib/index.d.ts +10 -3
- package/dist/gs/compress/zlib/index.js +50 -16
- package/dist/gs/compress/zlib/index.js.map +1 -1
- package/dist/gs/encoding/json/index.d.ts +114 -0
- package/dist/gs/encoding/json/index.js +544 -36
- package/dist/gs/encoding/json/index.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +101 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +589 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.d.ts +1 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +17 -11
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/errors.js +54 -30
- package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
- package/dist/gs/go/scanner/index.d.ts +2 -0
- package/dist/gs/go/scanner/index.js +29 -5
- package/dist/gs/go/scanner/index.js.map +1 -1
- package/dist/gs/go/token/index.js +22 -6
- package/dist/gs/go/token/index.js.map +1 -1
- package/dist/gs/hash/index.d.ts +6 -0
- package/dist/gs/hash/index.js +20 -0
- package/dist/gs/hash/index.js.map +1 -1
- package/dist/gs/internal/byteorder/index.js +2 -2
- package/dist/gs/internal/byteorder/index.js.map +1 -1
- package/dist/gs/internal/goarch/index.d.ts +43 -3
- package/dist/gs/internal/goarch/index.js +42 -10
- package/dist/gs/internal/goarch/index.js.map +1 -1
- package/dist/gs/io/fs/fs.js +26 -14
- package/dist/gs/io/fs/fs.js.map +1 -1
- package/dist/gs/io/fs/readdir.js +4 -2
- package/dist/gs/io/fs/readdir.js.map +1 -1
- package/dist/gs/io/fs/sub.js +8 -1
- package/dist/gs/io/fs/sub.js.map +1 -1
- package/dist/gs/io/io.d.ts +2 -0
- package/dist/gs/io/io.js.map +1 -1
- package/dist/gs/math/bits/index.d.ts +5 -0
- package/dist/gs/math/bits/index.js +16 -4
- package/dist/gs/math/bits/index.js.map +1 -1
- package/dist/gs/mime/index.d.ts +16 -0
- package/dist/gs/mime/index.js +315 -6
- package/dist/gs/mime/index.js.map +1 -1
- package/dist/gs/net/http/httptest/index.d.ts +12 -0
- package/dist/gs/net/http/httptest/index.js +85 -6
- package/dist/gs/net/http/httptest/index.js.map +1 -1
- package/dist/gs/net/http/index.d.ts +300 -5
- package/dist/gs/net/http/index.js +1598 -58
- package/dist/gs/net/http/index.js.map +1 -1
- package/dist/gs/os/dir_unix.gs.js +1 -1
- package/dist/gs/os/dir_unix.gs.js.map +1 -1
- package/dist/gs/os/error.gs.js +1 -1
- package/dist/gs/os/error.gs.js.map +1 -1
- package/dist/gs/os/exec.gs.d.ts +1 -0
- package/dist/gs/os/exec.gs.js +4 -8
- package/dist/gs/os/exec.gs.js.map +1 -1
- package/dist/gs/os/exec_posix.gs.js +1 -1
- package/dist/gs/os/exec_posix.gs.js.map +1 -1
- package/dist/gs/os/index.d.ts +1 -1
- package/dist/gs/os/index.js +1 -1
- package/dist/gs/os/index.js.map +1 -1
- package/dist/gs/os/proc.gs.d.ts +4 -0
- package/dist/gs/os/proc.gs.js +12 -6
- package/dist/gs/os/proc.gs.js.map +1 -1
- package/dist/gs/os/root_js.gs.js +1 -1
- package/dist/gs/os/root_js.gs.js.map +1 -1
- package/dist/gs/os/types.gs.js +1 -1
- package/dist/gs/os/types.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.js +1 -1
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/dist/gs/os/types_unix.gs.js +1 -1
- package/dist/gs/os/types_unix.gs.js.map +1 -1
- package/dist/gs/path/path.js +11 -7
- package/dist/gs/path/path.js.map +1 -1
- package/dist/gs/reflect/index.d.ts +5 -4
- package/dist/gs/reflect/index.js +4 -3
- package/dist/gs/reflect/index.js.map +1 -1
- package/dist/gs/reflect/map.js +15 -0
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +25 -6
- package/dist/gs/reflect/type.js +1475 -228
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/reflect/types.d.ts +14 -6
- package/dist/gs/reflect/types.js +35 -1
- package/dist/gs/reflect/types.js.map +1 -1
- package/dist/gs/reflect/value.d.ts +1 -0
- package/dist/gs/reflect/value.js +83 -41
- package/dist/gs/reflect/value.js.map +1 -1
- package/dist/gs/reflect/visiblefields.js +4 -140
- package/dist/gs/reflect/visiblefields.js.map +1 -1
- package/dist/gs/runtime/pprof/index.d.ts +8 -2
- package/dist/gs/runtime/pprof/index.js +50 -30
- package/dist/gs/runtime/pprof/index.js.map +1 -1
- package/dist/gs/runtime/runtime.js +5 -4
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/runtime/trace/index.js +5 -19
- package/dist/gs/runtime/trace/index.js.map +1 -1
- package/dist/gs/strconv/atoi.gs.js +1 -1
- package/dist/gs/strconv/atoi.gs.js.map +1 -1
- package/dist/gs/strconv/complex.gs.d.ts +3 -0
- package/dist/gs/strconv/complex.gs.js +148 -0
- package/dist/gs/strconv/complex.gs.js.map +1 -0
- package/dist/gs/strconv/index.d.ts +1 -0
- package/dist/gs/strconv/index.js +1 -0
- package/dist/gs/strconv/index.js.map +1 -1
- package/dist/gs/strings/builder.js +1 -1
- package/dist/gs/strings/reader.js +9 -5
- package/dist/gs/strings/reader.js.map +1 -1
- package/dist/gs/strings/replace.js +15 -7
- package/dist/gs/strings/replace.js.map +1 -1
- package/dist/gs/strings/strings.d.ts +5 -0
- package/dist/gs/strings/strings.js +57 -5
- package/dist/gs/strings/strings.js.map +1 -1
- package/dist/gs/sync/atomic/doc_64.gs.js +7 -6
- package/dist/gs/sync/atomic/doc_64.gs.js.map +1 -1
- package/dist/gs/sync/atomic/type.gs.js +9 -9
- package/dist/gs/sync/atomic/type.gs.js.map +1 -1
- package/dist/gs/sync/atomic/value.gs.js +2 -2
- package/dist/gs/sync/atomic/value.gs.js.map +1 -1
- package/dist/gs/syscall/env.js +22 -14
- package/dist/gs/syscall/env.js.map +1 -1
- package/dist/gs/testing/testing.js +55 -13
- package/dist/gs/testing/testing.js.map +1 -1
- package/dist/gs/time/time.d.ts +24 -1
- package/dist/gs/time/time.js +43 -3
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unique/index.js +7 -1
- package/dist/gs/unique/index.js.map +1 -1
- package/go.mod +3 -3
- package/go.sum +16 -0
- package/gs/builtin/hostio.test.ts +16 -0
- package/gs/builtin/hostio.ts +7 -0
- package/gs/builtin/runtime-contract.test.ts +246 -21
- package/gs/builtin/slice.ts +269 -24
- package/gs/builtin/type.ts +226 -59
- package/gs/builtin/varRef.ts +85 -2
- package/gs/bytes/buffer.gs.ts +1 -1
- package/gs/bytes/reader.gs.ts +1 -1
- package/gs/compress/zlib/index.test.ts +62 -1
- package/gs/compress/zlib/index.ts +53 -16
- package/gs/compress/zlib/parity.json +51 -0
- package/gs/encoding/json/index.test.ts +360 -6
- package/gs/encoding/json/index.ts +679 -38
- package/gs/encoding/json/parity.json +81 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +373 -3
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +893 -1
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +18 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +17 -11
- package/gs/github.com/pkg/errors/errors.ts +54 -30
- package/gs/go/scanner/index.test.ts +39 -56
- package/gs/go/scanner/index.ts +33 -5
- package/gs/go/scanner/parity.json +27 -0
- package/gs/go/token/index.ts +22 -6
- package/gs/hash/index.test.ts +20 -33
- package/gs/hash/index.ts +28 -0
- package/gs/hash/parity.json +21 -0
- package/gs/internal/byteorder/index.test.ts +2 -2
- package/gs/internal/byteorder/index.ts +2 -2
- package/gs/internal/goarch/index.test.ts +32 -0
- package/gs/internal/goarch/index.ts +45 -13
- package/gs/internal/goarch/parity.json +144 -0
- package/gs/io/fs/fs.ts +26 -14
- package/gs/io/fs/readdir.ts +4 -4
- package/gs/io/fs/sub.ts +8 -1
- package/gs/io/io.ts +1 -0
- package/gs/io/parity.json +162 -0
- package/gs/math/bits/index.test.ts +14 -1
- package/gs/math/bits/index.ts +23 -4
- package/gs/math/bits/parity.json +156 -0
- package/gs/mime/index.test.ts +90 -0
- package/gs/mime/index.ts +369 -6
- package/gs/mime/parity.json +36 -0
- package/gs/net/http/httptest/index.test.ts +98 -2
- package/gs/net/http/httptest/index.ts +101 -6
- package/gs/net/http/httptest/parity.json +15 -0
- package/gs/net/http/index.test.ts +781 -12
- package/gs/net/http/index.ts +1860 -139
- package/gs/net/http/meta.json +16 -1
- package/gs/net/http/parity.json +193 -0
- package/gs/os/dir_unix.gs.ts +1 -1
- package/gs/os/error.gs.ts +1 -1
- package/gs/os/exec.gs.ts +4 -8
- package/gs/os/exec_posix.gs.ts +1 -1
- package/gs/os/index.test.ts +9 -0
- package/gs/os/index.ts +1 -0
- package/gs/os/parity.json +9 -0
- package/gs/os/proc.gs.ts +18 -5
- package/gs/os/proc.test.ts +26 -0
- package/gs/os/root_js.gs.ts +1 -1
- package/gs/os/types.gs.ts +1 -1
- package/gs/os/types_js.gs.ts +1 -1
- package/gs/os/types_unix.gs.ts +1 -1
- package/gs/path/path.ts +11 -7
- package/gs/reflect/field.test.ts +37 -15
- package/gs/reflect/function-types.test.ts +518 -22
- package/gs/reflect/index.ts +8 -6
- package/gs/reflect/map.ts +20 -0
- package/gs/reflect/meta.json +6 -4
- package/gs/reflect/parity.json +234 -0
- package/gs/reflect/sliceat.test.ts +156 -0
- package/gs/reflect/structof.test.ts +401 -0
- package/gs/reflect/type.ts +1961 -317
- package/gs/reflect/typefor.test.ts +530 -10
- package/gs/reflect/types.ts +43 -18
- package/gs/reflect/value.ts +105 -45
- package/gs/reflect/visiblefields.ts +5 -168
- package/gs/runtime/parity.json +24 -0
- package/gs/runtime/pprof/index.test.ts +29 -7
- package/gs/runtime/pprof/index.ts +56 -30
- package/gs/runtime/pprof/parity.json +27 -0
- package/gs/runtime/runtime.test.ts +3 -1
- package/gs/runtime/runtime.ts +4 -3
- package/gs/runtime/trace/index.test.ts +5 -3
- package/gs/runtime/trace/index.ts +8 -20
- package/gs/runtime/trace/parity.json +36 -0
- package/gs/strconv/atoi.gs.ts +1 -1
- package/gs/strconv/complex.gs.ts +174 -0
- package/gs/strconv/complex.test.ts +65 -0
- package/gs/strconv/index.ts +1 -0
- package/gs/strconv/parity.json +120 -0
- package/gs/strings/builder.ts +1 -1
- package/gs/strings/parity.json +186 -0
- package/gs/strings/reader.ts +9 -5
- package/gs/strings/replace.ts +15 -7
- package/gs/strings/strings.test.ts +22 -2
- package/gs/strings/strings.ts +64 -6
- package/gs/sync/atomic/doc_64.gs.ts +6 -7
- package/gs/sync/atomic/doc_64.test.ts +43 -0
- package/gs/sync/atomic/type.gs.ts +9 -9
- package/gs/sync/atomic/value.gs.ts +2 -2
- package/gs/syscall/env.ts +29 -14
- package/gs/testing/testing.test.ts +67 -0
- package/gs/testing/testing.ts +87 -19
- package/gs/time/parity.json +225 -0
- package/gs/time/time.test.ts +20 -2
- package/gs/time/time.ts +49 -7
- package/gs/unique/index.ts +7 -1
- package/package.json +4 -2
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +0 -217
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +0 -926
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +0 -1
- package/gs/github.com/aperturerobotics/starpc/srpc/index.test.ts +0 -38
- package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +0 -1361
- package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +0 -46
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
package compiler
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"context"
|
|
5
|
+
"errors"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"strings"
|
|
8
|
+
"testing"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
func TestFormatDiagnosticIncludesDisplayPosition(t *testing.T) {
|
|
12
|
+
diag := Diagnostic{
|
|
13
|
+
Severity: DiagnosticSeverityError,
|
|
14
|
+
Code: "goscript/test",
|
|
15
|
+
Message: "failed",
|
|
16
|
+
Detail: "bad input",
|
|
17
|
+
Position: &DiagnosticPosition{
|
|
18
|
+
File: filepath.Join("internal", "raw.go"),
|
|
19
|
+
DisplayFile: filepath.Join("pkg", "main.go"),
|
|
20
|
+
Line: 12,
|
|
21
|
+
Column: 3,
|
|
22
|
+
},
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
got := FormatDiagnostic(diag)
|
|
26
|
+
want := "pkg/main.go:12:3: goscript/test: failed (bad input)"
|
|
27
|
+
if got != want {
|
|
28
|
+
t.Fatalf("FormatDiagnostic() = %q, want %q", got, want)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
func TestFormatDiagnosticWithoutPositionPreservesLegacyShape(t *testing.T) {
|
|
33
|
+
diag := Diagnostic{
|
|
34
|
+
Severity: DiagnosticSeverityError,
|
|
35
|
+
Code: "goscript/test",
|
|
36
|
+
Message: "failed",
|
|
37
|
+
Detail: "bad input",
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
got := FormatDiagnostic(diag)
|
|
41
|
+
want := "goscript/test: failed (bad input)"
|
|
42
|
+
if got != want {
|
|
43
|
+
t.Fatalf("FormatDiagnostic() = %q, want %q", got, want)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
func TestDiagnosticPositionFromSourceUsesDisplayRoot(t *testing.T) {
|
|
48
|
+
root := t.TempDir()
|
|
49
|
+
file := filepath.Join(root, "pkg", "main.go")
|
|
50
|
+
pos := diagnosticPositionFromSource(sourcePosition{
|
|
51
|
+
file: file,
|
|
52
|
+
line: 7,
|
|
53
|
+
column: 9,
|
|
54
|
+
}, root)
|
|
55
|
+
|
|
56
|
+
if pos == nil {
|
|
57
|
+
t.Fatal("expected diagnostic position")
|
|
58
|
+
}
|
|
59
|
+
if pos.File != file {
|
|
60
|
+
t.Fatalf("File = %q, want %q", pos.File, file)
|
|
61
|
+
}
|
|
62
|
+
if pos.DisplayFile != "pkg/main.go" {
|
|
63
|
+
t.Fatalf("DisplayFile = %q, want %q", pos.DisplayFile, "pkg/main.go")
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
func TestLoweringUnsupportedDiagnosticIncludesSourcePosition(t *testing.T) {
|
|
68
|
+
moduleDir := writePackageGraphFixture(t, map[string]string{
|
|
69
|
+
"go.mod": "module example.test/loweringdiag\n\ngo 1.25.3\n",
|
|
70
|
+
"main.go": "package loweringdiag\n\nfunc Make[T ~[]int]() T {\n\treturn make(T, 1)\n}\n",
|
|
71
|
+
})
|
|
72
|
+
service := NewCompileService()
|
|
73
|
+
_, err := service.Compile(context.Background(), &CompileRequest{
|
|
74
|
+
Patterns: []string{"."},
|
|
75
|
+
Dir: moduleDir,
|
|
76
|
+
OutputPath: filepath.Join(t.TempDir(), "output"),
|
|
77
|
+
DependencyMode: DependencyModeRequested,
|
|
78
|
+
RuntimeEmissionMode: RuntimeEmissionModeReference,
|
|
79
|
+
})
|
|
80
|
+
if err == nil {
|
|
81
|
+
t.Fatal("expected lowering diagnostic")
|
|
82
|
+
}
|
|
83
|
+
var compileErr *CompileError
|
|
84
|
+
if !errors.As(err, &compileErr) {
|
|
85
|
+
t.Fatalf("expected CompileError, got %T: %v", err, err)
|
|
86
|
+
}
|
|
87
|
+
if len(compileErr.Diagnostics) != 1 {
|
|
88
|
+
t.Fatalf("Diagnostics = %#v, want exactly one", compileErr.Diagnostics)
|
|
89
|
+
}
|
|
90
|
+
diag := compileErr.Diagnostics[0]
|
|
91
|
+
if diag.Code != "goscript/lowering:unsupported" {
|
|
92
|
+
t.Fatalf("Code = %q, want goscript/lowering:unsupported", diag.Code)
|
|
93
|
+
}
|
|
94
|
+
if diag.Position == nil {
|
|
95
|
+
t.Fatalf("missing position in %#v", diag)
|
|
96
|
+
}
|
|
97
|
+
if diag.Position.DisplayFile != "main.go" {
|
|
98
|
+
t.Fatalf("DisplayFile = %q, want main.go", diag.Position.DisplayFile)
|
|
99
|
+
}
|
|
100
|
+
if diag.Position.Line != 4 {
|
|
101
|
+
t.Fatalf("Line = %d, want 4", diag.Position.Line)
|
|
102
|
+
}
|
|
103
|
+
if got := FormatDiagnostics(compileErr.Diagnostics); !strings.HasPrefix(got, "main.go:4:") {
|
|
104
|
+
t.Fatalf("formatted diagnostic = %q, want main.go:4 prefix", got)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -30,12 +30,16 @@ type Request struct {
|
|
|
30
30
|
Timeout time.Duration
|
|
31
31
|
// Verbose emits test-level output.
|
|
32
32
|
Verbose bool
|
|
33
|
+
// PanicOnExit0 makes os.Exit(0) fail like go test's -test.paniconexit0.
|
|
34
|
+
PanicOnExit0 bool
|
|
33
35
|
// WorkDir stores generated runner files and logs.
|
|
34
36
|
WorkDir string
|
|
35
37
|
// OutputRoot stores generated TypeScript packages.
|
|
36
38
|
OutputRoot string
|
|
37
39
|
// Parallelism limits concurrent package typecheck/runtime subprocesses.
|
|
38
40
|
Parallelism int
|
|
41
|
+
// RuntimeBackend selects the JavaScript host used for package runtime tests.
|
|
42
|
+
RuntimeBackend RuntimeBackend
|
|
39
43
|
// RuntimeGroups allows package runtimes to share worker Bun processes.
|
|
40
44
|
RuntimeGroups bool
|
|
41
45
|
// IncrementalTypeCheck reuses TypeScript build-info files inside WorkDir.
|
|
@@ -52,13 +56,25 @@ type normalizedRequest struct {
|
|
|
52
56
|
Short bool
|
|
53
57
|
Timeout time.Duration
|
|
54
58
|
Verbose bool
|
|
59
|
+
PanicOnExit0 bool
|
|
55
60
|
WorkDir string
|
|
56
61
|
OutputRoot string
|
|
57
62
|
Parallelism int
|
|
63
|
+
RuntimeBackend RuntimeBackend
|
|
58
64
|
RuntimeGroups bool
|
|
59
65
|
IncrementalTypeCheck bool
|
|
60
66
|
}
|
|
61
67
|
|
|
68
|
+
// RuntimeBackend selects the JavaScript host used for package runtime tests.
|
|
69
|
+
type RuntimeBackend string
|
|
70
|
+
|
|
71
|
+
const (
|
|
72
|
+
// RuntimeBackendBun runs generated package-test modules directly in Bun.
|
|
73
|
+
RuntimeBackendBun RuntimeBackend = "bun"
|
|
74
|
+
// RuntimeBackendBrowser runs generated package-test modules in Chromium.
|
|
75
|
+
RuntimeBackendBrowser RuntimeBackend = "browser"
|
|
76
|
+
)
|
|
77
|
+
|
|
62
78
|
// DefaultParallelism returns the default package subprocess concurrency.
|
|
63
79
|
func DefaultParallelism() int {
|
|
64
80
|
parallelism := runtime.GOMAXPROCS(0)
|
|
@@ -134,6 +150,16 @@ func (r *Request) normalize() (*normalizedRequest, error) {
|
|
|
134
150
|
return nil, errors.New("test parallelism must be positive")
|
|
135
151
|
}
|
|
136
152
|
|
|
153
|
+
runtimeBackend := r.RuntimeBackend
|
|
154
|
+
if runtimeBackend == "" {
|
|
155
|
+
runtimeBackend = RuntimeBackendBun
|
|
156
|
+
}
|
|
157
|
+
switch runtimeBackend {
|
|
158
|
+
case RuntimeBackendBun, RuntimeBackendBrowser:
|
|
159
|
+
default:
|
|
160
|
+
return nil, errors.Errorf("unsupported runtime backend %q", runtimeBackend)
|
|
161
|
+
}
|
|
162
|
+
|
|
137
163
|
return &normalizedRequest{
|
|
138
164
|
Dir: absDir,
|
|
139
165
|
Patterns: patterns,
|
|
@@ -144,9 +170,11 @@ func (r *Request) normalize() (*normalizedRequest, error) {
|
|
|
144
170
|
Short: r.Short,
|
|
145
171
|
Timeout: r.Timeout,
|
|
146
172
|
Verbose: r.Verbose,
|
|
173
|
+
PanicOnExit0: r.PanicOnExit0,
|
|
147
174
|
WorkDir: workDir,
|
|
148
175
|
OutputRoot: outputRoot,
|
|
149
176
|
Parallelism: parallelism,
|
|
177
|
+
RuntimeBackend: runtimeBackend,
|
|
150
178
|
RuntimeGroups: r.RuntimeGroups,
|
|
151
179
|
IncrementalTypeCheck: r.IncrementalTypeCheck,
|
|
152
180
|
}, nil
|