Skip to content

Commit ba29843

Browse files
jessealamaptomato
authored andcommitted
Run validStrings.mjs
1 parent 53dc34b commit ba29843

File tree

2 files changed

+41
-23
lines changed

2 files changed

+41
-23
lines changed

.github/workflows/test.yml

+13
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,16 @@ jobs:
103103
node-version: 12.x
104104
- run: npm ci
105105
- run: npm run test-cookbook
106+
test-validstrings:
107+
runs-on: ubuntu-latest
108+
steps:
109+
- uses: actions/checkout@v2
110+
- name: use node.js v16.x
111+
uses: actions/setup-node@v1
112+
with:
113+
node-version: 16.x
114+
- run: npm ci
115+
- run: |
116+
cd polyfill
117+
npm install
118+
node --experimental-modules --no-warnings --icu-data-dir ./node_modules/full-icu/ test/validStrings.mjs

polyfill/test/validStrings.mjs

+28-23
Original file line numberDiff line numberDiff line change
@@ -450,29 +450,34 @@ const comparisonItems = {
450450
};
451451
const plainModes = ['Date', 'DateTime', 'MonthDay', 'Time', 'YearMonth'];
452452

453-
const mode = 'Instant';
454-
455-
for (let count = 0; count < 1000; count++) {
456-
let generatedData, fuzzed;
457-
do {
458-
generatedData = {};
459-
fuzzed = goals[mode].generate(generatedData);
460-
} while (plainModes.includes(mode) && /[0-9][zZ]/.test(fuzzed));
461-
try {
462-
const parsed = ES[`ParseTemporal${mode}String`](fuzzed);
463-
for (let prop of comparisonItems[mode]) {
464-
let expected = generatedData[prop];
465-
if (prop !== 'ianaName' && prop !== 'offset' && prop !== 'calendar') expected = expected || 0;
466-
assert.equal(parsed[prop], expected);
467-
}
468-
console.log(`${fuzzed} => ok`);
469-
} catch (e) {
470-
if (e instanceof assert.AssertionError) {
471-
console.log(`${fuzzed} => parsed wrong: expected`, e.expected, 'actual', e.actual);
472-
console.log('generated data:', generatedData);
473-
} else {
474-
console.log(`${fuzzed} failed!`, e);
453+
function fuzzMode(mode) {
454+
console.log('// starting to fuzz ' + mode);
455+
for (let count = 0; count < 1000; count++) {
456+
let generatedData, fuzzed;
457+
do {
458+
generatedData = {};
459+
fuzzed = goals[mode].generate(generatedData);
460+
} while (plainModes.includes(mode) && /[0-9][zZ]/.test(fuzzed));
461+
try {
462+
const parsed = ES[`ParseTemporal${mode}String`](fuzzed);
463+
for (let prop of comparisonItems[mode]) {
464+
let expected = generatedData[prop];
465+
if (prop !== 'ianaName' && prop !== 'offset' && prop !== 'calendar') expected = expected || 0;
466+
assert.equal(parsed[prop], expected);
467+
}
468+
console.log(`${fuzzed} => ok`);
469+
} catch (e) {
470+
if (e instanceof assert.AssertionError) {
471+
console.log(`${fuzzed} => parsed wrong: expected`, e.expected, 'actual', e.actual);
472+
console.log('generated data:', generatedData);
473+
} else {
474+
console.log(`${fuzzed} failed!`, e);
475+
}
476+
return 0;
475477
}
476-
break;
477478
}
479+
console.log('// done fuzzing ' + mode);
480+
return 1;
478481
}
482+
483+
Object.keys(goals).every(fuzzMode);

0 commit comments

Comments
 (0)