as-test 1.0.15 → 1.1.0
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/CHANGELOG.md +53 -1
- package/README.md +45 -4
- package/as-test.config.schema.json +5 -0
- package/assembly/util/wipc.ts +11 -4
- package/bin/commands/clean-core.js +92 -0
- package/bin/commands/clean.js +6 -0
- package/bin/commands/init-core.js +33 -225
- package/bin/commands/run-core.js +433 -289
- package/bin/commands/web-runner-source.js +14 -700
- package/bin/commands/web-session.js +1144 -0
- package/bin/index.js +390 -78
- package/bin/types.js +1 -0
- package/bin/util.js +87 -16
- package/lib/build/index.d.ts +1 -0
- package/lib/build/index.js +1098 -0
- package/lib/build/web-runner/client.d.ts +1 -0
- package/lib/build/web-runner/client.js +167 -0
- package/lib/build/web-runner/html.d.ts +1 -0
- package/lib/build/web-runner/html.js +201 -0
- package/lib/build/web-runner/worker.d.ts +1 -0
- package/lib/build/web-runner/worker.js +271 -0
- package/lib/src/index.ts +1248 -0
- package/package.json +14 -4
- package/transform/lib/mock.js +50 -27
package/bin/types.js
CHANGED
package/bin/util.js
CHANGED
|
@@ -175,7 +175,7 @@ const FUZZ_OPTION_KEYS = new Set([
|
|
|
175
175
|
"corpusDir",
|
|
176
176
|
"crashDir",
|
|
177
177
|
]);
|
|
178
|
-
const MODE_KEYS = new Set([...TOP_LEVEL_KEYS].filter((key) => key != "modes"));
|
|
178
|
+
const MODE_KEYS = new Set([...TOP_LEVEL_KEYS, "default"].filter((key) => key != "modes"));
|
|
179
179
|
function validateConfig(raw, configPath) {
|
|
180
180
|
const issues = [];
|
|
181
181
|
validateUnknownKeys(raw, TOP_LEVEL_KEYS, "$", issues);
|
|
@@ -653,6 +653,13 @@ function validateModesField(raw, key, pathPrefix, issues) {
|
|
|
653
653
|
validateUnknownKeys(modeObj, MODE_KEYS, modePath, issues);
|
|
654
654
|
validateStringField(modeObj, "$schema", modePath, issues);
|
|
655
655
|
validateInputField(modeObj, "input", modePath, issues);
|
|
656
|
+
if ("default" in modeObj && typeof modeObj.default != "boolean") {
|
|
657
|
+
issues.push({
|
|
658
|
+
path: `${modePath}.default`,
|
|
659
|
+
message: "must be a boolean",
|
|
660
|
+
fix: 'set "default" to true or false',
|
|
661
|
+
});
|
|
662
|
+
}
|
|
656
663
|
validateOutputField(modeObj, "output", modePath, issues);
|
|
657
664
|
validateStringField(modeObj, "outDir", modePath, issues);
|
|
658
665
|
validateStringField(modeObj, "logs", modePath, issues);
|
|
@@ -799,6 +806,9 @@ function parseModes(raw, configDir) {
|
|
|
799
806
|
}
|
|
800
807
|
if (!value || typeof value != "object" || Array.isArray(value))
|
|
801
808
|
continue;
|
|
809
|
+
mode.default =
|
|
810
|
+
!("default" in value) ||
|
|
811
|
+
Boolean(value.default);
|
|
802
812
|
mode.config = parseConfigRaw(value, join(configDir, `__mode__.${name}.json`));
|
|
803
813
|
out[name] = mode;
|
|
804
814
|
}
|
|
@@ -977,6 +987,70 @@ function outputOverridesField(raw, field) {
|
|
|
977
987
|
}
|
|
978
988
|
return typeof output.snapshots == "string" && output.snapshots.length > 0;
|
|
979
989
|
}
|
|
990
|
+
function mergeCoverageIgnoreOptions(base, override, raw) {
|
|
991
|
+
const merged = Object.assign(new CoverageIgnoreOptions(), base);
|
|
992
|
+
merged.labels = [...base.labels];
|
|
993
|
+
merged.names = [...base.names];
|
|
994
|
+
merged.locations = [...base.locations];
|
|
995
|
+
merged.snippets = [...base.snippets];
|
|
996
|
+
if ("labels" in raw)
|
|
997
|
+
merged.labels = [...override.labels];
|
|
998
|
+
if ("names" in raw)
|
|
999
|
+
merged.names = [...override.names];
|
|
1000
|
+
if ("locations" in raw)
|
|
1001
|
+
merged.locations = [...override.locations];
|
|
1002
|
+
if ("snippets" in raw)
|
|
1003
|
+
merged.snippets = [...override.snippets];
|
|
1004
|
+
return merged;
|
|
1005
|
+
}
|
|
1006
|
+
function mergeCoverageConfig(base, override, raw) {
|
|
1007
|
+
if (typeof raw == "boolean")
|
|
1008
|
+
return override;
|
|
1009
|
+
if (!raw || typeof raw != "object" || Array.isArray(raw))
|
|
1010
|
+
return cloneCoverageOptions(base);
|
|
1011
|
+
const mergedBase = typeof base == "boolean"
|
|
1012
|
+
? Object.assign(new CoverageOptions(), { enabled: base })
|
|
1013
|
+
: cloneCoverageOptions(base);
|
|
1014
|
+
const overrideOptions = typeof override == "boolean"
|
|
1015
|
+
? Object.assign(new CoverageOptions(), { enabled: override })
|
|
1016
|
+
: cloneCoverageOptions(override);
|
|
1017
|
+
const rawObject = raw;
|
|
1018
|
+
if ("enabled" in rawObject)
|
|
1019
|
+
mergedBase.enabled = overrideOptions.enabled;
|
|
1020
|
+
if ("includeSpecs" in rawObject)
|
|
1021
|
+
mergedBase.includeSpecs = overrideOptions.includeSpecs;
|
|
1022
|
+
if ("include" in rawObject)
|
|
1023
|
+
mergedBase.include = [...overrideOptions.include];
|
|
1024
|
+
if ("exclude" in rawObject)
|
|
1025
|
+
mergedBase.exclude = [...overrideOptions.exclude];
|
|
1026
|
+
if (rawObject.ignore && typeof rawObject.ignore == "object" && !Array.isArray(rawObject.ignore)) {
|
|
1027
|
+
mergedBase.ignore = mergeCoverageIgnoreOptions(mergedBase.ignore, overrideOptions.ignore, rawObject.ignore);
|
|
1028
|
+
}
|
|
1029
|
+
return mergedBase;
|
|
1030
|
+
}
|
|
1031
|
+
function mergeReporterConfigByRaw(base, override, raw) {
|
|
1032
|
+
if (typeof raw == "string")
|
|
1033
|
+
return override;
|
|
1034
|
+
if (!raw || typeof raw != "object" || Array.isArray(raw)) {
|
|
1035
|
+
return cloneReporterConfig(base);
|
|
1036
|
+
}
|
|
1037
|
+
const mergedBase = typeof base == "string"
|
|
1038
|
+
? new ReporterConfig()
|
|
1039
|
+
: cloneReporterConfig(base);
|
|
1040
|
+
const overrideConfig = typeof override == "string"
|
|
1041
|
+
? new ReporterConfig()
|
|
1042
|
+
: cloneReporterConfig(override);
|
|
1043
|
+
const rawObject = raw;
|
|
1044
|
+
if ("name" in rawObject)
|
|
1045
|
+
mergedBase.name = overrideConfig.name;
|
|
1046
|
+
if ("options" in rawObject)
|
|
1047
|
+
mergedBase.options = [...overrideConfig.options];
|
|
1048
|
+
if ("outDir" in rawObject)
|
|
1049
|
+
mergedBase.outDir = overrideConfig.outDir;
|
|
1050
|
+
if ("outFile" in rawObject)
|
|
1051
|
+
mergedBase.outFile = overrideConfig.outFile;
|
|
1052
|
+
return mergedBase;
|
|
1053
|
+
}
|
|
980
1054
|
function mergeBuildOptions(base, override, raw) {
|
|
981
1055
|
const merged = cloneBuildOptions(base);
|
|
982
1056
|
if ("cmd" in raw)
|
|
@@ -986,10 +1060,7 @@ function mergeBuildOptions(base, override, raw) {
|
|
|
986
1060
|
if ("target" in raw)
|
|
987
1061
|
merged.target = override.target;
|
|
988
1062
|
if ("env" in raw) {
|
|
989
|
-
merged.env = {
|
|
990
|
-
...merged.env,
|
|
991
|
-
...override.env,
|
|
992
|
-
};
|
|
1063
|
+
merged.env = { ...override.env };
|
|
993
1064
|
}
|
|
994
1065
|
return merged;
|
|
995
1066
|
}
|
|
@@ -1005,13 +1076,10 @@ function mergeRunOptions(base, override, raw) {
|
|
|
1005
1076
|
}
|
|
1006
1077
|
}
|
|
1007
1078
|
if ("reporter" in raw) {
|
|
1008
|
-
merged.reporter =
|
|
1079
|
+
merged.reporter = mergeReporterConfigByRaw(merged.reporter, override.reporter, raw.reporter);
|
|
1009
1080
|
}
|
|
1010
1081
|
if ("env" in raw) {
|
|
1011
|
-
merged.env = {
|
|
1012
|
-
...merged.env,
|
|
1013
|
-
...override.env,
|
|
1014
|
-
};
|
|
1082
|
+
merged.env = { ...override.env };
|
|
1015
1083
|
}
|
|
1016
1084
|
return merged;
|
|
1017
1085
|
}
|
|
@@ -1052,13 +1120,11 @@ function mergeRootConfig(base, override) {
|
|
|
1052
1120
|
}
|
|
1053
1121
|
if ("config" in raw)
|
|
1054
1122
|
merged.config = override.config;
|
|
1055
|
-
if ("coverage" in raw)
|
|
1056
|
-
merged.coverage =
|
|
1123
|
+
if ("coverage" in raw) {
|
|
1124
|
+
merged.coverage = mergeCoverageConfig(merged.coverage, override.coverage, raw.coverage);
|
|
1125
|
+
}
|
|
1057
1126
|
if ("env" in raw) {
|
|
1058
|
-
merged.env = {
|
|
1059
|
-
...merged.env,
|
|
1060
|
-
...override.env,
|
|
1061
|
-
};
|
|
1127
|
+
merged.env = { ...override.env };
|
|
1062
1128
|
}
|
|
1063
1129
|
if (raw.buildOptions && typeof raw.buildOptions == "object" && !Array.isArray(raw.buildOptions)) {
|
|
1064
1130
|
merged.buildOptions = mergeBuildOptions(merged.buildOptions, override.buildOptions, raw.buildOptions);
|
|
@@ -1116,6 +1182,11 @@ export function resolveModeNames(rawArgs) {
|
|
|
1116
1182
|
}
|
|
1117
1183
|
return [...new Set(names)];
|
|
1118
1184
|
}
|
|
1185
|
+
export function getDefaultModeNames(config) {
|
|
1186
|
+
return Object.entries(config.modes)
|
|
1187
|
+
.filter(([, mode]) => mode.default !== false)
|
|
1188
|
+
.map(([name]) => name);
|
|
1189
|
+
}
|
|
1119
1190
|
function appendModeTokens(out, value) {
|
|
1120
1191
|
for (const token of value.split(",")) {
|
|
1121
1192
|
const mode = token.trim();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function instantiate(imports: WebAssembly.Imports): Promise<WebAssembly.Instance>;
|