' % root_dir_branch_url)
assert_contains(resp, '', count=len(origin_releases))
query_params["branch"] = None
for release in origin_releases:
query_params["release"] = release["name"]
root_dir_release_url = reverse(
"browse-origin-content", url_args=url_args, query_params=query_params
)
assert_contains(resp, '' % root_dir_release_url)
url = reverse("browse-origin-content", url_args=url_args, query_params=query_params)
resp = client.get(url)
assert resp.status_code == 200
assert_template_used(resp, "browse/content.html")
swh_cnt_id = get_swh_persistent_id("content", content["sha1_git"])
swh_cnt_id_url = reverse("browse-swh-id", url_args={"swh_id": swh_cnt_id})
assert_contains(resp, swh_cnt_id)
assert_contains(resp, swh_cnt_id_url)
assert_contains(resp, "swh-take-new-snapshot")
def _origin_directory_view_test_helper(
client,
origin_info,
origin_visits,
origin_branches,
origin_releases,
root_directory_sha1,
directory_entries,
visit_id=None,
timestamp=None,
path=None,
):
dirs = [e for e in directory_entries if e["type"] in ("dir", "rev")]
files = [e for e in directory_entries if e["type"] == "file"]
if not visit_id:
visit_id = origin_visits[-1]["visit"]
url_args = {"origin_url": origin_info["url"]}
query_params = {}
if timestamp:
url_args["timestamp"] = timestamp
else:
query_params["visit_id"] = visit_id
if path:
url_args["path"] = path
url = reverse(
"browse-origin-directory", url_args=url_args, query_params=query_params
)
resp = client.get(url)
assert resp.status_code == 200
assert_template_used(resp, "browse/directory.html")
assert resp.status_code == 200
assert_template_used(resp, "browse/directory.html")
assert_contains(resp, '', count=len(dirs))
assert_contains(resp, ' | ', count=len(files))
if timestamp:
url_args["timestamp"] = format_utc_iso_date(
parse_timestamp(timestamp).isoformat(), "%Y-%m-%dT%H:%M:%S"
)
for d in dirs:
if d["type"] == "rev":
dir_url = reverse("browse-revision", url_args={"sha1_git": d["target"]})
else:
dir_path = d["name"]
if path:
dir_path = "%s/%s" % (path, d["name"])
dir_url_args = dict(url_args)
dir_url_args["path"] = dir_path
dir_url = reverse(
"browse-origin-directory",
url_args=dir_url_args,
query_params=query_params,
)
assert_contains(resp, dir_url)
for f in files:
file_path = f["name"]
if path:
file_path = "%s/%s" % (path, f["name"])
file_url_args = dict(url_args)
file_url_args["path"] = file_path
file_url = reverse(
"browse-origin-content", url_args=file_url_args, query_params=query_params
)
assert_contains(resp, file_url)
if "path" in url_args:
del url_args["path"]
root_dir_branch_url = reverse(
"browse-origin-directory", url_args=url_args, query_params=query_params
)
nb_bc_paths = 1
if path:
nb_bc_paths = len(path.split("/")) + 1
assert_contains(resp, '', count=nb_bc_paths)
assert_contains(
resp, '%s' % (root_dir_branch_url, root_directory_sha1[:7])
)
origin_branches_url = reverse(
"browse-origin-branches", url_args=url_args, query_params=query_params
)
assert_contains(
resp,
'Branches (%s)' % (origin_branches_url, len(origin_branches)),
)
origin_releases_url = reverse(
"browse-origin-releases", url_args=url_args, query_params=query_params
)
nb_releases = len(origin_releases)
if nb_releases > 0:
assert_contains(
resp, 'Releases (%s)' % (origin_releases_url, nb_releases)
)
if path:
url_args["path"] = path
assert_contains(resp, '', count=len(origin_branches))
for branch in origin_branches:
query_params["branch"] = branch["name"]
root_dir_branch_url = reverse(
"browse-origin-directory", url_args=url_args, query_params=query_params
)
assert_contains(resp, '' % root_dir_branch_url)
assert_contains(resp, '', count=len(origin_releases))
query_params["branch"] = None
for release in origin_releases:
query_params["release"] = release["name"]
root_dir_release_url = reverse(
"browse-origin-directory", url_args=url_args, query_params=query_params
)
assert_contains(resp, '' % root_dir_release_url)
assert_contains(resp, "vault-cook-directory")
assert_contains(resp, "vault-cook-revision")
swh_dir_id = get_swh_persistent_id("directory", directory_entries[0]["dir_id"])
swh_dir_id_url = reverse("browse-swh-id", url_args={"swh_id": swh_dir_id})
assert_contains(resp, swh_dir_id)
assert_contains(resp, swh_dir_id_url)
assert_contains(resp, "swh-take-new-snapshot")
def _origin_branches_test_helper(client, origin_info, origin_snapshot):
url_args = {"origin_url": origin_info["url"]}
url = reverse("browse-origin-branches", url_args=url_args)
resp = client.get(url)
assert resp.status_code == 200
assert_template_used(resp, "browse/branches.html")
origin_branches = origin_snapshot[0]
origin_releases = origin_snapshot[1]
origin_branches_url = reverse("browse-origin-branches", url_args=url_args)
assert_contains(
resp,
'Branches (%s)' % (origin_branches_url, len(origin_branches)),
)
origin_releases_url = reverse("browse-origin-releases", url_args=url_args)
nb_releases = len(origin_releases)
if nb_releases > 0:
assert_contains(
resp, 'Releases (%s)' % (origin_releases_url, nb_releases)
)
assert_contains(resp, '' % escape(browse_branch_url))
browse_revision_url = reverse(
"browse-revision",
url_args={"sha1_git": branch["revision"]},
query_params={"origin": origin_info["url"]},
)
assert_contains(resp, '' % escape(browse_revision_url))
def _origin_releases_test_helper(client, origin_info, origin_snapshot):
url_args = {"origin_url": origin_info["url"]}
url = reverse("browse-origin-releases", url_args=url_args)
resp = client.get(url)
assert resp.status_code == 200
assert_template_used(resp, "browse/releases.html")
origin_branches = origin_snapshot[0]
origin_releases = origin_snapshot[1]
origin_branches_url = reverse("browse-origin-branches", url_args=url_args)
assert_contains(
resp,
'Branches (%s)' % (origin_branches_url, len(origin_branches)),
)
origin_releases_url = reverse("browse-origin-releases", url_args=url_args)
nb_releases = len(origin_releases)
if nb_releases > 0:
assert_contains(
resp, 'Releases (%s)' % (origin_releases_url, nb_releases)
)
assert_contains(resp, ' ' % escape(browse_release_url))
assert_contains(resp, '' % escape(browse_revision_url))
@given(
new_origin(), visit_dates(), revisions(min_size=10, max_size=10), existing_release()
)
def test_origin_branches_pagination_with_alias(
client, archive_data, mocker, new_origin, visit_dates, revisions, existing_release
):
"""
When a snapshot contains a branch or a release alias, pagination links
in the branches / releases view should be displayed.
"""
- mocker.patch(
- "swh.web.browse.views.utils.snapshot_context.PER_PAGE", len(revisions) / 2
- )
+ mocker.patch("swh.web.browse.snapshot_context.PER_PAGE", len(revisions) / 2)
snp_dict = {"branches": {}, "id": hash_to_bytes(random_sha1())}
for i in range(len(revisions)):
branch = "".join(random.choices(string.ascii_lowercase, k=8))
snp_dict["branches"][branch.encode()] = {
"target_type": "revision",
"target": hash_to_bytes(revisions[i]),
}
release = "".join(random.choices(string.ascii_lowercase, k=8))
snp_dict["branches"][b"RELEASE_ALIAS"] = {
"target_type": "alias",
"target": release.encode(),
}
snp_dict["branches"][release.encode()] = {
"target_type": "release",
"target": hash_to_bytes(existing_release),
}
new_origin = archive_data.origin_add([new_origin])[0]
archive_data.snapshot_add([Snapshot.from_dict(snp_dict)])
visit = archive_data.origin_visit_add(new_origin["url"], visit_dates[0], type="git")
archive_data.origin_visit_update(
new_origin["url"], visit.visit, status="full", snapshot=snp_dict["id"]
)
url = reverse("browse-origin-branches", url_args={"origin_url": new_origin["url"]})
resp = client.get(url)
assert resp.status_code == 200
assert_template_used(resp, "browse/branches.html")
assert_contains(resp, ' |