Don't delete wheels from external repos with pip_parse (#458)
diff --git a/python/pip_install/extract_wheels/lib/bazel.py b/python/pip_install/extract_wheels/lib/bazel.py
index 95e8553..9638f87 100644
--- a/python/pip_install/extract_wheels/lib/bazel.py
+++ b/python/pip_install/extract_wheels/lib/bazel.py
@@ -248,6 +248,7 @@
)
build_file.write(contents)
- os.remove(whl.path)
+ if not incremental:
+ os.remove(whl.path)
return "//%s" % directory
diff --git a/python/pip_install/extract_wheels/lib/whl_filegroup_test.py b/python/pip_install/extract_wheels/lib/whl_filegroup_test.py
index 1209456..84054b1 100644
--- a/python/pip_install/extract_wheels/lib/whl_filegroup_test.py
+++ b/python/pip_install/extract_wheels/lib/whl_filegroup_test.py
@@ -1,26 +1,52 @@
import os
+import shutil
+import tempfile
+from typing import Optional
import unittest
from python.pip_install.extract_wheels.lib import bazel
-class TestExtractWheel(unittest.TestCase):
- def test_generated_build_file_has_filegroup_target(self) -> None:
- wheel_name = "example_minimal_package-0.0.1-py3-none-any.whl"
- wheel_dir = "examples/wheel/"
- wheel_path = wheel_dir + wheel_name
+class TestWhlFilegroup(unittest.TestCase):
+ def setUp(self) -> None:
+ self.wheel_name = "example_minimal_package-0.0.1-py3-none-any.whl"
+ self.wheel_dir = tempfile.mkdtemp()
+ self.wheel_path = os.path.join(self.wheel_dir, self.wheel_name)
+ shutil.copy(
+ os.path.join("examples", "wheel", self.wheel_name), self.wheel_dir
+ )
+ self.original_dir = os.getcwd()
+ os.chdir(self.wheel_dir)
+
+ def tearDown(self):
+ shutil.rmtree(self.wheel_dir)
+ os.chdir(self.original_dir)
+
+ def _run(
+ self,
+ incremental: bool = False,
+ incremental_repo_prefix: Optional[str] = None,
+ ) -> None:
generated_bazel_dir = bazel.extract_wheel(
- wheel_path,
+ self.wheel_path,
extras={},
pip_data_exclude=[],
enable_implicit_namespace_pkgs=False,
+ incremental=incremental,
+ incremental_repo_prefix=incremental_repo_prefix
)[2:] # Take off the leading // from the returned label.
# Assert that the raw wheel ends up in the package.
- self.assertIn(wheel_name, os.listdir(generated_bazel_dir))
+ self.assertIn(self.wheel_name, os.listdir(generated_bazel_dir))
with open("{}/BUILD.bazel".format(generated_bazel_dir)) as build_file:
build_file_content = build_file.read()
self.assertIn('filegroup', build_file_content)
+ def test_nonincremental(self) -> None:
+ self._run()
+
+ def test_incremental(self) -> None:
+ self._run(incremental=True, incremental_repo_prefix="test")
+
if __name__ == "__main__":
unittest.main()