@@ -32,7 +32,9 @@ import static nebula.plugin.dependencyverifier.DependencyResolutionVerifierTest.
3232import static nebula.plugin.dependencyverifier.DependencyResolutionVerifierTest.OutputAssertions.assertResolutionFailureForDependency
3333import static nebula.plugin.dependencyverifier.DependencyResolutionVerifierTest.OutputAssertions.assertResolutionFailureForDependencyForProject
3434import static nebula.plugin.dependencyverifier.DependencyResolutionVerifierTest.OutputAssertions.assertResolutionFailureForMissingVersionDependencies
35+ import static nebula.plugin.dependencyverifier.DependencyResolutionVerifierTest.OutputAssertions.assertResolutionFailureForOneOfTheseDependencies
3536import static nebula.plugin.dependencyverifier.DependencyResolutionVerifierTest.OutputAssertions.assertResolutionFailureMessage
37+ import static nebula.plugin.dependencyverifier.DependencyResolutionVerifierTest.OutputAssertions.dependencyProjectPair
3638
3739@Subject (DependencyResolutionVerifierKt )
3840class DependencyResolutionVerifierTest extends BaseIntegrationTestKitSpec {
@@ -465,8 +467,10 @@ class DependencyResolutionVerifierTest extends BaseIntegrationTestKitSpec {
465467 results. output. contains(' FAILURE' )
466468 assertExecutionFailedForTask(results. output)
467469 assertResolutionFailureMessage(results. output)
468- assertResolutionFailureForDependencyForProject(results. output, " not.available:apricot:1.0.0" , " sub1" )
469- assertResolutionFailureForDependencyForProject(results. output, " not.available:banana-leaf:2.0.0" , " sub2" )
470+ assertResolutionFailureForOneOfTheseDependencies(results. output, [
471+ dependencyProjectPair(" not.available:apricot:1.0.0" , " sub1" ),
472+ dependencyProjectPair(" not.available:banana-leaf:2.0.0" , " sub2" )
473+ ])
470474
471475 where :
472476 tasks | description
@@ -497,8 +501,10 @@ class DependencyResolutionVerifierTest extends BaseIntegrationTestKitSpec {
497501 results. output. contains(' FAILURE' )
498502 assertExecutionFailedForTask(results. output)
499503 assertResolutionFailureMessage(results. output)
500- assertResolutionFailureForDependencyForProject(results. output, " not.available:apricot:1.0.0" , " sub1" )
501- assertResolutionFailureForDependencyForProject(results. output, " not.available:banana-leaf:2.0.0" , " sub2" )
504+ assertResolutionFailureForOneOfTheseDependencies(results. output, [
505+ dependencyProjectPair(" not.available:apricot:1.0.0" , " sub1" ),
506+ dependencyProjectPair(" not.available:banana-leaf:2.0.0" , " sub2" )
507+ ])
502508
503509 where :
504510 tasks | description
@@ -610,6 +616,7 @@ class DependencyResolutionVerifierTest extends BaseIntegrationTestKitSpec {
610616 then :
611617 results. output. contains(' FAILURE' )
612618 assertExecutionFailedForTask(results. output)
619+ assertResolutionFailureMessage(results. output)
613620 assertFailureMessageIsDisplayedOnce(results. output, " not.available:a" )
614621
615622 where :
@@ -1426,6 +1433,24 @@ class DependencyResolutionVerifierTest extends BaseIntegrationTestKitSpec {
14261433 assert resultsOutput. findAll(onceBlock). size() == 1
14271434 }
14281435
1436+ /**
1437+ * Asserts that the build output shows a resolution failure for at least one of the given dependency–project pairs.
1438+ * Use {@link #dependencyProjectPair(String, String) } to build each pair.
1439+ *
1440+ * @param resultsOutput build output (e.g. from runTasksAndFail)
1441+ * @param pairList pairs of (dependency coordinate, project name); at least one must appear as a resolution failure in the output
1442+ */
1443+ static void assertResolutionFailureForOneOfTheseDependencies (String resultsOutput , List<DependencyProjectPair > pairList ) {
1444+ boolean anyMatch = pairList. any { hasResolutionFailureForDependencyForProject(resultsOutput, it. dependency, it. project) }
1445+ String expected = pairList. collect { " ${ it.dependency} in ${ it.project} " }. join(' or ' )
1446+ assert anyMatch, " Expected resolution failure for ${ expected} "
1447+ }
1448+
1449+ static boolean hasResolutionFailureForDependencyForProject (String resultsOutput , String dependency , String projectName ) {
1450+ hasResolutionFailureForDependency(resultsOutput, dependency) &&
1451+ hasProjectContextInOutput(resultsOutput, projectName)
1452+ }
1453+
14291454 static boolean hasResolutionFailureForDependency (String resultsOutput , String dependency ) {
14301455 List<String > patterns = [
14311456 COULD_NOT_FIND + dependency,
@@ -1454,6 +1479,22 @@ class DependencyResolutionVerifierTest extends BaseIntegrationTestKitSpec {
14541479 return (requiredByProjectMarkers. every { resultsOutput. contains(it) }) ||
14551480 projectPatterns. any { resultsOutput. contains(it) }
14561481 }
1482+
1483+ /* * Value type pairing a dependency coordinate with a project name for assertResolutionFailureForDependencyForProjectOneOf. */
1484+ private static final class DependencyProjectPair {
1485+ final String dependency
1486+ final String project
1487+
1488+ DependencyProjectPair (String dependency , String project ) {
1489+ this . dependency = dependency
1490+ this . project = project
1491+ }
1492+ }
1493+
1494+ /* * Pairs a dependency coordinate with a project name for use in assertResolutionFailureForDependencyForProjectOneOf. */
1495+ static DependencyProjectPair dependencyProjectPair (String dependency , String projectName ) {
1496+ return new DependencyProjectPair (dependency, projectName)
1497+ }
14571498 }
14581499
14591500 private static String taskThatRequiresConfigurationDependencies () {
0 commit comments