From a5f3c42073928242b7725e943384e93bb80e1c9c Mon Sep 17 00:00:00 2001 From: Horea Christian Date: Thu, 14 Oct 2021 17:29:36 -0400 Subject: [PATCH] dev-vcs/dandi-cli: new version Package-Manager: Portage-3.0.28, Repoman-3.0.3 Signed-off-by: Horea Christian --- dev-vcs/dandi-cli/ChangeLog | 15 +- dev-vcs/dandi-cli/Manifest | 1 + dev-vcs/dandi-cli/dandi-cli-0.28.0.ebuild | 3 +- dev-vcs/dandi-cli/dandi-cli-0.30.3.ebuild | 71 ++++++ .../dandi-cli-0.28.0-test_nonetwork.patch | 228 ++++++++++++++++++ 5 files changed, 307 insertions(+), 11 deletions(-) create mode 100644 dev-vcs/dandi-cli/dandi-cli-0.30.3.ebuild create mode 100644 dev-vcs/dandi-cli/files/dandi-cli-0.28.0-test_nonetwork.patch diff --git a/dev-vcs/dandi-cli/ChangeLog b/dev-vcs/dandi-cli/ChangeLog index 34e2f86..01b940e 100644 --- a/dev-vcs/dandi-cli/ChangeLog +++ b/dev-vcs/dandi-cli/ChangeLog @@ -1,11 +1,6 @@ - 11 Oct 2021; dandi-cli-0.28.0.ebuild: - dev-vcs/dandi-cli: added dep and ammended test suite +*dandi-cli-0.30.3 (14 Oct 2021) -*dandi-cli-0.28.0 (06 Oct 2021) - - 06 Oct 2021; +dandi-cli-0.28.0.ebuild, - +files/dandi-cli-0.27.2-no-etelemetry.patch, - +files/dandi-cli-0.27.2-pip-versioncheck.patch, - +files/dandi-cli-0.28.0-pip-versioncheck.patch, -ChangeLog, - dandi-cli-0.27.2.ebuild, metadata.xml: - dev-vcs/dandi-cli: added etelemetry support + 14 Oct 2021; +dandi-cli-0.30.3.ebuild, + +files/dandi-cli-0.28.0-test_nonetwork.patch, -ChangeLog, + dandi-cli-0.28.0.ebuild: + dev-vcs/dandi-cli: new version diff --git a/dev-vcs/dandi-cli/Manifest b/dev-vcs/dandi-cli/Manifest index 9a917cc..c801b8b 100644 --- a/dev-vcs/dandi-cli/Manifest +++ b/dev-vcs/dandi-cli/Manifest @@ -1,2 +1,3 @@ DIST dandi-cli-0.27.2.tar.gz 172781 SHA256 179bbe77be65272932f6e1fc133b043eb94449847155fde3c45455c30b6cbdcc SHA512 00c522a1f5c922e6a38e257defbb02a03480156d61bcf80de3326131533a5cc332771ea05e2a995d7ace71b0ba551151d4ec3d3f4456197cb358133d3aa3fe89 WHIRLPOOL bf059cad4f8a9988a783d0001a68ebec8d480f3188f756af720aa5f0e32002e8301a3f98b2e0c492bb3be07f39959839e8b67c5544c0a3e18e757332a6bdb70c DIST dandi-cli-0.28.0.tar.gz 173403 SHA256 27b67c93a8625dd15db2e3513ae3448569ccade2dc82eb1f110de5b1c02b5ec3 SHA512 399ee378798a3c7fdc92314dca25e91178bb157145205e43a1d2ec461f36c674ed1b63b97f805ab9d25eb30d18d82827e38024b8a72c691c3992af60fc286be3 WHIRLPOOL 3381c9f7f0c7c5263bb2a8019205a44d0b6084fc9719034462ea7d66f0f23a617dfc3468676102f931444b4b43b788e8c7c65615ebae5f30c635d51badbaf92a +DIST dandi-cli-0.30.3.tar.gz 175911 SHA256 ed218df35ee69f6d06fd6c70fe69226aaf6d3231f8b58abdd1b9fd1477350c44 SHA512 11e73a5acaa05bb2d0287e25e1e25226474f5b076ac58e9bedcb1608e6a509d113960a1d6dfe1b665d99d14d6b4b51f65eb85c38a4f9eba0ddb5492f1890cf96 WHIRLPOOL f12b8c0eada3b6ddf373301e8cfd1b1c1c4339d4ee59fe37b730eb7c91a4c031660da422316c007ce5445d2ab90c83242921cc417dad43c66bad814031811946 diff --git a/dev-vcs/dandi-cli/dandi-cli-0.28.0.ebuild b/dev-vcs/dandi-cli/dandi-cli-0.28.0.ebuild index fb43db4..4ed57a1 100644 --- a/dev-vcs/dandi-cli/dandi-cli-0.28.0.ebuild +++ b/dev-vcs/dandi-cli/dandi-cli-0.28.0.ebuild @@ -56,6 +56,7 @@ distutils_enable_tests pytest PATCHES=( "${FILESDIR}/${P}-pip-versioncheck.patch" + "${FILESDIR}/${P}-test_nonetwork.patch" ) src_prepare() { @@ -67,5 +68,5 @@ src_prepare() { python_test() { export DANDI_TESTS_NONETWORK=1 - DANDI_TESTS_NONETWORK=1 ${EPYTHON} -m pytest -vv || die "Tests failed with ${EPYTHON}" + ${EPYTHON} -m pytest -vv || die "Tests failed with ${EPYTHON}" } diff --git a/dev-vcs/dandi-cli/dandi-cli-0.30.3.ebuild b/dev-vcs/dandi-cli/dandi-cli-0.30.3.ebuild new file mode 100644 index 0000000..b7b797c --- /dev/null +++ b/dev-vcs/dandi-cli/dandi-cli-0.30.3.ebuild @@ -0,0 +1,71 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{8..10} ) +inherit distutils-r1 + +DESCRIPTION="DANDI command line client to facilitate common operations" +HOMEPAGE="https://github.com/dandi/dandi-cli" +SRC_URI="https://github.com/dandi/dandi-cli/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="test +etelemetry" +#RESTRICT="test" +# Test fail during collection, reported upstream: https://github.com/dandi/dandi-cli/issues/774 + +RDEPEND=" + dev-python/appdirs[${PYTHON_USEDEP}] + dev-python/click[${PYTHON_USEDEP}] + dev-python/click-didyoumean[${PYTHON_USEDEP}] + =dev-python/dandischema-0.4*[${PYTHON_USEDEP}] + dev-python/fasteners[${PYTHON_USEDEP}] + dev-python/fscacher[${PYTHON_USEDEP}] + dev-python/humanize[${PYTHON_USEDEP}] + dev-python/joblib[${PYTHON_USEDEP}] + dev-python/keyring[${PYTHON_USEDEP}] + dev-python/keyrings_alt[${PYTHON_USEDEP}] + dev-python/packaging[${PYTHON_USEDEP}] + dev-python/pycryptodomex[${PYTHON_USEDEP}] + dev-python/pydantic[${PYTHON_USEDEP}] + dev-python/pynwb[${PYTHON_USEDEP}] + dev-python/pyout[${PYTHON_USEDEP}] + dev-python/python-dateutil[${PYTHON_USEDEP}] + dev-python/requests[${PYTHON_USEDEP}] + dev-python/ruamel-yaml[${PYTHON_USEDEP}] + dev-python/semantic_version[${PYTHON_USEDEP}] + dev-python/tenacity[${PYTHON_USEDEP}] + dev-python/tqdm[${PYTHON_USEDEP}] + dev-python/wheel[${PYTHON_USEDEP}] +" + +DEPEND=" + dev-python/setuptools[${PYTHON_USEDEP}] + test? ( + dev-python/anys[${PYTHON_USEDEP}] + dev-python/responses[${PYTHON_USEDEP}] + dev-python/pyfakefs[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + ) +" + +distutils_enable_tests pytest + +PATCHES=( + "${FILESDIR}/${PN}-0.28.0-pip-versioncheck.patch" +) + +src_prepare() { + if ! use etelemetry; then + eapply "${FILESDIR}/${PN}-0.27.2-no-etelemetry.patch" + fi + default +} + +python_test() { + export DANDI_TESTS_NONETWORK=1 + ${EPYTHON} -m pytest -vv || die "Tests failed with ${EPYTHON}" +} diff --git a/dev-vcs/dandi-cli/files/dandi-cli-0.28.0-test_nonetwork.patch b/dev-vcs/dandi-cli/files/dandi-cli-0.28.0-test_nonetwork.patch new file mode 100644 index 0000000..7420b0b --- /dev/null +++ b/dev-vcs/dandi-cli/files/dandi-cli-0.28.0-test_nonetwork.patch @@ -0,0 +1,228 @@ +From 2d273cd96c4512c768cfe398dd2e3b0973afa243 Mon Sep 17 00:00:00 2001 +From: "John T. Wodder II" +Date: Mon, 11 Oct 2021 09:23:57 -0400 +Subject: [PATCH] Apply "skipif_no_network" to all relevant tests + +--- + dandi/cli/tests/test_ls.py | 5 +++++ + dandi/tests/fixtures.py | 5 ++--- + dandi/tests/skip.py | 5 +++++ + dandi/tests/test_dandiapi.py | 4 ++++ + dandi/tests/test_dandiarchive.py | 3 ++- + dandi/tests/test_download.py | 5 +++++ + dandi/tests/test_utils.py | 5 ++--- + tox.ini | 1 + + 8 files changed, 26 insertions(+), 7 deletions(-) + +diff --git a/dandi/cli/tests/test_ls.py b/dandi/cli/tests/test_ls.py +index b6d6ddf2..35f963ea 100644 +--- a/dandi/cli/tests/test_ls.py ++++ b/dandi/cli/tests/test_ls.py +@@ -5,6 +5,8 @@ + from dandischema.consts import DANDI_SCHEMA_VERSION + import pytest + ++from dandi.tests.skip import mark ++ + from ..command import ls + from ...utils import yaml_load + +@@ -46,6 +48,7 @@ def load(s): + assert metadata[f] == simple1_nwb_metadata[f] + + ++@mark.skipif_no_network + def test_ls_dandiset_url(): + r = CliRunner().invoke( + ls, ["-f", "yaml", "https://api.dandiarchive.org/api/dandisets/000027"] +@@ -56,6 +59,7 @@ def test_ls_dandiset_url(): + assert data[0]["path"] == "000027" + + ++@mark.skipif_no_network + def test_ls_dandiset_url_recursive(): + r = CliRunner().invoke( + ls, ["-f", "yaml", "-r", "https://api.dandiarchive.org/api/dandisets/000027"] +@@ -67,6 +71,7 @@ def test_ls_dandiset_url_recursive(): + assert data[1]["path"] == "sub-RAT123/sub-RAT123.nwb" + + ++@mark.skipif_no_network + def test_ls_path_url(): + r = CliRunner().invoke( + ls, +diff --git a/dandi/tests/fixtures.py b/dandi/tests/fixtures.py +index 41dfd05a..d667b750 100644 +--- a/dandi/tests/fixtures.py ++++ b/dandi/tests/fixtures.py +@@ -126,9 +126,8 @@ def get_gitrepo_fixture(url, committish=None, scope="session"): + + @pytest.fixture(scope=scope) + def fixture(): +- # TODO: adapt reproman.tests.skip collection of skipif conditions +- # skipif.no_network() +- # skipif.no_git() ++ skipif.no_network() ++ skipif.no_git() + + path = tempfile.mktemp() # not using pytest's tmpdir fixture to not + # collide in different scopes etc. But we +diff --git a/dandi/tests/skip.py b/dandi/tests/skip.py +index 5fbc8cae..7fed7583 100644 +--- a/dandi/tests/skip.py ++++ b/dandi/tests/skip.py +@@ -121,6 +121,10 @@ def is_engine_running(): + return "docker engine not running", not is_engine_running() + + ++def no_git(): ++ return "Git not installed", shutil.which("git") is None ++ ++ + # ### END MODIFIED CODE + + +@@ -157,6 +161,7 @@ def on_windows(): + # no_docker_dependencies, + no_docker_commands, + no_docker_engine, ++ no_git, + no_network, + # no_singularity, + no_ssh, +diff --git a/dandi/tests/test_dandiapi.py b/dandi/tests/test_dandiapi.py +index 49344700..03e092fa 100644 +--- a/dandi/tests/test_dandiapi.py ++++ b/dandi/tests/test_dandiapi.py +@@ -13,6 +13,7 @@ + import pytest + import responses + ++from .skip import mark + from .. import dandiapi + from ..consts import ( + DRAFT, +@@ -279,6 +280,7 @@ def test_authenticate_bad_key_keyring_good_key_input( + confirm_mock.assert_called_once_with("API key is invalid; enter another?") + + ++@mark.skipif_no_network + def test_get_content_url(tmp_path): + with DandiAPIClient.for_dandi_instance("dandi") as client: + asset = client.get_dandiset("000027", "draft").get_asset_by_path( +@@ -297,6 +299,7 @@ def test_get_content_url(tmp_path): + fp.write(chunk) + + ++@mark.skipif_no_network + def test_get_content_url_regex(tmp_path): + with DandiAPIClient.for_dandi_instance("dandi") as client: + asset = client.get_dandiset("000027", "draft").get_asset_by_path( +@@ -309,6 +312,7 @@ def test_get_content_url_regex(tmp_path): + fp.write(chunk) + + ++@mark.skipif_no_network + def test_get_content_url_follow_one_redirects_strip_query(): + with DandiAPIClient.for_dandi_instance("dandi") as client: + asset = client.get_dandiset("000027", "draft").get_asset_by_path( +diff --git a/dandi/tests/test_dandiarchive.py b/dandi/tests/test_dandiarchive.py +index 25da881c..9969a85e 100644 +--- a/dandi/tests/test_dandiarchive.py ++++ b/dandi/tests/test_dandiarchive.py +@@ -100,13 +100,14 @@ + version_id="draft", + ), + ), +- ( ++ pytest.param( + "DANDI:000027", + DandisetURL( + api_url=known_instances["dandi"].api, + dandiset_id="000027", + version_id="draft", # TODO: why not None? + ), ++ marks=mark.skipif_no_network, + ), + ( + "http://localhost:8000/api/dandisets/000002/versions/draft", +diff --git a/dandi/tests/test_download.py b/dandi/tests/test_download.py +index 2ae12623..f8b9eab5 100644 +--- a/dandi/tests/test_download.py ++++ b/dandi/tests/test_download.py +@@ -6,6 +6,7 @@ + + import pytest + ++from .skip import mark + from ..consts import DRAFT + from ..download import download + from ..utils import find_files +@@ -13,6 +14,7 @@ + + # both urls point to 000027 (lean test dataset), and both draft and "released" + # version have only a single file ATM ++@mark.skipif_no_network + @pytest.mark.parametrize( + "url", + [ # Should go through API +@@ -48,6 +50,7 @@ def test_download_000027(url, tmpdir): + download(url, tmpdir, existing="refresh") # TODO: check that skipped (the same) + + ++@mark.skipif_no_network + @pytest.mark.parametrize( + "url", + [ # Should go through API +@@ -64,6 +67,7 @@ def test_download_000027_metadata_only(url, tmpdir): + assert sorted(downloads) == ["dandiset.yaml"] + + ++@mark.skipif_no_network + @pytest.mark.parametrize( + "url", + [ # Should go through API +@@ -80,6 +84,7 @@ def test_download_000027_assets_only(url, tmpdir): + assert sorted(downloads) == ["sub-RAT123", op.join("sub-RAT123", "sub-RAT123.nwb")] + + ++@mark.skipif_no_network + @pytest.mark.parametrize("resizer", [lambda sz: 0, lambda sz: sz // 2, lambda sz: sz]) + @pytest.mark.parametrize("version", ["0.210831.2033", DRAFT]) + def test_download_000027_resume(tmp_path, resizer, version): +diff --git a/dandi/tests/test_utils.py b/dandi/tests/test_utils.py +index 79973640..8e418d0f 100644 +--- a/dandi/tests/test_utils.py ++++ b/dandi/tests/test_utils.py +@@ -8,6 +8,7 @@ + import responses + from semantic_version import Version + ++from .skip import mark + from .. import __version__ + from ..consts import DandiInstance, known_instances + from ..exceptions import BadCliVersionError, CliVersionTooOldError +@@ -325,9 +326,7 @@ def test_get_instance_actual_dandi(): + if "DANDI_REDIRECTOR_BASE" in os.environ: + using_docker = pytest.mark.usefixtures("local_dandi_api") + else: +- +- def using_docker(f): +- return f ++ using_docker = mark.skipif_no_network + + + @pytest.mark.redirector +diff --git a/tox.ini b/tox.ini +index 132d89fd..5393d761 100644 +--- a/tox.ini ++++ b/tox.ini +@@ -4,6 +4,7 @@ envlist = lint,py3 + [testenv] + setenv = + DANDI_ALLOW_LOCALHOST_URLS=1 ++passenv = DANDI_* + extras = test + commands = + # Using pytest-cov instead of using coverage directly leaves a bunch of +