Add regen test to csharp stages (#3208)

Fixes https://github.com/microsoft/typespec/issues/3206
This commit is contained in:
m-nash 2024-04-24 08:04:47 -07:00 коммит произвёл GitHub
Родитель 4c63c99292
Коммит dff8131f68
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
6 изменённых файлов: 86 добавлений и 10 удалений

Просмотреть файл

@ -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