From 1a603f8fdea89bbf5e0cfe703c73a6fba0952ba6 Mon Sep 17 00:00:00 2001 From: "Daniel G. Krakowczyk" Date: Tue, 10 Oct 2023 14:02:26 +0200 Subject: [PATCH] tests: Add integration tests for public datasets (#591) --- .../public_dataset_processing_test.py | 52 +++++++++++++++++++ tox.ini | 14 +++++ 2 files changed, 66 insertions(+) create mode 100644 tests/integration/public_dataset_processing_test.py diff --git a/tests/integration/public_dataset_processing_test.py b/tests/integration/public_dataset_processing_test.py new file mode 100644 index 000000000..35912ee95 --- /dev/null +++ b/tests/integration/public_dataset_processing_test.py @@ -0,0 +1,52 @@ +# Copyright (c) 2023 The pymovements Project Authors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +"""Test basic preprocessing on all registered public datasets.""" +import shutil + +import pytest + +import pymovements as pm + + +@pytest.mark.parametrize( + 'dataset_name', + list(pm.dataset.DatasetLibrary.definitions.keys()), +) +def test_public_dataset_processing(dataset_name, tmp_path): + # Initialize dataset. + dataset_path = tmp_path / dataset_name + dataset = pm.Dataset(dataset_name, path=dataset_path) + + # Download and load in dataset. + dataset.download() + dataset.load() + + # Do some basic transformations. + if 'pixel' in dataset.gaze[0].columns: + dataset.pix2deg() + dataset.pos2vel() + dataset.pos2acc() + + for gaze in dataset.gaze: + assert 'position' in gaze.columns + assert 'velocity' in gaze.columns + assert 'acceleration' in gaze.columns + + shutil.rmtree(dataset_path, ignore_errors=True) diff --git a/tox.ini b/tox.ini index 0b37459a8..6feaa0fb0 100644 --- a/tox.ini +++ b/tox.ini @@ -7,6 +7,8 @@ envlist = py311 docs coverage + integration + pylint [testenv] @@ -16,6 +18,7 @@ setenv = COVERAGE_FILE = .coverage.{envname} commands = pytest \ + --ignore=tests/integration \ --tb=long \ --cov --cov-append \ --cov-report term-missing \ @@ -52,6 +55,17 @@ commands = {posargs} +[testenv:integration] +deps = + .[test] +commands = + pytest \ + -v \ + --tb=long \ + tests/integration + {posargs:.} + + [testenv:pylint] deps = pylint