1
0
Fork 0

dev-vcs/dandi-cli: new version

Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Horea Christian <chr@chymera.eu>
This commit is contained in:
Horea Christian 2021-10-14 17:29:36 -04:00
parent b6e6f7c3c1
commit a5f3c42073
No known key found for this signature in database
GPG Key ID: 161C0BE6255333D3
5 changed files with 307 additions and 11 deletions

View File

@ -1,11 +1,6 @@
11 Oct 2021; <chymera@gentoo.org> 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; <chymera@gentoo.org> +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; <chymera@gentoo.org> +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

View File

@ -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

View File

@ -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}"
}

View File

@ -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}"
}

View File

@ -0,0 +1,228 @@
From 2d273cd96c4512c768cfe398dd2e3b0973afa243 Mon Sep 17 00:00:00 2001
From: "John T. Wodder II" <git@varonathe.org>
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