Skip to content

Commit c1823ee

Browse files
committed
refactor: large refactor of testing framework and related aspects
fix #221
1 parent 4d73f84 commit c1823ee

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+143
-106
lines changed

.circleci/config.yml

+47-9
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
- save_cache:
2828
paths:
2929
- node_modules
30-
- packages/postdfm/node_modules
30+
# for nearleyc
3131
- packages/@postdfm/dfm2ast/node_modules
3232
key: node-{{ .Environment.CACHE_VERSION }}-dependencies-{{ checksum "yarn.lock" }}
3333

@@ -89,10 +89,46 @@ jobs:
8989
- run: yarn test
9090

9191
- store_test_results:
92-
path: test-results
92+
path: ~/repo/packages/postdfm/results
9393

9494
- codecov/upload:
95-
file: coverage/lcov.info
95+
flags: "postdfm"
96+
file: ~/repo/packages/postdfm/results/lcov/coverage.info
97+
98+
- store_test_results:
99+
path: ~/repo/packages/@postdfm/ast/results
100+
101+
- codecov/upload:
102+
flags: "@postdfm/ast"
103+
file: ~/repo/packages/@postdfm/ast/results/lcov/coverage.info
104+
105+
- store_test_results:
106+
path: ~/repo/packages/@postdfm/ast2dfm/results
107+
108+
- codecov/upload:
109+
flags: "@postdfm/ast2dfm"
110+
file: ~/repo/packages/@postdfm/ast2dfm/results/lcov/coverage.info
111+
112+
- store_test_results:
113+
path: ~/repo/packages/@postdfm/dfm2ast/results
114+
115+
- codecov/upload:
116+
flags: "@postdfm/dfm2ast"
117+
file: ~/repo/packages/@postdfm/dfm2ast/results/lcov/coverage.info
118+
119+
- store_test_results:
120+
path: ~/repo/packages/@postdfm/plugin/results
121+
122+
- codecov/upload:
123+
flags: "@postdfm/plugin"
124+
file: ~/repo/packages/@postdfm/plugin/results/lcov/coverage.info
125+
126+
- store_test_results:
127+
path: ~/repo/packages/@postdfm/transform/results
128+
129+
- codecov/upload:
130+
flags: "@postdfm/transform"
131+
file: ~/repo/packages/@postdfm/transform/results/lcov/coverage.info
96132

97133
docs:
98134
executor: node-executor
@@ -107,10 +143,11 @@ jobs:
107143

108144
- run: yarn docs
109145

