From e8d332102576a689fc95e822847caeffa0a726c2 Mon Sep 17 00:00:00 2001
From: Mike Harder <mharder@microsoft.com>
Date: Thu, 27 Sep 2018 12:17:14 -0700
Subject: [PATCH] Add AdditionalRestoreSources parameter to Cli.FunctionalTests
 (#1429)

- Required for builds which need to restore from multiple feeds
---
 .azure/pipelines/e2e-tests.yml                      |  4 ++--
 test/Cli.FunctionalTests/Cli.FunctionalTests.csproj |  1 -
 test/Cli.FunctionalTests/Cli.FunctionalTests.sln    |  2 +-
 test/Cli.FunctionalTests/NuGetPackageSource.cs      |  5 ++++-
 test/Cli.FunctionalTests/run-tests.ps1              | 11 +++++++++--
 5 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/.azure/pipelines/e2e-tests.yml b/.azure/pipelines/e2e-tests.yml
index 6019a47184b..528dfd6929f 100644
--- a/.azure/pipelines/e2e-tests.yml
+++ b/.azure/pipelines/e2e-tests.yml
@@ -19,7 +19,7 @@ phases:
     inputs:
       versionSpec: 10.x
   - powershell: |
-      test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier)
+      test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
     condition: ne(variables['PB_SkipTests'], 'true')
     displayName: Run E2E tests
   - task: PublishTestResults@2
@@ -47,7 +47,7 @@ phases:
     inputs:
       versionSpec: 8.x
   - powershell: |
-      test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier)
+      test/Cli.FunctionalTests/run-tests.ps1 -ci -ProdConManifestUrl $env:PRODCONMANIFESTURL -TestRuntimeIdentifier $(Test.RuntimeIdentifier) -AdditionalRestoreSources $env:ADDITIONALRESTORESOURCES
     condition: ne(variables['PB_SkipTests'], 'true')
     displayName: Run E2E tests
   - task: PublishTestResults@2
diff --git a/test/Cli.FunctionalTests/Cli.FunctionalTests.csproj b/test/Cli.FunctionalTests/Cli.FunctionalTests.csproj
index 385a9dde2a0..b2227fad1e3 100644
--- a/test/Cli.FunctionalTests/Cli.FunctionalTests.csproj
+++ b/test/Cli.FunctionalTests/Cli.FunctionalTests.csproj
@@ -6,7 +6,6 @@
     <LangVersion>latest</LangVersion>
     <RestoreSources>
       https://api.nuget.org/v3/index.json;
-      $(DotNetRestoreSources)
     </RestoreSources>
   </PropertyGroup>
 
diff --git a/test/Cli.FunctionalTests/Cli.FunctionalTests.sln b/test/Cli.FunctionalTests/Cli.FunctionalTests.sln
index 42f7f90f693..82d40614d16 100644
--- a/test/Cli.FunctionalTests/Cli.FunctionalTests.sln
+++ b/test/Cli.FunctionalTests/Cli.FunctionalTests.sln
@@ -7,7 +7,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Cli.FunctionalTests", "Cli.
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0EC88B4E-B1F2-4183-9EBF-BF66C45D19D7}"
 	ProjectSection(SolutionItems) = preProject
-		..\..\.vsts\builds\e2e-tests.yml = ..\..\.vsts\builds\e2e-tests.yml
+		..\..\.azure\pipelines\e2e-tests.yml = ..\..\.azure\pipelines\e2e-tests.yml
 	EndProjectSection
 EndProject
 Global
diff --git a/test/Cli.FunctionalTests/NuGetPackageSource.cs b/test/Cli.FunctionalTests/NuGetPackageSource.cs
index 30545f8ca55..e1bbce195a3 100644
--- a/test/Cli.FunctionalTests/NuGetPackageSource.cs
+++ b/test/Cli.FunctionalTests/NuGetPackageSource.cs
@@ -51,7 +51,10 @@ namespace Cli.FunctionalTests
             var sourceString = Environment.GetEnvironmentVariable("NUGET_PACKAGE_SOURCE") ??
                 throw new InvalidOperationException("Environment variable NUGET_PACKAGE_SOURCE is required but not set");
 
-            return string.Join(" ", sourceString.Split(',').Select(s => $"--source {s}"));
+            // Split on pipe and remove blank entries
+            var sources = sourceString.Split('|').Where(s => !string.IsNullOrWhiteSpace(s));
+
+            return string.Join(" ", sources.Select(s => $"--source {s}"));
         }
     }
 }
diff --git a/test/Cli.FunctionalTests/run-tests.ps1 b/test/Cli.FunctionalTests/run-tests.ps1
index 76fc8ec77bf..e21ee723344 100644
--- a/test/Cli.FunctionalTests/run-tests.ps1
+++ b/test/Cli.FunctionalTests/run-tests.ps1
@@ -29,6 +29,9 @@ The prodcon build.xml file
 
 .PARAMETER ProdConChannel
 The prodcon channel to use if a build.xml file isn't set.
+
+.PARAMETER AdditionalRestoreSources
+A pipe-separated list of extra NuGet feeds.  Required for builds which need to restore from multiple feeds.
 #>
 
 param(
@@ -40,7 +43,8 @@ param(
     $TestRuntimeIdentifier,
     $HostRid,
     $ProdConManifestUrl,
-    $ProdConChannel = 'release/2.1'
+    $ProdConChannel = 'release/2.1',
+    $AdditionalRestoreSources
 )
 
 $ErrorActionPreference = 'Stop'
@@ -117,6 +121,10 @@ try {
         $sdkVersion = $cli.Build.ProductVersion
     }
 
+    if ($AdditionalRestoreSources) {
+        $RestoreSources += "|$AdditionalRestoreSources"
+    }
+
     Write-Host "sdkVersion:      $sdkVersion"
     Write-Host "AssetRootUrl:    $AssetRootUrl"
     Write-Host "RestoreSources:  $RestoreSources"
@@ -160,7 +168,6 @@ try {
     Invoke-Block { & $dotnet test `
             --logger "console;verbosity=detailed" `
             --logger "trx;LogFileName=$repoRoot/artifacts/logs/e2etests.trx" `
-            "-p:DotNetRestoreSources=$RestoreSources" `
             "-bl:$repoRoot/artifacts/logs/e2etests.binlog" `
             @filterArgs }
 }
-- 
GitLab