import pytest from dds_ci.dds import DDSWrapper from dds_ci.testing.fixtures import Project from dds_ci.testing.http import RepoFixture from dds_ci.testing.error import expect_error_marker from pathlib import Path @pytest.fixture() def tmp_repo(tmp_path: Path, dds: DDSWrapper) -> Path: dds.run(['repoman', 'init', tmp_path]) return tmp_path def test_error_bad_pkg_id(dds: DDSWrapper, tmp_repo: Path) -> None: with expect_error_marker('invalid-pkg-id-str-version'): dds.run(['repoman', 'add', tmp_repo, 'foo@bar', 'http://example.com']) with expect_error_marker('invalid-pkg-id-str'): dds.run(['repoman', 'add', tmp_repo, 'foo', 'http://example.com']) def test_add_simple(dds: DDSWrapper, tmp_repo: Path) -> None: dds.run(['repoman', 'add', tmp_repo, 'neo-fun@0.6.0', 'git+https://github.com/vector-of-bool/neo-fun.git#0.6.0']) with expect_error_marker('dup-pkg-add'): dds.run( ['repoman', 'add', tmp_repo, 'neo-fun@0.6.0', 'git+https://github.com/vector-of-bool/neo-fun.git#0.6.0']) def test_add_github(dds: DDSWrapper, tmp_repo: Path) -> None: dds.run(['repoman', 'add', tmp_repo, 'neo-fun@0.6.0', 'github:vector-of-bool/neo-fun/0.6.0']) with expect_error_marker('dup-pkg-add'): dds.run(['repoman', 'add', tmp_repo, 'neo-fun@0.6.0', 'github:vector-of-bool/neo-fun/0.6.0']) def test_add_invalid(dds: DDSWrapper, tmp_repo: Path) -> None: with expect_error_marker('repoman-add-invalid-pkg-url'): dds.run(['repoman', 'add', tmp_repo, 'foo@1.2.3', 'invalid://google.com/lolwut']) def test_error_double_remove(tmp_repo: Path, dds: DDSWrapper) -> None: dds.run([ 'repoman', '-ltrace', 'add', tmp_repo, 'neo-fun@0.4.0', 'https://github.com/vector-of-bool/neo-fun/archive/0.4.0.tar.gz?__dds_strpcmp=1' ]) dds.run(['repoman', 'remove', tmp_repo, 'neo-fun@0.4.0']) with expect_error_marker('repoman-rm-no-such-package'): dds.run(['repoman', 'remove', tmp_repo, 'neo-fun@0.4.0']) def test_pkg_http(http_repo: RepoFixture, tmp_project: Project) -> None: tmp_project.dds.run([ 'repoman', '-ltrace', 'add', http_repo.server.root, 'neo-fun@0.4.0', 'https://github.com/vector-of-bool/neo-fun/archive/0.4.0.tar.gz?__dds_strpcmp=1' ]) tmp_project.dds.repo_add(http_repo.url) tmp_project.package_json = { 'name': 'test', 'version': '1.2.3', 'depends': ['neo-fun@0.4.0'], 'namespace': 'test', } tmp_project.build()