@lodestar/spec-test-util 1.48.0-dev.e25eb75f31 → 1.48.0-dev.ec85b38ca5
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/lib/single.d.ts +2 -0
- package/lib/single.d.ts.map +1 -1
- package/lib/single.js +17 -4
- package/lib/single.js.map +1 -1
- package/lib/sszGeneric.d.ts +1 -1
- package/lib/sszGeneric.js +3 -3
- package/lib/sszGeneric.js.map +1 -1
- package/package.json +6 -6
- package/src/single.ts +22 -5
- package/src/sszGeneric.ts +3 -3
package/lib/single.d.ts
CHANGED
|
@@ -46,6 +46,8 @@ export interface SpecTestOptions<TestCase extends {
|
|
|
46
46
|
[K: string]: (value: any) => any;
|
|
47
47
|
};
|
|
48
48
|
shouldError?: (testCase: TestCase) => boolean;
|
|
49
|
+
/** Determine whether an input deserialization error is expected from the error and the files present in the test case. */
|
|
50
|
+
shouldErrorOnInput?: (error: Error, inputNames: Set<string>, name: string, index: number) => boolean;
|
|
49
51
|
shouldSkip?: (testCase: TestCase, name: string, index: number) => boolean;
|
|
50
52
|
expectFunc?: (testCase: TestCase, expected: any, actual: any) => void;
|
|
51
53
|
timeout?: number;
|
package/lib/single.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../src/single.ts"],"names":[],"mappings":"AAMA,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAC5C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;CACtD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,CAQ/F;AAED,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAC,EAAE,MAAM;IACpE;;;OAGG;IACH,UAAU,CAAC,EAAE;SAAE,CAAC,IAAI,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,iBAAiB;KAAC,CAAC;IAElF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEzE;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,QAAQ,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;IAEzD;;;OAGG;IAEH,eAAe,CAAC,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;KAAC,CAAC;IAErD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE9C,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAE1E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAEtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD,wBAAgB,yBAAyB,CAAC,QAAQ,SAAS;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAC,EAAE,MAAM,EAC7E,IAAI,EAAE,MAAM,EACZ,qBAAqB,EAAE,MAAM,EAC7B,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAC3G,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAClD,IAAI,
|
|
1
|
+
{"version":3,"file":"single.d.ts","sourceRoot":"","sources":["../src/single.ts"],"names":[],"mappings":"AAMA,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAC5C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;CACtD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,iBAAiB,GAAG,iBAAiB,CAQ/F;AAED,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAC,EAAE,MAAM;IACpE;;;OAGG;IACH,UAAU,CAAC,EAAE;SAAE,CAAC,IAAI,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,iBAAiB;KAAC,CAAC;IAElF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE1C;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEzE;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,QAAQ,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;IAEzD;;;OAGG;IAEH,eAAe,CAAC,EAAE;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;KAAC,CAAC;IAErD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;IAE9C,0HAA0H;IAC1H,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAErG,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAE1E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAEtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD,wBAAgB,yBAAyB,CAAC,QAAQ,SAAS;IAAC,IAAI,CAAC,EAAE,GAAG,CAAA;CAAC,EAAE,MAAM,EAC7E,IAAI,EAAE,MAAM,EACZ,qBAAqB,EAAE,MAAM,EAC7B,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAC3G,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,GAClD,IAAI,CAgEN;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAElE"}
|
package/lib/single.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { uncompress } from "snappyjs";
|
|
4
3
|
import { describe, expect, it, vi } from "vitest";
|
|
4
|
+
import snappyWasm from "@chainsafe/snappy-wasm";
|
|
5
5
|
import { loadYaml } from "@lodestar/utils";
|
|
6
6
|
export var InputType;
|
|
7
7
|
(function (InputType) {
|
|
@@ -50,7 +50,20 @@ export function describeDirectorySpecTest(name, testCaseDirectoryPath, testFunct
|
|
|
50
50
|
const meta = fs.existsSync(metaFilePath)
|
|
51
51
|
? loadYaml(fs.readFileSync(metaFilePath, "utf8"))
|
|
52
52
|
: undefined;
|
|
53
|
-
let testCase
|
|
53
|
+
let testCase;
|
|
54
|
+
try {
|
|
55
|
+
testCase = loadInputFiles(testSubDirPath, options, meta);
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
const inputNames = new Set(fs
|
|
59
|
+
.readdirSync(testSubDirPath)
|
|
60
|
+
.filter((file) => !isDirectory(path.join(testSubDirPath, file)))
|
|
61
|
+
.map((file) => path.parse(file).name));
|
|
62
|
+
if (options.shouldErrorOnInput?.(e, inputNames, testName, 0)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
throw e;
|
|
66
|
+
}
|
|
54
67
|
if (options.mapToTestCase)
|
|
55
68
|
testCase = options.mapToTestCase(testCase);
|
|
56
69
|
if (options.shouldSkip?.(testCase, testName, 0)) {
|
|
@@ -109,7 +122,7 @@ function loadInputFiles(directory, options, meta) {
|
|
|
109
122
|
testCase[`${inputName}_raw`] = fs.readFileSync(file);
|
|
110
123
|
break;
|
|
111
124
|
case InputType.SSZ_SNAPPY:
|
|
112
|
-
testCase[`${inputName}_raw`] =
|
|
125
|
+
testCase[`${inputName}_raw`] = snappyWasm.decompress(fs.readFileSync(file));
|
|
113
126
|
break;
|
|
114
127
|
}
|
|
115
128
|
if (!options.inputProcessing)
|
|
@@ -142,7 +155,7 @@ function deserializeInputFile(file, inputName, inputType, options, meta) {
|
|
|
142
155
|
throw Error("sszTypes is not defined");
|
|
143
156
|
let data = fs.readFileSync(file);
|
|
144
157
|
if (inputType === InputType.SSZ_SNAPPY) {
|
|
145
|
-
data =
|
|
158
|
+
data = snappyWasm.decompress(data);
|
|
146
159
|
}
|
|
147
160
|
let sszType;
|
|
148
161
|
for (const key of Object.keys(sszTypes)) {
|
package/lib/single.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"single.js","sourceRoot":"","sources":["../src/single.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"single.js","sourceRoot":"","sources":["../src/single.ts"],"names":[],"mappings":"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"}
|
package/lib/sszGeneric.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export declare function parseSszValidTestcase(dirpath: string, metaFilename: str
|
|
|
14
14
|
* Docs: https://github.com/ethereum/consensus-specs/blob/v1.6.1/tests/formats/ssz_generic/README.md
|
|
15
15
|
*/
|
|
16
16
|
export declare function parseSszGenericInvalidTestcase(dirpath: string): {
|
|
17
|
-
serialized:
|
|
17
|
+
serialized: Uint8Array<ArrayBufferLike>;
|
|
18
18
|
};
|
|
19
19
|
export declare function readYamlNumbersAsStrings(yamlStr: string): unknown;
|
|
20
20
|
//# sourceMappingURL=sszGeneric.d.ts.map
|
package/lib/sszGeneric.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import
|
|
3
|
+
import snappyWasm from "@chainsafe/snappy-wasm";
|
|
4
4
|
import { loadYaml } from "@lodestar/utils";
|
|
5
5
|
export function parseSszValidTestcase(dirpath, metaFilename) {
|
|
6
6
|
// The root is stored in meta.yml as:
|
|
@@ -11,7 +11,7 @@ export function parseSszValidTestcase(dirpath, metaFilename) {
|
|
|
11
11
|
throw Error(`meta.root not a string: ${meta.root}\n${metaStr}`);
|
|
12
12
|
}
|
|
13
13
|
// The serialized value is stored in serialized.ssz_snappy
|
|
14
|
-
const serialized =
|
|
14
|
+
const serialized = snappyWasm.decompress(fs.readFileSync(path.join(dirpath, "serialized.ssz_snappy")));
|
|
15
15
|
// The value is stored in value.yml
|
|
16
16
|
const yamlPath = path.join(dirpath, "value.yaml");
|
|
17
17
|
const yamlStrNumbersAsNumbers = fs.readFileSync(yamlPath, "utf8");
|
|
@@ -34,7 +34,7 @@ export function parseSszValidTestcase(dirpath, metaFilename) {
|
|
|
34
34
|
*/
|
|
35
35
|
export function parseSszGenericInvalidTestcase(dirpath) {
|
|
36
36
|
// The serialized value is stored in serialized.ssz_snappy
|
|
37
|
-
const serialized =
|
|
37
|
+
const serialized = snappyWasm.decompress(fs.readFileSync(path.join(dirpath, "serialized.ssz_snappy")));
|
|
38
38
|
return {
|
|
39
39
|
serialized,
|
|
40
40
|
};
|
package/lib/sszGeneric.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sszGeneric.js","sourceRoot":"","sources":["../src/sszGeneric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"sszGeneric.js","sourceRoot":"","sources":["../src/sszGeneric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAQzC,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,YAAoB;IACzE,qCAAqC;IACrC,qBAAqB;IACrB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAmB,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,2BAA2B,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,0DAA0D;IAC1D,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAEvG,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,uBAAuB,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,wBAAwB,CAAC,uBAAuB,CAAC,CAAC;IAEpE,8EAA8E;IAE9E,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAe;IAC5D,0DAA0D;IAC1D,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;IAEvG,OAAO;QACL,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodestar/spec-test-util",
|
|
3
|
-
"version": "1.48.0-dev.
|
|
3
|
+
"version": "1.48.0-dev.ec85b38ca5",
|
|
4
4
|
"description": "Spec test suite generator from yaml test files",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -59,15 +59,15 @@
|
|
|
59
59
|
"blockchain"
|
|
60
60
|
],
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@
|
|
62
|
+
"@chainsafe/snappy-wasm": "^0.5.2",
|
|
63
|
+
"@lodestar/utils": "^1.48.0-dev.ec85b38ca5",
|
|
63
64
|
"rimraf": "^4.4.1",
|
|
64
|
-
"snappyjs": "^0.7.0",
|
|
65
65
|
"vitest": "catalog:"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
|
-
"@chainsafe/ssz": "^1.
|
|
69
|
-
"@lodestar/types": "^1.48.0-dev.
|
|
68
|
+
"@chainsafe/ssz": "^1.7.0",
|
|
69
|
+
"@lodestar/types": "^1.48.0-dev.ec85b38ca5",
|
|
70
70
|
"vitest": "catalog:"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "e8586dacf916d06c6fc780a93cc6ad6187905f49"
|
|
73
73
|
}
|
package/src/single.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import {uncompress} from "snappyjs";
|
|
4
3
|
import {describe, expect, it, vi} from "vitest";
|
|
4
|
+
import snappyWasm from "@chainsafe/snappy-wasm";
|
|
5
5
|
import {loadYaml} from "@lodestar/utils";
|
|
6
6
|
|
|
7
7
|
export enum InputType {
|
|
@@ -66,6 +66,9 @@ export interface SpecTestOptions<TestCase extends {meta?: any}, Result> {
|
|
|
66
66
|
|
|
67
67
|
shouldError?: (testCase: TestCase) => boolean;
|
|
68
68
|
|
|
69
|
+
/** Determine whether an input deserialization error is expected from the error and the files present in the test case. */
|
|
70
|
+
shouldErrorOnInput?: (error: Error, inputNames: Set<string>, name: string, index: number) => boolean;
|
|
71
|
+
|
|
69
72
|
shouldSkip?: (testCase: TestCase, name: string, index: number) => boolean;
|
|
70
73
|
|
|
71
74
|
expectFunc?: (testCase: TestCase, expected: any, actual: any) => void;
|
|
@@ -115,7 +118,21 @@ export function describeDirectorySpecTest<TestCase extends {meta?: any}, Result>
|
|
|
115
118
|
? loadYaml(fs.readFileSync(metaFilePath, "utf8"))
|
|
116
119
|
: undefined;
|
|
117
120
|
|
|
118
|
-
let testCase
|
|
121
|
+
let testCase: TestCase;
|
|
122
|
+
try {
|
|
123
|
+
testCase = loadInputFiles(testSubDirPath, options, meta);
|
|
124
|
+
} catch (e) {
|
|
125
|
+
const inputNames = new Set(
|
|
126
|
+
fs
|
|
127
|
+
.readdirSync(testSubDirPath)
|
|
128
|
+
.filter((file) => !isDirectory(path.join(testSubDirPath, file)))
|
|
129
|
+
.map((file) => path.parse(file).name)
|
|
130
|
+
);
|
|
131
|
+
if (options.shouldErrorOnInput?.(e as Error, inputNames, testName, 0)) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
throw e;
|
|
135
|
+
}
|
|
119
136
|
if (options.mapToTestCase) testCase = options.mapToTestCase(testCase);
|
|
120
137
|
if (options.shouldSkip?.(testCase, testName, 0)) {
|
|
121
138
|
context.skip();
|
|
@@ -175,7 +192,7 @@ function loadInputFiles<TestCase extends {meta?: any}, Result>(
|
|
|
175
192
|
testCase[`${inputName}_raw`] = fs.readFileSync(file);
|
|
176
193
|
break;
|
|
177
194
|
case InputType.SSZ_SNAPPY:
|
|
178
|
-
testCase[`${inputName}_raw`] =
|
|
195
|
+
testCase[`${inputName}_raw`] = snappyWasm.decompress(fs.readFileSync(file));
|
|
179
196
|
break;
|
|
180
197
|
}
|
|
181
198
|
if (!options.inputProcessing) throw Error("inputProcessing is not defined");
|
|
@@ -215,9 +232,9 @@ function deserializeInputFile<TestCase extends {meta?: any}, Result>(
|
|
|
215
232
|
if (inputType === InputType.SSZ || inputType === InputType.SSZ_SNAPPY) {
|
|
216
233
|
const sszTypes = options.getSszTypes ? options.getSszTypes(meta) : options.sszTypes;
|
|
217
234
|
if (!sszTypes) throw Error("sszTypes is not defined");
|
|
218
|
-
let data = fs.readFileSync(file);
|
|
235
|
+
let data: Uint8Array = fs.readFileSync(file);
|
|
219
236
|
if (inputType === InputType.SSZ_SNAPPY) {
|
|
220
|
-
data =
|
|
237
|
+
data = snappyWasm.decompress(data);
|
|
221
238
|
}
|
|
222
239
|
|
|
223
240
|
let sszType: SszTypeGeneric | undefined;
|
package/src/sszGeneric.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import
|
|
3
|
+
import snappyWasm from "@chainsafe/snappy-wasm";
|
|
4
4
|
import {loadYaml} from "@lodestar/utils";
|
|
5
5
|
|
|
6
6
|
export type ValidTestCaseData = {
|
|
@@ -19,7 +19,7 @@ export function parseSszValidTestcase(dirpath: string, metaFilename: string): Va
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// The serialized value is stored in serialized.ssz_snappy
|
|
22
|
-
const serialized =
|
|
22
|
+
const serialized = snappyWasm.decompress(fs.readFileSync(path.join(dirpath, "serialized.ssz_snappy")));
|
|
23
23
|
|
|
24
24
|
// The value is stored in value.yml
|
|
25
25
|
const yamlPath = path.join(dirpath, "value.yaml");
|
|
@@ -46,7 +46,7 @@ export function parseSszValidTestcase(dirpath: string, metaFilename: string): Va
|
|
|
46
46
|
*/
|
|
47
47
|
export function parseSszGenericInvalidTestcase(dirpath: string) {
|
|
48
48
|
// The serialized value is stored in serialized.ssz_snappy
|
|
49
|
-
const serialized =
|
|
49
|
+
const serialized = snappyWasm.decompress(fs.readFileSync(path.join(dirpath, "serialized.ssz_snappy")));
|
|
50
50
|
|
|
51
51
|
return {
|
|
52
52
|
serialized,
|