From 445cabf3eaee4335863942dd19872e2b56223041 Mon Sep 17 00:00:00 2001 From: Mc-Zen <52877387+Mc-Zen@users.noreply.github.com> Date: Sun, 24 Nov 2024 11:27:41 +0100 Subject: [PATCH] [add] tests (#36) --- .github/workflows/run_tests.yml | 36 ++- src/helping.typ | 7 +- tests/helping/ref/1.png | Bin 0 -> 20692 bytes tests/{test_helping.typ => helping/test.typ} | 37 ++- .../argument-description.typ | 0 .../{parser => new-parser}/argument-type.typ | 0 tests/{parser => new-parser}/arguments.typ | 0 tests/{parser => new-parser}/currying.typ | 0 tests/{parser => new-parser}/description.typ | 0 .../module-description.typ | 0 .../multiple-definitions.typ | 0 tests/new-parser/ref/1.png | Bin 0 -> 71 bytes tests/{parser => new-parser}/test.typ | 2 + .../parse-argument-list.typ} | 0 tests/old-parser/parse-module.typ | 211 ++++++++++++++++++ tests/old-parser/ref/1.png | Bin 0 -> 71 bytes tests/old-parser/test.typ | 4 + tests/parser/ref/1.png | Bin 1063 -> 0 bytes tests/show-example/ref/1.png | Bin 13969 -> 11240 bytes tests/show-example/ref/2.png | Bin 6490 -> 5766 bytes tests/show-example/test.typ | 2 +- tests/test (2.svg | 3 - tests/test.svg | 3 - tests/test_tidy.typ | 3 - tests/testing.typ/ref/1.png | Bin 0 -> 71 bytes .../test.typ} | 3 + 26 files changed, 280 insertions(+), 31 deletions(-) create mode 100644 tests/helping/ref/1.png rename tests/{test_helping.typ => helping/test.typ} (66%) rename tests/{parser => new-parser}/argument-description.typ (100%) rename tests/{parser => new-parser}/argument-type.typ (100%) rename tests/{parser => new-parser}/arguments.typ (100%) rename tests/{parser => new-parser}/currying.typ (100%) rename tests/{parser => new-parser}/description.typ (100%) rename tests/{parser => new-parser}/module-description.typ (100%) rename tests/{parser => new-parser}/multiple-definitions.typ (100%) create mode 100644 tests/new-parser/ref/1.png rename tests/{parser => new-parser}/test.typ (77%) rename tests/{test_parse_argument_list.typ => old-parser/parse-argument-list.typ} (100%) create mode 100644 tests/old-parser/parse-module.typ create mode 100644 tests/old-parser/ref/1.png create mode 100644 tests/old-parser/test.typ delete mode 100644 tests/parser/ref/1.png delete mode 100644 tests/test (2.svg delete mode 100644 tests/test.svg delete mode 100644 tests/test_tidy.typ create mode 100644 tests/testing.typ/ref/1.png rename tests/{test_testing.typ => testing.typ/test.typ} (90%) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index cec2d26..bf8eb0d 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -1,13 +1,37 @@ -name: Tests -on: push +name: tests +on: + push: + branches: [ main ] + paths: + - src/** + - tests/** + pull_request: + branches: [ main ] jobs: - build_typst_documents: + tests: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - - name: Typst - uses: lvignoli/typst-action@main + + - name: Probe runner package cache + uses: awalsh128/cache-apt-pkgs-action@latest + with: + packages: cargo + version: 1.0 + + - name: Install typst-test from github + uses: baptiste0928/cargo-install@v2.2.0 with: - source_file: tests/test_tidy.typ + crate: typst-test + git: https://github.com/tingerrr/typst-test.git + tag: ci-semi-stable + + - name: Setup typst + uses: yusancky/setup-typst@v2 + with: + version: 'v0.12.0' + + - name: Run test suite + run: typst-test run \ No newline at end of file diff --git a/src/helping.typ b/src/helping.typ index d7a66d4..86d776a 100644 --- a/src/helping.typ +++ b/src/helping.typ @@ -5,13 +5,14 @@ #import "show-module.typ": show-module #let help-box(content) = { - set text(size: .9em) block( above: 1em, inset: 1em, stroke: rgb("#AAA"), - fill: rgb("#F5F5F544"), - text(size: 2em, [? #smallcaps("help")#h(1fr)?]) + content + fill: rgb("#F5F5F544"), { + text(size: 1.8em, [? #smallcaps("help")#h(1fr)?]) + text(.9em, content) + } ) } diff --git a/tests/helping/ref/1.png b/tests/helping/ref/1.png new file mode 100644 index 0000000000000000000000000000000000000000..d24ab37ce61b969dc02a634fd710a9537a2fe1c7 GIT binary patch literal 20692 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 A*#H0l literal 0 HcmV?d00001 diff --git a/tests/test_helping.typ b/tests/helping/test.typ similarity index 66% rename from tests/test_helping.typ rename to tests/helping/test.typ index e1769bf..939d1c4 100644 --- a/tests/test_helping.typ +++ b/tests/helping/test.typ @@ -1,5 +1,6 @@ #import "/src/tidy.typ" +#set page(width: 10cm, height: auto, margin: 2pt) #let heymath = ``` #import "vector.typ": * @@ -20,8 +21,11 @@ #let matrix = ``` #import "solve.typ" -/// - n (int): dimension -#let id(n) +/// +#let id( + /// dimension -> int + n + ) ```.text #let solve = ``` @@ -29,6 +33,8 @@ #let solve(n) ```.text +#let error = highlight + #let help(..args) = { let namespace = ( @@ -39,17 +45,16 @@ tidy.generate-help( namespace: namespace, package-name: "heymath", - onerror: msg => block(msg) + onerror: msg => error(msg) )(..args) } #help("pi-squared") #let assert-not-failed(help-result) = { - assert.eq( - help-result.child.body.children.at(1) - .child.children.first().fill, - rgb("#d8dbed44") + let body = help-result.body.children.at(1).child + assert( + body.func() != highlight, ) } @@ -60,20 +65,24 @@ #assert-not-failed(help("vec-subtract")) #assert-not-failed(help("matrix.id")) #assert-not-failed(help("matrix.solve.solve")) -// #assert-not-failed(help("matrix.id(n)")) +#assert-not-failed(help("matrix.id(n)")) #help("matrix.id(n)") // Invalid definition #assert.eq( help("ma"), - tidy.helping.help-box(block("The package `heymath` contains no (documented) definition `ma`")) + tidy.helping.help-box( + error("The package `heymath` contains no (documented) definition `ma`") + ) ) // Invalid submodule #assert.eq( help("matrixs.id"), - tidy.helping.help-box(block("The package `heymath` contains no module `matrixs`")) + tidy.helping.help-box( + error("The package `heymath` contains no module `matrixs`") + ) ) @@ -81,14 +90,18 @@ // Invalid submodule #assert.eq( help("matrix.id(aaaa)"), - tidy.helping.help-box(block("The function `matrix.id` has no parameter `aaaa`")) + tidy.helping.help-box( + error("The function `matrix.id` has no parameter `aaaa`") + ) ) // Invalid submodule #assert.eq( help("cos(aaaa)"), - tidy.helping.help-box(block("The function `cos` has no parameter `aaaa`")) + tidy.helping.help-box( + error("The function `cos` has no parameter `aaaa`") + ) ) diff --git a/tests/parser/argument-description.typ b/tests/new-parser/argument-description.typ similarity index 100% rename from tests/parser/argument-description.typ rename to tests/new-parser/argument-description.typ diff --git a/tests/parser/argument-type.typ b/tests/new-parser/argument-type.typ similarity index 100% rename from tests/parser/argument-type.typ rename to tests/new-parser/argument-type.typ diff --git a/tests/parser/arguments.typ b/tests/new-parser/arguments.typ similarity index 100% rename from tests/parser/arguments.typ rename to tests/new-parser/arguments.typ diff --git a/tests/parser/currying.typ b/tests/new-parser/currying.typ similarity index 100% rename from tests/parser/currying.typ rename to tests/new-parser/currying.typ diff --git a/tests/parser/description.typ b/tests/new-parser/description.typ similarity index 100% rename from tests/parser/description.typ rename to tests/new-parser/description.typ diff --git a/tests/parser/module-description.typ b/tests/new-parser/module-description.typ similarity index 100% rename from tests/parser/module-description.typ rename to tests/new-parser/module-description.typ diff --git a/tests/parser/multiple-definitions.typ b/tests/new-parser/multiple-definitions.typ similarity index 100% rename from tests/parser/multiple-definitions.typ rename to tests/new-parser/multiple-definitions.typ diff --git a/tests/new-parser/ref/1.png b/tests/new-parser/ref/1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0fcd00be8648c65b54e9a563dbb66f1b65f3b06 GIT binary patch literal 71 zcmeAS@N?(olHy`uVBq!ia0vp^93TuL7#^lP3 content, integer + #let a(p1, p2: 2, p3: (), p4: ("entries": ())) = {} + ```.text + let result = parse-module(a) + assert.eq(result.functions.len(), 1) + let f0 = result.functions.at(0) + + assert.eq(f0.name, "a") + assert.eq(eval-string(f0.description), [Func]) + assert.eq(f0.args.len(), 4) + assert.eq(f0.args.p1.types, ("string",)) + assert.eq(eval-string(f0.args.p1.description), [a param $a$]) + assert.eq(f0.args.p2.default, "2") + assert.eq(eval-string(f0.args.p2.description), [a param $b$ Oh yes]) + assert.eq(f0.args.p2.types, ("boolean", "function")) + assert.eq(f0.return-types, ("content", "integer")) +} + + + + + +// // Ignore args that are not in the argument list +// #{ +// let a = ``` +// /// Func +// /// - bar (content): asd +// #let a(bar) = {} +// ```.text +// let result = parse-module(a) +// assert.eq(result.functions.len(), 1) +// assert.eq(result.functions.at(0).args.len(), 1) +// } + + +// Ignore interrupted docstring +#{ + let a = ``` + /// Func + // a + #let a() + ```.text + let result = parse-module(a) + assert.eq(result.functions.len(), 0) +} + + +// Ensure that wide unicode characters don't disturb line calculation for error messages +#{ + let code = ``` + // ⇒⇐ßáà€ + + /// foo + /// >>> 2 == 2 + #let f() + ``` + + let result = show-module(parse-module(code.text)) +} + +// Curried functions +#{ + let code = ``` +/// - foo (content): Something. +/// - bar (boolean): A boolean. +/// -> content +#let myfunc(foo, bar: false) = strong(foo) + +/// My curried function. +/// -> content +#let curried = myfunc.with(bar: true, 2) + ``` + + let result = parse-module(code.text) + let f1 = result.functions.at(0) + let f2 = result.functions.at(1) + assert.eq(f1.name, "myfunc") + assert.eq(f2.parent.name, "myfunc") + assert.eq(f2.parent.pos, ("2",)) + assert.eq(f2.parent.named, (bar: "true")) + // assert.eq(f2.args.len(), 1) + // assert.eq(f2.args.bar, ( + // default: "true", + // description: "A boolean.", + // types: ("boolean",), + // )) +} + +// module description +#{ + let code = ``` + // License + + /// This is a module + + a + ``` + + let result = parse-module(code.text) + assert.eq(result.description, "This is a module") +} \ No newline at end of file diff --git a/tests/old-parser/ref/1.png b/tests/old-parser/ref/1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0fcd00be8648c65b54e9a563dbb66f1b65f3b06 GIT binary patch literal 71 zcmeAS@N?(olHy`uVBq!ia0vp^93TuL7#^lP3uD8Rtm<@Aezf%%=Mi(^Q|t+(e4fubDD y3%>H(_AX>sQTQB?oH`0dLtr!nhEE8TuH>$aX{vnlx@Rk>1n_kAb6Mw<&;$SjC7Rm+ diff --git a/tests/show-example/ref/1.png b/tests/show-example/ref/1.png index acb1d382c5f30edc257b60fd95da424551a4b2e9..a4323325e9bb324c4cc832ca8462ed8f54dbef44 100644 GIT binary patch literal 11240 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 diff --git a/tests/show-example/ref/2.png b/tests/show-example/ref/2.png index 052b685a815b17be504e0603b0bbd80aa4d02ab2..05f4d1a9e8a7a723e6c7c029b83c66f60881cf24 100644 GIT binary patch literal 5766 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 Ef~!VkP5=M^ literal 6490 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 u{|0#AIs^ - - \ No newline at end of file diff --git a/tests/test.svg b/tests/test.svg deleted file mode 100644 index 0deee02..0000000 --- a/tests/test.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/test_tidy.typ b/tests/test_tidy.typ deleted file mode 100644 index a6308d4..0000000 --- a/tests/test_tidy.typ +++ /dev/null @@ -1,3 +0,0 @@ -#include "test_parse.typ" -#include "test_parse_argument_list.typ" -#include "test_testing.typ" diff --git a/tests/testing.typ/ref/1.png b/tests/testing.typ/ref/1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0fcd00be8648c65b54e9a563dbb66f1b65f3b06 GIT binary patch literal 71 zcmeAS@N?(olHy`uVBq!ia0vp^93TuL7#^lP3