All files glob-test-ids.ts

0% Statements 0/26
0% Branches 0/2
0% Functions 0/5
0% Lines 0/23

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                                                                 
import * as glob from "glob";
import * as path from "path";
import * as fs from "fs-extra";
 
export const globTestIds = ({
    idsLocation,
    output
}: {
    idsLocation: string;
    output: string;
}) => {
    try {
        const allIds = glob
            .sync(path.join(process.cwd(), idsLocation))
            .map(filename => ({
                filename,
                file: fs.readFileSync(filename, "utf8")
            }))
            .map(({ filename, file }) => ({
                filename,
                file: JSON.parse(file) as string[]
            }))
            .reduce((ids, { filename, file }) => {
                file.forEach(testId => {
                    if (testId in ids) {
                        throw new Error(
                            `Duplicate test id ${testId} in ${filename}`
                        );
                    }
                    ids[testId] = testId;
                });
                return ids;
            }, {} as Record<string, string>);
 
        fs.mkdirpSync(path.dirname(output));
 
        const outFile = path.join(process.cwd(), output);
 
        fs.writeFileSync(outFile, JSON.stringify(allIds, null, 2));
        console.log(
            `${Object.keys(allIds).length} test ids written to ${outFile}`
        );
        process.exit(0);
    } catch (e) {
        console.error(e);
        process.exit(1);
    }
};