Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
c767775
Add Icod.TermInfo 1.10.0 development roadmap
uniblab Sep 3, 2026
7a9ab5c
Prepare DA01 database-set foundation
uniblab Sep 3, 2026
506bcbf
Complete DA01 version transition updates
uniblab Sep 3, 2026
317d1ba
Retry DA01 with coordinated version tests
uniblab Sep 3, 2026
6d947a9
Implement DA01 database-set foundation
github-actions[bot] Sep 3, 2026
a330683
Record DA01 Debug validation
uniblab Sep 3, 2026
bc7d151
Freeze DA01 validation record
uniblab Sep 3, 2026
e6cc3b5
Add temporary DA02 apply helper
uniblab Sep 3, 2026
bd830ca
Add temporary DA02 apply workflow
uniblab Sep 3, 2026
79530fe
Correct DA02 apply guard
uniblab Sep 3, 2026
dcf319a
Correct DA02 historical gate assertions
uniblab Sep 3, 2026
ebcdaf9
Implement DA02 deterministic precedence
github-actions[bot] Sep 3, 2026
e63b688
Record DA02 Debug validation
uniblab Sep 3, 2026
5151833
Freeze DA02 validation record
uniblab Sep 3, 2026
a1641b5
Add temporary DA03 apply helper
uniblab Sep 3, 2026
76fa184
Add temporary DA03 apply workflow
uniblab Sep 3, 2026
d7e293d
Correct DA03 test cancellation usage
uniblab Sep 3, 2026
d98a3a7
Refine DA03 incomplete alias analysis
uniblab Sep 3, 2026
4d7e398
Implement DA03 semantic analysis
github-actions[bot] Sep 3, 2026
cacb0ee
Record DA03 Debug validation
uniblab Sep 3, 2026
5327416
Add temporary DA03 alias-order fix helper
uniblab Sep 3, 2026
d8c422c
Add temporary DA03 alias-order validation workflow
uniblab Sep 3, 2026
e206523
Preserve DA03 alias precedence order
github-actions[bot] Sep 3, 2026
52b9dd3
Record corrected DA03 Debug validation
uniblab Sep 3, 2026
033fa1a
Freeze DA03 validation record
uniblab Sep 3, 2026
8119ab1
Add temporary DA04 apply helper
uniblab Sep 3, 2026
92b6a4c
Add temporary DA04 apply workflow
uniblab Sep 3, 2026
dfa554d
Implement DA04 database-set comparison
github-actions[bot] Sep 3, 2026
1f3646c
Record DA04 Debug validation
uniblab Sep 3, 2026
359d326
Freeze DA04 validation record
uniblab Sep 3, 2026
fe24372
Add temporary DA05 apply helper
uniblab Sep 3, 2026
ac13800
Add temporary DA05 apply workflow
uniblab Sep 3, 2026
89a1700
Correct DA05 fixtures and analyzer warnings
uniblab Sep 3, 2026
8e4f615
Implement DA05 multi-database planning
github-actions[bot] Sep 3, 2026
8c94d20
Record DA05 Debug validation
uniblab Sep 3, 2026
014391b
Freeze DA05 validation record
uniblab Sep 3, 2026
e776296
Freeze DA05 roadmap status
uniblab Sep 3, 2026
53fcc2f
Add temporary DA06 apply helper
uniblab Sep 3, 2026
4aa90ee
Add temporary DA06 apply workflow
uniblab Sep 3, 2026
2ffd6d4
Correct DA06 parser preparation
uniblab Sep 3, 2026
37b4cf1
Align DA06 all-candidates parser guard
uniblab Sep 3, 2026
445f23e
Add DA06 validation corrections
uniblab Sep 3, 2026
88aca8f
Apply DA06 contract corrections before validation
uniblab Sep 3, 2026
7e9b5ad
Add DA06 historical-contract test corrections
uniblab Sep 3, 2026
6361ffb
Preserve frozen v1 assertions through DA06
uniblab Sep 3, 2026
3f110ce
Implement DA06 automation composition
github-actions[bot] Sep 3, 2026
933b24c
Add temporary DA06 parser cleanup
uniblab Sep 3, 2026
c4771c4
Add temporary DA06 cleanup workflow
uniblab Sep 3, 2026
08ae513
Clean up DA06 parser composition
github-actions[bot] Sep 3, 2026
84e8c2e
Add final DA06 parser formatting correction
uniblab Sep 3, 2026
4e9665b
Add final DA06 formatting workflow
uniblab Sep 3, 2026
c2f8068
Finalize DA06 parser formatting
github-actions[bot] Sep 3, 2026
51e8792
Record DA06 Debug and audit validation
uniblab Sep 3, 2026
324a42a
Freeze DA06 validation record
uniblab Sep 3, 2026
a0c2ffe
Freeze DA06 roadmap status
uniblab Sep 3, 2026
0dc0e77
Implement DA07 generated-state hardening
uniblab Sep 3, 2026
c8022a5
Advance coordinated version to DA07
uniblab Sep 3, 2026
6bd06fc
Extend Inspection package smoke for DA07
uniblab Sep 3, 2026
70170f2
Add DA07 distribution automation smoke
uniblab Sep 3, 2026
f67964e
Exercise DA07 package and archive automation
uniblab Sep 3, 2026
76bf8e5
Fix DA07 public contract property usage
uniblab Sep 3, 2026
224c7c9
Fix DA07 package smoke identity property
uniblab Sep 3, 2026
8e55af2
Correct DA07 indeterminate lookup assertion
uniblab Sep 3, 2026
e130fe7
Add isolated DA07 package consumer smoke
uniblab Sep 3, 2026
9f6e9e0
Run isolated DA07 package consumer
uniblab Sep 3, 2026
579811f
Advance Termcap coordinated version assertion to DA07
uniblab Sep 3, 2026
d23e68d
Advance Runtime coordinated version assertions to DA07
uniblab Sep 3, 2026
b524e5b
Advance infocmp version assertion to DA07
uniblab Sep 3, 2026
00425d3
Advance coordinated release closure version to DA07
uniblab Sep 3, 2026
bc89b6f
Add one-shot DA07 version assertion sync
uniblab Sep 3, 2026
29ee509
Synchronize DA07 coordinated version assertions
github-actions[bot] Sep 3, 2026
d67a3af
Remove one-shot DA07 version assertion sync
uniblab Sep 3, 2026
bb7b93d
Use public package APIs for DA07 consumer fixtures
uniblab Sep 3, 2026
fc6db1d
Reference Compiler package in isolated DA07 consumer
uniblab Sep 3, 2026
13b4b50
Separate conflicting analysis from DA07 planning smoke
uniblab Sep 3, 2026
198bf33
Correct DA07 distribution automation smoke
uniblab Sep 3, 2026
b217c88
Add one-shot DA08 freeze snapshot
uniblab Sep 3, 2026
b8f5ad7
Fix one-shot DA08 freeze snapshot workflow
uniblab Sep 3, 2026
67d0ba4
Freeze DA08 Inspection API and schema fingerprints
github-actions[bot] Sep 3, 2026
0982a32
Remove one-shot DA08 freeze workflow
uniblab Sep 3, 2026
88565e9
Add DA08 release closure gates
uniblab Sep 3, 2026
69bc1d8
Add one-shot DA08 permanent gate update
uniblab Sep 3, 2026
b70d8b8
Remove invalid DA08 gate helper workflow
uniblab Sep 3, 2026
01e8821
Stage DA08 permanent gate patch helper
uniblab Sep 3, 2026
0cbd2a3
Run one-shot DA08 permanent gate update
uniblab Sep 3, 2026
3252bfa
Enforce DA08 API and schema freeze
github-actions[bot] Sep 3, 2026
03ccb24
Remove one-shot DA08 permanent gate workflow
uniblab Sep 3, 2026
5f72a78
Remove DA08 permanent gate patch helper
uniblab Sep 3, 2026
8f63073
Document DA07 hardening contract
uniblab Sep 3, 2026
35f0fbb
Document DA08 release freeze
uniblab Sep 3, 2026
bc87161
Add 1.10 release audit
uniblab Sep 3, 2026
ef860c1
Stage DA08 documentation and version closure helper
uniblab Sep 3, 2026
783bcd0
Run DA08 documentation and version closure
uniblab Sep 3, 2026
1900017
Remove DA08 roadmap status trailing whitespace
uniblab Sep 3, 2026
73aafb3
Complete DA08 release closure
github-actions[bot] Sep 3, 2026
6a8ff2e
Remove one-shot DA08 closure workflow
uniblab Sep 3, 2026
c441831
Remove DA08 closure patch helper
uniblab Sep 3, 2026
637c31a
Stage DA08 historical verifier marker restoration
uniblab Sep 3, 2026
af438fc
Restore DA08 historical verifier evidence
uniblab Sep 3, 2026
06d53cf
Retain historical Inspection baseline evidence
github-actions[bot] Sep 3, 2026
e10f1fe
Remove one-shot DA08 history restoration workflow
uniblab Sep 3, 2026
19bf0c7
Remove DA08 history restoration helper
uniblab Sep 3, 2026
18013d7
Stage MI07 historical verifier label restoration
uniblab Sep 3, 2026
0007e02
Restore MI07 historical verifier label
uniblab Sep 3, 2026
ede04ff
Retain MI07 verifier evidence label
github-actions[bot] Sep 3, 2026
2bcca82
Remove one-shot MI07 verifier restoration workflow
uniblab Sep 3, 2026
f971d12
Remove MI07 verifier restoration helper
uniblab Sep 3, 2026
cc75c79
Add 1.10 database-set sample
uniblab Sep 3, 2026
bbe3cbb
Implement 1.10 database-set sample
uniblab Sep 3, 2026
a1ce263
Add fixture maintenance mode to database-set sample
uniblab Sep 3, 2026
5b82387
Document 1.10 database-set sample
uniblab Sep 3, 2026
c3143c4
Add one-shot 1.10 sample closure helper
uniblab Sep 3, 2026
bb62464
Run one-shot 1.10 sample closure
uniblab Sep 3, 2026
a35117f
Add controlled 1.10 ToolSuite database-set sources
uniblab Sep 3, 2026
8adc54d
Add controlled 1.10 ToolSuite database-set sources
uniblab Sep 3, 2026
20f2a51
Add controlled 1.10 ToolSuite planning sources
uniblab Sep 3, 2026
9c6875d
Add controlled 1.10 ToolSuite planning sources
uniblab Sep 3, 2026
87fb6ed
Update samples index for 1.10
uniblab Sep 3, 2026
42a3b5a
Add 1.10 multi-database consumer guide
uniblab Sep 3, 2026
f025913
Correct database-set sample lookup evidence
uniblab Sep 3, 2026
ff66a5f
Extend ToolSuite walkthrough for 1.10
uniblab Sep 3, 2026
f1796e0
Separate sample canonical and alias conflicts
uniblab Sep 3, 2026
7200057
Clarify database-set sample fixture design
uniblab Sep 3, 2026
ef927bf
Freeze 1.10 database-set sample fixtures
github-actions[bot] Sep 3, 2026
8e55a76
Remove one-shot 1.10 sample closure workflow
uniblab Sep 3, 2026
6ad3860
Remove one-shot 1.10 sample closure helper
uniblab Sep 3, 2026
48968ff
Record 1.10 consumer documentation closure
uniblab Sep 3, 2026
0e58ad5
Add one-shot consumer documentation link helper
uniblab Sep 3, 2026
fba540d
Run one-shot consumer documentation link update
uniblab Sep 3, 2026
70ec86d
Link 1.10 consumer guide and database-set sample
github-actions[bot] Sep 3, 2026
620d580
Remove one-shot consumer documentation workflow
uniblab Sep 3, 2026
b312c94
Remove one-shot consumer documentation helper
uniblab Sep 3, 2026
6a1c2c0
Add one-shot final consumer closure status helper
uniblab Sep 3, 2026
35a958d
Run final consumer closure status update
uniblab Sep 3, 2026
bc1d1ff
Record validated 1.10 consumer closure
github-actions[bot] Sep 3, 2026
8ac8a10
Remove final consumer status workflow
uniblab Sep 3, 2026
0372751
Remove final consumer status helper
uniblab Sep 3, 2026
0d6fa69
Promote coordinated version to 1.10.0
uniblab Sep 3, 2026
27c24dd
Prepare stable 1.10.0 promotion
uniblab Sep 3, 2026
109b740
Prepare stable 1.10.0 release metadata
github-actions[bot] Sep 3, 2026
9ba0ba8
Remove one-shot stable promotion helper
uniblab Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
252 changes: 252 additions & 0 deletions .github/scripts/smoke-da07-automation.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
param(
[Parameter( Mandatory = $true, Position = 0 )]
[ValidateSet( 'package', 'archive' )]
[string] $Kind,

[Parameter( Mandatory = $true, Position = 1 )]
[string] $ArtifactDirectory
)

