diff --git a/.circleci/config.yml b/.circleci/config.yml index 5be77c7..244ff1a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,8 +18,8 @@ jobs: name: install python dependencies command: pip install -r requirements.txt && pip install pytest pytest-xdist - run: - name: pytest - command: pytest -W ignore::FutureWarning -W ignore::DeprecationWarning -vv --forked + name: run tests + command: make test - save_cache: key: models-{{ checksum "spleeter/model/__init__.py" }} paths: @@ -42,8 +42,8 @@ jobs: name: install python dependencies command: pip install -r requirements.txt && pip install pytest pytest-xdist - run: - name: pytest - command: pytest -W ignore::FutureWarning -W ignore::DeprecationWarning -vv --forked + name: run tests + command: make test - save_cache: key: models-{{ checksum "spleeter/model/__init__.py" }} paths: @@ -57,8 +57,8 @@ jobs: steps: - checkout - run: - name: package - command: python setup.py sdist + name: package source distribution + command: make build - save_cache: key: sdist-{{ .Branch }}-{{ checksum "setup.py" }} paths: @@ -78,7 +78,7 @@ jobs: # TODO: Infer destination regarding of branch. # - master => production PyPi # - development => testing PyPi - command: pip install twine && twine upload dist/* + command: make deploy # ======================================================================================= # Conda distribution. diff --git a/Makefile b/Makefile index 989f5ce..c2019ce 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # ======================================================= -# Build script for distribution packaging. +# Library lifecycle management. # # @author Deezer Research # @licence MIT Licence @@ -9,22 +9,29 @@ clean: rm -Rf *.egg-info rm -Rf dist + build: @echo "=== Build CPU bdist package" - @python3 setup.py sdist + python3 setup.py sdist @echo "=== CPU version checksum" @openssl sha256 dist/*.tar.gz build-gpu: @echo "=== Build GPU bdist package" - @python3 setup.py sdist --target gpu + python3 setup.py sdist --target gpu @echo "=== GPU version checksum" @openssl sha256 dist/*.tar.gz -upload: +pip-dependencies: + pip install twine + +test: pip-dependencies + pytest -W ignore::FutureWarning -W ignore::DeprecationWarning -vv --forked + +test-distribution: pip-dependencies + bash tests/test_pypi_sdist.sh + +deploy: pip-dependencies twine upload dist/* -test-upload: - twine upload --repository-url https://test.pypi.org/legacy/ dist/* - -all: clean build build-gpu upload \ No newline at end of file +all: clean test build build-gpu upload diff --git a/tests/test_pypi_sdist.sh b/tests/test_pypi_sdist.sh new file mode 100644 index 0000000..c514062 --- /dev/null +++ b/tests/test_pypi_sdist.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +###################################################################### +# Script that performs PyPi packaging test. +# +# @author Deezer Research +# @version 1.0.0 +###################################################################### + + twine upload --repository-url https://test.pypi.org/legacy/ dist/* \ No newline at end of file diff --git a/tests/test_separator.py b/tests/test_separator.py index 54c9c18..c570e64 100644 --- a/tests/test_separator.py +++ b/tests/test_separator.py @@ -7,6 +7,8 @@ __email__ = 'research@deezer.com' __author__ = 'Deezer Research' __license__ = 'MIT License' +import filecmp + from os.path import exists, join from tempfile import TemporaryDirectory @@ -33,6 +35,12 @@ def test_separate(configuration, instruments): assert len(prediction) == len(instruments) for instrument in instruments: assert instrument in prediction + for instrument in instruments: + track = prediction[instrument] + assert not (waveform == track).all() + for compared in instruments: + if instrument != compared: + assert not (track == prediction[compared]).all() @pytest.mark.parametrize('configuration, instruments', TEST_CONFIGURATIONS) @@ -45,4 +53,9 @@ def test_separate_to_file(configuration, instruments): directory) for instrument in instruments: assert exists(join(directory, '{}.wav'.format(instrument))) - # TODO: Consider testing generated file as well. + for instrument in instruments: + for compared in instrument: + if instrument != compared: + assert not filecmp.cmp( + join(directory, '{}.wav'.format(instrument)), + join(directory, '{}.wav'.format(compared)))