Skip to content

Commit

Permalink
Cover the case where a pull request was merged and then rebased
Browse files Browse the repository at this point in the history
  • Loading branch information
mvz committed Jan 13, 2024
1 parent 802de0a commit dab8356
Showing 1 changed file with 39 additions and 5 deletions.
44 changes: 39 additions & 5 deletions spec/unit/generator/generator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ def sha(num)
end

it "associates prs to the oldest tag containing the merge commit" do
prs = [{ "events" => [{ "event" => "merged", "commit_id" => sha(2) }] }]
prs = [{ "number" => "23", "events" => [{ "event" => "merged", "commit_id" => sha(2) }] }]
tags = [
{ "name" => "newer2.0", "shas_in_tag" => [sha(1), sha(2), sha(3)] },
{ "name" => "older1.0", "shas_in_tag" => [sha(1), sha(2)] }
Expand All @@ -86,7 +86,7 @@ def sha(num)
end

it "detects prs merged in the release branch" do
prs = [{ "events" => [{ "event" => "merged", "commit_id" => sha(4) }] }]
prs = [{ "number" => "23", "events" => [{ "event" => "merged", "commit_id" => sha(4) }] }]
tags = [{ "name" => "v1.0", "shas_in_tag" => [sha(1), sha(2)] }]

prs_left = generator.send(:add_first_occurring_tag_to_prs, tags, prs)
Expand All @@ -101,7 +101,7 @@ def sha(num)
end

it "detects closed prs marked as rebased in a tag" do
prs = [{ "comments" => [{ "body" => "rebased commit: #{sha(2)}" }] }]
prs = [{ "number" => "23", "comments" => [{ "body" => "rebased commit: #{sha(2)}" }] }]
tags = [{ "name" => "v1.0", "shas_in_tag" => [sha(1), sha(2)] }]

prs_left = generator.send(:add_first_occurring_tag_to_prs, tags, prs)
Expand All @@ -116,7 +116,7 @@ def sha(num)
end

it "detects closed prs marked as rebased in the release branch" do
prs = [{ "comments" => [{ "body" => "rebased commit: #{sha(4)}" }] }]
prs = [{ "number" => "23", "comments" => [{ "body" => "rebased commit: #{sha(4)}" }] }]
tags = [{ "name" => "v1.0", "shas_in_tag" => [sha(1), sha(2)] }]

prs_left = generator.send(:add_first_occurring_tag_to_prs, tags, prs)
Expand All @@ -131,7 +131,7 @@ def sha(num)
end

it "leaves prs merged in another branch" do
prs = [{ "events" => [{ "event" => "merged", "commit_id" => sha(5) }] }]
prs = [{ "number" => "23", "events" => [{ "event" => "merged", "commit_id" => sha(5) }] }]
tags = [{ "name" => "v1.0", "shas_in_tag" => [sha(1), sha(2)] }]

prs_left = generator.send(:add_first_occurring_tag_to_prs, tags, prs)
Expand All @@ -145,6 +145,40 @@ def sha(num)
end
end

it "detects prs merged elsewhere and marked as rebased in a tag" do
prs = [{ "number" => "23",
"events" => [{ "event" => "merged", "commit_id" => sha(5) }],
"comments" => [{ "body" => "rebased commit: #{sha(2)}" }] }]
tags = [{ "name" => "v1.0", "shas_in_tag" => [sha(1), sha(2)] }]

prs_left = generator.send(:add_first_occurring_tag_to_prs, tags, prs)

aggregate_failures do
expect(prs_left).to be_empty
expect(prs.first["first_occurring_tag"]).to eq "v1.0"

expect(fake_fetcher).to have_received(:fetch_tag_shas)
expect(fake_fetcher).to have_received(:fetch_comments_async)
end
end

it "detects prs merged elsewhere and marked as rebased in the release branch" do
prs = [{ "number" => "23",
"events" => [{ "event" => "merged", "commit_id" => sha(5) }],
"comments" => [{ "body" => "rebased commit: #{sha(4)}" }] }]
tags = [{ "name" => "v1.0", "shas_in_tag" => [sha(1), sha(2)] }]

prs_left = generator.send(:add_first_occurring_tag_to_prs, tags, prs)

aggregate_failures do
expect(prs_left).to be_empty
expect(prs.first["first_occurring_tag"]).to be_nil

expect(fake_fetcher).to have_received(:fetch_tag_shas)
expect(fake_fetcher).to have_received(:fetch_comments_async)
end
end

it "raises an error for closed prs marked as rebased to an unknown commit" do
prs = [{ "number" => "23", "comments" => [{ "body" => "rebased commit: #{sha(5)}" }] }]
tags = [{ "name" => "v1.0", "shas_in_tag" => [sha(1), sha(2)] }]
Expand Down

0 comments on commit dab8356

Please sign in to comment.