From 53844f4b508e48d7f97f9ac4c4c854d8b7fe65d1 Mon Sep 17 00:00:00 2001 From: Philippe ENTZMANN Date: Sun, 28 Jan 2018 21:23:29 +0100 Subject: [PATCH 1/5] Test countries --- .gitignore | 4 +-- Dockerfile | 8 +++++ simple_template.odt | Bin 36950 -> 0 bytes tests/README.md | 35 +++++++++++++++++++ tests/simple_template.odt | Bin 0 -> 17789 bytes tests/test_countries.odt | Bin 0 -> 17375 bytes test_secretary.py => tests/test_secretary.py | 0 tests/tools.py | 14 ++++++++ 8 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 Dockerfile delete mode 100644 simple_template.odt create mode 100644 tests/README.md create mode 100644 tests/simple_template.odt create mode 100644 tests/test_countries.odt rename test_secretary.py => tests/test_secretary.py (100%) create mode 100644 tests/tools.py diff --git a/.gitignore b/.gitignore index e1e7a78..866b157 100644 --- a/.gitignore +++ b/.gitignore @@ -3,11 +3,11 @@ *.*~ *.egg *.egg-info -*.odt +/*.odt *.txt .tox .cache .vscode dist build -eggs \ No newline at end of file +eggs diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6c61dc1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.6.4 + +RUN pip install \ + pytest==3.3.2 + +COPY ./* /opt/secretary/ + +RUN pip install -e /opt/secretary diff --git a/simple_template.odt b/simple_template.odt deleted file mode 100644 index e30eb6efe42f75e1a229f79a201e878cef0b25fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36950 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 +pytest + + +## Docker image + +You can also build a docker image dedicated to your tests : + +
+docker build -t phe/secretary .
+
+ +Then you can run the tests in a container : + +
+docker run -ti \
+  -v $PWD:/opt/secretary \
+  -e "PYTHONPATH=/opt" \
+  -w /opt/secretary \
+  phe/secretary pytest -v
+
+ +For special need, you may prefer to run a shell : + +
+docker run -ti \
+  -v $PWD:/opt/secretary \
+  -e "PYTHONPATH=/opt" \
+  -w /opt/secretary \
+  phe/secretary /bin/bash
+
diff --git a/tests/simple_template.odt b/tests/simple_template.odt new file mode 100644 index 0000000000000000000000000000000000000000..59be5a6f92cd188d8f284065e24c0f835312f980 GIT binary patch literal 17789 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 literal 0 HcmV?d00001 diff --git a/test_secretary.py b/tests/test_secretary.py similarity index 100% rename from test_secretary.py rename to tests/test_secretary.py diff --git a/tests/tools.py b/tests/tools.py new file mode 100644 index 0000000..2eec2ba --- /dev/null +++ b/tests/tools.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +import os + +def relative_path(rel_path) : + '''Give a full path relative to this file''' + return os.path.join(os.path.dirname(__file__), rel_path) + + +def compare_odt_files(file1, file2): + '''Compare two LibreOffice odt file + returns True if they are equal + ''' + #TODO: check content + assert True From 4c10f6b6e32a47cc162bac98fe73901caad5ab15 Mon Sep 17 00:00:00 2001 From: Raffi Enficiaud Date: Mon, 28 Mar 2022 11:32:26 +0200 Subject: [PATCH 2/5] Updates for Jinja2 >= 3.1.x * importing Markup from MarkupSafe * replacing evalcontextfilter by pass_eval_context * making the dependency explicit --- secretary.py | 5 +++-- setup.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/secretary.py b/secretary.py index ffad3d5..71c62f5 100644 --- a/secretary.py +++ b/secretary.py @@ -35,7 +35,8 @@ from uuid import uuid4 from xml.dom.minidom import parseString from xml.parsers.expat import ExpatError, ErrorString -from jinja2 import Environment, Undefined, Markup +from jinja2 import Environment, Undefined +from markupsafe import Markup PY2 = sys.version_info < (3, 0) @@ -148,7 +149,7 @@ def __init__(self, environment=None, **kwargs): self._compile_tags_expressions() - @jinja2.evalcontextfilter + @jinja2.pass_eval_context def finalize_value(self, value, *args): """Escapes variables values.""" if isinstance(value, Markup): diff --git a/setup.py b/setup.py index 4cea733..45de881 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ def run_tests(self): py_modules=['secretary', 'markdown_map'], platforms='any', install_requires=[ - 'Jinja2', 'markdown2' + 'Jinja2', 'markdown2', 'MarkupSafe' ], tests_require=['pytest'], cmdclass={'test': PyTest}, From 9b45947da5a28c6f3cc439a5ffed3d511d595796 Mon Sep 17 00:00:00 2001 From: Jan Breuer Date: Tue, 17 May 2022 17:35:17 +0200 Subject: [PATCH 3/5] Convert explicit jinja2.Markup to just Markup --- secretary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/secretary.py b/secretary.py index 71c62f5..1fb388f 100644 --- a/secretary.py +++ b/secretary.py @@ -142,7 +142,7 @@ def __init__(self, environment=None, **kwargs): self.environment.filters['pad'] = pad_string self.environment.filters['markdown'] = self.markdown_filter self.environment.filters['image'] = self.image_filter - self.environment.globals['SafeValue'] = jinja2.Markup + self.environment.globals['SafeValue'] = Markup self.media_path = kwargs.pop('media_path', '') self.media_callback = self.fs_loader From 280033090033a04da3bb7bf9c04a6c7fb3a196d9 Mon Sep 17 00:00:00 2001 From: Jan Breuer Date: Tue, 17 May 2022 17:38:41 +0200 Subject: [PATCH 4/5] Require Jinja2>=3 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 45de881..090eed2 100644 --- a/setup.py +++ b/setup.py @@ -36,7 +36,7 @@ def run_tests(self): py_modules=['secretary', 'markdown_map'], platforms='any', install_requires=[ - 'Jinja2', 'markdown2', 'MarkupSafe' + 'Jinja2>=3', 'markdown2', 'MarkupSafe' ], tests_require=['pytest'], cmdclass={'test': PyTest}, From 431b6b9587d11640e790f88293feb07417ae07bf Mon Sep 17 00:00:00 2001 From: Jan Breuer Date: Wed, 22 Jun 2022 19:42:55 +0200 Subject: [PATCH 5/5] Remove unneeded eval context injection --- secretary.py | 1 - 1 file changed, 1 deletion(-) diff --git a/secretary.py b/secretary.py index 1fb388f..8ad9556 100644 --- a/secretary.py +++ b/secretary.py @@ -149,7 +149,6 @@ def __init__(self, environment=None, **kwargs): self._compile_tags_expressions() - @jinja2.pass_eval_context def finalize_value(self, value, *args): """Escapes variables values.""" if isinstance(value, Markup):