@@ -407,14 +407,25 @@ private bool TryResolveSdkUsingSpecifiedResolvers(
407407 /// </summary>
408408 /// <param name="resolverLoader">An <see cref="SdkResolverLoader"/> to use for loading SDK resolvers.</param>
409409 /// <param name="resolvers">Explicit set of SdkResolvers to use for all SDK resolution.</param>
410- /// <param name="resolverOnly "> Debug parameter for initializing only the resolver part </param>
411- internal void InitializeForTests ( SdkResolverLoader resolverLoader = null , IReadOnlyList < SdkResolver > resolvers = null , bool resolverOnly = false )
410+ /// <param name="contentionConditionTest "> Debug parameter for initializing only the stuff required for the Contention Condition check test. </param>
411+ internal void InitializeForTests ( SdkResolverLoader resolverLoader = null , IReadOnlyList < SdkResolver > resolvers = null , bool contentionConditionTest = false )
412412 {
413413 if ( resolverLoader != null )
414414 {
415415 _sdkResolverLoader = resolverLoader ;
416- if ( resolverOnly )
416+
417+ if ( contentionConditionTest )
417418 {
419+ _fake_initialization = true ;
420+ List < SdkResolverManifest > manifests = new List < SdkResolverManifest > ( ) ;
421+ for ( int i = 1 ; i != 20 ; i ++ )
422+ {
423+ var man = new SdkResolverManifest ( DisplayName : "TestResolversManifest" , Path : null , ResolvableSdkRegex : new Regex ( "abc" ) ) ;
424+ manifests . Add ( man ) ;
425+ man = new SdkResolverManifest ( DisplayName : "TestResolversManifest" , Path : null , null ) ;
426+ manifests . Add ( man ) ;
427+ }
428+ _fakeManifestRegistry = manifests . AsReadOnly ( ) ;
418429 return ;
419430 }
420431 }
@@ -423,21 +434,21 @@ internal void InitializeForTests(SdkResolverLoader resolverLoader = null, IReadO
423434 _sdkResolverLoader = CachingSdkResolverLoader . Instance ;
424435 }
425436
426- List < SdkResolverManifest > _specificResolversManifestsRegistryPlaceholder = null ;
427- List < SdkResolverManifest > _generalResolversManifestsRegistryPlaceholder = null ;
437+ List < SdkResolverManifest > specificResolversManifestsRegistryPlaceholder = null ;
438+ List < SdkResolverManifest > generalResolversManifestsRegistryPlaceholder = null ;
428439 _manifestToResolvers = null ;
429440
430441 if ( resolvers != null )
431442 {
432- _specificResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
433- _generalResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
443+ specificResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
444+ generalResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
434445 _manifestToResolvers = new Dictionary < SdkResolverManifest , IReadOnlyList < SdkResolver > > ( ) ;
435446
436447 SdkResolverManifest sdkResolverManifest = new SdkResolverManifest ( DisplayName : "TestResolversManifest" , Path : null , ResolvableSdkRegex : null ) ;
437- _generalResolversManifestsRegistryPlaceholder . Add ( sdkResolverManifest ) ;
448+ generalResolversManifestsRegistryPlaceholder . Add ( sdkResolverManifest ) ;
438449 _manifestToResolvers [ sdkResolverManifest ] = resolvers ;
439- _generalResolversManifestsRegistry = _generalResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
440- _specificResolversManifestsRegistry = _specificResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
450+ _generalResolversManifestsRegistry = generalResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
451+ _specificResolversManifestsRegistry = specificResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
441452 }
442453 }
443454
@@ -515,8 +526,8 @@ private void RegisterResolversManifests(ElementLocation location)
515526 }
516527 }
517528
518- var _specificResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
519- var _generalResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
529+ var specificResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
530+ var generalResolversManifestsRegistryPlaceholder = new List < SdkResolverManifest > ( ) ;
520531
521532 // Break the list of all resolvers manifests into two parts: manifests with specific and general resolvers.
522533 // Since the collections are meant to be immutable, we have to only ever assign them when they're complete.
@@ -531,25 +542,25 @@ private void RegisterResolversManifests(ElementLocation location)
531542#endif
532543 if ( manifest . ResolvableSdkRegex == null )
533544 {
534- _generalResolversManifestsRegistryPlaceholder . Add ( manifest ) ;
545+ generalResolversManifestsRegistryPlaceholder . Add ( manifest ) ;
535546 }
536547 else
537548 {
538- _specificResolversManifestsRegistryPlaceholder . Add ( manifest ) ;
549+ specificResolversManifestsRegistryPlaceholder . Add ( manifest ) ;
539550 }
540551 }
541552 if ( sdkDefaultResolversManifest != null )
542553 {
543- _generalResolversManifestsRegistryPlaceholder . Add ( sdkDefaultResolversManifest ) ;
554+ generalResolversManifestsRegistryPlaceholder . Add ( sdkDefaultResolversManifest ) ;
544555 }
545556
546557 // Until this is set(and this is under lock), the ResolveSdkUsingResolversWithPatternsFirst will always
547558 // enter if branch leaving to this section.
548559 // Then it will wait at the lock and return after we release it since the collections we have filled them before releasing the lock.
549560 // The collections are never modified after this point.
550561 // So I've made them ReadOnly
551- _generalResolversManifestsRegistry = _generalResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
552- _specificResolversManifestsRegistry = _specificResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
562+ _specificResolversManifestsRegistry = specificResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
563+ _generalResolversManifestsRegistry = generalResolversManifestsRegistryPlaceholder . AsReadOnly ( ) ;
553564 }
554565 }
555566
0 commit comments