diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py')
-rw-r--r-- | nixpkgs/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py b/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py new file mode 100644 index 000000000000..9b7e1652f0f6 --- /dev/null +++ b/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/tests/test_manpage.py @@ -0,0 +1,170 @@ +import nixos_render_docs as nrd + +from sample_md import sample1 + +from typing import Mapping, Optional + +import markdown_it + +class Converter(nrd.md.Converter[nrd.manpage.ManpageRenderer]): + def __init__(self, manpage_urls: Mapping[str, str], options_by_id: dict[str, str] = {}): + super().__init__() + self._renderer = nrd.manpage.ManpageRenderer(manpage_urls, options_by_id) + +def test_inline_code() -> None: + c = Converter({}) + assert c._render("1 `x a x` 2") == "1 \\fR\\(oqx a x\\(cq\\fP 2" + +def test_fonts() -> None: + c = Converter({}) + assert c._render("*a **b** c*") == "\\fIa \\fBb\\fI c\\fR" + assert c._render("*a [1 `2`](3) c*") == "\\fIa \\fB1 \\fR\\(oq2\\(cq\\fP\\fI c\\fR" + +def test_expand_link_targets() -> None: + c = Converter({}, { '#foo1': "bar", "#foo2": "bar" }) + assert (c._render("[a](#foo1) [](#foo2) [b](#bar1) [](#bar2)") == + "\\fBa\\fR \\fBbar\\fR \\fBb\\fR \\fB\\fR") + +def test_collect_links() -> None: + c = Converter({}, { '#foo': "bar" }) + c._renderer.link_footnotes = [] + assert c._render("[a](link1) [b](link2)") == "\\fBa\\fR[1]\\fR \\fBb\\fR[2]\\fR" + assert c._renderer.link_footnotes == ['link1', 'link2'] + +def test_dedup_links() -> None: + c = Converter({}, { '#foo': "bar" }) + c._renderer.link_footnotes = [] + assert c._render("[a](link) [b](link)") == "\\fBa\\fR[1]\\fR \\fBb\\fR[1]\\fR" + assert c._renderer.link_footnotes == ['link'] + +def test_full() -> None: + c = Converter({ 'man(1)': 'http://example.org' }) + assert c._render(sample1) == """\ +.sp +.RS 4 +\\fBWarning\\fP +.br +foo +.sp +.RS 4 +\\fBNote\\fP +.br +nested +.RE +.RE +.sp +\\fBmultiline\\fR +.sp +\\fBman\\fP\\fR(1)\\fP reference +.sp +some nested anchors +.sp +\\fIemph\\fR \\fBstrong\\fR \\fInesting emph \\fBand strong\\fI and \\fR\\(oqcode\\(cq\\fP\\fR +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +wide bullet +.RE +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-3'\\fB1\\&.\\fP\\h'1'\\c +wide ordered +.RE +.sp +.RS 4 +\\h'-3'\\fB2\\&.\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +narrow bullet +.RE +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-3'\\fB1\\&.\\fP\\h'1'\\c +narrow ordered +.RE +.RS 4 +\\h'-3'\\fB2\\&.\\fP\\h'1'\\c +list +.RE +.sp +.RS 4 +\\h'-3'\\fI\\(lq\\(rq\\fP\\h'1'\\c +quotes +.sp +.RS 4 +\\h'-3'\\fI\\(lq\\(rq\\fP\\h'1'\\c +with \\fInesting\\fR +.sp +.RS 4 +.nf +nested code block +.fi +.RE +.RE +.sp +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +and lists +.RE +.RS 4 +\\h'-2'\\fB\\[u2022]\\fP\\h'1'\\c +.sp +.RS 4 +.nf +containing code +.fi +.RE +.RE +.sp +and more quote +.RE +.sp +.RS 6 +\\h'-5'\\fB100\\&.\\fP\\h'1'\\c +list starting at 100 +.RE +.RS 6 +\\h'-5'\\fB101\\&.\\fP\\h'1'\\c +goes on +.RE +.RS 4 +.PP +deflist +.RS 4 +.RS 4 +\\h'-3'\\fI\\(lq\\(rq\\fP\\h'1'\\c +with a quote and stuff +.RE +.sp +.RS 4 +.nf +code block +.fi +.RE +.sp +.RS 4 +.nf +fenced block +.fi +.RE +.sp +text +.RE +.PP +more stuff in same deflist +.RS 4 +foo +.RE +.RE""" |