Run Tests #419
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run tests | |
concurrency: | |
group: run-tests-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: | |
- master | |
- kotlin/** | |
env: | |
GRADLE_OPTS: -Dorg.gradle.parallel=true -Dorg.gradle.caching=true | |
JAVA_VERSION: '17' | |
XCODE_VERSION: '15.2' | |
XCODEBUILD_DESTINATION_iOS: platform=iOS Simulator,name=iPhone 14 Pro | |
XCODEBUILD_DESTINATION_macOS: platform=OS X | |
XCODEBUILD_DESTINATION_tvOS: platform=tvOS Simulator,name=Apple TV 4K (3rd generation) | |
XCODEBUILD_DESTINATION_watchOS: platform=watchOS Simulator,name=Apple Watch Series 8 (45mm) | |
jobs: | |
run-kotlin-tests: | |
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false | |
strategy: | |
fail-fast: false | |
matrix: | |
module: [ annotations, compiler, compiler-embeddable, core, gradle-plugin, ksp ] | |
name: ${{ matrix.module }} | |
runs-on: macos-14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ env.XCODE_VERSION }} | |
- name: Gradle Wrapper Validation | |
uses: gradle/wrapper-validation-action@v2 | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: ${{ env.JAVA_VERSION }} | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | |
- name: Cache Konan | |
uses: ./.github/actions/cache-konan | |
- name: Run tests | |
env: | |
GRADLE_MODULE: ${{ format(':kmp-nativecoroutines-{0}', matrix.module) }} | |
IS_COMPILER_MODULE: ${{ matrix.module == 'compiler' }} | |
run: ./gradlew $GRADLE_MODULE:check -PbuildForCompilerTest=$IS_COMPILER_MODULE | |
- name: Archive reports | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: kmp-nativecoroutines-${{ matrix.module }}-reports | |
path: '*/build/reports/' | |
run-idea-tests: | |
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Gradle Wrapper Validation | |
uses: gradle/wrapper-validation-action@v2 | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: ${{ env.JAVA_VERSION }} | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | |
- name: Verify plugin project configuration | |
run: ./gradlew :kmp-nativecoroutines-idea-plugin:verifyPluginProjectConfiguration | |
- name: Verify plugin structure | |
run: ./gradlew :kmp-nativecoroutines-idea-plugin:verifyPluginStructure | |
- name: Verify plugin | |
run: ./gradlew :kmp-nativecoroutines-idea-plugin:verifyPlugin | |
- name: Run binary compatibility validator | |
run: ./gradlew :kmp-nativecoroutines-idea-plugin:apiCheck | |
run-swift-tests: | |
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ iOS, macOS, tvOS, watchOS ] | |
implementation: [ Async, Combine, RxSwift ] | |
name: ${{ format('{0} {1}', matrix.implementation, matrix.platform) }} | |
runs-on: macos-14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ env.XCODE_VERSION }} | |
- name: Run tests | |
env: | |
XCODEBUILD_SCHEME: ${{ format('KMPNativeCoroutines{0}', matrix.implementation) }} | |
XCODEBUILD_DESTINATION: ${{ env[format('XCODEBUILD_DESTINATION_{0}', matrix.platform)] }} | |
run: >- | |
xcodebuild test | |
-project KMPNativeCoroutines.xcodeproj | |
-scheme "$XCODEBUILD_SCHEME" | |
-destination "$XCODEBUILD_DESTINATION" | |
run-integration-tests: | |
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false | |
needs: | |
- run-kotlin-tests | |
- run-swift-tests | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: [ iOS, macOS, tvOS, watchOS ] | |
embeddable-compiler: [ true, false ] | |
ksp-mode: [ true, false ] | |
name: ${{ format('Sample {0} (embeddable {1}, KSP {2})', matrix.platform, matrix.embeddable-compiler, matrix.kps-mode) }} | |
runs-on: macos-14 | |
env: | |
XCODEBUILD_SCHEME_iOS: iOS App | |
XCODEBUILD_SCHEME_macOS: macOS App | |
XCODEBUILD_SCHEME_tvOS: tvOS App | |
XCODEBUILD_SCHEME_watchOS: watchOS Tests | |
defaults: | |
run: | |
working-directory: sample | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Gradle Wrapper Validation | |
uses: gradle/wrapper-validation-action@v2 | |
- name: Setup Xcode | |
uses: maxim-lobanov/setup-xcode@v1 | |
with: | |
xcode-version: ${{ env.XCODE_VERSION }} | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: ${{ env.JAVA_VERSION }} | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v3 | |
with: | |
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | |
- name: Cache Konan | |
uses: ./.github/actions/cache-konan | |
- name: Set kotlin.native.useEmbeddableCompilerJar | |
env: | |
KOTLIN_NATIVE_EMBEDDABLE_COMPILER: ${{ matrix.embeddable-compiler }} | |
run: echo "kotlin.native.useEmbeddableCompilerJar=$KOTLIN_NATIVE_EMBEDDABLE_COMPILER" >> gradle.properties | |
- name: Run tests | |
env: | |
XCODEBUILD_SCHEME: ${{ env[format('XCODEBUILD_SCHEME_{0}', matrix.platform)] }} | |
XCODEBUILD_DESTINATION: ${{ env[format('XCODEBUILD_DESTINATION_{0}', matrix.platform)] }} | |
NATIVE_COROUTINES_KSP_MODE: ${{ matrix.ksp-mode }} | |
run: >- | |
xcodebuild test | |
-project KMPNativeCoroutinesSample.xcodeproj | |
-scheme "$XCODEBUILD_SCHEME" | |
-destination "$XCODEBUILD_DESTINATION" |