summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtgodbe <wigodbe@microsoft.com>2016-07-18 15:25:04 -0700
committerwtgodbe <wigodbe@microsoft.com>2016-07-20 11:59:15 -0700
commitf6116a5263f1d23c4b4501524ec82176e96740b1 (patch)
treed26933d8e540c9fec3388ad61ad2eb804a2da8e3
parent54a3d1d6755c2ca9fee95514673095540f76b56d (diff)
downloadcoreclr-f6116a5263f1d23c4b4501524ec82176e96740b1.tar.gz
coreclr-f6116a5263f1d23c4b4501524ec82176e96740b1.tar.bz2
coreclr-f6116a5263f1d23c4b4501524ec82176e96740b1.zip
Enable automatic updating of package versions in test project.json files
-rw-r--r--UpdateDependencies.ps156
-rw-r--r--tests/buildtest.cmd46
-rw-r--r--tests/dir.props20
-rw-r--r--tests/runtest.proj4
4 files changed, 88 insertions, 38 deletions
diff --git a/UpdateDependencies.ps1 b/UpdateDependencies.ps1
index 102dd4ee8c..8fee1b9bef 100644
--- a/UpdateDependencies.ps1
+++ b/UpdateDependencies.ps1
@@ -22,6 +22,16 @@ param(
$LatestVersion = Invoke-WebRequest $VersionFileUrl -UseBasicParsing
$LatestVersion = $LatestVersion.ToString().Trim()
+if ($DirPropsVersionElements -contains 'CoreClrExpectedPrerelease')
+{
+ # Also get list of all package versions, relative to the given prerelease version url.
+ $LatestPackagesListUrl = $VersionFileUrl -Replace 'Latest.txt', 'Latest_Packages.txt'
+ $LatestPackagesList = Invoke-WebRequest $LatestPackagesListUrl -UseBasicParsing
+ $LatestCoreCLRPackage = $LatestPackagesList -split "`n" | ?{ $_.StartsWith('Microsoft.NETCore.Runtime.CoreCLR') }
+ $LatestCoreCLRVersion = ($LatestCoreCLRPackage -split ' ')[1].Trim()
+}
+
+
# Make a nicely formatted string of the dir props version elements. Short names, joined by commas.
$DirPropsVersionNames = ($DirPropsVersionElements | %{ $_ -replace 'ExpectedPrerelease', '' }) -join ', '
@@ -34,22 +44,41 @@ function UpdateValidDependencyVersionsFile
return $false
}
- $DirPropsPath = "$PSScriptRoot\dir.props"
-
- $DirPropsContent = Get-Content $DirPropsPath | % {
- $line = $_
- $DirPropsVersionElements | % {
- $line = $line -replace `
- "<$_>.*</$_>", `
- "<$_>$LatestVersion</$_>"
- }
- $line
+ $DirPropsPaths = @("$PSScriptRoot\dir.props", "$PSScriptRoot\tests\dir.props")
+
+ $DirPropsPaths | %{
+ $DirPropsContent = Get-Content $_ | %{
+ $line = $_
+
+ $DirPropsVersionElements | %{
+ $line = $line -replace `
+ "<$_>.*</$_>", `
+ "<$_>$LatestVersion</$_>"
+ }
+
+ if ($LatestCoreCLRVersion)
+ {
+ $line = $line -replace `
+ "<CoreClrPackageVersion>.*<", `
+ "<CoreClrPackageVersion>$LatestCoreCLRVersion<"
+ }
+
+ $line
+ }
+ Set-Content $_ $DirPropsContent
}
- Set-Content $DirPropsPath $DirPropsContent
return $true
}
+# Updates all the project.json files with out of date version numbers
+function RunUpdatePackageDependencyVersions
+{
+ cmd /c $PSScriptRoot\tests\buildtest.cmd updateinvalidpackages | Out-Host
+
+ return $LASTEXITCODE -eq 0
+}
+
# Creates a Pull Request for the updated version numbers
function CreatePullRequest
{
@@ -113,6 +142,11 @@ if (!(UpdateValidDependencyVersionsFile))
Exit -1
}
+if (!(RunUpdatePackageDependencyVersions))
+{
+ Exit -1
+}
+
if (!(CreatePullRequest))
{
Exit -1
diff --git a/tests/buildtest.cmd b/tests/buildtest.cmd
index 6fcb3e7467..d5f89358ca 100644
--- a/tests/buildtest.cmd
+++ b/tests/buildtest.cmd
@@ -33,6 +33,7 @@ set __BuildSequential=
set __TestPriority=
set __msbuildCleanBuildArgs=
set __verbosity=normal
+set __UpdateInvalidPackagesArg=
REM unprocessedBuildArgs are args that we pass to msbuild (e.g. /p:__BuildArch=x64)
set "__args= %*"
@@ -49,32 +50,34 @@ if /i "%1" == "-h" goto Usage
if /i "%1" == "/help" goto Usage
if /i "%1" == "-help" goto Usage
-if /i "%1" == "x64" (set __BuildArch=x64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "x86" (set __BuildArch=x86&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "arm" (set __BuildArch=arm&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "arm64" (set __BuildArch=arm64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "x64" (set __BuildArch=x64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "x86" (set __BuildArch=x86&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "arm" (set __BuildArch=arm&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "arm64" (set __BuildArch=arm64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+
+if /i "%1" == "debug" (set __BuildType=Debug&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "release" (set __BuildType=Release&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "checked" (set __BuildType=Checked&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "debug" (set __BuildType=Debug&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "release" (set __BuildType=Release&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "checked" (set __BuildType=Checked&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "clean" (set __CleanBuild=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "clean" (set __CleanBuild=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "vs2013" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "vs2015" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "vs2013" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "vs2015" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "crossgen" (set __crossgen=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "ilasmroundtrip" (set __ILAsmRoundtrip=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "sequential" (set __BuildSequential=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "priority" (set __TestPriority=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
-if /i "%1" == "crossgen" (set __crossgen=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "ilasmroundtrip" (set __ILAsmRoundtrip=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "sequential" (set __BuildSequential=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "priority" (set __TestPriority=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
+if /i "%1" == "verbose" (set __verbosity=detailed&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "verbose" (set __verbosity=detailed&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "skipmanaged" (set __SkipManaged=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
-if /i "%1" == "skipmanaged" (set __SkipManaged=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
+if /i "%1" == "updateinvalidpackages" (set __UpdateInvalidPackagesArg=/t:UpdateInvalidPackageVersions&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
@REM It was initially /toolset_dir. Not sure why, since it doesn't match the other usage.
-if /i "%1" == "/toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
-if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
+if /i "%1" == "/toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
+if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
if [!processedArgs!]==[] (
call set unprocessedBuildArgs=!__args!
@@ -183,6 +186,8 @@ REM ===
REM =========================================================================================
call %__TestDir%\setup-runtime-dependencies.cmd /arch %__BuildArch% /outputdir %__BinDir%
+if NOT "%__UpdateInvalidPackagesArg%" == "" goto skipnative
+
REM =========================================================================================
REM ===
REM === Native test build section
@@ -237,6 +242,8 @@ if errorlevel 1 exit /b 1
REM endlocal to rid us of environment changes from vcvarsall.bat
endlocal
+:skipnative
+
if defined __SkipManaged exit /b 0
REM =========================================================================================
@@ -272,7 +279,7 @@ if defined __TestPriority (
)
set __BuildLogRootName=Tests_Managed
-call :msbuild "%__ProjectFilesDir%\build.proj" %__msbuildManagedBuildArgs%
+call :msbuild "%__ProjectFilesDir%\build.proj" %__msbuildManagedBuildArgs% %__UpdateInvalidPackagesArg%
if errorlevel 1 exit /b 1
set CORE_ROOT=%__TestBinDir%\Tests\Core_Root
@@ -359,6 +366,7 @@ echo 666: Build all tests with priority 0, 1 ... 666
echo sequential: force a non-parallel build ^(default is to build in parallel
echo using all processors^).
echo IlasmRoundTrip: enables ilasm round trip build and run of the tests before executing them.
+echo updateinvalidpackages: enables updating package versions in all test project.json files
echo verbose: enables detailed file logging for the msbuild tasks into the msbuild log file.
exit /b 1
diff --git a/tests/dir.props b/tests/dir.props
index 870d4e39be..cf03387845 100644
--- a/tests/dir.props
+++ b/tests/dir.props
@@ -42,20 +42,28 @@
<PropertyGroup>
<ValidatePackageVersions>true</ValidatePackageVersions>
<ProhibitFloatingDependencies>true</ProhibitFloatingDependencies>
+
+ <CoreFxExpectedPrerelease>rc3-24117-00</CoreFxExpectedPrerelease>
+ <CoreClrPackageVersion>beta-24314-02</CoreClrPackageVersion>
+
+ <CoreFxVersionsIdentityRegex>^(?i)((System\..*)|(Microsoft\.CSharp)|(Microsoft\.NETCore.*)|(Microsoft\.Win32\..*)|(Microsoft\.VisualBasic))(?&lt;!TestData)$</CoreFxVersionsIdentityRegex>
</PropertyGroup>
<ItemGroup>
- <ValidationPattern Include="^(?i)((System\..%2A)|(Microsoft\.CSharp)|(Microsoft\.NETCore.%2A)|(Microsoft\.Win32\..%2A)|(Microsoft\.VisualBasic))(?&lt;!TestData)$">
- <ExpectedPrerelease>rc3-24117-00</ExpectedPrerelease>
+ <ValidationPattern Include="CoreFxVersions">
+ <IdentityRegex>$(CoreFxVersionsIdentityRegex)</IdentityRegex>
+ <ExpectedPrerelease>$(CoreFxExpectedPrerelease)</ExpectedPrerelease>
</ValidationPattern>
- <ValidationPattern Include="^(?i)(xunit(\.assert|\.core|\.runner\.(utility|msbuild))?)$">
+ <ValidationPattern Include="XunitPackageVersions">
+ <IdentityRegex>^(?i)(xunit(\.assert|\.core|\.runner\.(utility|msbuild))?)$</IdentityRegex>
<ExpectedVersion>$(XunitPackageVersion)</ExpectedVersion>
</ValidationPattern>
- <!-- Add a dummy value so that the item isn't removed by msbuild. Without the | this item doesn't show up later. -->
- <ValidationPattern Include="^(?i)(xunit\.console\.netcore|dummy value)$">
+ <ValidationPattern Include="XunitConsoleVersion">
+ <IdentityRegex>^(?i)(xunit\.console\.netcore)$</IdentityRegex>
<ExpectedVersion>1.0.2-prerelease-00101</ExpectedVersion>
</ValidationPattern>
- <ValidationPattern Include="^(?i)Microsoft\.DotNet\.xunit\.performance.%2A$">
+ <ValidationPattern Include="XunitPerformanceVersion">
+ <IdentityRegex>^(?i)Microsoft\.DotNet\.xunit\.performance.*$</IdentityRegex>
<ExpectedVersion>1.0.0-alpha-build0035</ExpectedVersion>
</ValidationPattern>
</ItemGroup>
diff --git a/tests/runtest.proj b/tests/runtest.proj
index ecca866cbf..aafa025b7a 100644
--- a/tests/runtest.proj
+++ b/tests/runtest.proj
@@ -362,12 +362,12 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\","").
<PropertyGroup>
<CoreclrPackageFileName>%(CoreclrPackage.Filename)</CoreclrPackageFileName>
<!-- Get package version number from nuget package filename at core_root -->
- <CoreclrPackageVersion>$([System.String]::Copy('$(CoreclrPackageFileName)').Replace('Microsoft.NETCore.Runtime.CoreCLR.',''))</CoreclrPackageVersion>
+ <CoreClrPackageVersion Condition="'$(BuildTestsAgainstPackages)'!='true'">$([System.String]::Copy('$(CoreclrPackageFileName)').Replace('Microsoft.NETCore.Runtime.CoreCLR.',''))</CoreClrPackageVersion>
<TestRuntimeJsonContents>
<![CDATA[
{
"dependencies": {
- "Microsoft.NETCore.Runtime.CoreCLR": "$(CoreclrPackageVersion)",
+ "Microsoft.NETCore.Runtime.CoreCLR": "$(CoreClrPackageVersion)",
"Microsoft.NETCore.TestHost": "1.0.0-rc3-24117-00"
},
"frameworks": {