@@ -21,13 +21,22 @@ import nebula.test.ProjectSpec
2121import org.gradle.testfixtures.ProjectBuilder
2222import spock.lang.Unroll
2323
24+ import java.util.UUID
25+
2426class GenerateLockTaskSpec extends ProjectSpec {
2527 final String taskName = ' generateLock'
2628
2729 def setupSpec () {
2830 Fixture . createFixtureIfNotCreated()
2931 }
3032
33+ /* * Creates a fresh project with a unique dir to avoid test pollution (shared project accumulates deps across tests). */
34+ private org.gradle.api.Project createFreshProjectForLockTest () {
35+ def dir = new File (projectDir, " fresh-${ UUID.randomUUID()} " )
36+ dir. mkdirs()
37+ ProjectBuilder . builder(). withName(' lockTest' ). withProjectDir(dir). build()
38+ }
39+
3140 def ' simple lock' () {
3241 project. apply plugin : ' java'
3342
@@ -125,14 +134,15 @@ class GenerateLockTaskSpec extends ProjectSpec {
125134 }
126135
127136 def ' skip dependencies via transitives when configured' () {
128- project. apply plugin : ' java'
129- project. repositories { maven { url Fixture . repo } }
130- project. dependencies {
137+ def proj = createFreshProjectForLockTest()
138+ proj. apply plugin : ' java'
139+ proj. repositories { maven { url Fixture . repo } }
140+ proj. dependencies {
131141 implementation ' test.example:foobaz:1.+'
132142 }
133143
134- GenerateLockTask task = project . tasks. create(taskName, GenerateLockTask )
135- task. dependenciesLock. set(project . layout. buildDirectory. file(' dependencies.lock' ))
144+ GenerateLockTask task = proj . tasks. create(taskName, GenerateLockTask )
145+ task. dependenciesLock. set(proj . layout. buildDirectory. file(' dependencies.lock' ))
136146 task. configurationNames. set([' testRuntimeClasspath' ] as Set )
137147 task. skippedDependencies. set([' test.example:foo' ] as Set )
138148 task. includeTransitives. set(true )
@@ -387,15 +397,15 @@ class GenerateLockTaskSpec extends ProjectSpec {
387397 }
388398
389399 def ' simple transitive lock' () {
390- project . apply plugin : ' java '
391-
392- project . repositories { maven { url Fixture . repo } }
393- project . dependencies {
400+ def proj = createFreshProjectForLockTest()
401+ proj . apply plugin : ' java '
402+ proj . repositories { maven { url Fixture . repo } }
403+ proj . dependencies {
394404 implementation ' test.example:bar:1.+'
395405 }
396406
397- GenerateLockTask task = project . tasks. create(taskName, GenerateLockTask )
398- task. dependenciesLock. set(project . layout. buildDirectory. file(' dependencies.lock' ))
407+ GenerateLockTask task = proj . tasks. create(taskName, GenerateLockTask )
408+ task. dependenciesLock. set(proj . layout. buildDirectory. file(' dependencies.lock' ))
399409 task. configurationNames. set([' testRuntimeClasspath' ] as Set )
400410 task. includeTransitives. set(true )
401411
@@ -499,16 +509,16 @@ class GenerateLockTaskSpec extends ProjectSpec {
499509 }
500510
501511 def ' one level transitive test' () {
502- project . apply plugin : ' java '
503-
504- project . repositories { maven { url Fixture . repo } }
505- project . dependencies {
512+ def proj = createFreshProjectForLockTest()
513+ proj . apply plugin : ' java '
514+ proj . repositories { maven { url Fixture . repo } }
515+ proj . dependencies {
506516 implementation ' test.example:bar:1.+'
507517 implementation ' test.example:foobaz:1.+'
508518 }
509519
510- GenerateLockTask task = project . tasks. create(taskName, GenerateLockTask )
511- task. dependenciesLock. set(project . layout. buildDirectory. file(' dependencies.lock' ))
520+ GenerateLockTask task = proj . tasks. create(taskName, GenerateLockTask )
521+ task. dependenciesLock. set(proj . layout. buildDirectory. file(' dependencies.lock' ))
512522 task. configurationNames. set([' testRuntimeClasspath' ] as Set )
513523 task. includeTransitives. set(true )
514524
@@ -544,15 +554,15 @@ class GenerateLockTaskSpec extends ProjectSpec {
544554 }
545555
546556 def ' multi-level transitive test' () {
547- project . apply plugin : ' java '
548-
549- project . repositories { maven { url Fixture . repo } }
550- project . dependencies {
557+ def proj = createFreshProjectForLockTest()
558+ proj . apply plugin : ' java '
559+ proj . repositories { maven { url Fixture . repo } }
560+ proj . dependencies {
551561 implementation ' test.example:transitive:1.0.0'
552562 }
553563
554- GenerateLockTask task = project . tasks. create(taskName, GenerateLockTask )
555- task. dependenciesLock. set(project . layout. buildDirectory. file(' dependencies.lock' ))
564+ GenerateLockTask task = proj . tasks. create(taskName, GenerateLockTask )
565+ task. dependenciesLock. set(proj . layout. buildDirectory. file(' dependencies.lock' ))
556566 task. configurationNames. set([' testRuntimeClasspath' ] as Set )
557567 task. includeTransitives. set(true )
558568
0 commit comments