Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions scripts/action/analyze.sh
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,19 @@ stage() {
# time rather than carried in the state directory, so a bundle can never
# inherit the label of the one it was seeded from.
python3 -c 'import json,os,sys
json.dump({
"kind": sys.argv[2],
kind = sys.argv[2]
marker = {
"kind": kind,
"engine_version": os.environ.get("ENGINE_VERSION", ""),
"cfg_hash": os.environ.get("CFG_HASH", ""),
"merge_base_sha": os.environ.get("REVIEW_BASE_SHA", ""),
"head_sha": os.environ.get("REVIEW_HEAD_SHA", ""),
"pr_number": os.environ.get("PR_NUMBER", ""),
}, open(sys.argv[1], "w"), indent=2)' "$STAGE_DIR/$kind/metadata.json" "$kind"
}
# A base describes one commit and is shared by every pull request that forks
# there, so the run that happened to compute it is not part of its identity.
if kind == "warmstart":
marker["pr_number"] = os.environ.get("PR_NUMBER", "")
marker["head_sha"] = os.environ.get("REVIEW_HEAD_SHA", "")
json.dump(marker, open(sys.argv[1], "w"), indent=2)' "$STAGE_DIR/$kind/metadata.json" "$kind"
}

analyze_sync() {
Expand Down
14 changes: 14 additions & 0 deletions tests/test_action_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,20 @@ def test_each_bundle_says_what_it_is(self) -> None:
warmstart = json.loads((self.stage_dir / "warmstart" / "metadata.json").read_text())
self.assertEqual(warmstart["kind"], "warmstart")
self.assertEqual(warmstart["merge_base_sha"], "merge-base-sha")
# A warm-start bundle belongs to one pull request; a base does not.
self.assertEqual(warmstart["pr_number"], "42")

def test_a_base_is_not_labelled_with_the_run_that_computed_it(self) -> None:
# One base serves every pull request forking from that commit, so the
# run that happened to build it is not part of what the bundle is.
_state(self.base_dir)
self._analyze(RENEW_BASE="true")

base = json.loads((self.stage_dir / "base" / "metadata.json").read_text())
self.assertEqual(base["kind"], "base")
self.assertEqual(base["merge_base_sha"], "merge-base-sha")
self.assertNotIn("pr_number", base)
self.assertNotIn("head_sha", base)

def test_a_bundle_never_inherits_the_label_of_its_seed(self) -> None:
# A fetched base bundle carries kind=base, and the head is seeded by
Expand Down
Loading