Skip to content

Commit

Permalink
Merge pull request #95 from ssssota/unexpected-skip-test
Browse files Browse the repository at this point in the history
Unexpected skip test
  • Loading branch information
ssssota authored Oct 29, 2024
2 parents 884988f + dbd29fb commit 547cc65
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 8 deletions.
5 changes: 5 additions & 0 deletions .changeset/ninety-items-perform.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"vite-plugin-doctest": patch
---

Fix unexpected skip testing
3 changes: 2 additions & 1 deletion packages/vite-plugin-doctest/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
],
"scripts": {
"build": "tsup src/index.ts --format esm --dts",
"check": "tsc --noEmit"
"check": "tsc --noEmit",
"test": "vitest run"
},
"repository": {
"type": "git",
Expand Down
154 changes: 154 additions & 0 deletions packages/vite-plugin-doctest/src/transformers/typescript.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
import { expect, it } from "vitest";
import { transform } from "./typescript";
const getCode = (maybeCode: string | { code: string }) =>
typeof maybeCode === "string" ? maybeCode : maybeCode.code;
it("should generate test code", () => {
expect(
getCode(
transform(
`
/**
* @example
* \`\`\`ts @import.meta.vitest
* expect(add(1, 2)).toBe(3);
* \`\`\`
*/
export const add = (a: number, b: number) => a + b;`,
"add.ts",
),
),
).toMatchInlineSnapshot(`
"
/**
* @example
* \`\`\`ts @import.meta.vitest
* expect(add(1, 2)).toBe(3);
* \`\`\`
*/
export const add = (a: number, b: number) => a + b;
if (import.meta.vitest) {
const {assert,chai,createExpect,expect,getRunningMode,isWatchMode,should,vi,vitest} = import.meta.vitest;
import.meta.vitest.test("add.ts#0", async () => {
expect(add(1, 2)).toBe(3);
});
}"
`);

expect(
getCode(
transform(
`
/**
* @example
* \`\`\`ts @import.meta.vitest
* const { add } = await import('./add');
* expect(add(1, 2)).toBe(3);
* \`\`\`
*/
export const sub = (a: number, b: number) => {
/**
* @example
* \`\`\`ts @import.meta.vitest
* expect(sub(1, 2)).toBe(-1);
* \`\`\`
*/
return a - b;
};`,
"sub.ts",
),
),
).toMatchInlineSnapshot(`
"
/**
* @example
* \`\`\`ts @import.meta.vitest
* const { add } = await import('./add');
* expect(add(1, 2)).toBe(3);
* \`\`\`
*/
export const sub = (a: number, b: number) => {
/**
* @example
* \`\`\`ts @import.meta.vitest
* expect(sub(1, 2)).toBe(-1);
* \`\`\`
*/
return a - b;
};
if (import.meta.vitest) {
const {assert,chai,createExpect,expect,getRunningMode,isWatchMode,should,vi,vitest} = import.meta.vitest;
import.meta.vitest.test("sub.ts#0", async () => {
const { add } = await import('./add');
expect(add(1, 2)).toBe(3);
});
import.meta.vitest.test("sub.ts#1", async () => {
expect(sub(1, 2)).toBe(-1);
});
}"
`);

expect(
getCode(
transform(
`
/**
* @example
* \`\`\`ts @import.meta.vitest
* const hoge = new Hoge();
* assert(hoge instanceof Hoge);
* \`\`\`
*/
class Hoge {
internal = 1;
/**
* @example
* \`\`\`ts @import.meta.vitest
* const hoge = new Hoge();
* expect(hoge.add(1)).toBe(2);
* expect(hoge.add(2)).toBe(4);
* \`\`\`
add(num) {
return this.internal += num;
}
}`,
"class.js",
),
),
).toMatchInlineSnapshot(`
"
/**
* @example
* \`\`\`ts @import.meta.vitest
* const hoge = new Hoge();
* assert(hoge instanceof Hoge);
* \`\`\`
*/
class Hoge {
internal = 1;
/**
* @example
* \`\`\`ts @import.meta.vitest
* const hoge = new Hoge();
* expect(hoge.add(1)).toBe(2);
* expect(hoge.add(2)).toBe(4);
* \`\`\`
add(num) {
return this.internal += num;
}
}
if (import.meta.vitest) {
const {assert,chai,createExpect,expect,getRunningMode,isWatchMode,should,vi,vitest} = import.meta.vitest;
import.meta.vitest.test("class.js#0", async () => {
const hoge = new Hoge();
assert(hoge instanceof Hoge);
});
import.meta.vitest.test("class.js#1", async () => {
const hoge = new Hoge();
expect(hoge.add(1)).toBe(2);
expect(hoge.add(2)).toBe(4);
});
}"
`);
});
8 changes: 3 additions & 5 deletions packages/vite-plugin-doctest/src/transformers/typescript.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import MagicString from "magic-string";
import typescript from "typescript";
import { extractCode, vitestExports } from "./utils";

export function transform(code: string, id: string) {
const node = typescript.createSourceFile(
id,
Expand Down Expand Up @@ -43,10 +42,9 @@ function findJSDoc(node: typescript.Node): typescript.JSDoc[] {
...node.jsDoc.flatMap((doc) => (typescript.isJSDoc(doc) ? [doc] : [])),
);
}
node.forEachChild(
(child) => nodes.push(...findJSDoc(child)),
(children) => nodes.push(...children.flatMap((child) => findJSDoc(child))),
);
node.forEachChild((child) => {
nodes.push(...findJSDoc(child));
});
return nodes;
}

Expand Down
4 changes: 2 additions & 2 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ async function run() {
await runVitest().catch(console.error);
const results = await loadTestResults();

assert(results.numTotalTests === 7, "Incorrect number of total tests");
assert(results.numPassedTests === 7, "Incorrect number of passed tests");
assert(results.numTotalTests === 8, "Incorrect number of total tests");
assert(results.numPassedTests === 8, "Incorrect number of passed tests");
assert(results.numFailedTests === 0, "Incorrect number of failed tests");
}

Expand Down

0 comments on commit 547cc65

Please sign in to comment.