summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürgen Gmach <juergen.gmach@googlemail.com>2021-04-12 11:04:14 +0200
committerJürgen Gmach <juergen.gmach@googlemail.com>2021-04-12 11:06:00 +0200
commit5e328edf054132bc70caf636d7fa33ae5b66570e (patch)
treee0d0f910c3a0c0e76031db7d6b2097c8ab20dff5
parent368ce4dd11d840af8ccdf4d86838d44db2543023 (diff)
downloadtox-git-issue_2018.tar.gz
Fix regex validation for SHA 512 hashesissue_2018
The regex searched for `521` instead of `512`. Closes #2018
-rw-r--r--docs/changelog/2018.bugfix.rst1
-rw-r--r--src/tox/tox_env/python/pip/req/args.py2
-rw-r--r--tests/tox_env/python/pip/req/test_file.py10
3 files changed, 12 insertions, 1 deletions
diff --git a/docs/changelog/2018.bugfix.rst b/docs/changelog/2018.bugfix.rst
new file mode 100644
index 00000000..42850dc7
--- /dev/null
+++ b/docs/changelog/2018.bugfix.rst
@@ -0,0 +1 @@
+Fix regex validation for SHA 512 hashes - by :user:`jugmac00`.
diff --git a/src/tox/tox_env/python/pip/req/args.py b/src/tox/tox_env/python/pip/req/args.py
index 808197e9..bef43622 100644
--- a/src/tox/tox_env/python/pip/req/args.py
+++ b/src/tox/tox_env/python/pip/req/args.py
@@ -49,7 +49,7 @@ def _req_options(parser: ArgumentParser, cli_only: bool) -> None:
parser.add_argument("--hash", action=AddSortedUniqueAction, type=_validate_hash)
-_HASH = re.compile(r"sha(256:[a-z0-9]{64}|384:[a-z0-9]{96}|521:[a-z0-9]{128})")
+_HASH = re.compile(r"sha(256:[a-z0-9]{64}|384:[a-z0-9]{96}|512:[a-z0-9]{128})")
def _validate_hash(value: str) -> str:
diff --git a/tests/tox_env/python/pip/req/test_file.py b/tests/tox_env/python/pip/req/test_file.py
index b6d65f6c..f991236f 100644
--- a/tests/tox_env/python/pip/req/test_file.py
+++ b/tests/tox_env/python/pip/req/test_file.py
@@ -196,6 +196,16 @@ from tox.tox_env.python.pip.req.file import ParsedRequirement, RequirementsFile
],
id="hash with escaped newline",
),
+ pytest.param(
+ "attrs --hash=sha512:7a91e5a3d1a1238525e477385ef5ee6cecdc8f8fcc2a79d1b35a9f57ad15c814"
+ "dada670026f41fdd62e5e10b3fd75d6112704a9521c3df105f0b6f3bb11b128a",
+ {},
+ [
+ "attrs --hash sha512:7a91e5a3d1a1238525e477385ef5ee6cecdc8f8fcc2a79d1b35a9f57ad15c814"
+ "dada670026f41fdd62e5e10b3fd75d6112704a9521c3df105f0b6f3bb11b128a"
+ ],
+ id="sha512 hash is supported",
+ ),
],
)
def test_req_file(tmp_path: Path, req: str, opts: Dict[str, Any], requirements: List[str]) -> None: