diff --git a/cyclonedx_py/_internal/utils/bytes.py b/cyclonedx_py/_internal/utils/bytes.py new file mode 100644 index 00000000..39699e88 --- /dev/null +++ b/cyclonedx_py/_internal/utils/bytes.py @@ -0,0 +1,28 @@ +# This file is part of CycloneDX Python +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) OWASP Foundation. All Rights Reserved. + +from sys import getdefaultencoding + +from chardet import detect as chardetect + + +def bytes2str(data: bytes, *, errors: str = 'strict') -> str: + # see https://docs.python.org/3/library/codecs.html#standard-encodings + encoding = (chardetect(data)['encoding'] or getdefaultencoding()).replace( + # replace Windows-encoding with code-page + 'Windows-', 'cp') + return data.decode(encoding, errors) diff --git a/cyclonedx_py/_internal/utils/io.py b/cyclonedx_py/_internal/utils/io.py index e0c1de93..50e6051d 100644 --- a/cyclonedx_py/_internal/utils/io.py +++ b/cyclonedx_py/_internal/utils/io.py @@ -15,20 +15,14 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright (c) OWASP Foundation. All Rights Reserved. -from sys import getdefaultencoding from tempfile import NamedTemporaryFile from typing import BinaryIO -from chardet import detect as chardetect +from .bytes import bytes2str def io2str(io: BinaryIO, *, errors: str = 'strict') -> str: - data = io.read() - # see https://docs.python.org/3/library/codecs.html#standard-encodings - encoding = (chardetect(data)['encoding'] or getdefaultencoding()).replace( - # replace Windows-encoding with code-page - 'Windows-', 'cp') - return data.decode(encoding, errors) + return bytes2str(io.read(), errors=errors) def io2file(io: BinaryIO, *, errors: str = 'strict') -> str: diff --git a/cyclonedx_py/_internal/utils/pep639.py b/cyclonedx_py/_internal/utils/pep639.py index 57b41d4d..03f93bcf 100644 --- a/cyclonedx_py/_internal/utils/pep639.py +++ b/cyclonedx_py/_internal/utils/pep639.py @@ -30,6 +30,7 @@ from cyclonedx.model import AttachedText, Encoding from cyclonedx.model.license import DisjunctiveLicense, LicenseAcknowledgement +from .bytes import bytes2str from .mimetypes import guess_type if TYPE_CHECKING: # pragma: no cover @@ -38,6 +39,10 @@ from cyclonedx.model.license import License +# per spec > license files are stored in the `.dist-info/licenses/` subdirectory of the produced wheel. +# but in practice, other locations are used, too. +_LICENSE_LOCATIONS = ('licenses', 'license_files', '') + def dist2licenses( dist: 'Distribution', @@ -55,12 +60,20 @@ def dist2licenses( for mlfile in set(metadata.get_all('License-File', ())): # see spec: https://peps.python.org/pep-0639/#add-license-file-field # latest spec rev: https://discuss.python.org/t/pep-639-round-3-improving-license-clarity-with-better-package-metadata/53020 # noqa: E501 - - # per spec > license files are stored in the `.dist-info/licenses/` subdirectory of the produced wheel. - # but in practice, other locations are used, too. - content = dist.read_text(join('licenses', mlfile)) \ - or dist.read_text(join('license_files', mlfile)) \ - or dist.read_text(mlfile) + content = None + for mlpath in _LICENSE_LOCATIONS: + try: + content = dist.read_text(join(mlpath, mlfile)) + except UnicodeDecodeError as err: + try: + content = bytes2str(err.object) + except UnicodeDecodeError: + pass + else: + break # for-loop + else: + if content is not None: + break # for-loop if content is None: # pragma: no cover logger.debug('Error: failed to read license file %r for dist %r', mlfile, metadata['Name']) diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/.editorconfig b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/.editorconfig new file mode 100644 index 00000000..a860ebad --- /dev/null +++ b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/.editorconfig @@ -0,0 +1,11 @@ +# EditorConfig is awesome: https://editorconfig.org + +[my_licenses/utf-8*] +charset = utf-8 + +[my_licenses/utf-16le*] +charset = utf-16le + +[my_licenses/utf-16be*] +charset = utf-16be + diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/.gitattributes b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/.gitattributes new file mode 100644 index 00000000..e2462c37 --- /dev/null +++ b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/.gitattributes @@ -0,0 +1,2 @@ +Licenses/* binary +Licenses/*.txt binary diff=txt diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/README.md b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/README.md new file mode 100644 index 00000000..94e9b731 --- /dev/null +++ b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/README.md @@ -0,0 +1,6 @@ +# PEP 639 - regression 868 + +see + +PEP-630 expects license gfiles to be UTF8 encoded text. +some license files may not be text, some may not be UTF8 encoded, but still be added as license files. diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/richtext.rtf b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/richtext.rtf new file mode 100644 index 00000000..2e6251f1 Binary files /dev/null and b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/richtext.rtf differ diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-16be_withBOM.txt b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-16be_withBOM.txt new file mode 100644 index 00000000..b030bead Binary files /dev/null and b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-16be_withBOM.txt differ diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-16le_withBOM.txt b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-16le_withBOM.txt new file mode 100644 index 00000000..d7a826f6 Binary files /dev/null and b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-16le_withBOM.txt differ diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-8_noBOM.txt b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-8_noBOM.txt new file mode 100644 index 00000000..0730b030 --- /dev/null +++ b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-8_noBOM.txt @@ -0,0 +1,4 @@ +this file is +utf-8 encoded +without BOM +πŸ˜ƒ diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-8_withBOM.txt b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-8_withBOM.txt new file mode 100644 index 00000000..1f8ebdf6 --- /dev/null +++ b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/my_licenses/utf-8_withBOM.txt @@ -0,0 +1,4 @@ +ο»Ώthis file is +utf-8 encoded +with BOM +πŸ˜ƒ diff --git a/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/pyproject.toml b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/pyproject.toml new file mode 100644 index 00000000..6c66a343 --- /dev/null +++ b/tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868/pyproject.toml @@ -0,0 +1,16 @@ +[build-system] +# Known broken version +requires = ["setuptools == 78.1.0"] +build-backend = "setuptools.build_meta" + +[project] +name = "regression-issue868" +version = "0.1" +license-files = ["my_licenses/*"] +readme = "README.md" + +[tool.setuptools] +include-package-data = false +exclude-package-data = { "*" = ["*", "**"] } +[tool.setuptools.package-data] +# do not want any content installed diff --git a/tests/_data/infiles/environment/with-license-pep639/init.py b/tests/_data/infiles/environment/with-license-pep639/init.py index 844ae25b..80afe967 100644 --- a/tests/_data/infiles/environment/with-license-pep639/init.py +++ b/tests/_data/infiles/environment/with-license-pep639/init.py @@ -73,6 +73,9 @@ def main() -> None: 'lxml', # with expression-like License AND License-File 'cryptography==43.0.1', # https://github.com/CycloneDX/cyclonedx-python/issues/826 + # with possibly unexpected license files + # https://github.com/CycloneDX/cyclonedx-python/issues/868 + '../../_helpers/local_pckages/with-license-pep639_regression-issue868', ) diff --git a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml index 0ca62575..17083690 100644 --- a/tests/_data/infiles/environment/with-license-pep639/pyproject.toml +++ b/tests/_data/infiles/environment/with-license-pep639/pyproject.toml @@ -4,14 +4,16 @@ name = "with-extras" version = "0.1.0" description = "depenndencies with license declaration accoring to PEP 639" -dependencies = [ - # with License-Expression - "attrs", - # with License-File - "boolean.py", - "jsonpointer", - "license_expression", - "lxml", - # with expression-like License AND License-File - "cryptography", -] +[project.dependencies] +# with License-Expression +"attrs" = { } +# with License-File +"boolean.py" = { } +"jsonpointer" = { } +"license_expression" = { } +"lxml" = { } +# with expression-like License AND License-File +"cryptography" = { } +# with possibly unexpected license files +"regression-issue868" = { path = "../../_helpers/local_pckages/with-license-pep639_regression-issue868" } + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin index 54603ea9..0fd15f6d 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.0.xml.bin @@ -43,5 +43,10 @@ pkg:pypi/lxml@5.3.0 false + + regression-issue868 + 0.1 + false + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin index fb79f308..afe85637 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.1.xml.bin @@ -1005,5 +1005,53 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + + regression-issue868 + 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_withBOM.txt + ο»Ώthis file is +utf-8 encoded +with BOM +πŸ˜ƒ + + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin index 783eb806..b50bf7d0 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.json.bin @@ -305,6 +305,67 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -329,6 +390,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -336,7 +400,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin index 82c17ece..b04e1589 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.2.xml.bin @@ -1024,6 +1024,54 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + + regression-issue868 + 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_withBOM.txt + ο»Ώthis file is +utf-8 encoded +with BOM +πŸ˜ƒ + + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -1034,6 +1082,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + @@ -1041,6 +1090,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin index e4a1a8ff..2ed3df25 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.json.bin @@ -336,6 +336,67 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -360,6 +421,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -367,7 +431,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin index 9b24df2c..f08f41b6 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.3.xml.bin @@ -1275,6 +1275,54 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + + regression-issue868 + 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_withBOM.txt + ο»Ώthis file is +utf-8 encoded +with BOM +πŸ˜ƒ + + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -1285,6 +1333,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + @@ -1292,6 +1341,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin index 86a8bff2..246ae8d2 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.json.bin @@ -336,6 +336,67 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -360,6 +421,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -367,7 +431,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin index 0715f363..72074d83 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.4.xml.bin @@ -1302,6 +1302,54 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + + regression-issue868 + 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_withBOM.txt + ο»Ώthis file is +utf-8 encoded +with BOM +πŸ˜ƒ + + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -1312,6 +1360,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + @@ -1319,6 +1368,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin index 0f124276..094a59f8 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.json.bin @@ -336,6 +336,67 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "licenses": [ + { + "license": { + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -360,6 +421,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -367,7 +431,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin index 5df63646..7916b625 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.5.xml.bin @@ -1312,6 +1312,54 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + + regression-issue868 + 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_withBOM.txt + ο»Ώthis file is +utf-8 encoded +with BOM +πŸ˜ƒ + + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -1322,6 +1370,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + @@ -1329,6 +1378,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin index 59233be0..d380fdb3 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.json.bin @@ -360,6 +360,72 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "licenses": [ + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/richtext.rtf", + "text": { + "content": "e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA=", + "contentType": "application/rtf", + "encoding": "base64" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-16be_withBOM.txt", + "text": { + "content": "this file is\r\nutf-16be encoded\r\nwith BOM\r\n\ud83d\ude03\r\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-16le_withBOM.txt", + "text": { + "content": "this file is\nutf-16le encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-8_noBOM.txt", + "text": { + "content": "this file is\nutf-8 encoded\nwithout BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + }, + { + "license": { + "acknowledgement": "declared", + "name": "declared license file: my_licenses/utf-8_withBOM.txt", + "text": { + "content": "\ufeffthis file is\nutf-8 encoded\nwith BOM\n\ud83d\ude03\n", + "contentType": "text/plain" + } + } + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -384,6 +450,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -391,7 +460,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin index 256567cf..28cea090 100644 --- a/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639-texts_with-license-pep639_1.6.xml.bin @@ -1312,6 +1312,54 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + + regression-issue868 + 0.1 + + + declared license file: my_licenses/richtext.rtf + e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBhdFxkZWZsYW5nMTAzMXtcZm9udHRibHtcZjBcZm5pbFxmY2hhcnNldDAgQ2FsaWJyaTt9fQp7XCpcZ2VuZXJhdG9yIFJpY2hlZDIwIDEwLjAuMTkwNDF9XHZpZXdraW5kNFx1YzEgClxwYXJkXHNhMjAwXHNsMjc2XHNsbXVsdDFcZjBcZnMyMlxsYW5nNyBSVEYgTGljZW5zZSBGaWxlXHBhcgp9CgA= + + + declared license file: my_licenses/utf-16be_withBOM.txt + this file is +utf-16be encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-16le_withBOM.txt + this file is +utf-16le encoded +with BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_noBOM.txt + this file is +utf-8 encoded +without BOM +πŸ˜ƒ + + + + declared license file: my_licenses/utf-8_withBOM.txt + ο»Ώthis file is +utf-8 encoded +with BOM +πŸ˜ƒ + + + + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -1322,6 +1370,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + @@ -1329,6 +1378,7 @@ The isoschematron implementation uses several XSL and RelaxNG resources: + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin index 54603ea9..0fd15f6d 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.0.xml.bin @@ -43,5 +43,10 @@ pkg:pypi/lxml@5.3.0 false + + regression-issue868 + 0.1 + false + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin index 90bf13ba..4e48511f 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.1.xml.bin @@ -144,5 +144,15 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin index a490f228..60dbfb7c 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin index ad110407..7f84c211 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.2.xml.bin @@ -163,6 +163,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -173,6 +183,7 @@ + @@ -180,6 +191,7 @@ + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin index 2f0fca0f..149dde3a 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin index 1ef1b888..24d43c9a 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.3.xml.bin @@ -166,6 +166,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -176,6 +186,7 @@ + @@ -183,6 +194,7 @@ + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin index 80bc8b12..e8cfac9c 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin index 461d8e5b..d279b4ed 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.4.xml.bin @@ -193,6 +193,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -203,6 +213,7 @@ + @@ -210,6 +221,7 @@ + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin index 1167224c..80f7c603 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin index 3a0a7dbb..cf0b8929 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.5.xml.bin @@ -203,6 +203,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -213,6 +223,7 @@ + @@ -220,6 +231,7 @@ + diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin index a2325d5b..ef04c126 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.json.bin @@ -196,6 +196,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -220,6 +233,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -227,7 +243,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin index 45626504..ad29652f 100644 --- a/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/pep639_with-license-pep639_1.6.xml.bin @@ -203,6 +203,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -213,6 +223,7 @@ + @@ -220,6 +231,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin index 54603ea9..0fd15f6d 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.0.xml.bin @@ -43,5 +43,10 @@ pkg:pypi/lxml@5.3.0 false + + regression-issue868 + 0.1 + false + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin index 90bf13ba..4e48511f 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.1.xml.bin @@ -144,5 +144,15 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin index a490f228..60dbfb7c 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin index ad110407..7f84c211 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.2.xml.bin @@ -163,6 +163,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -173,6 +183,7 @@ + @@ -180,6 +191,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin index 2f0fca0f..149dde3a 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin index 1ef1b888..24d43c9a 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.3.xml.bin @@ -166,6 +166,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -176,6 +186,7 @@ + @@ -183,6 +194,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin index 80bc8b12..e8cfac9c 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin index 461d8e5b..d279b4ed 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.4.xml.bin @@ -193,6 +193,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -203,6 +213,7 @@ + @@ -210,6 +221,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin index 1167224c..80f7c603 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin index 3a0a7dbb..cf0b8929 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.5.xml.bin @@ -203,6 +203,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -213,6 +223,7 @@ + @@ -220,6 +231,7 @@ + diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin index a2325d5b..ef04c126 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.json.bin @@ -196,6 +196,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -220,6 +233,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -227,7 +243,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin index 45626504..ad29652f 100644 --- a/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/plain_with-license-pep639_1.6.xml.bin @@ -203,6 +203,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -213,6 +223,7 @@ + @@ -220,6 +231,7 @@ + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin index 54603ea9..0fd15f6d 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.0.xml.bin @@ -43,5 +43,10 @@ pkg:pypi/lxml@5.3.0 false + + regression-issue868 + 0.1 + false + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin index 90bf13ba..4e48511f 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.1.xml.bin @@ -144,5 +144,15 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin index a490f228..60dbfb7c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin index ad110407..7f84c211 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.2.xml.bin @@ -163,6 +163,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -173,6 +183,7 @@ + @@ -180,6 +191,7 @@ + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin index 2f0fca0f..149dde3a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin index 1ef1b888..24d43c9a 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.3.xml.bin @@ -166,6 +166,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -176,6 +186,7 @@ + @@ -183,6 +194,7 @@ + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin index 80bc8b12..e8cfac9c 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin index 461d8e5b..d279b4ed 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.4.xml.bin @@ -193,6 +193,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -203,6 +213,7 @@ + @@ -210,6 +221,7 @@ + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin index 1167224c..80f7c603 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.json.bin @@ -188,6 +188,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -212,6 +225,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -219,7 +235,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin index 3a0a7dbb..cf0b8929 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.5.xml.bin @@ -203,6 +203,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -213,6 +223,7 @@ + @@ -220,6 +231,7 @@ + diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin index a2325d5b..ef04c126 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.json.bin @@ -196,6 +196,19 @@ "purl": "pkg:pypi/lxml@5.3.0", "type": "library", "version": "5.3.0" + }, + { + "bom-ref": "regression-issue868==0.1", + "externalReferences": [ + { + "comment": "PackageSource: Local", + "type": "distribution", + "url": "file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868" + } + ], + "name": "regression-issue868", + "type": "library", + "version": "0.1" } ], "dependencies": [ @@ -220,6 +233,9 @@ { "ref": "lxml==5.3.0" }, + { + "ref": "regression-issue868==0.1" + }, { "dependsOn": [ "attrs==23.2.0", @@ -227,7 +243,8 @@ "cryptography==43.0.1", "jsonpointer==2.4", "license-expression==30.3.0", - "lxml==5.3.0" + "lxml==5.3.0", + "regression-issue868==0.1" ], "ref": "root-component" } diff --git a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin index 45626504..ad29652f 100644 --- a/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin +++ b/tests/_data/snapshots/environment/texts_with-license-pep639_1.6.xml.bin @@ -203,6 +203,16 @@ + + regression-issue868 + 0.1 + + + file://.../tests/_data/infiles/_helpers/local_pckages/with-license-pep639_regression-issue868 + PackageSource: Local + + + @@ -213,6 +223,7 @@ + @@ -220,6 +231,7 @@ +