-
Notifications
You must be signed in to change notification settings - Fork 316
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: skip deep dependency comparison for Gradle projects #9817
base: main
Are you sure you want to change the base?
fix: skip deep dependency comparison for Gradle projects #9817
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #9817 +/- ##
============================================
- Coverage 68.07% 68.05% -0.03%
Complexity 1285 1285
============================================
Files 249 249
Lines 8828 8831 +3
Branches 918 919 +1
============================================
Hits 6010 6010
- Misses 2432 2434 +2
- Partials 386 387 +1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
a3c19f7
to
86d09b3
Compare
There are some test differences to inspect. |
For whatever reason, the change causes a lot of the following differences in the dependency tree: It basically seems that cycles are now cut too early or so. |
Or actually, it seems that runtime dependencies are omitted now. Take a look at e.g. lifecycle-livedata-core:2.5.0:
|
This makes the diff, if any, to expected results more readable. Signed-off-by: Sebastian Schuberth <[email protected]>
This is unnecessary and leads to a long runtime (and possible an infinite loop / recursion) for large dependency graphs as observed in Signed-off-by: Jendrik Johannes <[email protected]>
86d09b3
to
05b57b9
Compare
val dependencies2 = dependencies.associateBy { dependencyHandler.identifierFor(it) } | ||
if (!dependencies2.keys.containsAll(dependencies1)) return false | ||
|
||
if (dependencies1 == dependencies2.keys) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe that no "GradleDependencyHandler" specific code must be put here.
Instead we should provide means to inject / override the equality comparison function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extending the DependencyHandler
interface with such a function is a good idea; however, it currently is unclear how to proceed further with the test failures. @jjohannes and I will look into them again later.
val dependencies2 = dependencies.associateBy { dependencyHandler.identifierFor(it) } | ||
if (!dependencies2.keys.containsAll(dependencies1)) return false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW, @oheger-bosch do you recall why the original code uses an "uni-directional" containsAll()
here? In other words, why did we continue here if dependencies2
was a superset of dependencies1
, instead of also returning false
early?
This is unnecessary and leads to a long runtime (and possible an infinite loop/recursion) for large dependency graphs as observed in #9763.