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
26 changes: 23 additions & 3 deletions common/lib/dependabot/pull_request_creator/message_builder.rb
Original file line number Diff line number Diff line change
Expand Up @@ -198,9 +198,10 @@ def version_commit_message_intro

return dependency_set_intro if dependencies.count > 1 && updating_a_dependency_set?

return transitive_removed_dependency_intro if dependencies.count > 1 && removing_a_transitive_dependency?

return transitive_multidependency_intro if dependencies.count > 1 &&
updating_top_level_and_transitive_dependencies? &&
dependencies.none?(&:removed?)
updating_top_level_and_transitive_dependencies?

return multidependency_intro if dependencies.count > 1

Expand Down Expand Up @@ -262,6 +263,21 @@ def transitive_multidependency_intro
msg
end

def transitive_removed_dependency_intro
msg = "Removes #{dependency_links[0]}. It's no longer used after updating"

msg += if dependencies.count > 2
" ancestor dependencies #{dependency_links[0..-2].join(', ')} " \
"and #{dependency_links[-1]}. "
else
" ancestor dependency #{dependency_links[1]}. "
end

msg += "These dependencies need to be updated together.\n"

msg
end

def from_version_msg(previous_version)
return "" unless previous_version

Expand All @@ -280,6 +296,10 @@ def updating_a_dependency_set?
any? { |r| r.dig(:metadata, :dependency_set) }
end

def removing_a_transitive_dependency?
dependencies.any?(&:removed?)
end

def updating_top_level_and_transitive_dependencies?
dependencies.any?(&:top_level?) &&
dependencies.any? { |dep| !dep.top_level? }
Expand Down Expand Up @@ -346,7 +366,7 @@ def metadata_cascades

dependencies.map do |dep|
msg = if dep.removed?
"\nRemoves `#{dep.display_name}`"
"\nRemoves `#{dep.display_name}`\n"
else
"\nUpdates `#{dep.display_name}` " \
"#{from_version_msg(previous_version(dep))}" \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1612,10 +1612,10 @@ def commits_details(base:, head:)
it "includes details of both dependencies" do
expect(pr_message).
to eq(
"Bumps [statesman](https://github.com/gocardless/statesman) " \
"and [business](https://github.com/gocardless/business). " \
"These dependencies needed to be updated together.\n" \
"Removes `statesman`\n" \
"Removes [statesman](https://github.com/gocardless/statesman). It's no longer used after updating " \
"ancestor dependency [business](https://github.com/gocardless/business). " \
"These dependencies need to be updated together.\n\n" \
"Removes `statesman`\n\n" \
"Updates `business` from 1.4.0 to 1.5.0\n" \
"<details>\n" \
"<summary>Changelog</summary>\n" \
Expand Down