From 0bfe843e50c7bcce190613adc5e0082086f041ef Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson <oscar.gustafsson@gmail.com> Date: Mon, 23 Jan 2023 12:45:04 +0100 Subject: [PATCH] Add image tests --- .gitlab-ci.yml | 4 ++-- b_asic/schedule.py | 5 ++++- .../test__get_figure_no_execution_times.png | Bin 0 -> 25892 bytes test/test_schedule.py | 6 ++++++ 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 test/baseline/test__get_figure_no_execution_times.png diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 95e9f28f..5da3c2d7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,7 +7,7 @@ before_script: - apt-get install --yes build-essential cmake libfmt-dev pybind11-dev graphviz python3-pyqt5 xvfb xdg-utils lcov - python -m pip install --upgrade pip - python --version - - pip install pytest pytest-cov sphinx furo numpydoc pytest-xvfb pytest-qt setuptools_scm sphinx-qt-documentation pytest-xdist + - pip install pytest pytest-cov sphinx furo numpydoc pytest-xvfb pytest-qt setuptools_scm sphinx-qt-documentation pytest-xdist pytest-mpl # - export CXXFLAGS='--coverage' - pip install -ve . # Move file, but should be handled by installation @@ -17,7 +17,7 @@ before_script: .run-test: stage: test script: - - pytest --cov=b_asic --cov-report=xml:cov.xml --cov-report=term --color=yes test + - pytest --cov=b_asic --cov-report=xml:cov.xml --cov-report=term --color=yes test --mpl # - lcov --capture --directory . --output-file coverage.info # - lcov --output-file coverage.info --extract coverage.info $PWD/src/'*' $PWD/b_asic/'*' # - lcov --list coverage.info diff --git a/b_asic/schedule.py b/b_asic/schedule.py index 3bc6489b..c9312cc5 100644 --- a/b_asic/schedule.py +++ b/b_asic/schedule.py @@ -563,9 +563,12 @@ class Schedule: ) def plot_schedule(self) -> None: + self._get_figure().show() + + def _get_figure(self): fig, ax = plt.subplots() self._plot_schedule(ax) - fig.show() + return fig def _repr_svg_(self): fig, ax = plt.subplots() diff --git a/test/baseline/test__get_figure_no_execution_times.png b/test/baseline/test__get_figure_no_execution_times.png new file mode 100644 index 0000000000000000000000000000000000000000..10b2a22210ca0ceb3525263a9a8a6544c6b4a8ae GIT binary patch literal 25892 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 literal 0 HcmV?d00001 diff --git a/test/test_schedule.py b/test/test_schedule.py index b4a1ffa3..6678cfeb 100644 --- a/test/test_schedule.py +++ b/test/test_schedule.py @@ -467,3 +467,9 @@ class TestProcesses: def test__get_memory_variables_list(self, secondorder_iir_schedule): mvl = secondorder_iir_schedule._get_memory_variables_list() assert len(mvl) == 12 + + +class TestFigureGeneration: + @pytest.mark.mpl_image_compare(remove_text=True, style='mpl20') + def test__get_figure_no_execution_times(self, secondorder_iir_schedule): + return secondorder_iir_schedule._get_figure() -- GitLab