@@ -155,22 +155,40 @@ abstract class BaseRepositoryTests extends ArtifactoryTestsBase {
155155 if (prepareVirtualRepo) {
156156 RepositorySettings virtualSettings = getRepositorySettings(RepositoryTypeImpl . VIRTUAL )
157157 def repos = new ArrayList<String > ()
158+ Repository repoForVirtual = null
158159
159160 // Determine which repository to use for the virtual repo
160161 // For package types that don't support local repos (like P2), use remote repo
161- // Otherwise, create a local repo with matching package type
162- if (prepareLocalRepo && localRepo != null ) {
163- // Use the existing local repo if it's prepared
164- artifactory. repositories(). create(0 , localRepo)
165- repos. add(localRepo. getKey())
162+ // Otherwise, create a dedicated local repo with matching package type
163+ if (prepareLocalRepo) {
164+ // Create a dedicated local repo for virtual repo with matching package type
165+ RepositorySettings localSettingsForVirtual = getRepositorySettings(RepositoryTypeImpl . LOCAL )
166+ XraySettings virtualXraySettings = new XraySettingsImpl ()
167+ repoForVirtual = artifactory. repositories(). builders(). localRepositoryBuilder()
168+ .key(" $REPO_NAME_PREFIX -for-virtual-$id " )
169+ .description(" for-virtual-$id " )
170+ .notes(" notes-${ rnd.nextInt()} " )
171+ .archiveBrowsingEnabled(rnd. nextBoolean())
172+ .blackedOut(rnd. nextBoolean())
173+ .excludesPattern(" org/${ rnd.nextInt()} /**" )
174+ .includesPattern(" org/${ rnd.nextInt()} /**" )
175+ .propertySets(Collections . emptyList())
176+ .repositorySettings(localSettingsForVirtual)
177+ .xraySettings(virtualXraySettings)
178+ .customProperties(customProperties)
179+ .build()
180+ artifactory. repositories(). create(0 , repoForVirtual)
181+ repos. add(repoForVirtual. getKey())
166182 } else if (prepareRemoteRepo && remoteRepo != null ) {
167183 // Use remote repo for package types that don't support local repos (e.g., P2)
168- artifactory. repositories(). create(0 , remoteRepo)
169- repos. add(remoteRepo. getKey())
184+ repoForVirtual = remoteRepo
185+ artifactory. repositories(). create(0 , repoForVirtual)
186+ repos. add(repoForVirtual. getKey())
170187 } else if (prepareGenericRepo && genericRepo != null ) {
171188 // Fallback to generic repo
172- artifactory. repositories(). create(0 , genericRepo)
173- repos. add(genericRepo. getKey())
189+ repoForVirtual = genericRepo
190+ artifactory. repositories(). create(0 , repoForVirtual)
191+ repos. add(repoForVirtual. getKey())
174192 }
175193
176194 virtualRepo = artifactory. repositories(). builders(). virtualRepositoryBuilder()
@@ -185,6 +203,11 @@ abstract class BaseRepositoryTests extends ArtifactoryTestsBase {
185203 .customProperties(customProperties)
186204 .defaultDeploymentRepo(repos. isEmpty() ? null : repos. last())
187205 .build()
206+
207+ // Store reference to the repo created for virtual for cleanup
208+ if (! prepareGenericRepo && repoForVirtual != null ) {
209+ genericRepo = repoForVirtual
210+ }
188211 }
189212 }
190213
0 commit comments