summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2021-09-28 13:48:18 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2021-09-28 13:48:18 +0200
commiteebdf078fcbd5b69e0ed70adcb3c6d1d0c50343e (patch)
treed475bdfe4e54104fb4769f80bd1aec34309ee012 /cli/tests
parent2181ec73117f2e18cc622ead6256c8104b631214 (diff)
Move runtime tests from cli-tests/ to cli/tests/
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/.gitignore2
-rw-r--r--cli/tests/build/.gitignore3
-rw-r--r--cli/tests/build/bootstrap.build8
-rw-r--r--cli/tests/build/root.build8
-rw-r--r--cli/tests/buildfile4
-rw-r--r--cli/tests/headings/buildfile8
-rw-r--r--cli/tests/headings/testscript36
-rw-r--r--cli/tests/note/buildfile8
-rw-r--r--cli/tests/note/testscript197
-rw-r--r--cli/tests/toc/buildfile8
-rw-r--r--cli/tests/toc/testscript155
11 files changed, 437 insertions, 0 deletions
diff --git a/cli/tests/.gitignore b/cli/tests/.gitignore
new file mode 100644
index 0000000..d4a788b
--- /dev/null
+++ b/cli/tests/.gitignore
@@ -0,0 +1,2 @@
+test
+test-*
diff --git a/cli/tests/build/.gitignore b/cli/tests/build/.gitignore
new file mode 100644
index 0000000..4a730a3
--- /dev/null
+++ b/cli/tests/build/.gitignore
@@ -0,0 +1,3 @@
+config.build
+root/
+bootstrap/
diff --git a/cli/tests/build/bootstrap.build b/cli/tests/build/bootstrap.build
new file mode 100644
index 0000000..bb305a2
--- /dev/null
+++ b/cli/tests/build/bootstrap.build
@@ -0,0 +1,8 @@
+# file : tests/build/bootstrap.build
+# license : MIT; see accompanying LICENSE file
+
+project =
+
+using config
+using dist
+using test
diff --git a/cli/tests/build/root.build b/cli/tests/build/root.build
new file mode 100644
index 0000000..cb9ba03
--- /dev/null
+++ b/cli/tests/build/root.build
@@ -0,0 +1,8 @@
+# file : tests/build/root.build
+# license : MIT; see accompanying LICENSE file
+
+# Configure C++ module and specify the test target for cross-testing.
+#
+using cxx.config
+
+test.target = $cxx.target
diff --git a/cli/tests/buildfile b/cli/tests/buildfile
new file mode 100644
index 0000000..556ed55
--- /dev/null
+++ b/cli/tests/buildfile
@@ -0,0 +1,4 @@
+# file : tests/buildfile
+# license : MIT; see accompanying LICENSE file
+
+./: {*/ -build/}
diff --git a/cli/tests/headings/buildfile b/cli/tests/headings/buildfile
new file mode 100644
index 0000000..aa665c7
--- /dev/null
+++ b/cli/tests/headings/buildfile
@@ -0,0 +1,8 @@
+# file : tests/headings/buildfile
+# license : MIT; see accompanying LICENSE file
+
+import! [metadata] cli = cli%exe{cli}
+
+./: testscript $cli
+
+testscript{*}: test = $cli
diff --git a/cli/tests/headings/testscript b/cli/tests/headings/testscript
new file mode 100644
index 0000000..163ba5f
--- /dev/null
+++ b/cli/tests/headings/testscript
@@ -0,0 +1,36 @@
+# file : tests/headings/testscript
+# license : MIT; see accompanying LICENSE file
+
+: auto-headings
+:
+: Note that auto-headings break if we split into multiple doc strings.
+:
+cat <<EOI >=map.cli;
+"
+\h1|Heading 1|
+
+\h|Heading 1.1|
+
+\h2|Heading 1.1.1|
+
+\h|Heading 1.2|
+
+\h2|Heading 1.2.1|
+
+\h1|Heading 2|
+"
+EOI
+$* --generate-html --stdout map.cli >>EOO
+ <h1>Heading 1</h1>
+
+ <h2>Heading 1.1</h2>
+
+ <h3>Heading 1.1.1</h3>
+
+ <h2>Heading 1.2</h2>
+
+ <h3>Heading 1.2.1</h3>
+
+ <h1>Heading 2</h1>
+
+EOO
diff --git a/cli/tests/note/buildfile b/cli/tests/note/buildfile
new file mode 100644
index 0000000..b35a911
--- /dev/null
+++ b/cli/tests/note/buildfile
@@ -0,0 +1,8 @@
+# file : tests/note/buildfile
+# license : MIT; see accompanying LICENSE file
+
+import! [metadata] cli = cli%exe{cli}
+
+./: testscript $cli
+
+testscript{*}: test = $cli
diff --git a/cli/tests/note/testscript b/cli/tests/note/testscript
new file mode 100644
index 0000000..52bcecc
--- /dev/null
+++ b/cli/tests/note/testscript
@@ -0,0 +1,197 @@
+# file : tests/note/testscript
+# license : MIT; see accompanying LICENSE file
+
+: block-basics
+:
+cat <<EOI >=test.cli;
+"
+Leading paragraph.
+
+\N|This is a note block one.|
+
+Interleaving paragraph that is quite long and therefore it may span many
+lines in order to make text easy to read.
+
+\N|This is a note block two that is quite long and therefore it may span many
+lines in order to make text easy to read.|
+
+Trailing paragraph.
+"
+EOI
+$* --generate-html --stdout test.cli >>EOO;
+ <p>Leading paragraph.</p>
+
+ <div class="note">
+ <p>This is a note block one.</p>
+ </div>
+
+ <p>Interleaving paragraph that is quite long and therefore it may span many
+ lines in order to make text easy to read.</p>
+
+ <div class="note">
+ <p>This is a note block two that is quite long and therefore it may span
+ many lines in order to make text easy to read.</p>
+ </div>
+
+ <p>Trailing paragraph.</p>
+
+EOO
+ $* --generate-txt --stdout test.cli >>EOO
+Leading paragraph.
+
+| This is a note block one.
+
+Interleaving paragraph that is quite long and therefore it may span many lines
+in order to make text easy to read.
+
+| This is a note block two that is quite long and therefore it may span many
+| lines in order to make text easy to read.
+
+Trailing paragraph.
+EOO
+
+
+: block-multi-para
+:
+cat <<EOI >=test.cli;
+"
+\N|
+This is a note para one that is quite long and therefore it may span many
+lines in order to make text easy to read.
+
+This is a note para two.
+|
+"
+EOI
+$* --generate-html --stdout test.cli >>EOO;
+ <div class="note">
+ <p>This is a note para one that is quite long and therefore it may span many
+ lines in order to make text easy to read.</p>
+
+ <p>This is a note para two.</p>
+ </div>
+
+EOO
+$* --generate-txt --stdout test.cli >>EOO
+| This is a note para one that is quite long and therefore it may span many
+| lines in order to make text easy to read.
+|
+| This is a note para two.
+EOO
+
+: block-pre
+:
+cat <<EOI >=test.cli;
+"
+
+\N|
+This is a note para one.
+
+\
+And this is a
+pre-formatter text fragment.
+\
+
+|
+"
+EOI
+$* --generate-html --stdout test.cli >>EOO;
+ <div class="note">
+ <p>This is a note para one.</p>
+
+ <pre>And this is a
+pre-formatter text fragment.</pre>
+ </div>
+
+EOO
+$* --generate-txt --stdout test.cli >>EOO
+| This is a note para one.
+|
+| And this is a
+| pre-formatter text fragment.
+EOO
+
+# This is not yet supported (see txt_wrap_lines()).
+#
+#\
+: block-list
+:
+cat <<EOI >=test.cli;
+"
+\N|This is a note para one followed by a list.
+
+\ul|
+
+\li|This is a list item that is quite long and therefore it may span many
+lines in order to make text easy to read.|||
+"
+EOI
+$* --generate-html --stdout test.cli >>EOO;
+EOO
+$* --generate-txt --stdout test.cli >>EOO
+EOO
+#\
+
+: block-in-list
+:
+cat <<EOI >=test.cli;
+"
+\ul|
+
+\li|Normal text para.
+
+\N|This is a note para one that is quite long and therefore it may span many
+lines in order to make text easy to read.|||
+"
+EOI
+$* --generate-html --stdout test.cli >>EOO;
+ <ul>
+ <li>Normal text para.
+
+ <div class="note">
+ <p>This is a note para one that is quite long and therefore it may span many
+ lines in order to make text easy to read.</p>
+ </div></li>
+ </ul>
+
+EOO
+$* --generate-txt --stdout test.cli >>EOO
+* Normal text para.
+
+ | This is a note para one that is quite long and therefore it may span many
+ | lines in order to make text easy to read.
+EOO
+
+
+: span-basics
+:
+cat <<EOI >=test.cli;
+"
+This is normal text. \N{This is a note.} And this is normal text again.
+"
+EOI
+$* --generate-html --stdout test.cli >>EOO;
+ <p>This is normal text. <span class="note">This is a note.</span> And this
+ is normal text again.</p>
+
+EOO
+ $* --generate-txt --stdout test.cli >>EOO
+This is normal text. [Note: This is a note.] And this is normal text again.
+EOO
+
+
+: span-nested-link
+:
+cat <<EOI >=test.cli;
+"
+\N{This is a note with a \l{https://example.com link} inside.}
+"
+EOI
+$* --generate-html --stdout test.cli >>EOO;
+ <p><span class="note">This is a note with a <a
+ href="https://example.com">link</a> inside.</span></p>
+
+EOO
+$* --generate-txt --stdout test.cli >>EOO
+[Note: This is a note with a link (https://example.com) inside.]
+EOO
diff --git a/cli/tests/toc/buildfile b/cli/tests/toc/buildfile
new file mode 100644
index 0000000..50a9ec0
--- /dev/null
+++ b/cli/tests/toc/buildfile
@@ -0,0 +1,8 @@
+# file : tests/toc/buildfile
+# license : MIT; see accompanying LICENSE file
+
+import! [metadata] cli = cli%exe{cli}
+
+./: testscript $cli
+
+testscript{*}: test = $cli
diff --git a/cli/tests/toc/testscript b/cli/tests/toc/testscript
new file mode 100644
index 0000000..6b3ff3e
--- /dev/null
+++ b/cli/tests/toc/testscript
@@ -0,0 +1,155 @@
+# file : tests/toc/testscript
+# license : MIT; see accompanying LICENSE file
+
+: toc
+:
+cat <<EOI >=toc.cli;
+"\h1|Table of Contents|"
+"\$TOC$"
+
+"
+\h0#preface|Preface|
+
+This document describes something awesome.
+
+\h#about-document|About This Document|
+
+And this document is also awesome.
+
+\h#more-information|More Information|
+
+It is so awesome that no further information will be required."
+
+"
+\H#part1|PART I|
+
+Start of part one.
+
+\h1#intro|Introduction|
+
+Beginning of the first chapter.
+
+\h#arch-flow|Architecture and Workflow|
+
+Some basics.
+
+\h#benefits|Benefits|
+
+You will like them.
+
+\h1#hello|Hello World|
+
+Beginning of the second chapter.
+
+\h#hell-setup|Setup|
+
+More basics.
+
+\h#hello-compile|Compiling|
+
+How to build the example
+
+\h2#hello-compile-gcc|Compiling with GCC|
+
+GCC. For Clang see \l{#hello-compile-clang Compiling with Clang}.
+
+\h2#hello-compile-clang|Compiling with Clang|
+
+Clang. For GCC see \l{#hello-compile-gcc Compiling with GCC}.
+
+\h#hello-conclusion|Conclusion|
+
+Some remarks.
+"
+EOI
+$* --generate-html --stdout toc.cli >>EOO
+ <h1>Table of Contents</h1>
+
+ <table class="toc">
+ <tr><td class="preface" colspan="2"><a href="#preface">Preface</a>
+ <table class="toc">
+ <tr><td class="preface" colspan="2"><a href="#about-document">About
+This Document</a></td></tr>
+ <tr><td class="preface" colspan="2"><a href="#more-information">More
+Information</a></td></tr>
+ </table>
+ </td></tr>
+ <tr><th colspan="2"><a href="#part1">PART I</a></th></tr>
+ <tr><th>1</th><td><a href="#intro">Introduction</a>
+ <table class="toc">
+ <tr><th>1.1</th><td><a href="#arch-flow">Architecture and
+Workflow</a></td></tr>
+ <tr><th>1.2</th><td><a href="#benefits">Benefits</a></td></tr>
+ </table>
+ </td></tr>
+ <tr><th>2</th><td><a href="#hello">Hello World</a>
+ <table class="toc">
+ <tr><th>2.1</th><td><a href="#hell-setup">Setup</a></td></tr>
+ <tr><th>2.2</th><td><a href="#hello-compile">Compiling</a>
+ <table class="toc">
+ <tr><th>2.2.1</th><td><a href="#hello-compile-gcc">Compiling with
+GCC</a></td></tr>
+ <tr><th>2.2.2</th><td><a href="#hello-compile-clang">Compiling
+with Clang</a></td></tr>
+ </table>
+ </td></tr>
+ <tr><th>2.3</th><td><a href="#hello-conclusion">Conclusion</a></td></tr>
+ </table>
+ </td></tr>
+ </table>
+
+ <h1 id="preface" class="preface">Preface</h1>
+
+ <p>This document describes something awesome.</p>
+
+ <h2 id="about-document">About This Document</h2>
+
+ <p>And this document is also awesome.</p>
+
+ <h2 id="more-information">More Information</h2>
+
+ <p>It is so awesome that no further information will be required.</p>
+
+ <h1 id="part1" class="part">PART I</h1>
+
+ <p>Start of part one.</p>
+
+ <h1 id="intro">1 Introduction</h1>
+
+ <p>Beginning of the first chapter.</p>
+
+ <h2 id="arch-flow">1.1 Architecture and Workflow</h2>
+
+ <p>Some basics.</p>
+
+ <h2 id="benefits">1.2 Benefits</h2>
+
+ <p>You will like them.</p>
+
+ <h1 id="hello">2 Hello World</h1>
+
+ <p>Beginning of the second chapter.</p>
+
+ <h2 id="hell-setup">2.1 Setup</h2>
+
+ <p>More basics.</p>
+
+ <h2 id="hello-compile">2.2 Compiling</h2>
+
+ <p>How to build the example</p>
+
+ <h3 id="hello-compile-gcc">2.2.1 Compiling with GCC</h3>
+
+ <p>GCC. For Clang see <a href="#hello-compile-clang">Compiling with
+ Clang</a>.</p>
+
+ <h3 id="hello-compile-clang">2.2.2 Compiling with Clang</h3>
+
+ <p>Clang. For GCC see <a href="#hello-compile-gcc">Compiling with
+ GCC</a>.</p>
+
+ <h2 id="hello-conclusion">2.3 Conclusion</h2>
+
+ <p>Some remarks.</p>
+
+EOO