Add regen test to csharp stages (#3208)
Fixes https://github.com/microsoft/typespec/issues/3206
This commit is contained in:
Родитель
4c63c99292
Коммит
dff8131f68
|
@ -8,13 +8,20 @@ parameters:
|
||||||
- name: PackagePath
|
- name: PackagePath
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
# Arguments needed to run unit tests
|
# Arguments needed to run tests
|
||||||
- name: UnitTestArgs
|
- name: TestArgs
|
||||||
type: string
|
type: string
|
||||||
|
default: ""
|
||||||
|
|
||||||
|
# Indicates the build matrix to use for post-build autorest validation
|
||||||
|
- name: TestMatrix
|
||||||
|
type: object
|
||||||
|
default: {}
|
||||||
|
|
||||||
# Node version
|
# Node version
|
||||||
- name: NodeVersion
|
- name: NodeVersion
|
||||||
type: string
|
type: string
|
||||||
|
default: "20.x"
|
||||||
|
|
||||||
# Operation system to use
|
# Operation system to use
|
||||||
- name: Os
|
- name: Os
|
||||||
|
@ -37,13 +44,19 @@ jobs:
|
||||||
name: $(WINDOWSPOOL)
|
name: $(WINDOWSPOOL)
|
||||||
image: $(WINDOWSVMIMAGE)
|
image: $(WINDOWSVMIMAGE)
|
||||||
os: windows
|
os: windows
|
||||||
|
${{ if ne(length(parameters.TestMatrix), 0) }}:
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ parameters.TestMatrix }}
|
||||||
steps:
|
steps:
|
||||||
- template: /eng/emitters/pipelines/templates/steps/test-step.yml
|
- template: /eng/emitters/pipelines/templates/steps/test-step.yml
|
||||||
parameters:
|
parameters:
|
||||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||||
PackagePath: ${{ parameters.PackagePath }}
|
PackagePath: ${{ parameters.PackagePath }}
|
||||||
NodeVersion: $(nodeVersion)
|
NodeVersion: $(nodeVersion)
|
||||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
${{ if ne(length(parameters.TestMatrix), 0) }}:
|
||||||
|
TestArgs: $(TestArguments)
|
||||||
|
${{ else }}:
|
||||||
|
TestArgs: ${{ parameters.TestArgs }}
|
||||||
${{ if parameters.EmitArtifacts }}:
|
${{ if parameters.EmitArtifacts }}:
|
||||||
templateContext:
|
templateContext:
|
||||||
outputs:
|
outputs:
|
||||||
|
|
|
@ -196,7 +196,7 @@ stages:
|
||||||
parameters:
|
parameters:
|
||||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||||
PackagePath: ${{ parameters.PackagePath }}
|
PackagePath: ${{ parameters.PackagePath }}
|
||||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||||
NodeVersion: 20.x
|
NodeVersion: 20.x
|
||||||
Os: linux
|
Os: linux
|
||||||
EmitArtifacts: true # Emit artifacts only for the first job
|
EmitArtifacts: true # Emit artifacts only for the first job
|
||||||
|
@ -204,20 +204,41 @@ stages:
|
||||||
parameters:
|
parameters:
|
||||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||||
PackagePath: ${{ parameters.PackagePath }}
|
PackagePath: ${{ parameters.PackagePath }}
|
||||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||||
NodeVersion: 18.x
|
NodeVersion: 18.x
|
||||||
Os: linux
|
Os: linux
|
||||||
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
|
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
|
||||||
parameters:
|
parameters:
|
||||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||||
PackagePath: ${{ parameters.PackagePath }}
|
PackagePath: ${{ parameters.PackagePath }}
|
||||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||||
NodeVersion: 20.x
|
NodeVersion: 20.x
|
||||||
Os: windows
|
Os: windows
|
||||||
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
|
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
|
||||||
parameters:
|
parameters:
|
||||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||||
PackagePath: ${{ parameters.PackagePath }}
|
PackagePath: ${{ parameters.PackagePath }}
|
||||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||||
NodeVersion: 18.x
|
NodeVersion: 18.x
|
||||||
Os: windows
|
Os: windows
|
||||||
|
|
||||||
|
# Regen Test stage
|
||||||
|
# Responsible for running any regen tests needed to validate no manual changes were done.
|
||||||
|
# The contents of the artifact `build_artifacts` are available under the path `$(buildArtifactsPath)`.
|
||||||
|
- ${{ if ne(length(parameters.TestMatrix), 0) }}:
|
||||||
|
- stage: ${{ parameters.StagePrefix }}_Regen_Test
|
||||||
|
displayName: ${{ parameters.StagePrefix }} - Regen - Test
|
||||||
|
condition: and(succeeded(), ${{ parameters.Condition }})
|
||||||
|
dependsOn:
|
||||||
|
- ${{ parameters.DependsOn }}
|
||||||
|
- ${{ parameters.StagePrefix }}_Build
|
||||||
|
variables:
|
||||||
|
selfRepositoryPath: $(Build.SourcesDirectory)
|
||||||
|
buildArtifactsPath: $(Pipeline.Workspace)/build_artifacts
|
||||||
|
jobs:
|
||||||
|
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
|
||||||
|
parameters:
|
||||||
|
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||||
|
PackagePath: ${{ parameters.PackagePath }}
|
||||||
|
Os: windows
|
||||||
|
TestMatrix: ${{ parameters.TestMatrix }}
|
||||||
|
|
|
@ -12,9 +12,10 @@ parameters:
|
||||||
# Currently not installing node in this template, but keeping this parameter for future use
|
# Currently not installing node in this template, but keeping this parameter for future use
|
||||||
- name: NodeVersion
|
- name: NodeVersion
|
||||||
type: string
|
type: string
|
||||||
|
default: "20.x"
|
||||||
|
|
||||||
# Arguments needed to run unit tests
|
# Arguments needed to run tests
|
||||||
- name: UnitTestArgs
|
- name: TestArgs
|
||||||
type: string
|
type: string
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -39,5 +40,5 @@ steps:
|
||||||
inputs:
|
inputs:
|
||||||
pwsh: true
|
pwsh: true
|
||||||
filePath: $(selfRepositoryPath)${{ parameters.PackagePath }}/eng/scripts/Test-Packages.ps1
|
filePath: $(selfRepositoryPath)${{ parameters.PackagePath }}/eng/scripts/Test-Packages.ps1
|
||||||
arguments: ${{ parameters.UnitTestArgs }}
|
arguments: ${{ parameters.TestArgs }}
|
||||||
workingDirectory: $(selfRepositoryPath)
|
workingDirectory: $(selfRepositoryPath)
|
||||||
|
|
|
@ -20,5 +20,8 @@ stages:
|
||||||
file: typespec-http-client-csharp-*.tgz
|
file: typespec-http-client-csharp-*.tgz
|
||||||
type: npm
|
type: npm
|
||||||
UnitTestArgs: -UnitTests
|
UnitTestArgs: -UnitTests
|
||||||
|
TestMatrix:
|
||||||
|
RegenCheck:
|
||||||
|
TestArguments: -GenerationChecks
|
||||||
Condition: ${{ parameters.Condition }}
|
Condition: ${{ parameters.Condition }}
|
||||||
DependsOn: ${{ parameters.DependsOn }}
|
DependsOn: ${{ parameters.DependsOn }}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
#Requires -Version 7.0
|
||||||
|
|
||||||
|
param(
|
||||||
|
[string] $Exceptions
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = 'Stop'
|
||||||
|
Set-StrictMode -Version 3.0
|
||||||
|
$packageRoot = (Resolve-Path "$PSScriptRoot/../..").Path.Replace('\', '/')
|
||||||
|
. "$packageRoot/../../eng/emitters/scripts/CommandInvocation-Helpers.ps1"
|
||||||
|
Set-ConsoleEncoding
|
||||||
|
|
||||||
|
$diffExcludes = @(
|
||||||
|
"$packageRoot/package.json"
|
||||||
|
"$packageRoot/package-lock.json"
|
||||||
|
) | ForEach-Object { "`":(exclude)$_`"" } | Join-String -Separator ' '
|
||||||
|
|
||||||
|
Invoke-LoggedCommand "git -c core.safecrlf=false diff --ignore-space-at-eol --exit-code -- $diffExcludes" -IgnoreExitCode
|
||||||
|
|
||||||
|
if($LastExitCode -ne 0) {
|
||||||
|
throw "Changes detected"
|
||||||
|
}
|
|
@ -28,6 +28,22 @@ try {
|
||||||
Pop-Location
|
Pop-Location
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($GenerationChecks) {
|
||||||
|
Set-StrictMode -Version 1
|
||||||
|
# run E2E Test for TypeSpec emitter
|
||||||
|
Write-Host "Generating test projects ..."
|
||||||
|
& "$packageRoot/eng/scripts/Generate.ps1"
|
||||||
|
Write-Host 'Code generation is completed.'
|
||||||
|
|
||||||
|
try {
|
||||||
|
Write-Host 'Checking for differences in generated code...'
|
||||||
|
& "$packageRoot/eng/scripts/Check-GitChanges.ps1"
|
||||||
|
Write-Host 'Done. No code generation differences detected.'
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Error 'Generated code is not up to date. Please run: eng/Generate.ps1'
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
Pop-Location
|
Pop-Location
|
||||||
|
|
Загрузка…
Ссылка в новой задаче