diff --git a/tests/_local_packages/invalid_module/EGG-INFO/top_level.txt b/tests/_local_packages/invalid_module/EGG-INFO/top_level.txt new file mode 100644 index 0000000..36f50e2 --- /dev/null +++ b/tests/_local_packages/invalid_module/EGG-INFO/top_level.txt @@ -0,0 +1 @@ +invalid_module diff --git a/tests/_local_packages/valid_package-1.0.0.dist-info/top_level.txt b/tests/_local_packages/valid_package-1.0.0.dist-info/top_level.txt new file mode 100644 index 0000000..6dbce5c --- /dev/null +++ b/tests/_local_packages/valid_package-1.0.0.dist-info/top_level.txt @@ -0,0 +1,2 @@ +valid_package +tests diff --git a/tests/test_pipreqs.py b/tests/test_pipreqs.py index 7cb347d..a15eeb4 100644 --- a/tests/test_pipreqs.py +++ b/tests/test_pipreqs.py @@ -11,6 +11,8 @@ import io import sys import unittest +from unittest.mock import patch +import sys import os import requests @@ -48,7 +50,14 @@ def setUp(self): os.path.dirname(__file__), "_data_duplicated_deps" ) self.requirements_path = os.path.join(self.project, "requirements.txt") - self.alt_requirement_path = os.path.join(self.project, "requirements2.txt") + self.alt_requirement_path = os.path.join( + self.project, + "requirements2.txt" + ) + self.local_packages_path = os.path.join( + os.path.dirname(__file__), + "_local_packages" + ) def test_get_all_imports(self): imports = pipreqs.get_all_imports(self.project) @@ -109,6 +118,15 @@ def test_get_use_local_only(self): for item in imports_with_info: self.assertTrue(item["name"].lower() in self.local) + def test_get_locally_installed_packages(self): + with patch.object(sys, 'path', new=[self.local_packages_path]): + local_installed_packages = pipreqs.get_locally_installed_packages() + expected_output = [ + {'exports': ['valid_package'], 'name': 'valid_package', 'version': '1.0.0'}, + {'exports': [], 'name': 'EGG', 'version': 'INFO'} + ] + self.assertEqual(local_installed_packages, expected_output) + def test_init(self): """ Test that all modules we will test upon are in requirements file