Skip to content

Bump @types/node from 16.18.18 to 16.18.19 #188

Bump @types/node from 16.18.18 to 16.18.19

Bump @types/node from 16.18.18 to 16.18.19 #188

Workflow file for this run

name: Tests
on:
push:
branches: [ master ]
paths:
- 'dist/*.js'
- '.github/workflows/tests.yml'
pull_request:
branches: [ master ]
jobs:
test-project:
name: Test Project Build
runs-on: macos-12
strategy:
matrix:
destination:
- platform=macOS
- platform=iOS Simulator,OS=latest,name=iPhone 14 Pro
skip-testing:
- |
TestProjectTests/FailingTests/testFailing1
TestProjectTests/FailingTests/testFailing2
action: [ test ]
use-xcpretty: [ true, false ]
include:
- destination: platform=watchOS Simulator,OS=latest,name=Apple Watch Series 8 (45mm)
skip-testing: ''
action: build
use-xcpretty: true
- destination: platform=watchOS Simulator,OS=latest,name=Apple Watch Series 8 (45mm)
skip-testing: ''
action: build
use-xcpretty: false
env:
INPUT_PROJECT: __test__/TestProject/TestProject.xcodeproj
INPUT_SCHEME: TestProject
steps:
- uses: maxim-lobanov/setup-xcode@v1.5.1
with:
xcode-version: ^14.0
- name: Install dependencies
if: ${{ github.event_name == 'pull_request' }}
run: sudo npm i -g typescript @vercel/ncc
- uses: actions/checkout@v3.4.0
- name: Generate action code
if: ${{ github.event_name == 'pull_request' }}
run: npm run deploy
- uses: sersoft-gmbh/xcodebuild-action@master
if: ${{ github.event_name == 'push' }}
with:
project: ${{ env.INPUT_PROJECT }}
scheme: ${{ env.INPUT_SCHEME }}
destination: ${{ matrix.destination }}
skip-testing: ${{ matrix.skip-testing }}
action: ${{ matrix.action }}
use-xcpretty: ${{ matrix.use-xcpretty }}
- uses: './'
if: ${{ github.event_name == 'pull_request' }}
with:
project: ${{ env.INPUT_PROJECT }}
scheme: ${{ env.INPUT_SCHEME }}
destination: ${{ matrix.destination }}
skip-testing: ${{ matrix.skip-testing }}
action: ${{ matrix.action }}
use-xcpretty: ${{ matrix.use-xcpretty }}
- name: Check for derived data
run: ls ~/Library/Developer/Xcode/DerivedData/ | grep -q '^TestProject.*'
test-workspace:
name: Test Workspace Build
runs-on: macos-12
strategy:
matrix:
destination:
- platform=macOS
- platform=iOS Simulator,OS=latest,name=iPhone 14 Pro
skip-testing:
- |
TestProjectTests/FailingTests/testFailing1
TestProjectTests/FailingTests/testFailing2
action: [ test ]
use-xcpretty: [ true, false ]
include:
- destination: platform=watchOS Simulator,OS=latest,name=Apple Watch Series 8 (45mm)
skip-testing: ''
action: build
use-xcpretty: true
- destination: platform=watchOS Simulator,OS=latest,name=Apple Watch Series 8 (45mm)
skip-testing: ''
action: build
use-xcpretty: false
env:
INPUT_WORKSPACE: __test__/TestProject/TestProject.xcworkspace
INPUT_SCHEME: TestProject
steps:
- uses: maxim-lobanov/setup-xcode@v1.5.1
with:
xcode-version: ^14.0
- name: Install dependencies
if: ${{ github.event_name == 'pull_request' }}
run: sudo npm i -g typescript @vercel/ncc
- uses: actions/checkout@v3.4.0
- name: Generate action code
if: ${{ github.event_name == 'pull_request' }}
run: npm run deploy
- uses: sersoft-gmbh/xcodebuild-action@master
if: ${{ github.event_name == 'push' }}
with:
workspace: ${{ env.INPUT_WORKSPACE }}
scheme: ${{ env.INPUT_SCHEME }}
destination: ${{ matrix.destination }}
skip-testing: ${{ matrix.skip-testing }}
action: ${{ matrix.action }}
use-xcpretty: ${{ matrix.use-xcpretty }}
- uses: './'
if: ${{ github.event_name == 'pull_request' }}
with:
workspace: ${{ env.INPUT_WORKSPACE }}
scheme: ${{ env.INPUT_SCHEME }}
destination: ${{ matrix.destination }}
skip-testing: ${{ matrix.skip-testing }}
action: ${{ matrix.action }}
use-xcpretty: ${{ matrix.use-xcpretty }}
- name: Check for derived data
run: ls ~/Library/Developer/Xcode/DerivedData/ | grep -q '^TestProject.*'
test-package:
name: Test SPM Package Build
runs-on: macos-12
strategy:
matrix:
destination:
- platform=macOS
- platform=iOS Simulator,OS=latest,name=iPhone 14 Pro
use-xcpretty: [ true, false ]
env:
INPUT_SPM_PACKAGE: __test__/TestPackage
INPUT_SCHEME: TestPackage
INPUT_ACTION: test
steps:
- uses: maxim-lobanov/setup-xcode@v1.5.1
with:
xcode-version: ^14.0
- name: Install dependencies
if: ${{ github.event_name == 'pull_request' }}
run: sudo npm i -g typescript @vercel/ncc
- uses: actions/checkout@v3.4.0
- name: Generate action code
if: ${{ github.event_name == 'pull_request' }}
run: npm run deploy
- uses: sersoft-gmbh/xcodebuild-action@master
if: ${{ github.event_name == 'push' }}
with:
spm-package: ${{ env.INPUT_SPM_PACKAGE }}
scheme: ${{ env.INPUT_SCHEME }}
destination: ${{ matrix.destination }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
- uses: './'
if: ${{ github.event_name == 'pull_request' }}
with:
spm-package: ${{ env.INPUT_SPM_PACKAGE }}
scheme: ${{ env.INPUT_SCHEME }}
destination: ${{ matrix.destination }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
- name: Check for derived data
run: ls ~/Library/Developer/Xcode/DerivedData/ | grep -q '^TestPackage.*'
test-dry-run-project:
name: Dry Run Project Build
runs-on: ubuntu-latest
strategy:
matrix:
use-xcpretty: [ true, false ]
env:
INPUT_PROJECT: TestProject.xcodeproj
INPUT_TARGET: SomeTarget
INPUT_DESTINATION: platform=macOS
INPUT_CONFIGURATION: Debug
INPUT_SDK: SomeSDK
INPUT_ARCH: aarm64
INPUT_XCCONFIG: /SomeConfig.xcconfig
INPUT_JOBS: 42
INPUT_RESULT_BUNDLE_PATH: /here/and/there.bundle
INPUT_RESULT_BUNDLE_VERSION: 3
INPUT_DERIVED_DATA_PATH: /there/and/here
INPUT_XCROOT: /this/and/that.xcroot
INPUT_XCTESTRUN: /this/and/that.xctestrun
INPUT_TEST_PLAN: SomeTestPlan
INPUT_SKIP_TESTING_0: this
INPUT_SKIP_TESTING_1: that
INPUT_BUILD_SETTINGS: ABC=DEF
INPUT_ACTION: action
INPUT_XCPRETTY_COLORED_OUTPUT: 'true'
steps:
- if: ${{ github.event_name == 'pull_request' && env.RUNNER_DEBUG != 1 }}
run: echo 'RUNNER_DEBUG=1' >> "${GITHUB_ENV}"
- if: ${{ github.event_name == 'pull_request' }}
run: test "${RUNNER_DEBUG}" == "1"
- if: ${{ github.event_name == 'push' }}
env:
DEBUG_ENABLED: ${{ secrets.ACTIONS_STEP_DEBUG }}
run: test "${DEBUG_ENABLED}" == 'true'
- name: Install dependencies
if: github.event_name == 'pull_request'
run: sudo npm i -g typescript @vercel/ncc
- uses: actions/checkout@v3.4.0
- name: Generate action code
if: ${{ github.event_name == 'pull_request' }}
run: npm run deploy
- uses: sersoft-gmbh/xcodebuild-action@master
if: ${{ github.event_name == 'push' }}
id: xcodebuild-master
with:
project: ${{ env.INPUT_PROJECT }}
target: ${{ env.INPUT_TARGET }}
destination: ${{ env.INPUT_DESTINATION }}
configuration: ${{ env.INPUT_CONFIGURATION }}
sdk: ${{ env.INPUT_SDK }}
arch: ${{ env.INPUT_ARCH }}
xcconfig: ${{ env.INPUT_XCCONFIG }}
jobs: ${{ env.INPUT_JOBS }}
parallelize-targets: true
enable-code-coverage: true
parallel-testing-enabled: true
quiet: true
hide-shell-script-environment: true
enable-address-sanitizer: false
enable-thread-sanitizer: false
enable-undefined-behavior-sanitizer: false
result-bundle-path: ${{ env.INPUT_RESULT_BUNDLE_PATH }}
result-bundle-version: ${{ env.INPUT_RESULT_BUNDLE_VERSION }}
derived-data-path: ${{ env.INPUT_DERIVED_DATA_PATH }}
xcroot: ${{ env.INPUT_XCROOT }}
xctestrun: ${{ env.INPUT_XCTESTRUN }}
test-plan: ${{ env.INPUT_TEST_PLAN }}
skip-testing: |
${{ env.INPUT_SKIP_TESTING_0 }}
${{ env.INPUT_SKIP_TESTING_1 }}
skip-unavailable-actions: true
allow-provisioning-updates: true
allow-provisioning-device-registration: true
build-settings: ${{ env.INPUT_BUILD_SETTINGS }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
xcpretty-colored-output: ${{ env.INPUT_XCPRETTY_COLORED_OUTPUT }}
dry-run: true
- uses: './'
if: ${{ github.event_name == 'pull_request' }}
id: xcodebuild-local
with:
project: ${{ env.INPUT_PROJECT }}
target: ${{ env.INPUT_TARGET }}
destination: ${{ env.INPUT_DESTINATION }}
configuration: ${{ env.INPUT_CONFIGURATION }}
sdk: ${{ env.INPUT_SDK }}
arch: ${{ env.INPUT_ARCH }}
xcconfig: ${{ env.INPUT_XCCONFIG }}
jobs: ${{ env.INPUT_JOBS }}
parallelize-targets: true
enable-code-coverage: true
parallel-testing-enabled: true
quiet: true
hide-shell-script-environment: true
enable-address-sanitizer: false
enable-thread-sanitizer: false
enable-undefined-behavior-sanitizer: false
result-bundle-path: ${{ env.INPUT_RESULT_BUNDLE_PATH }}
result-bundle-version: ${{ env.INPUT_RESULT_BUNDLE_VERSION }}
derived-data-path: ${{ env.INPUT_DERIVED_DATA_PATH }}
xcroot: ${{ env.INPUT_XCROOT }}
xctestrun: ${{ env.INPUT_XCTESTRUN }}
test-plan: ${{ env.INPUT_TEST_PLAN }}
skip-testing: |
${{ env.INPUT_SKIP_TESTING_0 }}
${{ env.INPUT_SKIP_TESTING_1 }}
skip-unavailable-actions: true
allow-provisioning-updates: true
allow-provisioning-device-registration: true
build-settings: ${{ env.INPUT_BUILD_SETTINGS }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
xcpretty-colored-output: ${{ env.INPUT_XCPRETTY_COLORED_OUTPUT }}
dry-run: true
- id: xcodebuild
env:
EVENT_NAME: ${{ github.event_name }}
BRANCH_UNPROCESSED_COMMAND: ${{ steps.xcodebuild-master.outputs.unprocessed-command }}
BRANCH_EXECUTED_COMMAND: ${{ steps.xcodebuild-master.outputs.executed-command }}
LOCAL_UNPROCESSED_COMMAND: ${{ steps.xcodebuild-local.outputs.unprocessed-command }}
LOCAL_EXECUTED_COMMAND: ${{ steps.xcodebuild-local.outputs.executed-command }}
run: |
if [ "${EVENT_NAME}" == 'push' ]; then
echo "unprocessed-command=${BRANCH_UNPROCESSED_COMMAND}" >> "${GITHUB_OUTPUT}"
echo "executed-command=${BRANCH_EXECUTED_COMMAND}" >> "${GITHUB_OUTPUT}"
else
echo "unprocessed-command=${LOCAL_UNPROCESSED_COMMAND}" >> "${GITHUB_OUTPUT}"
echo "executed-command=${LOCAL_EXECUTED_COMMAND}" >> "${GITHUB_OUTPUT}"
fi
- name: Check executed command
env:
USE_XCPRETTY: ${{ matrix.use-xcpretty }}
UNPROCESSED_COMMAND: ${{ steps.xcodebuild.outputs.unprocessed-command }}
EXECUTED_COMMAND: ${{ steps.xcodebuild.outputs.executed-command }}
run: |
EXPECTED_COMMAND="xcodebuild \
-project ${INPUT_PROJECT} \
-target ${INPUT_TARGET} \
-destination ${INPUT_DESTINATION} \
-configuration ${INPUT_CONFIGURATION} \
-sdk ${INPUT_SDK} \
-arch ${INPUT_ARCH} \
-xcconfig ${INPUT_XCCONFIG} \
-jobs ${INPUT_JOBS} \
-parallelizeTargets \
-enableCodeCoverage YES \
-parallel-testing-enabled YES \
-quiet \
-hideShellScriptEnvironment \
-enableAddressSanitizer NO \
-enableThreadSanitizer NO \
-enableUndefinedBehaviorSanitizer NO \
-resultBundlePath ${INPUT_RESULT_BUNDLE_PATH} \
-resultBundleVersion ${INPUT_RESULT_BUNDLE_VERSION} \
-derivedDataPath ${INPUT_DERIVED_DATA_PATH} \
-xcroot ${INPUT_XCROOT} \
-xctestrun ${INPUT_XCTESTRUN} \
-testPlan ${INPUT_TEST_PLAN} \
-skip-testing ${INPUT_SKIP_TESTING_0} \
-skip-testing ${INPUT_SKIP_TESTING_1} \
-skipUnavailableActions \
-allowProvisioningUpdates \
-allowProvisioningDeviceRegistration \
${INPUT_BUILD_SETTINGS} \
${INPUT_ACTION}"
if [ "${USE_XCPRETTY}" == 'true' ]; then
EXPECTED_COMMAND="${EXPECTED_COMMAND} | xcpretty"
if [ "${INPUT_XCPRETTY_COLORED_OUTPUT}" == 'true' ]; then
EXPECTED_COMMAND="${EXPECTED_COMMAND} --color"
fi
fi
ACTUAL_COMMAND="${UNPROCESSED_COMMAND}"
if [ "${EXPECTED_COMMAND}" != "${ACTUAL_COMMAND}" ]; then
printf "::error::Executed command did not match expectations!\nExecuted: ${ACTUAL_COMMAND}\nExpected: ${EXPECTED_COMMAND}\n"
exit 1
fi
test-dry-run-workspace:
name: Dry Run Workspace Build
runs-on: ubuntu-latest
strategy:
matrix:
use-xcpretty: [ true, false ]
env:
INPUT_WORKSPACE: TestWorkspace.xcworkspace
INPUT_SCHEME: TestScheme
INPUT_TARGET: SomeTarget
INPUT_DESTINATION: platform=macOS
INPUT_CONFIGURATION: Debug
INPUT_SDK: SomeSDK
INPUT_ARCH: aarm64
INPUT_XCCONFIG: /SomeConfig.xcconfig
INPUT_JOBS: 42
INPUT_RESULT_BUNDLE_PATH: /here/and/there.bundle
INPUT_RESULT_BUNDLE_VERSION: 3
INPUT_DERIVED_DATA_PATH: /there/and/here
INPUT_XCROOT: /this/and/that.xcroot
INPUT_XCTESTRUN: /this/and/that.xctestrun
INPUT_TEST_PLAN: SomeTestPlan
INPUT_SKIP_TESTING_0: this
INPUT_SKIP_TESTING_1: that
INPUT_BUILD_SETTINGS: ABC=DEF
INPUT_ACTION: action
INPUT_XCPRETTY_COLORED_OUTPUT: 'true'
steps:
- if: ${{ github.event_name == 'pull_request' && env.RUNNER_DEBUG != 1 }}
run: echo 'RUNNER_DEBUG=1' >> "${GITHUB_ENV}"
- if: ${{ github.event_name == 'pull_request' }}
run: test "${RUNNER_DEBUG}" == "1"
- if: ${{ github.event_name == 'push' }}
env:
DEBUG_ENABLED: ${{ secrets.ACTIONS_STEP_DEBUG }}
run: test "${DEBUG_ENABLED}" == 'true'
- name: Install dependencies
if: ${{ github.event_name == 'pull_request' }}
run: sudo npm i -g typescript @vercel/ncc
- uses: actions/checkout@v3.4.0
- name: Generate action code
if: ${{ github.event_name == 'pull_request' }}
run: npm run deploy
- uses: sersoft-gmbh/xcodebuild-action@master
if: ${{ github.event_name == 'push' }}
id: xcodebuild-master
with:
workspace: ${{ env.INPUT_WORKSPACE }}
scheme: ${{ env.INPUT_SCHEME }}
target: ${{ env.INPUT_TARGET }}
destination: ${{ env.INPUT_DESTINATION }}
configuration: ${{ env.INPUT_CONFIGURATION }}
sdk: ${{ env.INPUT_SDK }}
arch: ${{ env.INPUT_ARCH }}
xcconfig: ${{ env.INPUT_XCCONFIG }}
jobs: ${{ env.INPUT_JOBS }}
parallelize-targets: true
enable-code-coverage: true
parallel-testing-enabled: true
quiet: true
hide-shell-script-environment: true
enable-address-sanitizer: false
enable-thread-sanitizer: false
enable-undefined-behavior-sanitizer: false
result-bundle-path: ${{ env.INPUT_RESULT_BUNDLE_PATH }}
result-bundle-version: ${{ env.INPUT_RESULT_BUNDLE_VERSION }}
derived-data-path: ${{ env.INPUT_DERIVED_DATA_PATH }}
xcroot: ${{ env.INPUT_XCROOT }}
xctestrun: ${{ env.INPUT_XCTESTRUN }}
test-plan: ${{ env.INPUT_TEST_PLAN }}
skip-testing: |
${{ env.INPUT_SKIP_TESTING_0 }}
${{ env.INPUT_SKIP_TESTING_1 }}
skip-unavailable-actions: true
allow-provisioning-updates: true
allow-provisioning-device-registration: true
build-settings: ${{ env.INPUT_BUILD_SETTINGS }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
xcpretty-colored-output: ${{ env.INPUT_XCPRETTY_COLORED_OUTPUT }}
dry-run: true
- uses: './'
if: ${{ github.event_name == 'pull_request' }}
id: xcodebuild-local
with:
workspace: ${{ env.INPUT_WORKSPACE }}
scheme: ${{ env.INPUT_SCHEME }}
target: ${{ env.INPUT_TARGET }}
destination: ${{ env.INPUT_DESTINATION }}
configuration: ${{ env.INPUT_CONFIGURATION }}
sdk: ${{ env.INPUT_SDK }}
arch: ${{ env.INPUT_ARCH }}
xcconfig: ${{ env.INPUT_XCCONFIG }}
jobs: ${{ env.INPUT_JOBS }}
parallelize-targets: true
enable-code-coverage: true
parallel-testing-enabled: true
quiet: true
hide-shell-script-environment: true
enable-address-sanitizer: false
enable-thread-sanitizer: false
enable-undefined-behavior-sanitizer: false
result-bundle-path: ${{ env.INPUT_RESULT_BUNDLE_PATH }}
result-bundle-version: ${{ env.INPUT_RESULT_BUNDLE_VERSION }}
derived-data-path: ${{ env.INPUT_DERIVED_DATA_PATH }}
xcroot: ${{ env.INPUT_XCROOT }}
xctestrun: ${{ env.INPUT_XCTESTRUN }}
test-plan: ${{ env.INPUT_TEST_PLAN }}
skip-testing: |
${{ env.INPUT_SKIP_TESTING_0 }}
${{ env.INPUT_SKIP_TESTING_1 }}
skip-unavailable-actions: true
allow-provisioning-updates: true
allow-provisioning-device-registration: true
build-settings: ${{ env.INPUT_BUILD_SETTINGS }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
xcpretty-colored-output: ${{ env.INPUT_XCPRETTY_COLORED_OUTPUT }}
dry-run: true
- id: xcodebuild
env:
EVENT_NAME: ${{ github.event_name }}
BRANCH_UNPROCESSED_COMMAND: ${{ steps.xcodebuild-master.outputs.unprocessed-command }}
BRANCH_EXECUTED_COMMAND: ${{ steps.xcodebuild-master.outputs.executed-command }}
LOCAL_UNPROCESSED_COMMAND: ${{ steps.xcodebuild-local.outputs.unprocessed-command }}
LOCAL_EXECUTED_COMMAND: ${{ steps.xcodebuild-local.outputs.executed-command }}
run: |
if [ "${EVENT_NAME}" == 'push' ]; then
echo "unprocessed-command=${BRANCH_UNPROCESSED_COMMAND}" >> "${GITHUB_OUTPUT}"
echo "executed-command=${BRANCH_EXECUTED_COMMAND}" >> "${GITHUB_OUTPUT}"
else
echo "unprocessed-command=${LOCAL_UNPROCESSED_COMMAND}" >> "${GITHUB_OUTPUT}"
echo "executed-command=${LOCAL_EXECUTED_COMMAND}" >> "${GITHUB_OUTPUT}"
fi
- name: Check executed command
env:
USE_XCPRETTY: ${{ matrix.use-xcpretty }}
UNPROCESSED_COMMAND: ${{ steps.xcodebuild.outputs.unprocessed-command }}
EXECUTED_COMMAND: ${{ steps.xcodebuild.outputs.executed-command }}
run: |
EXPECTED_COMMAND="xcodebuild \
-workspace ${INPUT_WORKSPACE} \
-scheme ${INPUT_SCHEME} \
-target ${INPUT_TARGET} \
-destination ${INPUT_DESTINATION} \
-configuration ${INPUT_CONFIGURATION} \
-sdk ${INPUT_SDK} \
-arch ${INPUT_ARCH} \
-xcconfig ${INPUT_XCCONFIG} \
-jobs ${INPUT_JOBS} \
-parallelizeTargets \
-enableCodeCoverage YES \
-parallel-testing-enabled YES \
-quiet \
-hideShellScriptEnvironment \
-enableAddressSanitizer NO \
-enableThreadSanitizer NO \
-enableUndefinedBehaviorSanitizer NO \
-resultBundlePath ${INPUT_RESULT_BUNDLE_PATH} \
-resultBundleVersion ${INPUT_RESULT_BUNDLE_VERSION} \
-derivedDataPath ${INPUT_DERIVED_DATA_PATH} \
-xcroot ${INPUT_XCROOT} \
-xctestrun ${INPUT_XCTESTRUN} \
-testPlan ${INPUT_TEST_PLAN} \
-skip-testing ${INPUT_SKIP_TESTING_0} \
-skip-testing ${INPUT_SKIP_TESTING_1} \
-skipUnavailableActions \
-allowProvisioningUpdates \
-allowProvisioningDeviceRegistration \
${INPUT_BUILD_SETTINGS} \
${INPUT_ACTION}"
if [ "${USE_XCPRETTY}" == 'true' ]; then
EXPECTED_COMMAND="${EXPECTED_COMMAND} | xcpretty"
if [ "${INPUT_XCPRETTY_COLORED_OUTPUT}" == 'true' ]; then
EXPECTED_COMMAND="${EXPECTED_COMMAND} --color"
fi
fi
ACTUAL_COMMAND="${UNPROCESSED_COMMAND}"
if [ "${EXPECTED_COMMAND}" != "${ACTUAL_COMMAND}" ]; then
printf "::error::Executed command did not match expectations!\nExecuted: ${ACTUAL_COMMAND}\nExpected: ${EXPECTED_COMMAND}\n"
exit 1
fi
test-dry-run-package:
name: Dry Run SPM Package Build
runs-on: ubuntu-latest
strategy:
matrix:
use-xcpretty: [ true, false ]
env:
INPUT_SPM_PACKAGE: /path/to/TestPackage
INPUT_SCHEME: TestScheme
INPUT_TARGET: SomeTarget
INPUT_DESTINATION: platform=macOS
INPUT_CONFIGURATION: Debug
INPUT_SDK: SomeSDK
INPUT_ARCH: aarm64
INPUT_XCCONFIG: /SomeConfig.xcconfig
INPUT_JOBS: 42
INPUT_RESULT_BUNDLE_PATH: /here/and/there.bundle
INPUT_RESULT_BUNDLE_VERSION: 3
INPUT_DERIVED_DATA_PATH: /there/and/here
INPUT_XCROOT: /this/and/that.xcroot
INPUT_XCTESTRUN: /this/and/that.xctestrun
INPUT_TEST_PLAN: SomeTestPlan
INPUT_SKIP_TESTING_0: this
INPUT_SKIP_TESTING_1: that
INPUT_BUILD_SETTINGS: ABC=DEF
INPUT_ACTION: action
INPUT_XCPRETTY_COLORED_OUTPUT: 'true'
steps:
- if: ${{ github.event_name == 'pull_request' && env.RUNNER_DEBUG != 1 }}
run: echo 'RUNNER_DEBUG=1' >> "${GITHUB_ENV}"
- if: ${{ github.event_name == 'pull_request' }}
run: test "${RUNNER_DEBUG}" == "1"
- if: ${{ github.event_name == 'push' }}
env:
DEBUG_ENABLED: ${{ secrets.ACTIONS_STEP_DEBUG }}
run: test "${DEBUG_ENABLED}" == 'true'
- name: Install dependencies
if: ${{ github.event_name == 'pull_request' }}
run: sudo npm i -g typescript @vercel/ncc
- uses: actions/checkout@v3.4.0
- name: Generate action code
if: ${{ github.event_name == 'pull_request' }}
run: npm run deploy
- uses: sersoft-gmbh/xcodebuild-action@master
if: ${{ github.event_name == 'push' }}
id: xcodebuild-master
with:
spm-package: ${{ env.INPUT_SPM_PACKAGE }}
scheme: ${{ env.INPUT_SCHEME }}
target: ${{ env.INPUT_TARGET }}
destination: ${{ env.INPUT_DESTINATION }}
configuration: ${{ env.INPUT_CONFIGURATION }}
sdk: ${{ env.INPUT_SDK }}
arch: ${{ env.INPUT_ARCH }}
xcconfig: ${{ env.INPUT_XCCONFIG }}
jobs: ${{ env.INPUT_JOBS }}
parallelize-targets: true
enable-code-coverage: true
parallel-testing-enabled: true
quiet: true
hide-shell-script-environment: true
enable-address-sanitizer: false
enable-thread-sanitizer: false
enable-undefined-behavior-sanitizer: false
result-bundle-path: ${{ env.INPUT_RESULT_BUNDLE_PATH }}
result-bundle-version: ${{ env.INPUT_RESULT_BUNDLE_VERSION }}
derived-data-path: ${{ env.INPUT_DERIVED_DATA_PATH }}
xcroot: ${{ env.INPUT_XCROOT }}
xctestrun: ${{ env.INPUT_XCTESTRUN }}
test-plan: ${{ env.INPUT_TEST_PLAN }}
skip-testing: |
${{ env.INPUT_SKIP_TESTING_0 }}
${{ env.INPUT_SKIP_TESTING_1 }}
skip-unavailable-actions: true
allow-provisioning-updates: true
allow-provisioning-device-registration: true
build-settings: ${{ env.INPUT_BUILD_SETTINGS }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
xcpretty-colored-output: ${{ env.INPUT_XCPRETTY_COLORED_OUTPUT }}
dry-run: true
- uses: './'
if: ${{ github.event_name == 'pull_request' }}
id: xcodebuild-local
with:
spm-package: ${{ env.INPUT_SPM_PACKAGE }}
scheme: ${{ env.INPUT_SCHEME }}
target: ${{ env.INPUT_TARGET }}
destination: ${{ env.INPUT_DESTINATION }}
configuration: ${{ env.INPUT_CONFIGURATION }}
sdk: ${{ env.INPUT_SDK }}
arch: ${{ env.INPUT_ARCH }}
xcconfig: ${{ env.INPUT_XCCONFIG }}
jobs: ${{ env.INPUT_JOBS }}
parallelize-targets: true
enable-code-coverage: true
parallel-testing-enabled: true
quiet: true
hide-shell-script-environment: true
enable-address-sanitizer: false
enable-thread-sanitizer: false
enable-undefined-behavior-sanitizer: false
result-bundle-path: ${{ env.INPUT_RESULT_BUNDLE_PATH }}
result-bundle-version: ${{ env.INPUT_RESULT_BUNDLE_VERSION }}
derived-data-path: ${{ env.INPUT_DERIVED_DATA_PATH }}
xcroot: ${{ env.INPUT_XCROOT }}
xctestrun: ${{ env.INPUT_XCTESTRUN }}
test-plan: ${{ env.INPUT_TEST_PLAN }}
skip-testing: |
${{ env.INPUT_SKIP_TESTING_0 }}
${{ env.INPUT_SKIP_TESTING_1 }}
skip-unavailable-actions: true
allow-provisioning-updates: true
allow-provisioning-device-registration: true
build-settings: ${{ env.INPUT_BUILD_SETTINGS }}
action: ${{ env.INPUT_ACTION }}
use-xcpretty: ${{ matrix.use-xcpretty }}
xcpretty-colored-output: ${{ env.INPUT_XCPRETTY_COLORED_OUTPUT }}
dry-run: true
- id: xcodebuild
env:
EVENT_NAME: ${{ github.event_name }}
BRANCH_UNPROCESSED_COMMAND: ${{ steps.xcodebuild-master.outputs.unprocessed-command }}
BRANCH_EXECUTED_COMMAND: ${{ steps.xcodebuild-master.outputs.executed-command }}
LOCAL_UNPROCESSED_COMMAND: ${{ steps.xcodebuild-local.outputs.unprocessed-command }}
LOCAL_EXECUTED_COMMAND: ${{ steps.xcodebuild-local.outputs.executed-command }}
run: |
if [ "${EVENT_NAME}" == 'push' ]; then
echo "unprocessed-command=${BRANCH_UNPROCESSED_COMMAND}" >> "${GITHUB_OUTPUT}"
echo "executed-command=${BRANCH_EXECUTED_COMMAND}" >> "${GITHUB_OUTPUT}"
else
echo "unprocessed-command=${LOCAL_UNPROCESSED_COMMAND}" >> "${GITHUB_OUTPUT}"
echo "executed-command=${LOCAL_EXECUTED_COMMAND}" >> "${GITHUB_OUTPUT}"
fi
- name: Check executed command
env:
USE_XCPRETTY: ${{ matrix.use-xcpretty }}
UNPROCESSED_COMMAND: ${{ steps.xcodebuild.outputs.unprocessed-command }}
EXECUTED_COMMAND: ${{ steps.xcodebuild.outputs.executed-command }}
run: |
EXPECTED_COMMAND="pushd ${INPUT_SPM_PACKAGE} && \
xcodebuild \
-scheme ${INPUT_SCHEME} \
-target ${INPUT_TARGET} \
-destination ${INPUT_DESTINATION} \
-configuration ${INPUT_CONFIGURATION} \
-sdk ${INPUT_SDK} \
-arch ${INPUT_ARCH} \
-xcconfig ${INPUT_XCCONFIG} \
-jobs ${INPUT_JOBS} \
-parallelizeTargets \
-enableCodeCoverage YES \
-parallel-testing-enabled YES \
-quiet \
-hideShellScriptEnvironment \
-enableAddressSanitizer NO \
-enableThreadSanitizer NO \
-enableUndefinedBehaviorSanitizer NO \
-resultBundlePath ${INPUT_RESULT_BUNDLE_PATH} \
-resultBundleVersion ${INPUT_RESULT_BUNDLE_VERSION} \
-derivedDataPath ${INPUT_DERIVED_DATA_PATH} \
-xcroot ${INPUT_XCROOT} \
-xctestrun ${INPUT_XCTESTRUN} \
-testPlan ${INPUT_TEST_PLAN} \
-skip-testing ${INPUT_SKIP_TESTING_0} \
-skip-testing ${INPUT_SKIP_TESTING_1} \
-skipUnavailableActions \
-allowProvisioningUpdates \
-allowProvisioningDeviceRegistration \
${INPUT_BUILD_SETTINGS} \
${INPUT_ACTION}"
if [ "${USE_XCPRETTY}" == 'true' ]; then
EXPECTED_COMMAND="${EXPECTED_COMMAND} | xcpretty"
if [ "${INPUT_XCPRETTY_COLORED_OUTPUT}" == 'true' ]; then
EXPECTED_COMMAND="${EXPECTED_COMMAND} --color"
fi
fi
EXPECTED_COMMAND="${EXPECTED_COMMAND} ; popd"
ACTUAL_COMMAND="${UNPROCESSED_COMMAND}"
if [ "${EXPECTED_COMMAND}" != "${ACTUAL_COMMAND}" ]; then
printf "::error::Executed command did not match expectations!\nExecuted: ${ACTUAL_COMMAND}\nExpected: ${EXPECTED_COMMAND}\n"
exit 1
fi