Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit cfb651c

Browse files
authored
Merge pull request #6323 from wtgodbe/updatePackages
Enable automatic updating of package versions in test project.json files
2 parents ad7d646 + f6116a5 commit cfb651c

File tree

4 files changed

+88
-38
lines changed

4 files changed

+88
-38
lines changed

UpdateDependencies.ps1

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ param(
2222
$LatestVersion = Invoke-WebRequest $VersionFileUrl -UseBasicParsing
2323
$LatestVersion = $LatestVersion.ToString().Trim()
2424

25+
if ($DirPropsVersionElements -contains 'CoreClrExpectedPrerelease')
26+
{
27+
# Also get list of all package versions, relative to the given prerelease version url.
28+
$LatestPackagesListUrl = $VersionFileUrl -Replace 'Latest.txt', 'Latest_Packages.txt'
29+
$LatestPackagesList = Invoke-WebRequest $LatestPackagesListUrl -UseBasicParsing
30+
$LatestCoreCLRPackage = $LatestPackagesList -split "`n" | ?{ $_.StartsWith('Microsoft.NETCore.Runtime.CoreCLR') }
31+
$LatestCoreCLRVersion = ($LatestCoreCLRPackage -split ' ')[1].Trim()
32+
}
33+
34+
2535
# Make a nicely formatted string of the dir props version elements. Short names, joined by commas.
2636
$DirPropsVersionNames = ($DirPropsVersionElements | %{ $_ -replace 'ExpectedPrerelease', '' }) -join ', '
2737

@@ -34,22 +44,41 @@ function UpdateValidDependencyVersionsFile
3444
return $false
3545
}
3646

37-
$DirPropsPath = "$PSScriptRoot\dir.props"
38-
39-
$DirPropsContent = Get-Content $DirPropsPath | % {
40-
$line = $_
41-
$DirPropsVersionElements | % {
42-
$line = $line -replace `
43-
"<$_>.*</$_>", `
44-
"<$_>$LatestVersion</$_>"
45-
}
46-
$line
47+
$DirPropsPaths = @("$PSScriptRoot\dir.props", "$PSScriptRoot\tests\dir.props")
48+
49+
$DirPropsPaths | %{
50+
$DirPropsContent = Get-Content $_ | %{
51+
$line = $_
52+
53+
$DirPropsVersionElements | %{
54+
$line = $line -replace `
55+
"<$_>.*</$_>", `
56+
"<$_>$LatestVersion</$_>"
57+
}
58+
59+
if ($LatestCoreCLRVersion)
60+
{
61+
$line = $line -replace `
62+
"<CoreClrPackageVersion>.*<", `
63+
"<CoreClrPackageVersion>$LatestCoreCLRVersion<"
64+
}
65+
66+
$line
67+
}
68+
Set-Content $_ $DirPropsContent
4769
}
48-
Set-Content $DirPropsPath $DirPropsContent
4970

5071
return $true
5172
}
5273

74+
# Updates all the project.json files with out of date version numbers
75+
function RunUpdatePackageDependencyVersions
76+
{
77+
cmd /c $PSScriptRoot\tests\buildtest.cmd updateinvalidpackages | Out-Host
78+
79+
return $LASTEXITCODE -eq 0
80+
}
81+
5382
# Creates a Pull Request for the updated version numbers
5483
function CreatePullRequest
5584
{
@@ -113,6 +142,11 @@ if (!(UpdateValidDependencyVersionsFile))
113142
Exit -1
114143
}
115144