$ErrorActionPreference = 'Stop'

$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path
$repositoryRoot = [System.IO.Path]::GetFullPath(
[System.IO.Path]::Combine( $scriptDirectory, '..', '..' )
)
$artifactRoot = [System.IO.Path]::GetFullPath( $ArtifactDirectory )
[xml] $buildProperties = Get-Content -LiteralPath (
Join-Path $repositoryRoot 'Directory.Build.props'
) -Raw
$versionNode = $buildProperties.SelectSingleNode(
'/Project/PropertyGroup/IcodTermInfoSuiteVersion'
)
if ( $null -eq $versionNode ) {
throw 'Directory.Build.props does not declare IcodTermInfoSuiteVersion.'
}
$version = $versionNode.InnerText
$workRoot = Join-Path (
[System.IO.Path]::GetTempPath()
) (
'Icod.TermInfo.DA07Smoke.' + [System.Guid]::NewGuid().ToString( 'N' )
)
$previousNugetPackages = $env:NUGET_PACKAGES

try {
New-Item -ItemType Directory -Path $workRoot -Force | Out-Null
$toolRoot = Join-Path $workRoot 'tools'
New-Item -ItemType Directory -Path $toolRoot -Force | Out-Null

if ( 'package' -ceq $Kind ) {
$configPath = Join-Path $workRoot 'NuGet.Config'
$env:NUGET_PACKAGES = Join-Path $workRoot 'packages'
$escapedArtifactRoot = [System.Security.SecurityElement]::Escape( $artifactRoot )
$config = @"
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="artifacts" value="$escapedArtifactRoot" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageSourceMapping>
<packageSource key="artifacts">
<package pattern="Icod.TermInfo*" />
</packageSource>
<packageSource key="nuget.org">
<package pattern="Icod.CommandFramework" />
<package pattern="Microsoft.*" />
<package pattern="System.*" />
<package pattern="runtime.*" />
</packageSource>
</packageSourceMapping>
</configuration>
"@
[System.IO.File]::WriteAllText(
$configPath,
$config,
[System.Text.UTF8Encoding]::new( $false )
)
& dotnet tool install Icod.TermInfo.Tools `
--tool-path $toolRoot `
--version $version `
--configfile $configPath `
--no-cache
if ( 0 -ne $LASTEXITCODE ) {
throw "Could not install Icod.TermInfo.Tools $version from '$artifactRoot'."
}
}
else {
$architecture = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture
switch ( $architecture ) {
'X64' { $architectureName = 'x64' }
'Arm64' { $architectureName = 'arm64' }
default { throw "Unsupported DA07 smoke architecture '$architecture'." }
}
if ( $IsWindows ) {
$platform = 'win'
$extension = '.zip'
}
elseif ( $IsLinux ) {
$platform = 'linux'
$extension = '.tar.gz'
}
elseif ( $IsMacOS ) {
$platform = 'osx'
$extension = '.tar.gz'
}
else {
throw 'Unsupported DA07 smoke operating system.'
}
$rid = "$platform-$architectureName"
$archiveName = "Icod.TermInfo.Tools.$version.$rid$extension"
$archivePath = Join-Path $artifactRoot $archiveName
if ( -not ( Test-Path -LiteralPath $archivePath -PathType Leaf ) ) {
throw "Expected matching DA07 archive '$archivePath' was not found."
}
if ( $IsWindows ) {
Expand-Archive -LiteralPath $archivePath -DestinationPath $toolRoot
}
else {
& tar -xzf $archivePath -C $toolRoot
if ( 0 -ne $LASTEXITCODE ) {
throw "Could not extract '$archiveName'."
}
}
}

function Invoke-TermInfoTool {
param(
[Parameter( Mandatory = $true )]
[string] $Name,

[Parameter( Mandatory = $true )]
[string[]] $Arguments
)

if ( 'package' -ceq $Kind ) {
$launcherName = if ( $IsWindows ) { 'icod-terminfo.exe' } else { 'icod-terminfo' }
$launcherArguments = @( $Name ) + $Arguments
}
else {
$launcherName = if ( $IsWindows ) { "$Name.exe" } else { $Name }
$launcherArguments = $Arguments
}
$launcher = Join-Path $toolRoot $launcherName
if ( -not ( Test-Path -LiteralPath $launcher -PathType Leaf ) ) {
throw "DA07 $Kind smoke is missing '$launcherName'."
}
$output = @(
& $launcher @launcherArguments 2>&1
)
if ( 0 -ne $LASTEXITCODE ) {
throw "'$Name $($Arguments -join ' ')' failed with status $LASTEXITCODE.`n$($output -join [Environment]::NewLine)"
}
return $output -join [Environment]::NewLine
}

$firstRoot = Join-Path $workRoot 'first-db'
$secondRoot = Join-Path $workRoot 'second-db'
$planningFirstRoot = Join-Path $workRoot 'planning-first-db'
$planningSecondRoot = Join-Path $workRoot 'planning-second-db'
New-Item -ItemType Directory -Path $firstRoot -Force | Out-Null
New-Item -ItemType Directory -Path $secondRoot -Force | Out-Null
New-Item -ItemType Directory -Path $planningFirstRoot -Force | Out-Null
New-Item -ItemType Directory -Path $planningSecondRoot -Force | Out-Null
$firstSource = Join-Path $workRoot 'first.ti'
$secondSource = Join-Path $workRoot 'second.ti'
$planningFirstSource = Join-Path $workRoot 'planning-first.ti'
$planningSecondSource = Join-Path $workRoot 'planning-second.ti'
[System.IO.File]::WriteAllText(
$firstSource,
@"
da07-shared|DA07 first shared,
cols#80,

da07-target|DA07 planning target,
am,
cols#80,
"@,
[System.Text.UTF8Encoding]::new( $false )
)
[System.IO.File]::WriteAllText(
$secondSource,
@"
da07-shared|DA07 second shared,
cols#132,
"@,
[System.Text.UTF8Encoding]::new( $false )
)
[System.IO.File]::WriteAllText(
$planningFirstSource,
@"
da07-parent-a|DA07 first parent,
am,
"@,
[System.Text.UTF8Encoding]::new( $false )
)
[System.IO.File]::WriteAllText(
$planningSecondSource,
@"
da07-parent-b|DA07 second parent,
cols#80,
"@,
[System.Text.UTF8Encoding]::new( $false )
)
[void] ( Invoke-TermInfoTool -Name 'tic' -Arguments @( '-o', $firstRoot, $firstSource ) )
[void] ( Invoke-TermInfoTool -Name 'tic' -Arguments @( '-o', $secondRoot, $secondSource ) )
[void] ( Invoke-TermInfoTool -Name 'tic' -Arguments @( '-o', $planningFirstRoot, $planningFirstSource ) )
[void] ( Invoke-TermInfoTool -Name 'tic' -Arguments @( '-o', $planningSecondRoot, $planningSecondSource ) )

$setText = Invoke-TermInfoTool -Name 'toe' -Arguments @(
'--json',
$firstRoot,
$secondRoot
)
$setDocument = $setText | ConvertFrom-Json -Depth 100
if ( 2 -ne $setDocument.schemaVersion -or 'databaseSet' -cne $setDocument.documentKind ) {
throw 'DA07 distribution smoke did not emit a v2 databaseSet document.'
}
if ( 2 -ne $setDocument.data.databases.Count ) {
throw 'DA07 distribution smoke did not retain both ordered database roots.'
}
$shared = @(
$setDocument.data.semanticAnalysis.repeatedIdentities |
Where-Object { 'da07-shared' -ceq $_.name }
)
if ( 1 -ne $shared.Count -or 'semanticallyDifferent' -cne $shared[ 0 ].relationship ) {
throw 'DA07 distribution smoke did not classify the conflicting shared identity.'
}

$planText = Invoke-TermInfoTool -Name 'infocmp' -Arguments @(
'--json',
'--plan-use',
'--all-candidates',
'--max-parents',
'2',
'-A',
$firstRoot,
'--candidate-root',
$planningFirstRoot,
'--candidate-root',
$planningSecondRoot,
'da07-target'
)
$planDocument = $planText | ConvertFrom-Json -Depth 100
if ( 2 -ne $planDocument.schemaVersion -or 'databaseSetPlan' -cne $planDocument.documentKind ) {
throw 'DA07 distribution smoke did not emit a v2 databaseSetPlan document.'
}
if ( $planDocument.data.candidates.Count -lt 2 ) {
throw 'DA07 distribution smoke did not inspect candidates from both database roots.'
}
if ( $planDocument.data.source.Contains( 'use=da07-target' ) ) {
throw 'DA07 distribution smoke failed to exclude the target identity from planning.'
}

Write-Host "DA07 $Kind automation smoke passed for Icod.TermInfo.Tools $version."
}
finally {
$env:NUGET_PACKAGES = $previousNugetPackages
if ( Test-Path -LiteralPath $workRoot ) {
Remove-Item -LiteralPath $workRoot -Recurse -Force
}
}
120 changes: 120 additions & 0 deletions .github/scripts/smoke-da07-package-consumer.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
param(
[Parameter( Mandatory = $true, Position = 0 )]
[string] $ArtifactDirectory,

[ValidateSet( 'Debug', 'Staging', 'Release' )]
[string] $Configuration = 'Staging'
)

