diff --git a/test/language_data/FAIL-PKG-INFO b/test/language_data/FAIL-PKG-INFO new file mode 100644 index 0000000000..80122ce4e8 --- /dev/null +++ b/test/language_data/FAIL-PKG-INFO @@ -0,0 +1,3 @@ +Metadata-Version: 2.1 +Name: cve-bin-tool +Version: 3.1.1 diff --git a/test/language_data/PKG-INFO b/test/language_data/PKG-INFO new file mode 100644 index 0000000000..842227c94c --- /dev/null +++ b/test/language_data/PKG-INFO @@ -0,0 +1,23 @@ +Metadata-Version: 2.1 +Name: zstandard +Version: 0.18.0 +Summary: Zstandard bindings for Python +Home-page: https://github.com/indygreg/python-zstandard +Author: Gregory Szorc +Author-email: gregory.szorc@gmail.com +License: BSD +Keywords: zstandard,zstd,compression +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Classifier: Development Status :: 5 - Production/Stable +Requires-Python: >=3.6 +License-File: LICENSE +Requires-Dist: cffi (>=1.11) ; platform_python_implementation == "PyPy" +Provides-Extra: cffi +Requires-Dist: cffi (>=1.11) ; platform_python_implementation == "PyPy" \ No newline at end of file diff --git a/test/language_data/package.json b/test/language_data/fail-package-lock.json similarity index 100% rename from test/language_data/package.json rename to test/language_data/fail-package-lock.json diff --git a/test/language_data/pom_fail.xml b/test/language_data/fail_pom.xml similarity index 100% rename from test/language_data/pom_fail.xml rename to test/language_data/fail_pom.xml diff --git a/test/language_data/package-lock1.json b/test/language_data/package-lock.json similarity index 100% rename from test/language_data/package-lock1.json rename to test/language_data/package-lock.json diff --git a/test/test_language_scanner.py b/test/test_language_scanner.py index 4d8039e209..4957eed9bf 100644 --- a/test/test_language_scanner.py +++ b/test/test_language_scanner.py @@ -5,6 +5,7 @@ import pytest +from cve_bin_tool.util import ProductInfo from cve_bin_tool.version_scanner import VersionScanner @@ -28,30 +29,28 @@ def test_java_package(self, filename: str, product_name: str) -> None: scanner = VersionScanner() scanner.file_stack.append(filename) # Only expecting to get one product with a vendor in the database - for product in scanner.run_java_checker(filename): + for product in scanner.scan_file(filename): if product: product_info, file_path = product assert product_info.product == product_name assert file_path == filename - @pytest.mark.parametrize("filename", ((str(TEST_FILE_PATH / "pom_fail.xml")),)) + @pytest.mark.parametrize("filename", ((str(TEST_FILE_PATH / "fail_pom.xml")),)) def test_java_package_none_found(self, filename: str) -> None: scanner = VersionScanner() scanner.file_stack.append(filename) product = None # Not expecting any product to match with a vendor in the database - for product in scanner.run_java_checker(filename): + for product in scanner.scan_file(filename): pass assert product is None - @pytest.mark.parametrize( - "filename", ((str(TEST_FILE_PATH / "package-lock1.json")),) - ) + @pytest.mark.parametrize("filename", ((str(TEST_FILE_PATH / "package-lock.json")),)) def test_javascript_package(self, filename: str) -> None: scanner = VersionScanner() scanner.file_stack.append(filename) found_product = [] - for product in scanner.run_js_checker(filename): + for product in scanner.scan_file(filename): if product: product_info, file_path = product if product_info.product not in found_product: @@ -59,12 +58,34 @@ def test_javascript_package(self, filename: str) -> None: assert found_product == self.JAVASCRIPT_PRODUCTS assert file_path == filename - @pytest.mark.parametrize("filename", ((str(TEST_FILE_PATH / "package.json")),)) + @pytest.mark.parametrize( + "filename", ((str(TEST_FILE_PATH / "fail-package-lock.json")),) + ) def test_javascript_package_none_found(self, filename: str) -> None: scanner = VersionScanner() scanner.file_stack.append(filename) product = None # Not expecting any product to match with a vendor in the database - for product in scanner.run_js_checker(filename): + for product in scanner.scan_file(filename): pass assert product is not None + + @pytest.mark.parametrize("filename", ((str(TEST_FILE_PATH / "PKG-INFO")),)) + def test_python_package(self, filename: str) -> None: + scanner = VersionScanner() + scanner.file_stack.append(filename) + for product in scanner.scan_file(filename): + if product: + product_info, file_path = product + assert product_info == ProductInfo("facebook", "zstandard", "0.18.0") + assert file_path == filename + + @pytest.mark.parametrize("filename", ((str(TEST_FILE_PATH / "FAIL-PKG-INFO")),)) + def test_python_package_none_found(self, filename: str) -> None: + scanner = VersionScanner() + scanner.file_stack.append(filename) + product = None + # Not expecting any product to match with a vendor in the database + for product in scanner.scan_file(filename): + pass + assert product is None