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
|
||||
type: string
|
||||
|
||||
# Arguments needed to run unit tests
|
||||
- name: UnitTestArgs
|
||||
# Arguments needed to run tests
|
||||
- name: TestArgs
|
||||
type: string
|
||||
default: ""
|
||||
|
||||
# Indicates the build matrix to use for post-build autorest validation
|
||||
- name: TestMatrix
|
||||
type: object
|
||||
default: {}
|
||||
|
||||
# Node version
|
||||
- name: NodeVersion
|
||||
type: string
|
||||
default: "20.x"
|
||||
|
||||
# Operation system to use
|
||||
- name: Os
|
||||
|
@ -37,13 +44,19 @@ jobs:
|
|||
name: $(WINDOWSPOOL)
|
||||
image: $(WINDOWSVMIMAGE)
|
||||
os: windows
|
||||
${{ if ne(length(parameters.TestMatrix), 0) }}:
|
||||
strategy:
|
||||
matrix: ${{ parameters.TestMatrix }}
|
||||
steps:
|
||||
- template: /eng/emitters/pipelines/templates/steps/test-step.yml
|
||||
parameters:
|
||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||
PackagePath: ${{ parameters.PackagePath }}
|
||||
NodeVersion: $(nodeVersion)
|
||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
||||
${{ if ne(length(parameters.TestMatrix), 0) }}:
|
||||
TestArgs: $(TestArguments)
|
||||
${{ else }}:
|
||||
TestArgs: ${{ parameters.TestArgs }}
|
||||
${{ if parameters.EmitArtifacts }}:
|
||||
templateContext:
|
||||
outputs:
|
||||
|
|
|
@ -196,7 +196,7 @@ stages:
|
|||
parameters:
|
||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||
PackagePath: ${{ parameters.PackagePath }}
|
||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
||||
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||
NodeVersion: 20.x
|
||||
Os: linux
|
||||
EmitArtifacts: true # Emit artifacts only for the first job
|
||||
|
@ -204,20 +204,41 @@ stages:
|
|||
parameters:
|
||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||
PackagePath: ${{ parameters.PackagePath }}
|
||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
||||
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||
NodeVersion: 18.x
|
||||
Os: linux
|
||||
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
|
||||
parameters:
|
||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||
PackagePath: ${{ parameters.PackagePath }}
|
||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
||||
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||
NodeVersion: 20.x
|
||||
Os: windows
|
||||
- template: /eng/emitters/pipelines/templates/jobs/test-job.yml
|
||||
parameters:
|
||||
AdditionalInitializeSteps: ${{ parameters.AdditionalInitializeSteps }}
|
||||
PackagePath: ${{ parameters.PackagePath }}
|
||||
UnitTestArgs: ${{ parameters.UnitTestArgs }}
|
||||
TestArgs: ${{ parameters.UnitTestArgs }}
|
||||
NodeVersion: 18.x
|
||||
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
|
||||
- name: NodeVersion
|
||||
type: string
|
||||
default: "20.x"
|
||||
|
||||
# Arguments needed to run unit tests
|
||||
- name: UnitTestArgs
|
||||
# Arguments needed to run tests
|
||||
- name: TestArgs
|
||||
type: string
|
||||
|
||||
steps:
|
||||
|
@ -39,5 +40,5 @@ steps:
|
|||
inputs:
|
||||
pwsh: true
|
||||
filePath: $(selfRepositoryPath)${{ parameters.PackagePath }}/eng/scripts/Test-Packages.ps1
|
||||
arguments: ${{ parameters.UnitTestArgs }}
|
||||
arguments: ${{ parameters.TestArgs }}
|
||||
workingDirectory: $(selfRepositoryPath)
|
||||
|
|
|
@ -20,5 +20,8 @@ stages:
|
|||
file: typespec-http-client-csharp-*.tgz
|
||||
type: npm
|
||||
UnitTestArgs: -UnitTests
|
||||
TestMatrix:
|
||||
RegenCheck:
|
||||
TestArguments: -GenerationChecks
|
||||
Condition: ${{ parameters.Condition }}
|
||||
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
|
||||
}
|
||||
}
|
||||
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 {
|
||||
Pop-Location
|
||||
|
|
Загрузка…
Ссылка в новой задаче