Skip to content

Ensure response description is not empty in response for openApi file generated during plugin generation #5145

Ensure response description is not empty in response for openApi file generated during plugin generation

Ensure response description is not empty in response for openApi file generated during plugin generation #5145

name: integration-tests
on:
workflow_dispatch:
push:
branches: [main]
pull_request:
concurrency:
# Only run once for latest commit per ref and cancel other (previous) runs.
group: ci-integration-tests-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Restore dependencies
run: dotnet restore kiota.sln
- name: Build
run: dotnet publish ./src/kiota/kiota.csproj -c Release -p:PublishSingleFile=true -p:PublishReadyToRun=true -o ./publish
# -p:PublishTrimmed=true -p:PublishAot=true should be enabled to make test run faster, but there are still limitations
- uses: actions/upload-artifact@v4
with:
name: generator
path: publish
integration:
runs-on: ubuntu-latest
needs: build
strategy:
fail-fast: false
matrix:
language:
- java
- csharp
- go
- typescript
- ruby
- php
- python
description:
- "./tests/Kiota.Builder.IntegrationTests/InheritingErrors.yaml"
- "./tests/Kiota.Builder.IntegrationTests/EnumHandling.yaml"
- "./tests/Kiota.Builder.IntegrationTests/NoUnderscoresInModel.yaml"
- "./tests/Kiota.Builder.IntegrationTests/ToDoApi.yaml"
- "./tests/Kiota.Builder.IntegrationTests/GeneratesUritemplateHints.yaml"
- "oas::petstore"
- "apisguru::twitter.com:current"
- "apisguru::notion.com"
- "apisguru::stripe.com"
- "https://raw.githubusercontent.com/googlemaps/openapi-specification/main/dist/google-maps-platform-openapi3.yml"
- "apisguru::meraki.com"
- "https://developers.pipedrive.com/docs/api/v1/openapi.yaml"
- "apisguru::twilio.com:api"
- "apisguru::docusign.net"
- "apisguru::github.com:api.github.com"
- "apisguru::apis.guru"
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: generator
path: publish
- run: chmod a+x ./publish/kiota
# Common dependency needed to run MockServer
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "temurin"
cache: "maven"
- name: Setup .NET
if: matrix.language == 'csharp'
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
- name: Setup Go
if: matrix.language == 'go'
uses: actions/setup-go@v5
with:
go-version: "^1.20"
- name: Setup Typescript
if: matrix.language == 'typescript'
uses: actions/setup-node@v4
with:
node-version: "18"
- name: Setup Ruby
if: matrix.language == 'ruby'
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.2.0"
bundler-cache: true
- name: Setup PHP
if: matrix.language == 'php'
uses: shivammathur/setup-php@v2
with:
php-version: "8.2"
coverage: xdebug
- name: Setup Python
if: matrix.language == 'python'
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Check if test is suppressed
id: check-suppressed
run: |
$isSuppressed = . ./it/get-is-suppressed.ps1 -descriptionUrl ${{ matrix.description }} -language ${{ matrix.language }}
Write-Output "IS_SUPPRESSED=$($isSuppressed.ToString().ToLowerInvariant())" >> $Env:GITHUB_OUTPUT
shell: pwsh
- name: Generate Code
shell: pwsh
run: ./it/generate-code.ps1 -descriptionUrl ${{ matrix.description }} -language ${{ matrix.language }}
continue-on-error: ${{ steps.check-suppressed.outputs.IS_SUPPRESSED == 'true' }}
- name: Execute the IT test
shell: pwsh
run: ./it/exec-cmd.ps1 -descriptionUrl ${{ matrix.description }} -language ${{ matrix.language }}
continue-on-error: ${{ steps.check-suppressed.outputs.IS_SUPPRESSED == 'true' }}
- name: Cleanup the IT folder
shell: pwsh
run: ./it/do-clean.ps1 -language ${{ matrix.language }}
if: always()
- id: replace_url
if: always()
# 97 so we don't exceed the 128 character limit for artifact names with the generation-results-typescript prefix
run: |
$original="${{ matrix.description }}"
$replaced=($original -replace "[-:<>|\*\?\\\/\.]", "_").Substring(0, [Math]::Min(97, $original.Length))
Write-Output "ARTKEY=$replaced" >> $Env:GITHUB_OUTPUT
shell: pwsh
- uses: actions/upload-artifact@v4
if: always()
with:
name: generation-results-${{ matrix.language }}-${{ steps.replace_url.outputs.ARTKEY }}
path: it/${{ matrix.language }}.zip
cleanup:
runs-on: ubuntu-latest
needs: integration
steps:
- uses: jimschubert/delete-artifacts-action@v1
with:
artifact_name: "generator"
min_bytes: "0"