Skip to content

Commit

Permalink
Updated the scoping of the pytest fixtures.
Browse files Browse the repository at this point in the history
closes pulp#790
  • Loading branch information
hstct committed Jun 19, 2023
1 parent bf2a1af commit eb9c1d1
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 68 deletions.
1 change: 1 addition & 0 deletions CHANGES/790.misc
@@ -0,0 +1 @@
Added better scoping for the pytest fixtures.
4 changes: 3 additions & 1 deletion pulp_deb/tests/functional/api/test_download_content.py
Expand Up @@ -18,6 +18,7 @@
@pytest.mark.parametrize("is_verbatim", [False, True])
def test_download_content(
deb_distribution_factory,
deb_get_fixture_server_url,
deb_publication_factory,
deb_remote_factory,
deb_repository_factory,
Expand All @@ -34,7 +35,8 @@ def test_download_content(
"""
# Create repository, remote and sync them
repo = deb_repository_factory()
remote = deb_remote_factory(DEB_FIXTURE_STANDARD_REPOSITORY_NAME)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url)
deb_sync_repository(remote, repo)
repo = deb_get_repository_by_href(repo.pulp_href)

Expand Down
8 changes: 6 additions & 2 deletions pulp_deb/tests/functional/api/test_download_policies.py
Expand Up @@ -12,6 +12,7 @@
@pytest.mark.parametrize("policy", ["on_demand", "streamed"])
def test_download_policy(
apt_package_api,
deb_get_fixture_server_url,
deb_get_repository_by_href,
deb_publication_factory,
deb_remote_factory,
Expand All @@ -24,7 +25,8 @@ def test_download_policy(
orphans_cleanup_api_client.cleanup({"orphan_protection_time": 0})
# Create repository and remote and verify latest `repository_version` is 0
repo = deb_repository_factory()
remote = deb_remote_factory(policy=policy)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url, policy=policy)
assert repo.latest_version_href.endswith("/0/")

# Sync and verify latest `repository_version` is 1
Expand Down Expand Up @@ -57,6 +59,7 @@ def test_download_policy(
@pytest.mark.parametrize("policy", ["on_demand", "streamed"])
def test_lazy_sync_immediate_download_test(
artifacts_api_client,
deb_get_fixture_server_url,
deb_get_remote_by_href,
deb_get_repository_by_href,
deb_patch_remote,
Expand All @@ -72,7 +75,8 @@ def test_lazy_sync_immediate_download_test(

# Create repository and remote and sync them
repo = deb_repository_factory()
remote = deb_remote_factory(policy=policy)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url, policy=policy)
deb_sync_repository(remote, repo)
repo = deb_get_repository_by_href(repo.pulp_href)

Expand Down
8 changes: 6 additions & 2 deletions pulp_deb/tests/functional/api/test_publish.py
Expand Up @@ -37,6 +37,7 @@
],
)
def test_publish_any_repo_version(
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_sync_repository,
Expand All @@ -61,7 +62,8 @@ def test_publish_any_repo_version(
cfg = config.get_config()

# Create a repository with at least two repository versions
remote = deb_remote_factory(distributions=DEB_FIXTURE_DISTRIBUTIONS)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url, distributions=DEB_FIXTURE_DISTRIBUTIONS)
repo = deb_repository_factory()
deb_sync_repository(remote, repo)
for deb_generic_content in get_content(repo.to_dict())[DEB_GENERIC_CONTENT_NAME]:
Expand Down Expand Up @@ -112,6 +114,7 @@ def test_publish_any_repo_version(
],
)
def test_publish_signing_services(
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_sync_repository,
Expand All @@ -135,7 +138,8 @@ def test_publish_signing_services(

# Create a repository with at least two dists
signing_service = deb_signing_service_factory
remote = deb_remote_factory(distributions=DEB_FIXTURE_DISTRIBUTIONS)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url, distributions=DEB_FIXTURE_DISTRIBUTIONS)
distro = DEB_FIXTURE_DISTRIBUTIONS.split()[0]
repo_options = {}
publish_options = {"simple": True, "structured": True}
Expand Down
68 changes: 42 additions & 26 deletions pulp_deb/tests/functional/api/test_sync.py
Expand Up @@ -30,6 +30,7 @@
],
)
def test_sync(
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_get_repository_by_href,
Expand All @@ -40,7 +41,8 @@ def test_sync(
"""Test whether synchronizations with and without udebs works as expected."""
# Create a repository and a remote and verify latest `repository_version` is 0
repo = deb_repository_factory()
remote = deb_remote_factory(**remote_params)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url, **remote_params)
assert repo.latest_version_href.endswith("/0/")

# Sync the repository
Expand Down Expand Up @@ -74,15 +76,13 @@ def test_sync(
[
(
{
"repo_name": DEB_FIXTURE_INVALID_REPOSITORY_NAME,
"architectures": "ppc64",
"ignore_missing_package_indices": False,
},
["No suitable package index files", "ppc64"],
),
(
{
"repo_name": DEB_FIXTURE_INVALID_REPOSITORY_NAME,
"architectures": "armeb",
"ignore_missing_package_indices": False,
},
Expand All @@ -92,6 +92,7 @@ def test_sync(
)
def test_sync_missing_package_indices(
expected,
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_sync_repository,
Expand All @@ -106,7 +107,8 @@ def test_sync_missing_package_indices(
"""
# Create repository and remote
repo = deb_repository_factory()
remote = deb_remote_factory(**remote_params)
url = deb_get_fixture_server_url(DEB_FIXTURE_INVALID_REPOSITORY_NAME)
remote = deb_remote_factory(url=url, **remote_params)

# Verify a PulpTaskError is raised and the error message is as expected
with pytest.raises(PulpTaskError) as exc:
Expand All @@ -117,13 +119,17 @@ def test_sync_missing_package_indices(

@pytest.mark.parallel
@pytest.mark.parametrize(
"remote_params, expected",
"repo_name, remote_params, expected",
[
({"url": "http://i-am-an-invalid-url.com/invalid/"}, ["Cannot connect"]),
({"distributions": "no_dist"}, ["Could not find a Release file at"]),
("http://i-am-an-invalid-url.com/invalid/", {}, ["Cannot connect"]),
(
DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
{"distributions": "no_dist"},
["Could not find a Release file at"],
),
(
DEB_FIXTURE_INVALID_REPOSITORY_NAME,
{
"repo_name": DEB_FIXTURE_INVALID_REPOSITORY_NAME,
"distributions": "nosuite",
"gpgkey": DEB_SIGNING_KEY,
},
Expand All @@ -133,10 +139,12 @@ def test_sync_missing_package_indices(
)
def test_sync_invalid_cases(
expected,
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_sync_repository,
remote_params,
repo_name,
):
"""Test whether various invalid sync cases fail as expected.
Expand All @@ -148,7 +156,8 @@ def test_sync_invalid_cases(
"""
# Create repository and remote
repo = deb_repository_factory()
remote = deb_remote_factory(**remote_params)
url = repo_name if repo_name.startswith("http://") else deb_get_fixture_server_url(repo_name)
remote = deb_remote_factory(url=url, **remote_params)

# Verify a PulpTaskError is raised and the error message is as expected
with pytest.raises(PulpTaskError) as exc:
Expand All @@ -159,45 +168,45 @@ def test_sync_invalid_cases(

@pytest.mark.parallel
@pytest.mark.parametrize(
"remote_params, remote_diff_params",
"repo_name, remote_params, repo_diff_name, remote_diff_params",
[
(
DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
{
"repo_name": DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
"distributions": DEB_FIXTURE_SINGLE_DIST,
"components": DEB_FIXTURE_COMPONENT,
"architectures": None,
},
DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
{
"repo_name": DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
"distributions": DEB_FIXTURE_SINGLE_DIST,
"components": DEB_FIXTURE_COMPONENT_UPDATE,
"architectures": None,
},
),
(
DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
{
"repo_name": DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
"distributions": DEB_FIXTURE_SINGLE_DIST,
"components": None,
"architectures": DEB_FIXTURE_ARCH,
},
DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
{
"repo_name": DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
"distributions": DEB_FIXTURE_SINGLE_DIST,
"components": None,
"architectures": DEB_FIXTURE_ARCH_UPDATE,
},
),
(
DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
{
"repo_name": DEB_FIXTURE_STANDARD_REPOSITORY_NAME,
"distributions": DEB_FIXTURE_SINGLE_DIST,
"components": DEB_FIXTURE_COMPONENT,
"architectures": None,
},
DEB_FIXTURE_UPDATE_REPOSITORY_NAME,
{
"repo_name": DEB_FIXTURE_UPDATE_REPOSITORY_NAME,
"distributions": DEB_FIXTURE_SINGLE_DIST,
"components": DEB_FIXTURE_COMPONENT_UPDATE,
"architectures": None,
Expand All @@ -206,11 +215,14 @@ def test_sync_invalid_cases(
],
)
def test_sync_optimize_no_skip_release_file(
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_get_repository_by_href,
remote_params,
remote_diff_params,
repo_name,
repo_diff_name,
deb_sync_repository,
):
"""Test whether synchronizations have not been skipped for certain conditions.
Expand All @@ -223,7 +235,8 @@ def test_sync_optimize_no_skip_release_file(
"""
# Create a repository and a remote and verify latest `repository_version` is 0
repo = deb_repository_factory()
remote = deb_remote_factory(**remote_params)
url = deb_get_fixture_server_url(repo_name)
remote = deb_remote_factory(url=url, **remote_params)
assert repo.latest_version_href.endswith("/0/")

# Sync the repository
Expand All @@ -236,7 +249,8 @@ def test_sync_optimize_no_skip_release_file(
assert not is_sync_skipped(task, DEB_REPORT_CODE_SKIP_PACKAGE)

# Create a new remote with different parameters and sync with repository
remote_diff = deb_remote_factory(**remote_diff_params)
url = deb_get_fixture_server_url(repo_diff_name)
remote_diff = deb_remote_factory(url=url, **remote_diff_params)
task_diff = deb_sync_repository(remote_diff, repo)
repo = deb_get_repository_by_href(repo.pulp_href)

Expand All @@ -248,6 +262,7 @@ def test_sync_optimize_no_skip_release_file(

@pytest.mark.parallel
def test_sync_optimize_skip_unchanged_package_index(
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_get_repository_by_href,
Expand All @@ -259,7 +274,8 @@ def test_sync_optimize_skip_unchanged_package_index(
"""Test whether package synchronization is skipped when a package has not been changed."""
# Create a repository and a remote and verify latest `repository_version` is 0
repo = deb_repository_factory()
remote = deb_remote_factory(distributions=DEB_FIXTURE_SINGLE_DIST)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url, distributions=DEB_FIXTURE_SINGLE_DIST)
assert repo.latest_version_href.endswith("/0/")

# Sync the repository
Expand All @@ -273,9 +289,8 @@ def test_sync_optimize_skip_unchanged_package_index(
assert not is_sync_skipped(task, DEB_REPORT_CODE_SKIP_PACKAGE)

# Create new remote with both updated and unchanged packages and sync with repository
remote_diff = deb_remote_factory(
DEB_FIXTURE_UPDATE_REPOSITORY_NAME, distributions=DEB_FIXTURE_SINGLE_DIST
)
url = deb_get_fixture_server_url(DEB_FIXTURE_UPDATE_REPOSITORY_NAME)
remote_diff = deb_remote_factory(url=url, distributions=DEB_FIXTURE_SINGLE_DIST)
task_diff = deb_sync_repository(remote_diff, repo)
repo = deb_get_repository_by_href(repo.pulp_href)

Expand Down Expand Up @@ -321,6 +336,7 @@ def test_sync_optimize_skip_unchanged_package_index(


def test_sync_orphan_cleanup_fail(
deb_get_fixture_server_url,
deb_remote_factory,
deb_repository_factory,
deb_get_repository_by_href,
Expand All @@ -337,15 +353,15 @@ def test_sync_orphan_cleanup_fail(
repo = deb_repository_factory(retain_repo_versions=1)

# Create a remote and sync with repo. Verify the latest `repository_version` is 1.
remote = deb_remote_factory(distributions=DEB_FIXTURE_SINGLE_DIST)
url = deb_get_fixture_server_url()
remote = deb_remote_factory(url=url, distributions=DEB_FIXTURE_SINGLE_DIST)
deb_sync_repository(remote, repo)
repo = deb_get_repository_by_href(repo.pulp_href)
assert repo.latest_version_href.endswith("/1/")

# Create a new remote with updated packages and sync again. Verify `repository_version` is 2.
remote_diff = deb_remote_factory(
DEB_FIXTURE_UPDATE_REPOSITORY_NAME, distributions=DEB_FIXTURE_SINGLE_DIST
)
url = deb_get_fixture_server_url(DEB_FIXTURE_UPDATE_REPOSITORY_NAME)
remote_diff = deb_remote_factory(url=url, distributions=DEB_FIXTURE_SINGLE_DIST)
deb_sync_repository(remote_diff, repo)
repo = deb_get_repository_by_href(repo.pulp_href)
assert repo.latest_version_href.endswith("/2/")
Expand Down

0 comments on commit eb9c1d1

Please sign in to comment.