[js/web] deduplicate test cases between opsets (#9327)

* [js/web] deduplicate test cases between opsets

* fix eslint error
This commit is contained in:
Yulong Wang 2021-10-12 22:37:19 -07:00 committed by GitHub
parent fb31701f7e
commit 1527af3e30
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 73 additions and 30 deletions

View file

@ -911,6 +911,12 @@
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true
},
"buffer-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
"integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
"dev": true
},
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@ -1064,9 +1070,9 @@
},
"dependencies": {
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"is-fullwidth-code-point": {
@ -1513,6 +1519,16 @@
}
}
},
"dir-compare": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz",
"integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==",
"dev": true,
"requires": {
"buffer-equal": "^1.0.0",
"minimatch": "^3.0.4"
}
},
"dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@ -2820,9 +2836,9 @@
}
},
"jszip": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.6.0.tgz",
"integrity": "sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ==",
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz",
"integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==",
"dev": true,
"requires": {
"lie": "~3.3.0",
@ -3480,9 +3496,9 @@
"dev": true
},
"normalize-url": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
"integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
"dev": true
},
"npm-conf": {
@ -3699,9 +3715,9 @@
"dev": true
},
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true
},
"path-type": {
@ -5133,9 +5149,9 @@
},
"dependencies": {
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
@ -5197,9 +5213,9 @@
"dev": true
},
"ws": {
"version": "7.4.4",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
"integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==",
"version": "7.4.6",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
"integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
"dev": true
},
"xtend": {
@ -5237,8 +5253,7 @@
"dependencies": {
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"resolved": "",
"dev": true
},
"is-fullwidth-code-point": {
@ -5304,4 +5319,4 @@
"dev": true
}
}
}
}

View file

@ -44,10 +44,11 @@
"@types/npmlog": "^4.1.2",
"@types/platform": "^1.3.3",
"chai": "^4.3.4",
"dir-compare": "^3.3.0",
"electron": "^12.0.2",
"fs-extra": "^9.1.0",
"globby": "^11.0.3",
"jszip": "^3.6.0",
"jszip": "^3.7.1",
"karma": "^6.3.2",
"karma-browserstack-launcher": "^1.6.0",
"karma-chai": "^0.1.0",
@ -78,4 +79,4 @@
"unpkg": "dist/ort.min.js",
"module": "./lib/index.js",
"browser": "dist/ort-web.min.js"
}
}

View file

@ -2,6 +2,7 @@
// Licensed under the MIT License.
import {spawnSync} from 'child_process';
import {compareSync} from 'dir-compare';
import * as fs from 'fs-extra';
import minimist from 'minimist';
import npmlog from 'npmlog';
@ -12,18 +13,21 @@ const DEPS_ONNX = path.join(ROOT, 'cmake', 'external', 'onnx');
const TEST_DATA_ROOT = path.join(__dirname, '..', 'test', 'data');
const TEST_DATA_NODE = path.join(TEST_DATA_ROOT, 'node');
const TEST_DATA_OPSET_VERSIONS = [
['v12', 'rel-1.7.0'],
['v11', 'rel-1.6.1'],
['v10', 'rel-1.5.0'],
['v9', 'rel-1.4.1'],
['v8', 'rel-1.3.0'],
['v7', 'rel-1.2.3'],
];
const args = minimist(process.argv);
// prepare test data only when eiter flag '-f' or '--force' is specified, or the folder does not exist.
if (args.f || args.force || !fs.existsSync(TEST_DATA_NODE)) {
npmlog.info('PrepareTestData', 'Preparing node tests ...');
fs.removeSync(TEST_DATA_NODE);
[['v7', 'rel-1.2.3'],
['v8', 'rel-1.3.0'],
['v9', 'rel-1.4.1'],
['v10', 'rel-1.5.0'],
['v11', 'rel-1.6.1'],
['v12', 'rel-1.7.0'],
].forEach(v => {
TEST_DATA_OPSET_VERSIONS.forEach(v => {
const version = v[0];
const commit = v[1];
npmlog.info('PrepareTestData', `Checking out deps/onnx ${commit}...`);
@ -49,4 +53,27 @@ if (args.f || args.force || !fs.existsSync(TEST_DATA_NODE)) {
process.exit(update.status === null ? undefined : update.status);
}
npmlog.info('PrepareTestData', 'Revert git index... DONE');
npmlog.info('PrepareTestData', 'Deduplicating test cases...');
for (let i = 0; i < TEST_DATA_OPSET_VERSIONS.length - 1; i++) {
const currentVersion = TEST_DATA_OPSET_VERSIONS[i][0];
const currentFolder = path.join(TEST_DATA_NODE, currentVersion);
const previousVersion = TEST_DATA_OPSET_VERSIONS[i + 1][0];
const previousFolder = path.join(TEST_DATA_NODE, previousVersion);
// compare each subfolder to its previous version. If they are same, remove the one in current version.
let count = 0;
fs.readdirSync(currentFolder, {withFileTypes: true}).forEach(dir => {
const currentDir = path.join(currentFolder, dir.name);
const previousDir = path.join(previousFolder, dir.name);
if (dir.isDirectory() && fs.existsSync(previousDir) && fs.statSync(previousDir).isDirectory()) {
if (compareSync(currentDir, previousDir, {compareContent: true}).differences === 0) {
fs.removeSync(currentDir);
count++;
}
}
});
npmlog.info('PrepareTestData', `Deduplicated ${count} test case(s) in folder ${currentVersion}.`);
}
npmlog.info('PrepareTestData', 'Deduplicating test cases... DONE');
}