diff --git a/tests/packagedcode/data/nuget/ExpressionLicense.nuspec b/tests/packagedcode/data/nuget/ExpressionLicense.nuspec new file mode 100644 index 00000000000..14c253ebb26 --- /dev/null +++ b/tests/packagedcode/data/nuget/ExpressionLicense.nuspec @@ -0,0 +1,9 @@ + + + + ExpressionLicenseExample + 1.0.0 + false + MIT + + \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/ExpressionLicense.nuspec.json.expected b/tests/packagedcode/data/nuget/ExpressionLicense.nuspec.json.expected new file mode 100644 index 00000000000..c63a64d19dc --- /dev/null +++ b/tests/packagedcode/data/nuget/ExpressionLicense.nuspec.json.expected @@ -0,0 +1,69 @@ +[ + { + "type": "nuget", + "namespace": null, + "name": "ExpressionLicenseExample", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "mit", + "declared_license_expression_spdx": "MIT", + "license_detections": [ + { + "license_expression": "mit", + "license_expression_spdx": "MIT", + "matches": [ + { + "license_expression": "mit", + "license_expression_spdx": "MIT", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "1-spdx-id", + "score": 100.0, + "matched_length": 1, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx-license-identifier-mit-5da48780aba670b0860c46d899ed42a0f243ff06", + "rule_url": null, + "matched_text": "MIT" + } + ], + "identifier": "mit-a822f434-d61f-f2b1-c792-8b8cb9e7b9bf" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "MIT", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": "https://www.nuget.org/packages/ExpressionLicenseExample/1.0.0", + "repository_download_url": "https://www.nuget.org/api/v2/package/ExpressionLicenseExample/1.0.0", + "api_data_url": "https://api.nuget.org/v3/registration3/expressionlicenseexample/1.0.0.json", + "datasource_id": "nuget_nupsec", + "purl": "pkg:nuget/ExpressionLicenseExample@1.0.0" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/LicenseURLOnly.nuspec b/tests/packagedcode/data/nuget/LicenseURLOnly.nuspec new file mode 100644 index 00000000000..14cd7e0b4d4 --- /dev/null +++ b/tests/packagedcode/data/nuget/LicenseURLOnly.nuspec @@ -0,0 +1,9 @@ + + + + LicenseUrlOnlyExample + 1.0.0 + false + https://opensource.org/licenses/MIT + + \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/LicenseURLOnly.nuspec.json.expected b/tests/packagedcode/data/nuget/LicenseURLOnly.nuspec.json.expected new file mode 100644 index 00000000000..a1804e7c03f --- /dev/null +++ b/tests/packagedcode/data/nuget/LicenseURLOnly.nuspec.json.expected @@ -0,0 +1,69 @@ +[ + { + "type": "nuget", + "namespace": null, + "name": "LicenseUrlOnlyExample", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "mit", + "declared_license_expression_spdx": "MIT", + "license_detections": [ + { + "license_expression": "mit", + "license_expression_spdx": "MIT", + "matches": [ + { + "license_expression": "mit", + "license_expression_spdx": "MIT", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "1-hash", + "score": 100.0, + "matched_length": 5, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "mit_65.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/mit_65.RULE", + "matched_text": "https://opensource.org/licenses/MIT" + } + ], + "identifier": "mit-8c45a313-6646-a283-ebeb-697e96d45185" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "https://opensource.org/licenses/MIT", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": "https://www.nuget.org/packages/LicenseUrlOnlyExample/1.0.0", + "repository_download_url": "https://www.nuget.org/api/v2/package/LicenseUrlOnlyExample/1.0.0", + "api_data_url": "https://api.nuget.org/v3/registration3/licenseurlonlyexample/1.0.0.json", + "datasource_id": "nuget_nupsec", + "purl": "pkg:nuget/LicenseUrlOnlyExample@1.0.0" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/NoLicenseInfo.nuspec b/tests/packagedcode/data/nuget/NoLicenseInfo.nuspec new file mode 100644 index 00000000000..ab5abcca401 --- /dev/null +++ b/tests/packagedcode/data/nuget/NoLicenseInfo.nuspec @@ -0,0 +1,8 @@ + + + + NoLicenseInfoExample + 1.0.0 + false + + \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/NoLicenseInfo.nuspec.json.expected b/tests/packagedcode/data/nuget/NoLicenseInfo.nuspec.json.expected new file mode 100644 index 00000000000..a74a297a063 --- /dev/null +++ b/tests/packagedcode/data/nuget/NoLicenseInfo.nuspec.json.expected @@ -0,0 +1,46 @@ +[ + { + "type": "nuget", + "namespace": null, + "name": "NoLicenseInfoExample", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": null, + "declared_license_expression_spdx": null, + "license_detections": [], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": null, + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": "https://www.nuget.org/packages/NoLicenseInfoExample/1.0.0", + "repository_download_url": "https://www.nuget.org/api/v2/package/NoLicenseInfoExample/1.0.0", + "api_data_url": "https://api.nuget.org/v3/registration3/nolicenseinfoexample/1.0.0.json", + "datasource_id": "nuget_nupsec", + "purl": "pkg:nuget/NoLicenseInfoExample@1.0.0" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/PlainLicense.nuspec b/tests/packagedcode/data/nuget/PlainLicense.nuspec new file mode 100644 index 00000000000..3993bdd7fec --- /dev/null +++ b/tests/packagedcode/data/nuget/PlainLicense.nuspec @@ -0,0 +1,9 @@ + + + + PlainLicenseExample + 1.0.0 + false + MIT + + \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/PlainLicense.nuspec.json.expected b/tests/packagedcode/data/nuget/PlainLicense.nuspec.json.expected new file mode 100644 index 00000000000..05366edcadf --- /dev/null +++ b/tests/packagedcode/data/nuget/PlainLicense.nuspec.json.expected @@ -0,0 +1,69 @@ +[ + { + "type": "nuget", + "namespace": null, + "name": "PlainLicenseExample", + "version": "1.0.0", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "mit", + "declared_license_expression_spdx": "MIT", + "license_detections": [ + { + "license_expression": "mit", + "license_expression_spdx": "MIT", + "matches": [ + { + "license_expression": "mit", + "license_expression_spdx": "MIT", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "1-spdx-id", + "score": 100.0, + "matched_length": 1, + "match_coverage": 100.0, + "rule_relevance": 100, + "rule_identifier": "spdx-license-identifier-mit-5da48780aba670b0860c46d899ed42a0f243ff06", + "rule_url": null, + "matched_text": "MIT" + } + ], + "identifier": "mit-a822f434-d61f-f2b1-c792-8b8cb9e7b9bf" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "MIT", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": "https://www.nuget.org/packages/PlainLicenseExample/1.0.0", + "repository_download_url": "https://www.nuget.org/api/v2/package/PlainLicenseExample/1.0.0", + "api_data_url": "https://api.nuget.org/v3/registration3/plainlicenseexample/1.0.0.json", + "datasource_id": "nuget_nupsec", + "purl": "pkg:nuget/PlainLicenseExample@1.0.0" + } +] \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/SpecFlow.MsTest.3.1.89.nuspec b/tests/packagedcode/data/nuget/SpecFlow.MsTest.3.1.89.nuspec new file mode 100644 index 00000000000..347fe43be87 --- /dev/null +++ b/tests/packagedcode/data/nuget/SpecFlow.MsTest.3.1.89.nuspec @@ -0,0 +1,10 @@ + + + + SpecFlow.MsTest + 3.1.89 + false + LICENSE.txt + https://aka.ms/deprecateLicenseUrl + + \ No newline at end of file diff --git a/tests/packagedcode/data/nuget/SpecFlow.MsTest.3.1.89.nuspec.json.expected b/tests/packagedcode/data/nuget/SpecFlow.MsTest.3.1.89.nuspec.json.expected new file mode 100644 index 00000000000..9b465220725 --- /dev/null +++ b/tests/packagedcode/data/nuget/SpecFlow.MsTest.3.1.89.nuspec.json.expected @@ -0,0 +1,69 @@ +[ + { + "type": "nuget", + "namespace": null, + "name": "SpecFlow.MsTest", + "version": "3.1.89", + "qualifiers": {}, + "subpath": null, + "primary_language": null, + "description": null, + "release_date": null, + "parties": [], + "keywords": [], + "homepage_url": null, + "download_url": null, + "size": null, + "sha1": null, + "md5": null, + "sha256": null, + "sha512": null, + "bug_tracking_url": null, + "code_view_url": null, + "vcs_url": null, + "copyright": null, + "holder": null, + "declared_license_expression": "unknown-license-reference", + "declared_license_expression_spdx": "LicenseRef-scancode-unknown-license-reference", + "license_detections": [ + { + "license_expression": "unknown-license-reference", + "license_expression_spdx": "LicenseRef-scancode-unknown-license-reference", + "matches": [ + { + "license_expression": "unknown-license-reference", + "license_expression_spdx": "LicenseRef-scancode-unknown-license-reference", + "from_file": null, + "start_line": 1, + "end_line": 1, + "matcher": "1-hash", + "score": 90.0, + "matched_length": 3, + "match_coverage": 100.0, + "rule_relevance": 90, + "rule_identifier": "unknown-license-reference_339.RULE", + "rule_url": "https://github.com/nexB/scancode-toolkit/tree/develop/src/licensedcode/data/rules/unknown-license-reference_339.RULE", + "matched_text": "license LICENSE.txt" + } + ], + "identifier": "unknown_license_reference-bf47ad8c-fa3f-0e58-e5e5-d0aef2c37b43" + } + ], + "other_license_expression": null, + "other_license_expression_spdx": null, + "other_license_detections": [], + "extracted_license_statement": "LICENSE.txt", + "notice_text": null, + "source_packages": [], + "file_references": [], + "is_private": false, + "is_virtual": false, + "extra_data": {}, + "dependencies": [], + "repository_homepage_url": "https://www.nuget.org/packages/SpecFlow.MsTest/3.1.89", + "repository_download_url": "https://www.nuget.org/api/v2/package/SpecFlow.MsTest/3.1.89", + "api_data_url": "https://api.nuget.org/v3/registration3/specflow.mstest/3.1.89.json", + "datasource_id": "nuget_nupsec", + "purl": "pkg:nuget/SpecFlow.MsTest@3.1.89" + } +] \ No newline at end of file diff --git a/tests/packagedcode/test_nuget.py b/tests/packagedcode/test_nuget.py index d3af13ab51b..372c95df9d2 100644 --- a/tests/packagedcode/test_nuget.py +++ b/tests/packagedcode/test_nuget.py @@ -72,3 +72,33 @@ def test_parse_nuget_package_lock_json(self): def test_package_lock_json_is_package_data_file(self): test_file = self.get_test_loc('nuget/packages.lock.json') assert nuget.NugetPackagesLockHandler.is_datafile(test_file) + + def test_parse_creates_package_from_nuspec_specflow_mstest_license_file(self): + test_file = self.get_test_loc('nuget/SpecFlow.MsTest.3.1.89.nuspec') + package = nuget.NugetNuspecHandler.parse(test_file) + expected_loc = self.get_test_loc('nuget/SpecFlow.MsTest.3.1.89.nuspec.json.expected') + self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES) + + def test_parse_creates_package_from_nuspec_plain_license(self): + test_file = self.get_test_loc('nuget/PlainLicense.nuspec') + package = nuget.NugetNuspecHandler.parse(test_file) + expected_loc = self.get_test_loc('nuget/PlainLicense.nuspec.json.expected') + self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES) + + def test_parse_creates_package_from_nuspec_license_url_only(self): + test_file = self.get_test_loc('nuget/LicenseUrlOnly.nuspec') + package = nuget.NugetNuspecHandler.parse(test_file) + expected_loc = self.get_test_loc('nuget/LicenseUrlOnly.nuspec.json.expected') + self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES) + + def test_parse_creates_package_from_nuspec_no_license_info(self): + test_file = self.get_test_loc('nuget/NoLicenseInfo.nuspec') + package = nuget.NugetNuspecHandler.parse(test_file) + expected_loc = self.get_test_loc('nuget/NoLicenseInfo.nuspec.json.expected') + self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES) + + def test_parse_creates_package_from_nuspec_expression_license(self): + test_file = self.get_test_loc('nuget/ExpressionLicense.nuspec') + package = nuget.NugetNuspecHandler.parse(test_file) + expected_loc = self.get_test_loc('nuget/ExpressionLicense.nuspec.json.expected') + self.check_packages_data(package, expected_loc, regen=REGEN_TEST_FIXTURES)