145+
if (!(RunUpdatePackageDependencyVersions))
146+
{
147+
Exit -1
148+
}
149+
116150
if (!(CreatePullRequest))
117151
{
118152
Exit -1

tests/buildtest.cmd

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ set __BuildSequential=
3333
set __TestPriority=
3434
set __msbuildCleanBuildArgs=
3535
set __verbosity=normal
36+
set __UpdateInvalidPackagesArg=
3637

3738
REM unprocessedBuildArgs are args that we pass to msbuild (e.g. /p:__BuildArch=x64)
3839
set "__args= %*"
@@ -49,32 +50,34 @@ if /i "%1" == "-h" goto Usage
4950
if /i "%1" == "/help" goto Usage
5051
if /i "%1" == "-help" goto Usage
5152

52-
if /i "%1" == "x64" (set __BuildArch=x64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
53-
if /i "%1" == "x86" (set __BuildArch=x86&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
54-
if /i "%1" == "arm" (set __BuildArch=arm&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
55-
if /i "%1" == "arm64" (set __BuildArch=arm64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
53+
if /i "%1" == "x64" (set __BuildArch=x64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
54+
if /i "%1" == "x86" (set __BuildArch=x86&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
55+
if /i "%1" == "arm" (set __BuildArch=arm&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
56+
if /i "%1" == "arm64" (set __BuildArch=arm64&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
57+
58+
if /i "%1" == "debug" (set __BuildType=Debug&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
59+
if /i "%1" == "release" (set __BuildType=Release&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
60+
if /i "%1" == "checked" (set __BuildType=Checked&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
5661

57-
if /i "%1" == "debug" (set __BuildType=Debug&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
58-
if /i "%1" == "release" (set __BuildType=Release&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
59-
if /i "%1" == "checked" (set __BuildType=Checked&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
62+
if /i "%1" == "clean" (set __CleanBuild=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
6063

61-
if /i "%1" == "clean" (set __CleanBuild=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
64+
if /i "%1" == "vs2013" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
65+
if /i "%1" == "vs2015" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
6266

63-
if /i "%1" == "vs2013" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
64-
if /i "%1" == "vs2015" (set __VSVersion=%1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
67+
if /i "%1" == "crossgen" (set __crossgen=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
68+
if /i "%1" == "ilasmroundtrip" (set __ILAsmRoundtrip=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
69+
if /i "%1" == "sequential" (set __BuildSequential=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
70+
if /i "%1" == "priority" (set __TestPriority=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
6571

66-
if /i "%1" == "crossgen" (set __crossgen=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
67-
if /i "%1" == "ilasmroundtrip" (set __ILAsmRoundtrip=true&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
68-
if /i "%1" == "sequential" (set __BuildSequential=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
69-
if /i "%1" == "priority" (set __TestPriority=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
72+
if /i "%1" == "verbose" (set __verbosity=detailed&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
7073

71-
if /i "%1" == "verbose" (set __verbosity=detailed&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
74+
if /i "%1" == "skipmanaged" (set __SkipManaged=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
7275

73-
if /i "%1" == "skipmanaged" (set __SkipManaged=1&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
76+
if /i "%1" == "updateinvalidpackages" (set __UpdateInvalidPackagesArg=/t:UpdateInvalidPackageVersions&set processedArgs=!processedArgs! %1&shift&goto Arg_Loop)
7477

7578
@REM It was initially /toolset_dir. Not sure why, since it doesn't match the other usage.
76-
if /i "%1" == "/toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
77-
if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
79+
if /i "%1" == "/toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
80+
if /i "%1" == "toolset_dir" (set __ToolsetDir=%2&set __PassThroughArgs=%__PassThroughArgs% %2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop)
7881

7982
if [!processedArgs!]==[] (
8083
call set unprocessedBuildArgs=!__args!
@@ -183,6 +186,8 @@ REM ===
183186
REM =========================================================================================
184187
call %__TestDir%\setup-runtime-dependencies.cmd /arch %__BuildArch% /outputdir %__BinDir%
185188

189+
if NOT "%__UpdateInvalidPackagesArg%" == "" goto skipnative
190+
186191
REM =========================================================================================
187192
REM ===
188193
REM === Native test build section
@@ -237,6 +242,8 @@ if errorlevel 1 exit /b 1
237242
REM endlocal to rid us of environment changes from vcvarsall.bat
238243
endlocal
239244

245+
:skipnative
246+
240247
if defined __SkipManaged exit /b 0
241248

242249
REM =========================================================================================
@@ -272,7 +279,7 @@ if defined __TestPriority (
272279
)
273280

274281
set __BuildLogRootName=Tests_Managed
275-
call :msbuild "%__ProjectFilesDir%\build.proj" %__msbuildManagedBuildArgs%
282+
call :msbuild "%__ProjectFilesDir%\build.proj" %__msbuildManagedBuildArgs% %__UpdateInvalidPackagesArg%
276283
if errorlevel 1 exit /b 1
277284

278285
set CORE_ROOT=%__TestBinDir%\Tests\Core_Root
@@ -359,6 +366,7 @@ echo 666: Build all tests with priority 0, 1 ... 666
359366
echo sequential: force a non-parallel build ^(default is to build in parallel
360367
echo using all processors^).
361368
echo IlasmRoundTrip: enables ilasm round trip build and run of the tests before executing them.
369+
echo updateinvalidpackages: enables updating package versions in all test project.json files
362370
echo verbose: enables detailed file logging for the msbuild tasks into the msbuild log file.
363371
exit /b 1
364372

tests/dir.props

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,28 @@
4242
<PropertyGroup>
4343
<ValidatePackageVersions>true</ValidatePackageVersions>
4444
<ProhibitFloatingDependencies>true</ProhibitFloatingDependencies>
45+
46+
<CoreFxExpectedPrerelease>rc3-24117-00</CoreFxExpectedPrerelease>
47+
<CoreClrPackageVersion>beta-24314-02</CoreClrPackageVersion>
48+
49+
<CoreFxVersionsIdentityRegex>^(?i)((System\..*)|(Microsoft\.CSharp)|(Microsoft\.NETCore.*)|(Microsoft\.Win32\..*)|(Microsoft\.VisualBasic))(?&lt;!TestData)$</CoreFxVersionsIdentityRegex>
4550
</PropertyGroup>
4651

4752
<ItemGroup>
48-
<ValidationPattern Include="^(?i)((System\..%2A)|(Microsoft\.CSharp)|(Microsoft\.NETCore.%2A)|(Microsoft\.Win32\..%2A)|(Microsoft\.VisualBasic))(?&lt;!TestData)$">
49-
<ExpectedPrerelease>rc3-24117-00</ExpectedPrerelease>
53+
<ValidationPattern Include="CoreFxVersions">
54+
<IdentityRegex>$(CoreFxVersionsIdentityRegex)</IdentityRegex>
55+
<ExpectedPrerelease>$(CoreFxExpectedPrerelease)</ExpectedPrerelease>
5056
</ValidationPattern>
51-
<ValidationPattern Include="^(?i)(xunit(\.assert|\.core|\.runner\.(utility|msbuild))?)$">
57+
<ValidationPattern Include="XunitPackageVersions">
58+
<IdentityRegex>^(?i)(xunit(\.assert|\.core|\.runner\.(utility|msbuild))?)$</IdentityRegex>
5259
<ExpectedVersion>$(XunitPackageVersion)</ExpectedVersion>
5360
</ValidationPattern>
54-
<!-- Add a dummy value so that the item isn't removed by msbuild. Without the | this item doesn't show up later. -->
55-
<ValidationPattern Include="^(?i)(xunit\.console\.netcore|dummy value)$">
61+
<ValidationPattern Include="XunitConsoleVersion">
62+
<IdentityRegex>^(?i)(xunit\.console\.netcore)$</IdentityRegex>
5663
<ExpectedVersion>1.0.2-prerelease-00101</ExpectedVersion>
5764
</ValidationPattern>
58-
<ValidationPattern Include="^(?i)Microsoft\.DotNet\.xunit\.performance.%2A$">
65+
<ValidationPattern Include="XunitPerformanceVersion">
66+
<IdentityRegex>^(?i)Microsoft\.DotNet\.xunit\.performance.*$</IdentityRegex>
5967
<ExpectedVersion>1.0.0-alpha-build0035</ExpectedVersion>
6068
</ValidationPattern>
6169
</ItemGroup>

tests/runtest.proj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -362,12 +362,12 @@ namespace $([System.String]::Copy($(Category)).Replace(".","_").Replace("\","").
362362
<PropertyGroup>
363363
<CoreclrPackageFileName>%(CoreclrPackage.Filename)</CoreclrPackageFileName>
364364
<!-- Get package version number from nuget package filename at core_root -->
365-
<CoreclrPackageVersion>$([System.String]::Copy('$(CoreclrPackageFileName)').Replace('Microsoft.NETCore.Runtime.CoreCLR.',''))</CoreclrPackageVersion>
365+
<CoreClrPackageVersion Condition="'$(BuildTestsAgainstPackages)'!='true'">$([System.String]::Copy('$(CoreclrPackageFileName)').Replace('Microsoft.NETCore.Runtime.CoreCLR.',''))</CoreClrPackageVersion>
366366
<TestRuntimeJsonContents>
367367
<![CDATA[
368368
{
369369
"dependencies": {
370-
"Microsoft.NETCore.Runtime.CoreCLR": "$(CoreclrPackageVersion)",
370+
"Microsoft.NETCore.Runtime.CoreCLR": "$(CoreClrPackageVersion)",
371371
"Microsoft.NETCore.TestHost": "1.0.0-rc3-24117-00"
372372
},
373373
"frameworks": {

0 commit comments

Comments
 (0)