Skip to content

Commit

Permalink
improve sdk detection with wildcards and dirs that don't exist
Browse files Browse the repository at this point in the history
  • Loading branch information
brettfo committed Jan 22, 2025
1 parent c6b680c commit f5ebc99
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 20 deletions.
32 changes: 20 additions & 12 deletions nuget/updater/common.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,27 @@ function Get-GlobalJsonForSdkInstall([string] $repoRoot, [string[]] $updateDirec
$repoRootParent = Split-Path -Parent $repoRoot
$globalJsonPaths = @()
foreach ($updateDirectory in $updateDirectories) {
$candidateDir = Convert-Path "$repoRoot/$updateDirectory"
if (Test-Path $candidateDir) {
while ($true) {
$globalJsonPath = Join-Path $candidateDir "global.json"
if (Test-Path $globalJsonPath) {
$repoRelativeGlobalJsonPath = [System.IO.Path]::GetRelativePath($repoRoot, $globalJsonPath).Replace("\", "/")
$globalJsonPaths += $repoRelativeGlobalJsonPath
}
if (-not (Test-Path "$repoRoot/$updateDirectory")) {
# directory doesn't exist
continue
}

# $updateDirectory might be a recursive wildcard like "/**"; this takes care of that
$candidateDirs = Convert-Path "$repoRoot/$updateDirectory"
foreach ($candidateDir in $candidateDirs) {
if (Test-Path $candidateDir -PathType Container) {
while ($true) {
$globalJsonPath = Join-Path $candidateDir "global.json"
if (Test-Path $globalJsonPath) {
$repoRelativeGlobalJsonPath = [System.IO.Path]::GetRelativePath($repoRoot, $globalJsonPath).Replace("\", "/")
$globalJsonPaths += $repoRelativeGlobalJsonPath
}

$candidateDir = Split-Path -Parent $candidateDir
if ($null -eq $candidateDir -or `
$candidateDir -eq $repoRootParent) {
break
$candidateDir = Split-Path -Parent $candidateDir
if ($null -eq $candidateDir -or `
$candidateDir -eq $repoRootParent) {
break
}
}
}
}
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"sdk": {
"version": "1.2.3"
}
}
28 changes: 20 additions & 8 deletions nuget/updater/test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,8 @@ $ErrorActionPreference = "Stop"
function Assert-ArraysEqual([string[]]$expected, [string[]]$actual) {
$expectedText = $expected -join ", "
$actualText = $actual -join ", "
if ($expected.Length -ne $actual.Length) {
throw "Expected array length $($expected.Length) but was $($actual.Length). Values: [$expectedText] vs [$actualText]"
}
for ($i = 0; $i -lt $expected.Length; $i++) {
if ($expected[$i] -ne $actual[$i]) {
throw "Expected array element at index $i to be '$($expected[$i])' but was '$($actual[$i])'"
}
if ($expectedText -ne $actualText) {
throw "Expected array values '$expectedText' but was '$actualText'"
}
}

Expand All @@ -25,7 +20,6 @@ function Test-GlobalJsonVersions([string] $testDirectory, [string[]] $directorie
}

try {
# verify SDK updater directories
Test-GlobalJsonVersions `
-testDirectory "global-json-discovery-root-no-file" `
-directories @("/") `
Expand Down Expand Up @@ -55,6 +49,24 @@ try {
-directories @("/src") `
-installedSdks @("8.0.404", "9.0.101") `
-expectedSdksToInstall @("1.2.3")

Test-GlobalJsonVersions `
-testDirectory "global-json-discovery-recursive-wildcard" `
-directories @("/**") `
-installedSdks @("8.0.404", "9.0.101") `
-expectedSdksToInstall @("1.2.3")

Test-GlobalJsonVersions `
-testDirectory "global-json-discovery-recursive-wildcard" `
-directories @("/src/**/*") `
-installedSdks @("8.0.404", "9.0.101") `
-expectedSdksToInstall @()

Test-GlobalJsonVersions `
-testDirectory "global-json-discovery-none" `
-directories @("/dir-that-does-not-exist") `
-installedSdks @("8.0.404", "9.0.101") `
-expectedSdksToInstall @()
}
catch {
Write-Host $_
Expand Down

0 comments on commit f5ebc99

Please # to comment.