110-
- persist_to_workspace:
111-
root: docs
112-
paths:
113-
- ./*
146+
# currently not used for anything
147+
# - persist_to_workspace:
148+
# root: docs
149+
# paths:
150+
# - ./*
114151

115152
release:
116153
executor: node-executor
@@ -123,8 +160,9 @@ jobs:
123160
- attach_workspace:
124161
at: ~/repo/packages
125162

126-
- attach_workspace:
127-
at: ~/repo/docs
163+
# currently not used for anything
164+
# - attach_workspace:
165+
# at: ~/repo/docs
128166

129167
- run: yarn release
130168

.gitignore

+1-2
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ typings/
8282
# js
8383
dist
8484

85-
# jest-junit
86-
test-results
85+
results/
8786

8887
# nearley.js
8988
packages/@postdfm/dfm2ast/src/grammar.ts

jest.config.json

-31
This file was deleted.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"format:fix": "yarn format --write --list-different",
1717
"format:check": "yarn format --check",
1818
"compile": "yarn workspaces run compile",
19-
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --verbose --maxWorkers=16",
19+
"test": "yarn workspaces run test",
2020
"docs": "yarn workspaces run docs",
2121
"release": "semantic-release",
2222
"snyk-protect": "snyk protect",

packages/@postdfm/ast/jest.config.cjs

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require("../../../test/jest-preset.cjs")("@postdfm/ast");

packages/@postdfm/ast/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
},
1717
"scripts": {
1818
"compile": "tsc --listEmittedFiles",
19+
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --verbose",
1920
"docs": "typedoc --options typedoc.config.cjs"
2021
},
2122
"author": "SpiltCoffee",
+1-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
module.exports = require("../../../typedoc.config.cjs")({
2-
entryPoints: ["src/index.ts"],
3-
out: "@postdfm/ast"
4-
});
1+
module.exports = require("../../../typedoc.config.cjs")("@postdfm/ast");

packages/@postdfm/ast2dfm/__test__/fixtures/index.test.ts

-24
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require("../../../test/jest-preset.cjs")("@postdfm/ast2dfm");

packages/@postdfm/ast2dfm/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
},
1717
"scripts": {
1818
"compile": "tsc --listEmittedFiles",
19+
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --verbose",
1920
"docs": "typedoc --options typedoc.config.cjs"
2021
},
2122
"author": "SpiltCoffee",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { readdirSync, readFileSync } from "fs";
2+
3+
import { Root } from "@postdfm/ast";
4+
import { stringify } from "@postdfm/ast2dfm";
5+
6+
const parseFixturesPath = new URL(
7+
"../../../../../test/fixtures/parse/",
8+
import.meta.url
9+
);
10+
11+
describe("dfm2ast", () => {
12+
describe("parse fixtures", () => {
13+
const fixtures = readdirSync(parseFixturesPath);
14+
fixtures.forEach((fixture) => {
15+
const fixturePath = new URL(`./${fixture}/`, parseFixturesPath);
16+
17+
test(`${fixture}`, () => {
18+
expect(
19+
stringify(
20+
JSON.parse(
21+
readFileSync(new URL("./ast.json", fixturePath), "utf8")
22+
) as Root
23+
)
24+
).toEqual(readFileSync(new URL("./form.dfm", fixturePath), "ascii"));
25+
});
26+
});
27+
});
28+
});
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
module.exports = require("../../../typedoc.config.cjs")({
2-
entryPoints: ["src/index.ts"],
3-
out: "@postdfm/ast2dfm"
4-
});
1+
module.exports = require("../../../typedoc.config.cjs")("@postdfm/ast2dfm");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require("../../../test/jest-preset.cjs")("@postdfm/dfm2ast");

packages/@postdfm/dfm2ast/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"scripts": {
1818
"precompile": "nearleyc ne/grammar.ne -o src/grammar.ts",
1919
"compile": "tsc --listEmittedFiles",
20+
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --verbose",
2021
"docs": "typedoc --options typedoc.config.cjs"
2122
},
2223
"author": "SpiltCoffee",

packages/@postdfm/dfm2ast/__test__/fixtures/index.test.ts packages/@postdfm/dfm2ast/test/fixtures/index.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { ASTNode } from "@postdfm/ast";
44
import { parse } from "@postdfm/dfm2ast";
55

66
const parseFixturesPath = new URL(
7-
"../../../../../__test__/__fixtures__/parse/",
7+
"../../../../../test/fixtures/parse/",
88
import.meta.url
99
);
1010

Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
module.exports = require("../../../typedoc.config.cjs")({
2-
entryPoints: ["src/index.ts"],
3-
out: "@postdfm/dfm2ast"
4-
});
1+
module.exports = require("../../../typedoc.config.cjs")("@postdfm/dfm2ast");
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require("../../../test/jest-preset.cjs")("@postdfm/plugin");

packages/@postdfm/plugin/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
},
1717
"scripts": {
1818
"compile": "tsc --listEmittedFiles",
19+
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --verbose",
1920
"docs": "typedoc --options typedoc.config.cjs"
2021
},
2122
"author": "SpiltCoffee",
+1-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
module.exports = require("../../../typedoc.config.cjs")({
2-
entryPoints: ["src/index.ts"],
3-
out: "@postdfm/plugin",
4-
});
1+
module.exports = require("../../../typedoc.config.cjs")("@postdfm/plugin");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require("../../../test/jest-preset.cjs")("@postdfm/transform");

packages/@postdfm/transform/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
},
1717
"scripts": {
1818
"compile": "tsc --listEmittedFiles",
19+
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --verbose",
1920
"docs": "typedoc --options typedoc.config.cjs"
2021
},
2122
"author": "SpiltCoffee",

packages/@postdfm/transform/__test__/fixtures/index.test.ts packages/@postdfm/transform/test/fixtures/index.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Plugin } from "@postdfm/plugin";
66
import { Transformer } from "@postdfm/transform";
77

88
const transformFixturesPath = new URL(
9-
"../../../../../__test__/__fixtures__/transform/",
9+
"../../../../../test/fixtures/transform/",
1010
import.meta.url
1111
);
1212

Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
module.exports = require("../../../typedoc.config.cjs")({
2-
entryPoints: ["src/index.ts"],
3-
out: "@postdfm/transform",
4-
});
1+
module.exports = require("../../../typedoc.config.cjs")("@postdfm/transform");

packages/postdfm/jest.config.cjs

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require("../../test/jest-preset.cjs")("postdfm");

packages/postdfm/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
},
1616
"scripts": {
1717
"compile": "tsc --listEmittedFiles",
18+
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage --verbose",
1819
"docs": "typedoc --options typedoc.config.cjs"
1920
},
2021
"keywords": [

packages/postdfm/__test__/fixtures/index.test.ts packages/postdfm/test/fixtures/index.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { Plugin } from "@postdfm/plugin";
55
import { postdfm, postdfmSync } from "postdfm";
66

77
const parseFixturesPath = new URL(
8-
"../../../../__test__/__fixtures__/parse/",
8+
"../../../../test/fixtures/parse/",
99
import.meta.url
1010
);
1111

1212
const transformFixturesPath = new URL(
13-
"../../../../__test__/__fixtures__/transform/",
13+
"../../../../test/fixtures/transform/",
1414
import.meta.url
1515
);
1616

packages/postdfm/typedoc.config.cjs

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
module.exports = require("../../typedoc.config.cjs")({
2-
entryPoints: ["src/index.ts"],
3-
out: "postdfm"
4-
});
1+
module.exports = require("../../typedoc.config.cjs")("postdfm");
File renamed without changes.
File renamed without changes.

test/jest-preset.cjs

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
const path = require("path");
2+
3+
module.exports = (projectName) => ({
4+
extensionsToTreatAsEsm: [".ts"],
5+
globals: {
6+
"ts-jest": {
7+
useESM: true
8+
}
9+
},
10+
transform: {
11+
"^.+\\.tsx?$": "ts-jest"
12+
},
13+
resolver: path.resolve(__dirname, "resolver.cjs"),
14+
collectCoverage: true,
15+
collectCoverageFrom: ["**/dist/**/*.js", "!**/node_modules/**"],
16+
coverageReporters: [
17+
[
18+
"lcovonly",
19+
{ file: "coverage.info", projectRoot: path.resolve(__dirname, "..") }
20+
],
21+
"text"
22+
],
23+
coverageDirectory: "results/lcov",
24+
reporters: [
25+
"default",
26+
[
27+
"jest-junit",
28+
{
29+
usePathForSuiteName: "true",
30+
classNameTemplate: "[{classname}]",
31+
titleTemplate: "{title}",
32+
outputName: "./report.xml",
33+
outputDirectory: "results/jest"
34+
}
35+
]
36+
]
37+
});

typedoc.config.cjs

+7-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
const path = require("path");
22

3-
module.exports = (options) =>
4-
Object.assign(
5-
{
6-
excludePrivate: true,
7-
theme: "minimal",
8-
},
9-
options,
10-
{
11-
out: path.resolve(__dirname, "docs", options.out),
12-
}
13-
);
3+
module.exports = (projectName) =>
4+
Object.assign({
5+
excludePrivate: true,
6+
theme: "minimal",
7+
entryPoints: ["src/index.ts"],
8+
out: path.resolve(__dirname, "docs", projectName)
9+
});

0 commit comments

Comments
 (0)