diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/jupynotex/tests/test_main.py')
-rw-r--r-- | Master/texmf-dist/doc/latex/jupynotex/tests/test_main.py | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/jupynotex/tests/test_main.py b/Master/texmf-dist/doc/latex/jupynotex/tests/test_main.py new file mode 100644 index 00000000000..fabfa4e01eb --- /dev/null +++ b/Master/texmf-dist/doc/latex/jupynotex/tests/test_main.py @@ -0,0 +1,111 @@ +# Copyright 2020 Facundo Batista +# All Rights Reserved +# Licensed under Apache 2.0 + +import textwrap + +import jupynotex +from jupynotex import main + + +class FakeNotebook: + """Fake notebook. + + The instance supports calling (as it if were instantiated). The .get will return the + value in a dict for received key; raise it if exception. + """ + + def __init__(self, side_effects): + self.side_effects = side_effects + + def __call__(self, path): + return self + + def __len__(self): + return len(self.side_effects) + + def get(self, key): + """Return or raise the stored side effect.""" + value = self.side_effects[key] + if isinstance(value, Exception): + raise value + else: + return value + + +def test_simple_ok(monkeypatch, capsys): + fake_notebook = FakeNotebook({ + 1: ("test cell content up", "test cell content down"), + }) + monkeypatch.setattr(jupynotex, 'Notebook', fake_notebook) + + main('boguspath', '1') + expected = textwrap.dedent("""\ + \\begin{tcolorbox}[title=Cell {01}] + test cell content up + \\tcblower + test cell content down + \\end{tcolorbox} + """) + assert expected == capsys.readouterr().out + + +def test_simple_only_first(monkeypatch, capsys): + fake_notebook = FakeNotebook({ + 1: ("test cell content up", ""), + }) + monkeypatch.setattr(jupynotex, 'Notebook', fake_notebook) + + main('boguspath', '1') + expected = textwrap.dedent("""\ + \\begin{tcolorbox}[title=Cell {01}] + test cell content up + \\end{tcolorbox} + """) + assert expected == capsys.readouterr().out + + +def test_simple_error(monkeypatch, capsys): + fake_notebook = FakeNotebook({ + 1: ValueError("test problem"), + }) + monkeypatch.setattr(jupynotex, 'Notebook', fake_notebook) + + main('boguspath', '1') + + # verify the beginning and the end, as the middle part is specific to the environment + # where the test runs + expected_ini = [ + r"\begin{tcolorbox}[colback=red!5!white,colframe=red!75!,title={ERROR when parsing cell 1}]", # NOQA + r"\begin{verbatim}", + r"Traceback (most recent call last):", + ] + expected_end = [ + r"ValueError: test problem", + r"\end{verbatim}", + r"\end{tcolorbox}", + ] + out = [line for line in capsys.readouterr().out.split('\n') if line] + assert expected_ini == out[:3] + assert expected_end == out[-3:] + + +def test_multiple(monkeypatch, capsys): + fake_notebook = FakeNotebook({ + 1: ("test cell content up", "test cell content down"), + 2: ("test cell content ONLY up", ""), + }) + monkeypatch.setattr(jupynotex, 'Notebook', fake_notebook) + + main('boguspath', '1-2') + expected = textwrap.dedent("""\ + \\begin{tcolorbox}[title=Cell {01}] + test cell content up + \\tcblower + test cell content down + \\end{tcolorbox} + \\begin{tcolorbox}[title=Cell {02}] + test cell content ONLY up + \\end{tcolorbox} + """) + assert expected == capsys.readouterr().out |