From 7df3dacd028fb93f40455cff34be708d5f9b029b Mon Sep 17 00:00:00 2001 From: 3w36zj6 <52315048+3w36zj6@users.noreply.github.com> Date: Mon, 1 Apr 2024 23:48:35 +0900 Subject: [PATCH] test: Add parsing test (#1) --- test/fixtures/mdxFlowExpression/input.mdx | 3 + test/fixtures/mdxFlowExpression/output.json | 33 +++++++ test/fixtures/mdxJsxFlowElement/input.mdx | 1 + test/fixtures/mdxJsxFlowElement/output.json | 33 +++++++ test/fixtures/mdxJsxTextElement/input.mdx | 1 + test/fixtures/mdxJsxTextElement/output.json | 99 +++++++++++++++++++++ test/fixtures/mdxTextExpression/input.mdx | 1 + test/fixtures/mdxTextExpression/output.json | 82 +++++++++++++++++ test/fixtures/mdxjsEsm/input.mdx | 2 + test/fixtures/mdxjsEsm/output.json | 33 +++++++ test/parsing.test.ts | 28 ++++++ 11 files changed, 316 insertions(+) create mode 100644 test/fixtures/mdxFlowExpression/input.mdx create mode 100644 test/fixtures/mdxFlowExpression/output.json create mode 100644 test/fixtures/mdxJsxFlowElement/input.mdx create mode 100644 test/fixtures/mdxJsxFlowElement/output.json create mode 100644 test/fixtures/mdxJsxTextElement/input.mdx create mode 100644 test/fixtures/mdxJsxTextElement/output.json create mode 100644 test/fixtures/mdxTextExpression/input.mdx create mode 100644 test/fixtures/mdxTextExpression/output.json create mode 100644 test/fixtures/mdxjsEsm/input.mdx create mode 100644 test/fixtures/mdxjsEsm/output.json create mode 100644 test/parsing.test.ts diff --git a/test/fixtures/mdxFlowExpression/input.mdx b/test/fixtures/mdxFlowExpression/input.mdx new file mode 100644 index 0000000..78ea788 --- /dev/null +++ b/test/fixtures/mdxFlowExpression/input.mdx @@ -0,0 +1,3 @@ +{ +a + 1 +} diff --git a/test/fixtures/mdxFlowExpression/output.json b/test/fixtures/mdxFlowExpression/output.json new file mode 100644 index 0000000..bae895f --- /dev/null +++ b/test/fixtures/mdxFlowExpression/output.json @@ -0,0 +1,33 @@ +{ + "type": "Document", + "children": [ + { + "type": "CodeBlock", + "value": "\na + 1\n", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 1 + } + }, + "range": [0, 9], + "raw": "{\na + 1\n}" + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 4, + "column": 0 + } + }, + "range": [0, 10], + "raw": "{\na + 1\n}\n" +} diff --git a/test/fixtures/mdxJsxFlowElement/input.mdx b/test/fixtures/mdxJsxFlowElement/input.mdx new file mode 100644 index 0000000..ec0403a --- /dev/null +++ b/test/fixtures/mdxJsxFlowElement/input.mdx @@ -0,0 +1 @@ + diff --git a/test/fixtures/mdxJsxFlowElement/output.json b/test/fixtures/mdxJsxFlowElement/output.json new file mode 100644 index 0000000..3ff070b --- /dev/null +++ b/test/fixtures/mdxJsxFlowElement/output.json @@ -0,0 +1,33 @@ +{ + "type": "Document", + "children": [ + { + "type": "Html", + "children": [], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 23 + } + }, + "range": [0, 23], + "raw": "" + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 0 + } + }, + "range": [0, 24], + "raw": "\n" +} diff --git a/test/fixtures/mdxJsxTextElement/input.mdx b/test/fixtures/mdxJsxTextElement/input.mdx new file mode 100644 index 0000000..3414365 --- /dev/null +++ b/test/fixtures/mdxJsxTextElement/input.mdx @@ -0,0 +1 @@ +abc diff --git a/test/fixtures/mdxJsxTextElement/output.json b/test/fixtures/mdxJsxTextElement/output.json new file mode 100644 index 0000000..b901ab0 --- /dev/null +++ b/test/fixtures/mdxJsxTextElement/output.json @@ -0,0 +1,99 @@ +{ + "type": "Document", + "children": [ + { + "type": "Paragraph", + "children": [ + { + "type": "Str", + "value": "a", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 1 + } + }, + "range": [0, 1], + "raw": "a" + }, + { + "type": "Paragraph", + "children": [ + { + "type": "Str", + "value": "b", + "loc": { + "start": { + "line": 1, + "column": 12 + }, + "end": { + "line": 1, + "column": 13 + } + }, + "range": [12, 13], + "raw": "b" + } + ], + "loc": { + "start": { + "line": 1, + "column": 1 + }, + "end": { + "line": 1, + "column": 25 + } + }, + "range": [1, 25], + "raw": "b" + }, + { + "type": "Str", + "value": "c", + "loc": { + "start": { + "line": 1, + "column": 25 + }, + "end": { + "line": 1, + "column": 26 + } + }, + "range": [25, 26], + "raw": "c" + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 26 + } + }, + "range": [0, 26], + "raw": "abc" + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 0 + } + }, + "range": [0, 27], + "raw": "abc\n" +} diff --git a/test/fixtures/mdxTextExpression/input.mdx b/test/fixtures/mdxTextExpression/input.mdx new file mode 100644 index 0000000..369b97d --- /dev/null +++ b/test/fixtures/mdxTextExpression/input.mdx @@ -0,0 +1 @@ +b {true}. diff --git a/test/fixtures/mdxTextExpression/output.json b/test/fixtures/mdxTextExpression/output.json new file mode 100644 index 0000000..5d90d2d --- /dev/null +++ b/test/fixtures/mdxTextExpression/output.json @@ -0,0 +1,82 @@ +{ + "type": "Document", + "children": [ + { + "type": "Paragraph", + "children": [ + { + "type": "Str", + "value": "b ", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 2 + } + }, + "range": [0, 2], + "raw": "b " + }, + { + "type": "Code", + "value": "true", + "loc": { + "start": { + "line": 1, + "column": 2 + }, + "end": { + "line": 1, + "column": 8 + } + }, + "range": [2, 8], + "raw": "{true}" + }, + { + "type": "Str", + "value": ".", + "loc": { + "start": { + "line": 1, + "column": 8 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "range": [8, 9], + "raw": "." + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 1, + "column": 9 + } + }, + "range": [0, 9], + "raw": "b {true}." + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 0 + } + }, + "range": [0, 10], + "raw": "b {true}.\n" +} diff --git a/test/fixtures/mdxjsEsm/input.mdx b/test/fixtures/mdxjsEsm/input.mdx new file mode 100644 index 0000000..4252eb4 --- /dev/null +++ b/test/fixtures/mdxjsEsm/input.mdx @@ -0,0 +1,2 @@ +import a from 'b' +export var c = '' diff --git a/test/fixtures/mdxjsEsm/output.json b/test/fixtures/mdxjsEsm/output.json new file mode 100644 index 0000000..31edb88 --- /dev/null +++ b/test/fixtures/mdxjsEsm/output.json @@ -0,0 +1,33 @@ +{ + "type": "Document", + "children": [ + { + "type": "CodeBlock", + "value": "import a from 'b'\nexport var c = ''", + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 2, + "column": 17 + } + }, + "range": [0, 35], + "raw": "import a from 'b'\nexport var c = ''" + } + ], + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 0 + } + }, + "range": [0, 36], + "raw": "import a from 'b'\nexport var c = ''\n" +} diff --git a/test/parsing.test.ts b/test/parsing.test.ts new file mode 100644 index 0000000..499dc98 --- /dev/null +++ b/test/parsing.test.ts @@ -0,0 +1,28 @@ +// parse all fixture and should has +import { test } from "@textlint/ast-tester"; +import fs from "node:fs"; +import path from "node:path"; +import { describe, expect, it } from "vitest"; +import { parse } from "../src/parse"; + +describe("parsing", () => { + const fixtureDir = path.join(__dirname, "fixtures"); + for (const filePath of fs.readdirSync(fixtureDir)) { + const dirName = path.basename(filePath); + it(`${dirName} match AST`, () => { + const input = fs.readFileSync( + path.join(fixtureDir, filePath, "input.mdx"), + "utf-8", + ); + const AST = parse(input); + test(AST); + const output = JSON.parse( + fs.readFileSync( + path.join(fixtureDir, filePath, "output.json"), + "utf-8", + ), + ); + expect(AST).toEqual(output); + }); + } +});