diff --git a/gentest/gentest-validate.ts b/gentest/gentest-validate.ts new file mode 100644 index 00000000..9f69f1c8 --- /dev/null +++ b/gentest/gentest-validate.ts @@ -0,0 +1,40 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +import * as fs from 'node:fs/promises'; +import {dirname} from 'path'; +import {fileURLToPath} from 'url'; +import signedsource from 'signedsource'; + +const yogaDir = dirname(dirname(fileURLToPath(import.meta.url))); +const cppTestDir = `${yogaDir}/tests/generated`; +const jsTestDir = `${yogaDir}/javascript/tests/generated`; +const javaTestDir = `${yogaDir}/java/tests/com/facebook/yoga`; +const testDirs = [cppTestDir, jsTestDir, javaTestDir]; + +for (const testDir of testDirs) { + const tests = await fs.readdir(testDir); + + for (const test of tests) { + const testData = await fs.readFile(`${testDir}/${test}`, 'utf8'); + try { + const validSignature = signedsource.verifySignature(testData); + if (!validSignature) { + console.error(`Invalid signature for ${test}`); + process.exitCode = 1; + } + } catch (e) { + // Java test dir does not separate generated tests from non-generated ones + if (testDir != javaTestDir) { + console.error(`${test}: ${e}`); + process.exitCode = 1; + } + } + } +} diff --git a/gentest/package.json b/gentest/package.json index 1d653ea9..1c472827 100644 --- a/gentest/package.json +++ b/gentest/package.json @@ -3,7 +3,8 @@ "version": "0.0.0", "private": true, "scripts": { - "gentest": "node --loader=babel-register-esm ./gentest-driver.ts" + "gentest": "node --loader=babel-register-esm ./gentest-driver.ts", + "gentest-validate": "node --loader=babel-register-esm ./gentest-validate.ts" }, "type": "module", "dependencies": { diff --git a/package.json b/package.json index 83fde0a1..4e8ae291 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "lint": "eslint .", "lint:fix": "eslint . --fix", "tsc": "yarn workspaces run tsc", - "gentest": "yarn workspace gentest run gentest" + "gentest": "yarn workspace gentest run gentest", + "gentest-validate": "yarn workspace gentest run gentest-validate" }, "workspaces": [ "javascript", @@ -16,7 +17,6 @@ "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.30.5", "@typescript-eslint/parser": "^5.30.5", - "babel-register-esm": "^1.2.5", "eslint": "^8.30.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-jest": "^27.1.7",