$ErrorActionPreference = 'Stop'
Set-StrictMode -Version Latest

$scriptDirectory = Split-Path -Parent $MyInvocation.MyCommand.Path
$repositoryRoot = [System.IO.Path]::GetFullPath(
[System.IO.Path]::Combine( $scriptDirectory, '..', '..' )
)
$artifactRoot = if ( [System.IO.Path]::IsPathRooted( $ArtifactDirectory ) ) {
[System.IO.Path]::GetFullPath( $ArtifactDirectory )
} else {
[System.IO.Path]::GetFullPath(
[System.IO.Path]::Combine( $repositoryRoot, $ArtifactDirectory )
)
}
[xml] $buildProperties = Get-Content -LiteralPath (
Join-Path $repositoryRoot 'Directory.Build.props'
) -Raw
$versionNode = $buildProperties.SelectSingleNode(
'/Project/PropertyGroup/IcodTermInfoSuiteVersion'
)
if ( $null -eq $versionNode ) {
throw 'Directory.Build.props does not declare IcodTermInfoSuiteVersion.'
}
$version = $versionNode.InnerText
$workRoot = Join-Path (
[System.IO.Path]::GetTempPath()
) (
'Icod.TermInfo.DA07PackageSmoke.' + [System.Guid]::NewGuid().ToString( 'N' )
)
$previousNugetPackages = $env:NUGET_PACKAGES

