From d911e713bc4a8b6b8347d7781576f7f0e8a98b59 Mon Sep 17 00:00:00 2001 From: Christos Gkoutzigiannis Date: Mon, 9 May 2022 02:37:24 +0300 Subject: [PATCH 1/3] fixed not sorted hashes in requirements.txt export --- src/poetry_plugin_export/exporter.py | 2 +- tests/test_exporter.py | 48 ++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/poetry_plugin_export/exporter.py b/src/poetry_plugin_export/exporter.py index a70dbb9..6897430 100644 --- a/src/poetry_plugin_export/exporter.py +++ b/src/poetry_plugin_export/exporter.py @@ -155,7 +155,7 @@ def _export_requirements_txt(self, cwd: Path, output: IO | str) -> None: continue hashes.append(f"{algorithm}:{h}") - + hashes.sort() for h in hashes: line += f" \\\n --hash={h}" diff --git a/tests/test_exporter.py b/tests/test_exporter.py index 1a1a75e..cc66382 100644 --- a/tests/test_exporter.py +++ b/tests/test_exporter.py @@ -601,6 +601,54 @@ def test_exporter_can_export_requirements_txt_with_standard_packages_and_hashes( assert content == expected +def test_exporter_can_export_requirements_txt_with_standard_packages_and_sorted_hashes( + tmp_dir: str, poetry: Poetry +): + poetry.locker.mock_lock_data( + { + "package": [ + { + "name": "foo", + "version": "1.2.3", + "category": "main", + "optional": False, + "python-versions": "*", + }, + { + "name": "bar", + "version": "4.5.6", + "category": "main", + "optional": False, + "python-versions": "*", + }, + ], + "metadata": { + "python-versions": "*", + "content-hash": "123456789", + "hashes": {"foo": ["67890", "12345"], "bar": ["67890", "12345"]}, + }, + } + ) + set_package_requires(poetry) + + exporter = Exporter(poetry) + exporter.export("requirements.txt", Path(tmp_dir), "requirements.txt") + + with (Path(tmp_dir) / "requirements.txt").open(encoding="utf-8") as f: + content = f.read() + + expected = f"""\ +bar==4.5.6 ; {MARKER_PY} \\ + --hash=sha256:12345 \\ + --hash=sha256:67890 +foo==1.2.3 ; {MARKER_PY} \\ + --hash=sha256:12345 \\ + --hash=sha256:67890 +""" + + assert content == expected + + def test_exporter_requirements_txt_with_standard_packages_and_hashes_disabled( tmp_dir: str, poetry: Poetry ): From cd58fb79d99cf1bbb63b7e8d33a535e2a6f72d23 Mon Sep 17 00:00:00 2001 From: Christos Gkoutzigiannis Date: Mon, 9 May 2022 03:03:56 +0300 Subject: [PATCH 2/3] fixed formatting --- src/poetry_plugin_export/exporter.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/poetry_plugin_export/exporter.py b/src/poetry_plugin_export/exporter.py index 6897430..f2bb452 100644 --- a/src/poetry_plugin_export/exporter.py +++ b/src/poetry_plugin_export/exporter.py @@ -155,7 +155,9 @@ def _export_requirements_txt(self, cwd: Path, output: IO | str) -> None: continue hashes.append(f"{algorithm}:{h}") + hashes.sort() + for h in hashes: line += f" \\\n --hash={h}" From d9323ae3a808ca4fdcbda802fc3ac754526bd117 Mon Sep 17 00:00:00 2001 From: Christos Gkoutzigiannis Date: Mon, 9 May 2022 03:06:11 +0300 Subject: [PATCH 3/3] removed trailing whitespace --- src/poetry_plugin_export/exporter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/poetry_plugin_export/exporter.py b/src/poetry_plugin_export/exporter.py index f2bb452..f107598 100644 --- a/src/poetry_plugin_export/exporter.py +++ b/src/poetry_plugin_export/exporter.py @@ -157,7 +157,7 @@ def _export_requirements_txt(self, cwd: Path, output: IO | str) -> None: hashes.append(f"{algorithm}:{h}") hashes.sort() - + for h in hashes: line += f" \\\n --hash={h}"