All files glob-test-ids.ts

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 431x 1x 1x   4x 2x 2x 2x           2x   2x       2x       2x 2x 3x 1x       2x   1x     1x   1x   1x 1x    
import * as _glob from "glob";
import * as _path from "path";
import * as _fs from "fs-extra";
 
export const globTestIds = ({ fs = _fs, glob = _glob, path = _path }) => ({
    idsLocation,
    output,
    cwd
}: {
    idsLocation: string;
    output: string;
    cwd: string;
}): void => {
    const allIds = glob
        .sync(path.join(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(cwd, output);
 
    fs.writeFileSync(outFile, JSON.stringify(allIds, null, 2));
    console.log(`${Object.keys(allIds).length} test ids written to ${outFile}`);
};