Skip to content

Commit

Permalink
adds handler for yarn specific errors (#11424)
Browse files Browse the repository at this point in the history
  • Loading branch information
sachin-sandhu authored Jan 28, 2025
1 parent 2e5896f commit e42ae8f
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
9 changes: 9 additions & 0 deletions npm_and_yarn/lib/dependabot/npm_and_yarn.rb
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ module NpmAndYarn
REQUIREMENT_NOT_PROVIDED: /(?<dep>.*)(.*?)doesn't provide (?<pkg>.*)(.*?), requested by (?<parent>.*)/
}.freeze, T::Hash[String, Regexp])

YN0086_DEPS_RESOLUTION_FAILED = /peer dependencies are incorrectly met/

# registry returns malformed response
REGISTRY_NOT_REACHABLE = /Received malformed response from registry for "(?<ver>.*)". The registry may be down./

Expand Down Expand Up @@ -351,6 +353,13 @@ def self.sanitize_resolvability_message(error_message, dependencies, yarn_lock)
Dependabot::DependencyNotFound.new(message)
end
}
},
"YN0086" => {
message: "deps resolution failed",
handler: lambda { |message, _error, _params|
msg = message.match(YN0086_DEPS_RESOLUTION_FAILED)
Dependabot::DependencyFileNotResolvable.new(msg || message)
}
}
}.freeze, T::Hash[String, {
message: T.any(String, NilClass),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,28 @@
end
end

context "when the error message contains a deps resolution failed error" do
let(:error_message) do
"[YN0001]: Exception error, Detail: ➤ YN0000: · Yarn 4.5.1" \
"➤ YN0000: ┌ Resolution step" \
"::group::Resolution step" \
"➤ YN0085: │ + @testing-library/user-event@npm:14.6.1" \
"::endgroup::" \
"➤ YN0000: └ Completed in 0s 466ms" \
"➤ YN0060: │ react-dom is ...... non-overlapping ranges." \
"➤ YN0060: │ redux is listed by your non-overlapping ranges." \
"➤ YN0086: │ Some peer dependencies are incorrectly met by your project;" \
"➤ YN0086: │ Some peer dependencies are incorrectly met by dependencies;" \
end

it "raises a DependencyFileNotResolvable error" do
expect do
error_handler.handle_yarn_error(error, { yarn_lock: yarn_lock })
end.to raise_error(Dependabot::DependencyFileNotResolvable,
/peer dependencies are incorrectly met/)
end
end

context "when the error message contains SUB_DEP_LOCAL_PATH_TEXT" do
let(:error_message) { "Some error occurred: refers to a non-existing file" }

Expand Down

0 comments on commit e42ae8f

Please sign in to comment.