Skip to content

Commit

Permalink
Bug 1509526 [wpt PR 14208] - Revert "Find manifest for download by ta…
Browse files Browse the repository at this point in the history
…gs instead of commits", a=testonly

Automatic update from web-platform-testsRevert "Find manifest for download by tags instead of commits"

Possible but unlikely cause of web-platform-tests/wpt#14207.

This reverts commit 3657828ff4243fcc2f3b3fa4e7bed34d646ad565.

--

wpt-commits: 5438f72ea0bc2abb3754b2b906a34d497bd8457c
wpt-pr: 14208

UltraBlame original commit: 9caf650605472e0569cd50ab1d64bd557de4c163
  • Loading branch information
marco-c committed Oct 3, 2019
1 parent 9124b7e commit dceef85
Showing 1 changed file with 36 additions and 43 deletions.
79 changes: 36 additions & 43 deletions testing/web-platform/tests/tools/manifest/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,53 +33,46 @@ def should_download(manifest_path, rebuild_time=timedelta(days=5)):
return False


def merge_pr_tags(repo_root, max_count=50):
def git_commits(repo_root):
git = Git.get_func(repo_root)
tags = []
for line in git("log", "--format=%D", "--max-count=%s" % max_count).split("\n"):
for ref in line.split(", "):
if ref.startswith("tag: merge_pr_"):
tags.append(ref[5:])
return tags


def github_url(tags):
for tag in tags:
url = "https://api.github.com/repos/web-platform-tests/wpt/releases/tags/%s" % tag
try:
resp = urlopen(url)
except Exception:
logger.warning("Fetching %s failed" % url)
continue

if resp.code != 200:
logger.warning("Fetching %s failed; got HTTP status %d" % (url, resp.code))
continue

try:
release = json.load(resp.fp)
except ValueError:
logger.warning("Response was not valid JSON")
return None

for item in release["assets"]:


if item["name"].startswith("MANIFEST-") and item["name"].endswith(".json.gz"):
return item["browser_download_url"]
elif item["name"] == "MANIFEST.json.gz":
return item["browser_download_url"]

return None


def download_manifest(manifest_path, tags_func, url_func, force=False):
return [item for item in git("log", "--format=%H", "-n50").split("\n") if item]


def github_url(commits):
try:
resp = urlopen("https://api.github.com/repos/web-platform-tests/wpt/releases")
except Exception:
return None

if resp.code != 200:
return None

try:
releases = json.load(resp.fp)
except ValueError:
logger.warning("Response was not valid JSON")
return None

fallback = None
for release in releases:
for commit in commits:
for item in release["assets"]:
if item["name"] == "MANIFEST-%s.json.gz" % commit:
return item["browser_download_url"]
elif item["name"] == "MANIFEST.json.gz" and not fallback:
fallback = item["browser_download_url"]
if fallback:
logger.info("Can't find a commit-specific manifest so just using the most recent one")
return fallback


def download_manifest(manifest_path, commits_func, url_func, force=False):
if not force and not should_download(manifest_path):
return False

tags = tags_func()
commits = commits_func()

url = url_func(tags)
url = url_func(commits)
if not url:
logger.warning("No generated manifest found")
return False
Expand Down Expand Up @@ -127,7 +120,7 @@ def create_parser():


def download_from_github(path, tests_root, force=False):
return download_manifest(path, lambda: merge_pr_tags(tests_root), github_url,
return download_manifest(path, lambda: git_commits(tests_root), github_url,
force=force)


Expand Down

0 comments on commit dceef85

Please sign in to comment.