Publish Source Available licenses and remove Mutagen in YouTubeDL 1.4.7 / helper 1.3.3
This commit is contained in:
1 parent
71a808b298
commit
50457bc35b
27 files changed
+201
-58
No files matched your search
@@ -0,0 +1,53 @@
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import patch
|
||||
|
||||
from host.python_packages import validate_metadata
|
||||
from host.updates import resolve_packages
|
||||
|
||||
|
||||
class PythonPackageLicenseTests(unittest.TestCase):
|
||||
def test_permissive_and_weak_copyleft_metadata_is_accepted(self):
|
||||
validate_metadata([{"name": "yt-dlp", "license_expression": "Unlicense"},
|
||||
{"name": "certifi", "license_expression": "MPL-2.0"},
|
||||
{"name": "library", "license_expression": "MIT"},
|
||||
{"name": "library", "license_expression": "LGPL-2.1-or-later"}])
|
||||
|
||||
def test_strong_copyleft_is_rejected_using_expression_or_classifiers(self):
|
||||
for metadata in [{"name": "mutagen"},
|
||||
{"name": "dependency", "license_expression": "GPL-3.0-or-later"},
|
||||
{"name": "dependency", "license_expression": "AGPL-3.0-only"},
|
||||
{"name": "dependency", "classifier": ["License :: OSI Approved :: GNU General Public License v2 (GPLv2)"]}]:
|
||||
with self.subTest(metadata=metadata), self.assertRaises(ValueError):
|
||||
validate_metadata([metadata])
|
||||
|
||||
def test_incompatible_resolution_does_not_delete_the_existing_packages(self):
|
||||
with tempfile.TemporaryDirectory() as temporary:
|
||||
stage = Path(temporary) / "stage"
|
||||
packages = stage / "runtime/python/Lib/site-packages"
|
||||
packages.mkdir(parents=True)
|
||||
sentinel = packages / "existing.py"
|
||||
sentinel.write_text("original package", encoding="utf8")
|
||||
work = Path(temporary) / "work"
|
||||
work.mkdir()
|
||||
|
||||
def resolve(command, **kwargs):
|
||||
report = Path(command[command.index("--report") + 1])
|
||||
report.write_text(json.dumps({"install": [{"metadata": {
|
||||
"name": "mutagen", "license_expression": "GPL-2.0-or-later"}}]}), encoding="utf8")
|
||||
self.assertNotIn("yt-dlp[default]", command)
|
||||
return SimpleNamespace(returncode=0)
|
||||
|
||||
response = {"urls": [{"filename": "pip-1-py3-none-any.whl", "url": "https://files.pythonhosted.org/pip.whl", "digests": {"sha256": "a" * 64}}]}
|
||||
with patch("host.updates.get", return_value=SimpleNamespace(json=lambda: response)), \
|
||||
patch("host.updates.fetch"), patch("host.updates.subprocess.run", side_effect=resolve):
|
||||
with self.assertRaisesRegex(ValueError, "mutagen"):
|
||||
resolve_packages(stage, work, lambda *args: None)
|
||||
self.assertEqual(sentinel.read_text(), "original package")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user