|
- import pytest
- from pathlib import Path
- from typing import Tuple
- import subprocess
-
- from dds_ci import proc
- from dds_ci.testing import ProjectOpener, Project
-
-
- @pytest.fixture()
- def test_project(project_opener: ProjectOpener) -> Project:
- return project_opener.open('projects/sdist')
-
-
- def test_create_sdist(test_project: Project, tmp_path: Path) -> None:
- # Create in the default location
- test_project.sdist_create()
- sd_dir = test_project.build_root / 'foo@1.2.3.tar.gz'
- assert sd_dir.is_file(), 'Did not create an sdist in the default location'
- # Create in a different location
- dest = tmp_path / 'dummy.tar.gz'
- test_project.sdist_create(dest=dest)
- assert dest.is_file(), 'Did not create an sdist in the new location'
-
-
- @pytest.fixture()
- def test_sdist(test_project: Project) -> Tuple[Path, Project]:
- repo_content_path = test_project.dds.repo_dir / 'foo@1.2.3'
- assert not repo_content_path.is_dir()
- test_project.sdist_create()
- assert not repo_content_path.is_dir()
- return test_project.build_root / 'foo@1.2.3.tar.gz', test_project
-
-
- def test_import_sdist_archive(test_sdist: Tuple[Path, Project]) -> None:
- sdist, project = test_sdist
- repo_content_path = project.dds.repo_dir / 'foo@1.2.3'
- project.dds.pkg_import(sdist)
- assert repo_content_path.is_dir(), \
- 'The package did not appear in the local cache'
- assert repo_content_path.joinpath('library.jsonc').is_file(), \
- 'The package\'s library.jsonc did not get imported'
- # Excluded file will not be in the sdist:
- assert not repo_content_path.joinpath('other-file.txt').is_file(), \
- 'Non-package content appeared in the package cache'
-
-
- def test_import_sdist_stdin(test_sdist: Tuple[Path, Project]) -> None:
- sdist, project = test_sdist
- repo_content_path = project.dds.repo_dir / 'foo@1.2.3'
- pipe = subprocess.Popen(
- list(proc.flatten_cmd([
- project.dds.path,
- project.dds.repo_dir_arg,
- 'pkg',
- 'import',
- '--stdin',
- ])),
- stdin=subprocess.PIPE,
- )
- assert pipe.stdin
- with sdist.open('rb') as sdist_bin:
- buf = sdist_bin.read(1024)
- while buf:
- pipe.stdin.write(buf)
- buf = sdist_bin.read(1024)
- pipe.stdin.close()
-
- rc = pipe.wait()
- assert rc == 0, 'Subprocess failed'
- # project.dds.pkg_import(sdist)
- assert repo_content_path.is_dir(), \
- 'The package did not appear in the local cache'
- assert repo_content_path.joinpath('library.jsonc').is_file(), \
- 'The package\'s library.jsonc did not get imported'
- # Excluded file will not be in the sdist:
- assert not repo_content_path.joinpath('other-file.txt').is_file(), \
- 'Non-package content appeared in the package cache'
|