try {
New-Item -ItemType Directory -Path $workRoot -Force | Out-Null
Copy-Item -LiteralPath (
Join-Path $repositoryRoot 'tools/inspection-package-smoke/Icod.TermInfo.Inspection.PackageSmoke.csproj'
) -Destination $workRoot
Copy-Item -LiteralPath (
Join-Path $repositoryRoot 'tools/inspection-package-smoke/Program.cs'
) -Destination $workRoot
Copy-Item -LiteralPath (
Join-Path $repositoryRoot 'tools/inspection-package-smoke/DA07PackageSmoke.cs'
) -Destination $workRoot

$projectPath = Join-Path $workRoot 'Icod.TermInfo.Inspection.PackageSmoke.csproj'
$projectText = [System.IO.File]::ReadAllText( $projectPath )
$projectText = $projectText.Replace(
"`t</ItemGroup>",
"`t`t<PackageReference Include=`"Icod.TermInfo.Compiler`" Version=`"`$(IcodTermInfoInspectionPackageVersion)`" />`n`t</ItemGroup>"
)
[System.IO.File]::WriteAllText(
$projectPath,
$projectText,
[System.Text.UTF8Encoding]::new( $false )
)

$configPath = Join-Path $workRoot 'NuGet.Config'
$escapedArtifactRoot = [System.Security.SecurityElement]::Escape( $artifactRoot )
$config = @"
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="artifacts" value="$escapedArtifactRoot" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageSourceMapping>
<packageSource key="artifacts">
<package pattern="Icod.TermInfo*" />
</packageSource>
<packageSource key="nuget.org">
<package pattern="Icod.CommandFramework" />
<package pattern="Microsoft.*" />
<package pattern="System.*" />
<package pattern="runtime.*" />
</packageSource>
</packageSourceMapping>
</configuration>
"@
[System.IO.File]::WriteAllText(
$configPath,
$config,
[System.Text.UTF8Encoding]::new( $false )
)
$env:NUGET_PACKAGES = Join-Path $workRoot 'packages'

& dotnet restore $projectPath `
--configfile $configPath `
-p:IcodTermInfoInspectionPackageVersion=$version
if ( 0 -ne $LASTEXITCODE ) {
throw "DA07 package consumer restore failed for Icod.TermInfo.Inspection $version."
}

foreach ( $framework in @( 'net8.0', 'net9.0', 'net10.0' ) ) {
& dotnet run `
--project $projectPath `
-c $Configuration `
-f $framework `
--no-restore `
-p:IcodTermInfoInspectionPackageVersion=$version
if ( 0 -ne $LASTEXITCODE ) {
throw "DA07 package consumer failed on $framework."
}
}

Write-Host "DA07 isolated package consumer passed on net8.0, net9.0, and net10.0 for $version."
}
finally {
$env:NUGET_PACKAGES = $previousNugetPackages
if ( Test-Path -LiteralPath $workRoot ) {
Remove-Item -LiteralPath $workRoot -Recurse -Force
}
}
Loading
Loading