Skip to content

Commit

Permalink
Ignore spec files to allow for co-located tests (#2309)
Browse files Browse the repository at this point in the history
* Ignore spec files to allow for co-located tests

* Add tests
  • Loading branch information
okcoker committed Oct 5, 2022
1 parent 2fd6d09 commit 0e4cbd4
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 24 deletions.
24 changes: 24 additions & 0 deletions __tests__/modules/utils/ensureNoTsHeaderOrSpecFiles.ts
@@ -0,0 +1,24 @@
import { ensureNoTsHeaderOrSpecFiles } from "../../../src/modules/utils/ensureNoTsHeaderOrSpecFiles";

describe("ensureNoTsHeaderOrSpecFiles", () => {
it("filters header files", () => {
const filtered = ensureNoTsHeaderOrSpecFiles([
"afdasf.d.ts",
"some-file.ts",
]);
expect(filtered).toEqual(["some-file.ts"]);
});

it("filters test/spec files", () => {
const filtered = ensureNoTsHeaderOrSpecFiles([
"afdasf.spec.ts",
"afdasfsdfa.spec.js",
"spec.js",
"test-my-api.js",
"afdasfsdfa.test.js",
"afdasfsdfa.test.ts",
"some-file.ts",
]);
expect(filtered).toEqual(["spec.js", "test-my-api.js", "some-file.ts"]);
});
});
4 changes: 2 additions & 2 deletions src/bin/actionhero.ts
Expand Up @@ -5,7 +5,7 @@ import * as fs from "fs";
import { program, InvalidArgumentError } from "commander";
import { typescript } from "../classes/process/typescript";
import { projectRoot } from "../classes/process/projectRoot";
import { ensureNoTsHeaderFiles } from "../modules/utils/ensureNoTsHeaderFiles";
import { ensureNoTsHeaderOrSpecFiles } from "../modules/utils/ensureNoTsHeaderOrSpecFiles";
import { CLI } from "../classes/cli";
import { PackageJson } from "type-fest";

Expand Down Expand Up @@ -70,7 +70,7 @@ export namespace ActionheroCLIRunner {
const matcher = `${realpath}/**/+(${
typescript ? `${match}.js|*.ts` : `${match}.js`
})`;
const files = ensureNoTsHeaderFiles(safeGlobSync(matcher));
const files = ensureNoTsHeaderOrSpecFiles(safeGlobSync(matcher));
for (const i in files) {
const collection = await import(files[i]);
for (const j in collection) {
Expand Down
2 changes: 1 addition & 1 deletion src/classes/process.ts
Expand Up @@ -97,7 +97,7 @@ export class Process {
}

initializerFiles = utils.arrayUnique(initializerFiles);
initializerFiles = utils.ensureNoTsHeaderFiles(initializerFiles);
initializerFiles = utils.ensureNoTsHeaderOrSpecFiles(initializerFiles);

for (const i in initializerFiles) {
const f = initializerFiles[i];
Expand Down
4 changes: 2 additions & 2 deletions src/initializers/actions.ts
Expand Up @@ -94,7 +94,7 @@ export class ActionsInitializer extends Initializer {

for (const p of config.general.paths.action) {
let files = safeGlobSync(path.join(p, "**", "**/*(*.js|*.ts)"));
files = utils.ensureNoTsHeaderFiles(files);
files = utils.ensureNoTsHeaderOrSpecFiles(files);
for (const j in files) {
await api.actions.loadFile(files[j]);
}
Expand All @@ -114,7 +114,7 @@ export class ActionsInitializer extends Initializer {
);

utils
.ensureNoTsHeaderFiles(files)
.ensureNoTsHeaderOrSpecFiles(files)
.forEach((f) => api.actions.loadFile(f));
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/initializers/servers.ts
Expand Up @@ -57,7 +57,7 @@ export class Servers extends Initializer {
}
}

files = utils.ensureNoTsHeaderFiles(files);
files = utils.ensureNoTsHeaderOrSpecFiles(files);

let server: Server;

Expand Down
4 changes: 2 additions & 2 deletions src/initializers/tasks.ts
Expand Up @@ -138,7 +138,7 @@ export class TasksInitializer extends Initializer {
for (const p of config.general.paths.task) {
await Promise.all(
utils
.ensureNoTsHeaderFiles(
.ensureNoTsHeaderOrSpecFiles(
safeGlobSync(path.join(p, "**", "**/*(*.js|*.ts)"))
)
.map((f) => api.tasks.loadFile(f, reload))
Expand All @@ -156,7 +156,7 @@ export class TasksInitializer extends Initializer {
safeGlobSync(path.join(pluginPath, "dist", "tasks", "**", "*.js"))
);

utils.ensureNoTsHeaderFiles(files).forEach((f) => {
utils.ensureNoTsHeaderOrSpecFiles(files).forEach((f) => {
api.tasks.loadFile(f, reload);
});
}
Expand Down
4 changes: 2 additions & 2 deletions src/modules/config.ts
@@ -1,7 +1,7 @@
import * as fs from "fs";
import * as path from "path";
import { utils } from "./utils";
import { ensureNoTsHeaderFiles } from "./utils/ensureNoTsHeaderFiles";
import { ensureNoTsHeaderOrSpecFiles } from "./utils/ensureNoTsHeaderOrSpecFiles";

import { env, recalculateEnv } from "./../classes/process/env";
import { id, recalcuateId } from "./../classes/process/id";
Expand Down Expand Up @@ -132,7 +132,7 @@ export function buildConfig() {
};

const loadConfigDirectory = (configPath: string, watch: boolean) => {
const configFiles = ensureNoTsHeaderFiles(
const configFiles = ensureNoTsHeaderOrSpecFiles(
safeGlobSync(path.join(configPath, "**", "**/*(*.js|*.ts)"))
);

Expand Down
4 changes: 2 additions & 2 deletions src/modules/utils.ts
Expand Up @@ -3,7 +3,7 @@ import { arrayStartingMatch } from "./utils/arrayStartingMatch";
import { arrayUnique } from "./utils/arrayUnique";
import { collapseObjectToArray } from "./utils/collapseObjectToArray";
import { deepCopy } from "./utils/deepCopy";
import { ensureNoTsHeaderFiles } from "./utils/ensureNoTsHeaderFiles";
import { ensureNoTsHeaderOrSpecFiles } from "./utils/ensureNoTsHeaderOrSpecFiles";
import { eventLoopDelay } from "./utils/eventLoopDelay";
import { filterObjectForLogging } from "./utils/filterObjectForLogging";
import { filterResponseForLogging } from "./utils/filterResponseForLogging";
Expand Down Expand Up @@ -38,7 +38,7 @@ export const utils = {
arrayUnique,
collapseObjectToArray,
deepCopy,
ensureNoTsHeaderFiles,
ensureNoTsHeaderOrSpecFiles,
eventLoopDelay,
filterObjectForLogging,
filterResponseForLogging,
Expand Down
12 changes: 0 additions & 12 deletions src/modules/utils/ensureNoTsHeaderFiles.ts

This file was deleted.

19 changes: 19 additions & 0 deletions src/modules/utils/ensureNoTsHeaderOrSpecFiles.ts
@@ -0,0 +1,19 @@
/**
*swap out d.ts files for the JS versions when running with ts-node
* also filter out *.test. and *.spec. js|ts files
*/
export function ensureNoTsHeaderOrSpecFiles(
files: Array<string>
): Array<string> {
return files.filter((f) => {
if (f.match(/.*\.d\.ts$/)) {
return false;
}

if (f.match(/.*\.(?:spec|test)\.[tj]s$/)) {
return false;
}

return true;
});
}

0 comments on commit 0e4cbd4

Please sign in to comment.