@invarn/cibuild 2.9.5 → 2.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-35SI42CD.mjs +1 -0
- package/dist/chunk-IC45KVLJ.mjs +1 -0
- package/dist/chunk-XDY4V23V.mjs +1 -0
- package/dist/cli.cjs +14 -14
- package/dist/commands.mjs +1 -0
- package/dist/lib.mjs +3934 -0
- package/package.json +6 -10
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -399
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts +0 -38
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts.map +0 -1
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.js +0 -222
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts +0 -41
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts.map +0 -1
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.js +0 -324
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts +0 -2
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts.map +0 -1
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.js +0 -382
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts +0 -29
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts.map +0 -1
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.js +0 -160
- package/dist/src/commands/android-gms-guard.test.d.ts +0 -9
- package/dist/src/commands/android-gms-guard.test.d.ts.map +0 -1
- package/dist/src/commands/android-gms-guard.test.js +0 -78
- package/dist/src/commands/android-java-version.test.d.ts +0 -12
- package/dist/src/commands/android-java-version.test.d.ts.map +0 -1
- package/dist/src/commands/android-java-version.test.js +0 -209
- package/dist/src/commands/android-scanner-java.test.d.ts +0 -2
- package/dist/src/commands/android-scanner-java.test.d.ts.map +0 -1
- package/dist/src/commands/android-scanner-java.test.js +0 -130
- package/dist/src/commands/android-scanner.d.ts +0 -250
- package/dist/src/commands/android-scanner.d.ts.map +0 -1
- package/dist/src/commands/android-scanner.js +0 -1639
- package/dist/src/commands/build.d.ts +0 -215
- package/dist/src/commands/build.d.ts.map +0 -1
- package/dist/src/commands/build.js +0 -1433
- package/dist/src/commands/build.test.d.ts +0 -13
- package/dist/src/commands/build.test.d.ts.map +0 -1
- package/dist/src/commands/build.test.js +0 -121
- package/dist/src/commands/detect-platform.d.ts +0 -13
- package/dist/src/commands/detect-platform.d.ts.map +0 -1
- package/dist/src/commands/detect-platform.js +0 -51
- package/dist/src/commands/detect-project.d.ts +0 -7
- package/dist/src/commands/detect-project.d.ts.map +0 -1
- package/dist/src/commands/detect-project.js +0 -12
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts +0 -26
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts.map +0 -1
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.js +0 -196
- package/dist/src/commands/edit.d.ts +0 -12
- package/dist/src/commands/edit.d.ts.map +0 -1
- package/dist/src/commands/edit.js +0 -652
- package/dist/src/commands/edit.test.d.ts +0 -6
- package/dist/src/commands/edit.test.d.ts.map +0 -1
- package/dist/src/commands/edit.test.js +0 -45
- package/dist/src/commands/fidelity-trim.d.ts +0 -13
- package/dist/src/commands/fidelity-trim.d.ts.map +0 -1
- package/dist/src/commands/fidelity-trim.js +0 -21
- package/dist/src/commands/fidelity-trim.test.d.ts +0 -8
- package/dist/src/commands/fidelity-trim.test.d.ts.map +0 -1
- package/dist/src/commands/fidelity-trim.test.js +0 -79
- package/dist/src/commands/file-secret-collector.d.ts +0 -50
- package/dist/src/commands/file-secret-collector.d.ts.map +0 -1
- package/dist/src/commands/file-secret-collector.js +0 -217
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts +0 -38
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts.map +0 -1
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.js +0 -300
- package/dist/src/commands/github-workflow.d.ts +0 -5
- package/dist/src/commands/github-workflow.d.ts.map +0 -1
- package/dist/src/commands/github-workflow.js +0 -45
- package/dist/src/commands/index.d.ts +0 -33
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/commands/index.js +0 -33
- package/dist/src/commands/init.d.ts +0 -20
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js +0 -264
- package/dist/src/commands/ios-scanner.d.ts +0 -104
- package/dist/src/commands/ios-scanner.d.ts.map +0 -1
- package/dist/src/commands/ios-scanner.js +0 -492
- package/dist/src/commands/ios-scheme-ranking.test.d.ts +0 -2
- package/dist/src/commands/ios-scheme-ranking.test.d.ts.map +0 -1
- package/dist/src/commands/ios-scheme-ranking.test.js +0 -264
- package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts +0 -30
- package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts.map +0 -1
- package/dist/src/commands/local-properties-reaches-every-workflow.test.js +0 -146
- package/dist/src/commands/reset.d.ts +0 -7
- package/dist/src/commands/reset.d.ts.map +0 -1
- package/dist/src/commands/reset.js +0 -81
- package/dist/src/commands/run.d.ts +0 -22
- package/dist/src/commands/run.d.ts.map +0 -1
- package/dist/src/commands/run.js +0 -141
- package/dist/src/commands/secrets-sync-workflow.d.ts +0 -15
- package/dist/src/commands/secrets-sync-workflow.d.ts.map +0 -1
- package/dist/src/commands/secrets-sync-workflow.js +0 -255
- package/dist/src/commands/secrets-upload.d.ts +0 -21
- package/dist/src/commands/secrets-upload.d.ts.map +0 -1
- package/dist/src/commands/secrets-upload.js +0 -177
- package/dist/src/commands/secrets-upload.test.d.ts +0 -5
- package/dist/src/commands/secrets-upload.test.d.ts.map +0 -1
- package/dist/src/commands/secrets-upload.test.js +0 -60
- package/dist/src/commands/validate.d.ts +0 -10
- package/dist/src/commands/validate.d.ts.map +0 -1
- package/dist/src/commands/validate.js +0 -46
- package/dist/src/config.d.ts +0 -3
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -47
- package/dist/src/envman/cli.d.ts +0 -21
- package/dist/src/envman/cli.d.ts.map +0 -1
- package/dist/src/envman/cli.js +0 -240
- package/dist/src/envman/envman.d.ts +0 -83
- package/dist/src/envman/envman.d.ts.map +0 -1
- package/dist/src/envman/envman.js +0 -361
- package/dist/src/envman/envman.test.d.ts +0 -5
- package/dist/src/envman/envman.test.d.ts.map +0 -1
- package/dist/src/envman/envman.test.js +0 -236
- package/dist/src/envman/envstore-round-trip.test.d.ts +0 -27
- package/dist/src/envman/envstore-round-trip.test.d.ts.map +0 -1
- package/dist/src/envman/envstore-round-trip.test.js +0 -130
- package/dist/src/envman/index.d.ts +0 -23
- package/dist/src/envman/index.d.ts.map +0 -1
- package/dist/src/envman/index.js +0 -23
- package/dist/src/envman/shim.d.ts +0 -16
- package/dist/src/envman/shim.d.ts.map +0 -1
- package/dist/src/envman/shim.js +0 -66
- package/dist/src/envman/types.d.ts +0 -55
- package/dist/src/envman/types.d.ts.map +0 -1
- package/dist/src/envman/types.js +0 -12
- package/dist/src/lib.d.ts +0 -33
- package/dist/src/lib.d.ts.map +0 -1
- package/dist/src/lib.js +0 -37
- package/dist/src/pipeline.d.ts +0 -3
- package/dist/src/pipeline.d.ts.map +0 -1
- package/dist/src/pipeline.js +0 -57
- package/dist/src/runner-node-step.test.d.ts +0 -12
- package/dist/src/runner-node-step.test.d.ts.map +0 -1
- package/dist/src/runner-node-step.test.js +0 -61
- package/dist/src/runner.d.ts +0 -31
- package/dist/src/runner.d.ts.map +0 -1
- package/dist/src/runner.js +0 -240
- package/dist/src/shared/detect-project.d.ts +0 -57
- package/dist/src/shared/detect-project.d.ts.map +0 -1
- package/dist/src/shared/detect-project.js +0 -219
- package/dist/src/shared/detect-project.test.d.ts +0 -2
- package/dist/src/shared/detect-project.test.d.ts.map +0 -1
- package/dist/src/shared/detect-project.test.js +0 -161
- package/dist/src/shared/git.d.ts +0 -25
- package/dist/src/shared/git.d.ts.map +0 -1
- package/dist/src/shared/git.js +0 -53
- package/dist/src/shared/git.test.d.ts +0 -9
- package/dist/src/shared/git.test.d.ts.map +0 -1
- package/dist/src/shared/git.test.js +0 -66
- package/dist/src/shared/gitignore.d.ts +0 -6
- package/dist/src/shared/gitignore.d.ts.map +0 -1
- package/dist/src/shared/gitignore.js +0 -26
- package/dist/src/shared/gradle-settings.d.ts +0 -49
- package/dist/src/shared/gradle-settings.d.ts.map +0 -1
- package/dist/src/shared/gradle-settings.js +0 -138
- package/dist/src/shared/gradle-settings.test.d.ts +0 -2
- package/dist/src/shared/gradle-settings.test.d.ts.map +0 -1
- package/dist/src/shared/gradle-settings.test.js +0 -65
- package/dist/src/shared/prompts.d.ts +0 -30
- package/dist/src/shared/prompts.d.ts.map +0 -1
- package/dist/src/shared/prompts.js +0 -121
- package/dist/src/shared/xcode-container.test.d.ts +0 -2
- package/dist/src/shared/xcode-container.test.d.ts.map +0 -1
- package/dist/src/shared/xcode-container.test.js +0 -123
- package/dist/src/step-marker.d.ts +0 -12
- package/dist/src/step-marker.d.ts.map +0 -1
- package/dist/src/step-marker.js +0 -29
- package/dist/src/step-marker.test.d.ts +0 -11
- package/dist/src/step-marker.test.d.ts.map +0 -1
- package/dist/src/step-marker.test.js +0 -45
- package/dist/src/types.d.ts +0 -58
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts +0 -28
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts.map +0 -1
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.js +0 -223
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts +0 -20
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts.map +0 -1
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.js +0 -201
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts +0 -37
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts.map +0 -1
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.js +0 -255
- package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts +0 -32
- package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts.map +0 -1
- package/dist/src/yaml/a-missing-credential-is-loud.test.js +0 -301
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts +0 -18
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts.map +0 -1
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.js +0 -66
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts +0 -34
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts.map +0 -1
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.js +0 -218
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts +0 -27
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts.map +0 -1
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.js +0 -126
- package/dist/src/yaml/bitrise-compat.d.ts +0 -65
- package/dist/src/yaml/bitrise-compat.d.ts.map +0 -1
- package/dist/src/yaml/bitrise-compat.js +0 -206
- package/dist/src/yaml/bitrise-compat.test.d.ts +0 -5
- package/dist/src/yaml/bitrise-compat.test.d.ts.map +0 -1
- package/dist/src/yaml/bitrise-compat.test.js +0 -347
- package/dist/src/yaml/cache-key-missing-file.test.d.ts +0 -12
- package/dist/src/yaml/cache-key-missing-file.test.d.ts.map +0 -1
- package/dist/src/yaml/cache-key-missing-file.test.js +0 -116
- package/dist/src/yaml/converter.d.ts +0 -103
- package/dist/src/yaml/converter.d.ts.map +0 -1
- package/dist/src/yaml/converter.js +0 -420
- package/dist/src/yaml/converter.test.d.ts +0 -5
- package/dist/src/yaml/converter.test.d.ts.map +0 -1
- package/dist/src/yaml/converter.test.js +0 -548
- package/dist/src/yaml/e2e.test.d.ts +0 -6
- package/dist/src/yaml/e2e.test.d.ts.map +0 -1
- package/dist/src/yaml/e2e.test.js +0 -446
- package/dist/src/yaml/env-resolver.d.ts +0 -218
- package/dist/src/yaml/env-resolver.d.ts.map +0 -1
- package/dist/src/yaml/env-resolver.js +0 -591
- package/dist/src/yaml/env-resolver.test.d.ts +0 -5
- package/dist/src/yaml/env-resolver.test.d.ts.map +0 -1
- package/dist/src/yaml/env-resolver.test.js +0 -502
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts +0 -16
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts.map +0 -1
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.js +0 -126
- package/dist/src/yaml/fidelity-input-digest.d.ts +0 -37
- package/dist/src/yaml/fidelity-input-digest.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-input-digest.js +0 -208
- package/dist/src/yaml/fidelity-input-digest.test.d.ts +0 -2
- package/dist/src/yaml/fidelity-input-digest.test.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-input-digest.test.js +0 -167
- package/dist/src/yaml/fidelity-manifest.d.ts +0 -126
- package/dist/src/yaml/fidelity-manifest.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-manifest.js +0 -134
- package/dist/src/yaml/fidelity-manifest.test.d.ts +0 -12
- package/dist/src/yaml/fidelity-manifest.test.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-manifest.test.js +0 -251
- package/dist/src/yaml/interactive-prompts.d.ts +0 -71
- package/dist/src/yaml/interactive-prompts.d.ts.map +0 -1
- package/dist/src/yaml/interactive-prompts.js +0 -260
- package/dist/src/yaml/meta-helpers.d.ts +0 -28
- package/dist/src/yaml/meta-helpers.d.ts.map +0 -1
- package/dist/src/yaml/meta-helpers.js +0 -46
- package/dist/src/yaml/missing-env-handler.d.ts +0 -45
- package/dist/src/yaml/missing-env-handler.d.ts.map +0 -1
- package/dist/src/yaml/missing-env-handler.js +0 -64
- package/dist/src/yaml/parser.d.ts +0 -33
- package/dist/src/yaml/parser.d.ts.map +0 -1
- package/dist/src/yaml/parser.js +0 -148
- package/dist/src/yaml/parser.test.d.ts +0 -5
- package/dist/src/yaml/parser.test.d.ts.map +0 -1
- package/dist/src/yaml/parser.test.js +0 -83
- package/dist/src/yaml/pipeline-with-secrets.d.ts +0 -25
- package/dist/src/yaml/pipeline-with-secrets.d.ts.map +0 -1
- package/dist/src/yaml/pipeline-with-secrets.js +0 -76
- package/dist/src/yaml/platform-detector.d.ts +0 -83
- package/dist/src/yaml/platform-detector.d.ts.map +0 -1
- package/dist/src/yaml/platform-detector.js +0 -189
- package/dist/src/yaml/platform-detector.test.d.ts +0 -5
- package/dist/src/yaml/platform-detector.test.d.ts.map +0 -1
- package/dist/src/yaml/platform-detector.test.js +0 -525
- package/dist/src/yaml/preflight-validation.d.ts +0 -29
- package/dist/src/yaml/preflight-validation.d.ts.map +0 -1
- package/dist/src/yaml/preflight-validation.js +0 -21
- package/dist/src/yaml/secrets-manager.d.ts +0 -87
- package/dist/src/yaml/secrets-manager.d.ts.map +0 -1
- package/dist/src/yaml/secrets-manager.js +0 -230
- package/dist/src/yaml/shell-assignments.d.ts +0 -40
- package/dist/src/yaml/shell-assignments.d.ts.map +0 -1
- package/dist/src/yaml/shell-assignments.js +0 -77
- package/dist/src/yaml/step-validator-check-failure.test.d.ts +0 -24
- package/dist/src/yaml/step-validator-check-failure.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator-check-failure.test.js +0 -130
- package/dist/src/yaml/step-validator-self-assigned.test.d.ts +0 -23
- package/dist/src/yaml/step-validator-self-assigned.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator-self-assigned.test.js +0 -191
- package/dist/src/yaml/step-validator.d.ts +0 -67
- package/dist/src/yaml/step-validator.d.ts.map +0 -1
- package/dist/src/yaml/step-validator.js +0 -466
- package/dist/src/yaml/step-validator.test.d.ts +0 -18
- package/dist/src/yaml/step-validator.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator.test.js +0 -140
- package/dist/src/yaml/steps/android-sign.d.ts +0 -35
- package/dist/src/yaml/steps/android-sign.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-sign.js +0 -147
- package/dist/src/yaml/steps/android-variant-resolution.test.d.ts +0 -2
- package/dist/src/yaml/steps/android-variant-resolution.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-variant-resolution.test.js +0 -260
- package/dist/src/yaml/steps/android-version.d.ts +0 -26
- package/dist/src/yaml/steps/android-version.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-version.js +0 -128
- package/dist/src/yaml/steps/android-version.test.d.ts +0 -5
- package/dist/src/yaml/steps/android-version.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-version.test.js +0 -196
- package/dist/src/yaml/steps/android.d.ts +0 -156
- package/dist/src/yaml/steps/android.d.ts.map +0 -1
- package/dist/src/yaml/steps/android.js +0 -1092
- package/dist/src/yaml/steps/app-store-deploy.d.ts +0 -48
- package/dist/src/yaml/steps/app-store-deploy.d.ts.map +0 -1
- package/dist/src/yaml/steps/app-store-deploy.js +0 -167
- package/dist/src/yaml/steps/base.d.ts +0 -263
- package/dist/src/yaml/steps/base.d.ts.map +0 -1
- package/dist/src/yaml/steps/base.js +0 -380
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts +0 -26
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-android-tools.js +0 -200
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-android-tools.test.js +0 -280
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts +0 -22
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-apk-info.js +0 -144
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-apk-info.test.js +0 -331
- package/dist/src/yaml/steps/bitrise-slack.d.ts +0 -49
- package/dist/src/yaml/steps/bitrise-slack.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-slack.js +0 -280
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-slack.test.js +0 -484
- package/dist/src/yaml/steps/bitrise-ssh.d.ts +0 -27
- package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-ssh.js +0 -134
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-ssh.test.js +0 -205
- package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts +0 -27
- package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-pull-daemon.test.js +0 -212
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts +0 -42
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.js +0 -209
- package/dist/src/yaml/steps/cache-push-daemon.test.d.ts +0 -27
- package/dist/src/yaml/steps/cache-push-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-push-daemon.test.js +0 -171
- package/dist/src/yaml/steps/cache.d.ts +0 -59
- package/dist/src/yaml/steps/cache.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache.js +0 -1027
- package/dist/src/yaml/steps/capture-injection.d.ts +0 -30
- package/dist/src/yaml/steps/capture-injection.d.ts.map +0 -1
- package/dist/src/yaml/steps/capture-injection.js +0 -88
- package/dist/src/yaml/steps/capture-injection.test.d.ts +0 -2
- package/dist/src/yaml/steps/capture-injection.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/capture-injection.test.js +0 -163
- package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +0 -42
- package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
- package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
- package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
- package/dist/src/yaml/steps/fastlane.d.ts +0 -27
- package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
- package/dist/src/yaml/steps/fastlane.js +0 -79
- package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
- package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
- package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
- package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
- package/dist/src/yaml/steps/file.d.ts +0 -52
- package/dist/src/yaml/steps/file.d.ts.map +0 -1
- package/dist/src/yaml/steps/file.js +0 -108
- package/dist/src/yaml/steps/flutter.d.ts +0 -63
- package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
- package/dist/src/yaml/steps/flutter.js +0 -215
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
- package/dist/src/yaml/steps/git-clone.d.ts +0 -32
- package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-clone.js +0 -171
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
- package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
- package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
- package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
- package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
- package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
- package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
- package/dist/src/yaml/steps/google-play-deploy.js +0 -193
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
- package/dist/src/yaml/steps/gradle-memory.d.ts +0 -61
- package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-memory.js +0 -386
- package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
- package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-memory.test.js +0 -344
- package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
- package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
- package/dist/src/yaml/steps/index.d.ts +0 -10
- package/dist/src/yaml/steps/index.d.ts.map +0 -1
- package/dist/src/yaml/steps/index.js +0 -1461
- package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
- package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-deps.js +0 -279
- package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
- package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-deps.test.js +0 -90
- package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
- package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-signing.js +0 -144
- package/dist/src/yaml/steps/ios-version.d.ts +0 -47
- package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-version.js +0 -151
- package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
- package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
- package/dist/src/yaml/steps/linting.d.ts +0 -47
- package/dist/src/yaml/steps/linting.d.ts.map +0 -1
- package/dist/src/yaml/steps/linting.js +0 -148
- package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
- package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase2.test.js +0 -197
- package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
- package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase3.test.js +0 -144
- package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
- package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase4.test.js +0 -166
- package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
- package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase5.test.js +0 -263
- package/dist/src/yaml/steps/registry.d.ts +0 -88
- package/dist/src/yaml/steps/registry.d.ts.map +0 -1
- package/dist/src/yaml/steps/registry.js +0 -125
- package/dist/src/yaml/steps/registry.test.d.ts +0 -5
- package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/registry.test.js +0 -235
- package/dist/src/yaml/steps/release.d.ts +0 -50
- package/dist/src/yaml/steps/release.d.ts.map +0 -1
- package/dist/src/yaml/steps/release.js +0 -154
- package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
- package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
- package/dist/src/yaml/steps/render-post-processor.js +0 -270
- package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
- package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
- package/dist/src/yaml/steps/script.d.ts +0 -23
- package/dist/src/yaml/steps/script.d.ts.map +0 -1
- package/dist/src/yaml/steps/script.js +0 -63
- package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
- package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/spec-validation.test.js +0 -130
- package/dist/src/yaml/steps/steps.test.d.ts +0 -6
- package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/steps.test.js +0 -881
- package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
- package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
- package/dist/src/yaml/steps/structural-facts.js +0 -3276
- package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
- package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
- package/dist/src/yaml/steps/test-config.d.ts +0 -5
- package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
- package/dist/src/yaml/steps/test-config.js +0 -25
- package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
- package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
- package/dist/src/yaml/steps/trim-align.d.ts +0 -87
- package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align.js +0 -367
- package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
- package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align.test.js +0 -261
- package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
- package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
- package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
- package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
- package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
- package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
- package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
- package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
- package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
- package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
- package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
- package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
- package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
- package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-app-product.js +0 -247
- package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
- package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
- package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
- package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -279
- package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
- package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-destination.js +0 -202
- package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
- package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
- package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
- package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-new.test.js +0 -211
- package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
- package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
- package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
- package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
- package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
- package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
- package/dist/src/yaml/steps/xcode.d.ts +0 -230
- package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode.js +0 -1350
- package/dist/src/yaml/types.d.ts +0 -76
- package/dist/src/yaml/types.d.ts.map +0 -1
- package/dist/src/yaml/types.js +0 -5
- package/dist/src/yaml/validation-types.d.ts +0 -102
- package/dist/src/yaml/validation-types.d.ts.map +0 -1
- package/dist/src/yaml/validation-types.js +0 -8
- package/dist/src/yaml/yaml-updater.d.ts +0 -24
- package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
- package/dist/src/yaml/yaml-updater.js +0 -128
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for the shared "auto destination" resolver.
|
|
3
|
-
*
|
|
4
|
-
* The resolver consumes the JSON `xcrun simctl list devices available --json`
|
|
5
|
-
* would produce on a macOS runner, and returns the canonical
|
|
6
|
-
* `platform=iOS Simulator,OS=<v>,name=<name>` string to feed to xcodebuild.
|
|
7
|
-
*/
|
|
8
|
-
import { describe, test, expect } from '@jest/globals';
|
|
9
|
-
import { AutoDestinationError, resolveAutoDestinationFromSimctlJson, resolveDestinationInput, } from './xcode-destination.js';
|
|
10
|
-
import { XcodeBuildStepExecutor, XcodeTestStepExecutor, XcodeBuildForTestStepExecutor, XcodeTestWithoutBuildingStepExecutor, XcodeBuildForSimulatorStepExecutor, } from './xcode.js';
|
|
11
|
-
import { testConfig } from './test-config.js';
|
|
12
|
-
describe('resolveAutoDestinationFromSimctlJson', () => {
|
|
13
|
-
test('picks the newest iPhone in the highest iOS runtime', () => {
|
|
14
|
-
const simctl = {
|
|
15
|
-
devices: {
|
|
16
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-18-0': [
|
|
17
|
-
{
|
|
18
|
-
name: 'iPhone 16',
|
|
19
|
-
isAvailable: true,
|
|
20
|
-
state: 'Shutdown',
|
|
21
|
-
udid: 'AAA',
|
|
22
|
-
},
|
|
23
|
-
],
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
const resolved = resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl));
|
|
27
|
-
expect(resolved).toBe('platform=iOS Simulator,OS=18.0,name=iPhone 16');
|
|
28
|
-
});
|
|
29
|
-
test('higher iOS runtime wins (iOS 18.0 beats iOS 17.5), even if older runtime has newer model', () => {
|
|
30
|
-
const simctl = {
|
|
31
|
-
devices: {
|
|
32
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-17-5': [
|
|
33
|
-
// Pretend iPhone 16 also shows up here — runtime version should still win.
|
|
34
|
-
{ name: 'iPhone 16', isAvailable: true, udid: 'old' },
|
|
35
|
-
],
|
|
36
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-18-0': [
|
|
37
|
-
{ name: 'iPhone 15', isAvailable: true, udid: 'new' },
|
|
38
|
-
],
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
const resolved = resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl));
|
|
42
|
-
expect(resolved).toBe('platform=iOS Simulator,OS=18.0,name=iPhone 15');
|
|
43
|
-
});
|
|
44
|
-
test('Pro Max wins over Pro and plain at same model number', () => {
|
|
45
|
-
const simctl = {
|
|
46
|
-
devices: {
|
|
47
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-18-0': [
|
|
48
|
-
{ name: 'iPhone 16', isAvailable: true, udid: '1' },
|
|
49
|
-
{ name: 'iPhone 16 Pro', isAvailable: true, udid: '2' },
|
|
50
|
-
{ name: 'iPhone 16 Pro Max', isAvailable: true, udid: '3' },
|
|
51
|
-
],
|
|
52
|
-
},
|
|
53
|
-
};
|
|
54
|
-
const resolved = resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl));
|
|
55
|
-
expect(resolved).toBe('platform=iOS Simulator,OS=18.0,name=iPhone 16 Pro Max');
|
|
56
|
-
});
|
|
57
|
-
test('Pro wins over plain when Pro Max is missing', () => {
|
|
58
|
-
const simctl = {
|
|
59
|
-
devices: {
|
|
60
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-18-0': [
|
|
61
|
-
{ name: 'iPhone 16', isAvailable: true, udid: '1' },
|
|
62
|
-
{ name: 'iPhone 16 Pro', isAvailable: true, udid: '2' },
|
|
63
|
-
],
|
|
64
|
-
},
|
|
65
|
-
};
|
|
66
|
-
const resolved = resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl));
|
|
67
|
-
expect(resolved).toBe('platform=iOS Simulator,OS=18.0,name=iPhone 16 Pro');
|
|
68
|
-
});
|
|
69
|
-
test('higher iPhone model number wins (iPhone 16 beats iPhone 15)', () => {
|
|
70
|
-
const simctl = {
|
|
71
|
-
devices: {
|
|
72
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-18-0': [
|
|
73
|
-
{ name: 'iPhone 15', isAvailable: true, udid: '1' },
|
|
74
|
-
{ name: 'iPhone 16', isAvailable: true, udid: '2' },
|
|
75
|
-
{ name: 'iPhone 14', isAvailable: true, udid: '3' },
|
|
76
|
-
{ name: 'iPhone SE (3rd generation)', isAvailable: true, udid: '4' },
|
|
77
|
-
],
|
|
78
|
-
},
|
|
79
|
-
};
|
|
80
|
-
const resolved = resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl));
|
|
81
|
-
expect(resolved).toBe('platform=iOS Simulator,OS=18.0,name=iPhone 16');
|
|
82
|
-
});
|
|
83
|
-
test('throws documented error when no iPhone simulator runtime is installed', () => {
|
|
84
|
-
const simctl = { devices: {} };
|
|
85
|
-
expect(() => resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl))).toThrow(AutoDestinationError);
|
|
86
|
-
expect(() => resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl))).toThrow(/no iPhone simulator runtimes are installed/);
|
|
87
|
-
});
|
|
88
|
-
test('throws documented error when iOS runtime has no iPhone devices (e.g. only iPads)', () => {
|
|
89
|
-
const simctl = {
|
|
90
|
-
devices: {
|
|
91
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-18-0': [
|
|
92
|
-
{ name: 'iPad Pro (11-inch)', isAvailable: true, udid: '1' },
|
|
93
|
-
],
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
expect(() => resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl))).toThrow(/no iPhone simulator runtimes are installed/);
|
|
97
|
-
});
|
|
98
|
-
test('throws documented error on unparseable JSON', () => {
|
|
99
|
-
expect(() => resolveAutoDestinationFromSimctlJson('not-json')).toThrow(/xcrun simctl returned no usable output/);
|
|
100
|
-
});
|
|
101
|
-
test('resolveDestinationInput passes literal destinations through verbatim', () => {
|
|
102
|
-
const literal = 'platform=iOS Simulator,name=iPhone 14,OS=17.5';
|
|
103
|
-
expect(resolveDestinationInput(literal)).toBe(literal);
|
|
104
|
-
});
|
|
105
|
-
test('resolveDestinationInput delegates to injected resolver only when value === "auto"', () => {
|
|
106
|
-
const fakeResolver = () => 'platform=iOS Simulator,OS=99.9,name=iPhone Fixture';
|
|
107
|
-
expect(resolveDestinationInput('auto', fakeResolver)).toBe('platform=iOS Simulator,OS=99.9,name=iPhone Fixture');
|
|
108
|
-
// Pass-through still wins when value is anything else, even if a resolver is provided.
|
|
109
|
-
expect(resolveDestinationInput('generic/platform=iOS', fakeResolver)).toBe('generic/platform=iOS');
|
|
110
|
-
});
|
|
111
|
-
test('ignores unavailable iPhones', () => {
|
|
112
|
-
const simctl = {
|
|
113
|
-
devices: {
|
|
114
|
-
'com.apple.CoreSimulator.SimRuntime.iOS-18-0': [
|
|
115
|
-
{ name: 'iPhone 16', isAvailable: false, udid: '1' },
|
|
116
|
-
{ name: 'iPhone 15', isAvailable: true, udid: '2' },
|
|
117
|
-
],
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
const resolved = resolveAutoDestinationFromSimctlJson(JSON.stringify(simctl));
|
|
121
|
-
expect(resolved).toBe('platform=iOS Simulator,OS=18.0,name=iPhone 15');
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
/**
|
|
125
|
-
* Each affected executor must (a) embed a literal destination unchanged and
|
|
126
|
-
* (b) add an `xcrun` validation requirement only when destination === "auto".
|
|
127
|
-
*
|
|
128
|
-
* The "auto" execute() path is not exercised here — it shells out to xcrun.
|
|
129
|
-
* The pure parser tests above cover its correctness; the manual smoke test in
|
|
130
|
-
* the spike's "done criteria" covers the end-to-end shell-out.
|
|
131
|
-
*/
|
|
132
|
-
describe('xcode-* executors — destination input wiring', () => {
|
|
133
|
-
const xcrunReq = (reqs) => reqs.find((r) => r.category === 'command' && r.name === 'xcrun');
|
|
134
|
-
describe('XcodeBuildStepExecutor', () => {
|
|
135
|
-
test('literal destination is embedded in the script unchanged', async () => {
|
|
136
|
-
const executor = new XcodeBuildStepExecutor();
|
|
137
|
-
const result = await executor.execute({
|
|
138
|
-
project_path: 'MyApp.xcodeproj',
|
|
139
|
-
scheme: 'MyApp',
|
|
140
|
-
destination: 'platform=iOS Simulator,name=iPhone 99,OS=99.0',
|
|
141
|
-
}, {}, testConfig);
|
|
142
|
-
expect(result.script).toContain('platform=iOS Simulator,name=iPhone 99,OS=99.0');
|
|
143
|
-
});
|
|
144
|
-
test('validation requires xcrun only when destination === "auto"', () => {
|
|
145
|
-
const executor = new XcodeBuildStepExecutor();
|
|
146
|
-
const autoReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp', destination: 'auto' }, {}, testConfig);
|
|
147
|
-
expect(xcrunReq(autoReqs)).toBeDefined();
|
|
148
|
-
const literalReqs = executor.getValidationRequirements({
|
|
149
|
-
project_path: 'MyApp.xcodeproj',
|
|
150
|
-
scheme: 'MyApp',
|
|
151
|
-
destination: 'platform=iOS Simulator,name=iPhone 16,OS=18.0',
|
|
152
|
-
}, {}, testConfig);
|
|
153
|
-
expect(xcrunReq(literalReqs)).toBeUndefined();
|
|
154
|
-
const defaultReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
155
|
-
expect(xcrunReq(defaultReqs)).toBeUndefined();
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
describe('XcodeTestStepExecutor', () => {
|
|
159
|
-
test('literal destination is embedded in the script unchanged', async () => {
|
|
160
|
-
const executor = new XcodeTestStepExecutor();
|
|
161
|
-
const result = await executor.execute({
|
|
162
|
-
project_path: 'MyApp.xcodeproj',
|
|
163
|
-
scheme: 'MyApp',
|
|
164
|
-
destination: 'platform=iOS Simulator,name=iPhone 99,OS=99.0',
|
|
165
|
-
}, {}, testConfig);
|
|
166
|
-
expect(result.script).toContain('platform=iOS Simulator,name=iPhone 99,OS=99.0');
|
|
167
|
-
});
|
|
168
|
-
test('validation requires xcrun only when destination === "auto"', () => {
|
|
169
|
-
const executor = new XcodeTestStepExecutor();
|
|
170
|
-
const autoReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp', destination: 'auto' }, {}, testConfig);
|
|
171
|
-
expect(xcrunReq(autoReqs)).toBeDefined();
|
|
172
|
-
const literalReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
173
|
-
expect(xcrunReq(literalReqs)).toBeUndefined();
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
describe('XcodeBuildForTestStepExecutor', () => {
|
|
177
|
-
test('literal destination is embedded in the script unchanged', async () => {
|
|
178
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
179
|
-
const result = await executor.execute({
|
|
180
|
-
project_path: 'MyApp.xcodeproj',
|
|
181
|
-
scheme: 'MyApp',
|
|
182
|
-
destination: 'generic/platform=iOS Simulator',
|
|
183
|
-
}, {}, testConfig);
|
|
184
|
-
expect(result.script).toContain('generic/platform=iOS Simulator');
|
|
185
|
-
});
|
|
186
|
-
test('validation requires xcrun only when destination === "auto"', () => {
|
|
187
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
188
|
-
const autoReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp', destination: 'auto' }, {}, testConfig);
|
|
189
|
-
expect(xcrunReq(autoReqs)).toBeDefined();
|
|
190
|
-
const literalReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
191
|
-
expect(xcrunReq(literalReqs)).toBeUndefined();
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
describe('XcodeTestWithoutBuildingStepExecutor', () => {
|
|
195
|
-
test('literal destination is embedded in the script unchanged', async () => {
|
|
196
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
197
|
-
const result = await executor.execute({ destination: 'platform=iOS Simulator,name=iPhone 99,OS=99.0' }, {}, testConfig);
|
|
198
|
-
expect(result.script).toContain('platform=iOS Simulator,name=iPhone 99,OS=99.0');
|
|
199
|
-
});
|
|
200
|
-
test('validation requires xcrun only when destination === "auto"', () => {
|
|
201
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
202
|
-
const autoReqs = executor.getValidationRequirements({ destination: 'auto' }, {}, testConfig);
|
|
203
|
-
expect(xcrunReq(autoReqs)).toBeDefined();
|
|
204
|
-
const literalReqs = executor.getValidationRequirements({}, {}, testConfig);
|
|
205
|
-
expect(xcrunReq(literalReqs)).toBeUndefined();
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
describe('XcodeBuildForSimulatorStepExecutor', () => {
|
|
209
|
-
test('literal destination is embedded in the script unchanged', async () => {
|
|
210
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
211
|
-
const result = await executor.execute({
|
|
212
|
-
project_path: 'MyApp.xcodeproj',
|
|
213
|
-
scheme: 'MyApp',
|
|
214
|
-
destination: 'generic/platform=watchOS Simulator',
|
|
215
|
-
}, {}, testConfig);
|
|
216
|
-
expect(result.script).toContain('generic/platform=watchOS Simulator');
|
|
217
|
-
});
|
|
218
|
-
test('validation requires xcrun only when destination === "auto"', () => {
|
|
219
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
220
|
-
const autoReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp', destination: 'auto' }, {}, testConfig);
|
|
221
|
-
expect(xcrunReq(autoReqs)).toBeDefined();
|
|
222
|
-
const literalReqs = executor.getValidationRequirements({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
223
|
-
expect(xcrunReq(literalReqs)).toBeUndefined();
|
|
224
|
-
});
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
//# sourceMappingURL=xcode-destination.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xcode-new.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/xcode-new.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for new Xcode steps: xcode-build-for-test, xcode-test-without-building, xcode-build-for-simulator
|
|
3
|
-
*/
|
|
4
|
-
import { describe, test, expect } from '@jest/globals';
|
|
5
|
-
import { XcodeBuildForTestStepExecutor, XcodeTestWithoutBuildingStepExecutor, XcodeBuildForSimulatorStepExecutor, } from './xcode.js';
|
|
6
|
-
import { testConfig } from './test-config.js';
|
|
7
|
-
describe('XcodeBuildForTestStepExecutor', () => {
|
|
8
|
-
test('should generate build-for-testing script', async () => {
|
|
9
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
10
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
11
|
-
expect(result.kind).toBe('script');
|
|
12
|
-
expect(result.name).toBe('xcode-build-for-test');
|
|
13
|
-
expect(result.script).toContain('xcodebuild build-for-testing');
|
|
14
|
-
expect(result.script).toContain('MyApp.xcodeproj');
|
|
15
|
-
expect(result.script).toContain('-scheme');
|
|
16
|
-
expect(result.script).toContain('MyApp');
|
|
17
|
-
});
|
|
18
|
-
test('should require project_path', async () => {
|
|
19
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
20
|
-
await expect(executor.execute({ scheme: 'MyApp' }, {}, testConfig)).rejects.toThrow("Missing required input 'project_path'");
|
|
21
|
-
});
|
|
22
|
-
test('should require scheme', async () => {
|
|
23
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
24
|
-
await expect(executor.execute({ project_path: 'MyApp.xcodeproj' }, {}, testConfig)).rejects.toThrow("Missing required input 'scheme'");
|
|
25
|
-
});
|
|
26
|
-
test('should default to Debug configuration', async () => {
|
|
27
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
28
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
29
|
-
expect(result.script).toContain('-configuration');
|
|
30
|
-
expect(result.script).toContain('Debug');
|
|
31
|
-
});
|
|
32
|
-
test('should support custom destination', async () => {
|
|
33
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
34
|
-
const result = await executor.execute({
|
|
35
|
-
project_path: 'MyApp.xcodeproj',
|
|
36
|
-
scheme: 'MyApp',
|
|
37
|
-
destination: 'generic/platform=iOS',
|
|
38
|
-
}, {}, testConfig);
|
|
39
|
-
expect(result.script).toContain('generic/platform=iOS');
|
|
40
|
-
});
|
|
41
|
-
test('should support test plan', async () => {
|
|
42
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
43
|
-
const result = await executor.execute({
|
|
44
|
-
project_path: 'MyApp.xcodeproj',
|
|
45
|
-
scheme: 'MyApp',
|
|
46
|
-
test_plan: 'MyTestPlan',
|
|
47
|
-
}, {}, testConfig);
|
|
48
|
-
expect(result.script).toContain('-testPlan');
|
|
49
|
-
expect(result.script).toContain('MyTestPlan');
|
|
50
|
-
});
|
|
51
|
-
test('should use derivedDataPath', async () => {
|
|
52
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
53
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
54
|
-
expect(result.script).toContain('-derivedDataPath');
|
|
55
|
-
expect(result.script).toContain('-derivedDataPath "$DERIVED_DATA_PATH"');
|
|
56
|
-
});
|
|
57
|
-
test('should locate .xctestrun file', async () => {
|
|
58
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
59
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
60
|
-
expect(result.script).toContain('.xctestrun');
|
|
61
|
-
expect(result.script).toContain('CIBUILD_TEST_BUNDLE_PATH');
|
|
62
|
-
expect(result.script).toContain('CIBUILD_XCTESTRUN_FILE_PATH');
|
|
63
|
-
});
|
|
64
|
-
test('should support workspace files', async () => {
|
|
65
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
66
|
-
const result = await executor.execute({ project_path: 'MyApp.xcworkspace', scheme: 'MyApp' }, {}, testConfig);
|
|
67
|
-
expect(result.script).toContain('xcworkspace');
|
|
68
|
-
});
|
|
69
|
-
test('should declare outputs', () => {
|
|
70
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
71
|
-
const outputs = executor.getOutputs();
|
|
72
|
-
expect(outputs).toHaveLength(2);
|
|
73
|
-
expect(outputs[0].name).toBe('CIBUILD_TEST_BUNDLE_PATH');
|
|
74
|
-
expect(outputs[1].name).toBe('CIBUILD_XCTESTRUN_FILE_PATH');
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
describe('XcodeTestWithoutBuildingStepExecutor', () => {
|
|
78
|
-
test('should generate test-without-building script', async () => {
|
|
79
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
80
|
-
const result = await executor.execute({}, {}, testConfig);
|
|
81
|
-
expect(result.kind).toBe('script');
|
|
82
|
-
expect(result.name).toBe('xcode-test-without-building');
|
|
83
|
-
expect(result.script).toContain('xcodebuild test-without-building');
|
|
84
|
-
expect(result.script).toContain('-xctestrun');
|
|
85
|
-
});
|
|
86
|
-
test('should use default xctestrun path from env', async () => {
|
|
87
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
88
|
-
const result = await executor.execute({}, {}, testConfig);
|
|
89
|
-
expect(result.script).toContain('CIBUILD_XCTESTRUN_FILE_PATH');
|
|
90
|
-
});
|
|
91
|
-
test('should support custom xctestrun path', async () => {
|
|
92
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
93
|
-
const result = await executor.execute({ xctestrun: '/path/to/test.xctestrun' }, {}, testConfig);
|
|
94
|
-
expect(result.script).toContain('/path/to/test.xctestrun');
|
|
95
|
-
});
|
|
96
|
-
test('should support custom destination', async () => {
|
|
97
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
98
|
-
const result = await executor.execute({ destination: 'platform=iOS Simulator,name=iPhone 14' }, {}, testConfig);
|
|
99
|
-
expect(result.script).toContain('iPhone 14');
|
|
100
|
-
});
|
|
101
|
-
test('should support only_testing filter', async () => {
|
|
102
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
103
|
-
const result = await executor.execute({ only_testing: 'MyAppTests/MyTest' }, {}, testConfig);
|
|
104
|
-
expect(result.script).toContain('-only-testing');
|
|
105
|
-
expect(result.script).toContain('MyAppTests/MyTest');
|
|
106
|
-
});
|
|
107
|
-
test('should support skip_testing filter', async () => {
|
|
108
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
109
|
-
const result = await executor.execute({ skip_testing: 'MyAppTests/SlowTest' }, {}, testConfig);
|
|
110
|
-
expect(result.script).toContain('-skip-testing');
|
|
111
|
-
expect(result.script).toContain('MyAppTests/SlowTest');
|
|
112
|
-
});
|
|
113
|
-
test('should support retry_on_failure repetition mode', async () => {
|
|
114
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
115
|
-
const result = await executor.execute({
|
|
116
|
-
test_repetition_mode: 'retry_on_failure',
|
|
117
|
-
maximum_test_repetitions: '5',
|
|
118
|
-
}, {}, testConfig);
|
|
119
|
-
expect(result.script).toContain('-retry-tests-on-failure');
|
|
120
|
-
expect(result.script).toContain('-test-iterations 5');
|
|
121
|
-
});
|
|
122
|
-
test('should support until_failure repetition mode', async () => {
|
|
123
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
124
|
-
const result = await executor.execute({ test_repetition_mode: 'until_failure' }, {}, testConfig);
|
|
125
|
-
expect(result.script).toContain('-run-tests-until-failure');
|
|
126
|
-
});
|
|
127
|
-
test('should create result bundle', async () => {
|
|
128
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
129
|
-
const result = await executor.execute({}, {}, testConfig);
|
|
130
|
-
expect(result.script).toContain('-resultBundlePath');
|
|
131
|
-
expect(result.script).toContain('.xcresult');
|
|
132
|
-
});
|
|
133
|
-
test('should export CIBUILD_XCRESULT_PATH', async () => {
|
|
134
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
135
|
-
const result = await executor.execute({}, {}, testConfig);
|
|
136
|
-
expect(result.script).toContain('CIBUILD_XCRESULT_PATH');
|
|
137
|
-
});
|
|
138
|
-
test('should declare outputs', () => {
|
|
139
|
-
const executor = new XcodeTestWithoutBuildingStepExecutor();
|
|
140
|
-
const outputs = executor.getOutputs();
|
|
141
|
-
expect(outputs).toHaveLength(1);
|
|
142
|
-
expect(outputs[0].name).toBe('CIBUILD_XCRESULT_PATH');
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
describe('XcodeBuildForSimulatorStepExecutor', () => {
|
|
146
|
-
test('should generate simulator build script', async () => {
|
|
147
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
148
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
149
|
-
expect(result.kind).toBe('script');
|
|
150
|
-
expect(result.name).toBe('xcode-build-for-simulator');
|
|
151
|
-
expect(result.script).toContain('xcodebuild');
|
|
152
|
-
expect(result.script).toContain('build');
|
|
153
|
-
expect(result.script).toContain('MyApp.xcodeproj');
|
|
154
|
-
expect(result.script).toContain('-scheme');
|
|
155
|
-
expect(result.script).toContain('MyApp');
|
|
156
|
-
});
|
|
157
|
-
test('should require project_path', async () => {
|
|
158
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
159
|
-
await expect(executor.execute({ scheme: 'MyApp' }, {}, testConfig)).rejects.toThrow("Missing required input 'project_path'");
|
|
160
|
-
});
|
|
161
|
-
test('should require scheme', async () => {
|
|
162
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
163
|
-
await expect(executor.execute({ project_path: 'MyApp.xcodeproj' }, {}, testConfig)).rejects.toThrow("Missing required input 'scheme'");
|
|
164
|
-
});
|
|
165
|
-
test('should disable code signing by default', async () => {
|
|
166
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
167
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
168
|
-
expect(result.script).toContain('CODE_SIGNING_ALLOWED=NO');
|
|
169
|
-
});
|
|
170
|
-
test('should default to iOS Simulator destination', async () => {
|
|
171
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
172
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
173
|
-
expect(result.script).toContain('generic/platform=iOS Simulator');
|
|
174
|
-
});
|
|
175
|
-
test('should support watchOS destination', async () => {
|
|
176
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
177
|
-
const result = await executor.execute({
|
|
178
|
-
project_path: 'MyApp.xcodeproj',
|
|
179
|
-
scheme: 'WatchApp',
|
|
180
|
-
destination: 'generic/platform=watchOS Simulator',
|
|
181
|
-
}, {}, testConfig);
|
|
182
|
-
expect(result.script).toContain('watchOS Simulator');
|
|
183
|
-
});
|
|
184
|
-
test('should support clean build', async () => {
|
|
185
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
186
|
-
const result = await executor.execute({
|
|
187
|
-
project_path: 'MyApp.xcodeproj',
|
|
188
|
-
scheme: 'MyApp',
|
|
189
|
-
perform_clean_action: 'yes',
|
|
190
|
-
}, {}, testConfig);
|
|
191
|
-
expect(result.script).toContain('clean');
|
|
192
|
-
});
|
|
193
|
-
test('should support workspace files', async () => {
|
|
194
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
195
|
-
const result = await executor.execute({ project_path: 'MyApp.xcworkspace', scheme: 'MyApp' }, {}, testConfig);
|
|
196
|
-
expect(result.script).toContain('xcworkspace');
|
|
197
|
-
});
|
|
198
|
-
test('should locate generated .app', async () => {
|
|
199
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
200
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp' }, {}, testConfig);
|
|
201
|
-
expect(result.script).toContain('.app');
|
|
202
|
-
expect(result.script).toContain('CIBUILD_APP_DIR_PATH');
|
|
203
|
-
});
|
|
204
|
-
test('should declare outputs', () => {
|
|
205
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
206
|
-
const outputs = executor.getOutputs();
|
|
207
|
-
expect(outputs).toHaveLength(1);
|
|
208
|
-
expect(outputs[0].name).toBe('CIBUILD_APP_DIR_PATH');
|
|
209
|
-
});
|
|
210
|
-
});
|
|
211
|
-
//# sourceMappingURL=xcode-new.test.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dependency resolution is separated from the build and retried.
|
|
3
|
-
*
|
|
4
|
-
* Resolution takes seconds and the build that follows takes minutes, so a
|
|
5
|
-
* refused fetch should cost a retry of the cheap half, not a re-run of the
|
|
6
|
-
* expensive one. These assert the split actually lands in the emitted script.
|
|
7
|
-
*/
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=xcode-resolve-retry.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xcode-resolve-retry.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/xcode-resolve-retry.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dependency resolution is separated from the build and retried.
|
|
3
|
-
*
|
|
4
|
-
* Resolution takes seconds and the build that follows takes minutes, so a
|
|
5
|
-
* refused fetch should cost a retry of the cheap half, not a re-run of the
|
|
6
|
-
* expensive one. These assert the split actually lands in the emitted script.
|
|
7
|
-
*/
|
|
8
|
-
import { describe, test, expect } from '@jest/globals';
|
|
9
|
-
import { XcodeBuildStepExecutor, XcodeBuildForTestStepExecutor, XcodeBuildForSimulatorStepExecutor, } from './xcode.js';
|
|
10
|
-
import { CocoapodsInstallStepExecutor } from './ios-deps.js';
|
|
11
|
-
import { testConfig } from './test-config.js';
|
|
12
|
-
const countOccurrences = (haystack, needle) => haystack.split(needle).length - 1;
|
|
13
|
-
describe('xcode-build-for-test resolves before it builds', () => {
|
|
14
|
-
const build = async (inputs = {}) => {
|
|
15
|
-
const executor = new XcodeBuildForTestStepExecutor();
|
|
16
|
-
const result = await executor.execute({ project_path: 'MyApp.xcworkspace', scheme: 'MyApp', ...inputs }, {}, testConfig);
|
|
17
|
-
return result.script;
|
|
18
|
-
};
|
|
19
|
-
test('resolves package dependencies as its own command', async () => {
|
|
20
|
-
expect(await build()).toContain('xcodebuild -resolvePackageDependencies');
|
|
21
|
-
});
|
|
22
|
-
test('resolves BEFORE build-for-testing', async () => {
|
|
23
|
-
const script = await build();
|
|
24
|
-
expect(script.indexOf('xcodebuild -resolvePackageDependencies')).toBeLessThan(script.indexOf('xcodebuild build-for-testing'));
|
|
25
|
-
});
|
|
26
|
-
test('resolves into the same derived data the build will read', async () => {
|
|
27
|
-
// Otherwise the resolve is wasted work and the build fetches all over again.
|
|
28
|
-
const script = await build();
|
|
29
|
-
const resolveLine = script
|
|
30
|
-
.split('\n')
|
|
31
|
-
.find((l) => l.includes('-resolvePackageDependencies'));
|
|
32
|
-
expect(resolveLine).toContain('-derivedDataPath "$DERIVED_DATA_PATH"');
|
|
33
|
-
});
|
|
34
|
-
test('passes the same project type and scheme as the build', async () => {
|
|
35
|
-
const resolveLine = (await build())
|
|
36
|
-
.split('\n')
|
|
37
|
-
.find((l) => l.includes('-resolvePackageDependencies'));
|
|
38
|
-
expect(resolveLine).toContain('"$PROJECT_TYPE"');
|
|
39
|
-
expect(resolveLine).toContain("'MyApp.xcworkspace'");
|
|
40
|
-
expect(resolveLine).toContain("-scheme 'MyApp'");
|
|
41
|
-
});
|
|
42
|
-
test('wraps the resolve in the refused-fetch retry', async () => {
|
|
43
|
-
const script = await build();
|
|
44
|
-
expect(script).toContain('cibuild_fetch_was_refused');
|
|
45
|
-
expect(script).toContain('CIBUILD_FETCH_MAX_ATTEMPTS');
|
|
46
|
-
});
|
|
47
|
-
test('defines the retry helpers exactly once', async () => {
|
|
48
|
-
const script = await build();
|
|
49
|
-
expect(countOccurrences(script, 'cibuild_diagnose_refused_fetch()')).toBe(1);
|
|
50
|
-
expect(countOccurrences(script, 'cibuild_fetch_was_refused()')).toBe(1);
|
|
51
|
-
});
|
|
52
|
-
test('does not retry the expensive build step itself', async () => {
|
|
53
|
-
const script = await build();
|
|
54
|
-
// exactly one retry loop, and it is the resolve
|
|
55
|
-
expect(countOccurrences(script, 'CIBUILD_FETCH_MAX_ATTEMPTS=')).toBe(1);
|
|
56
|
-
const loopStart = script.indexOf('CIBUILD_FETCH_MAX_ATTEMPTS=');
|
|
57
|
-
expect(loopStart).toBeLessThan(script.indexOf('xcodebuild build-for-testing'));
|
|
58
|
-
});
|
|
59
|
-
test('still builds and still exports its outputs', async () => {
|
|
60
|
-
const script = await build();
|
|
61
|
-
expect(script).toContain('xcodebuild build-for-testing');
|
|
62
|
-
expect(script).toContain('envman add --key CIBUILD_XCTESTRUN_FILE_PATH');
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe('xcodebuild resolves before it builds', () => {
|
|
66
|
-
const build = async (inputs = {}) => {
|
|
67
|
-
const executor = new XcodeBuildStepExecutor();
|
|
68
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp', ...inputs }, {}, testConfig);
|
|
69
|
-
return result.script;
|
|
70
|
-
};
|
|
71
|
-
test('resolves package dependencies before building', async () => {
|
|
72
|
-
const script = await build();
|
|
73
|
-
expect(script).toContain('xcodebuild -resolvePackageDependencies');
|
|
74
|
-
expect(script.indexOf('xcodebuild -resolvePackageDependencies')).toBeLessThan(script.indexOf('xcodebuild build '));
|
|
75
|
-
});
|
|
76
|
-
test('wraps the resolve in the refused-fetch retry', async () => {
|
|
77
|
-
expect(await build()).toContain('cibuild_fetch_was_refused');
|
|
78
|
-
});
|
|
79
|
-
test('leaves the build invocation itself unwrapped', async () => {
|
|
80
|
-
expect(countOccurrences(await build(), 'CIBUILD_FETCH_MAX_ATTEMPTS=')).toBe(1);
|
|
81
|
-
});
|
|
82
|
-
test('still honours a clean build', async () => {
|
|
83
|
-
expect(await build({ is_clean_build: true })).toContain('xcodebuild clean build');
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
describe('xcode-build-for-simulator resolves before it builds', () => {
|
|
87
|
-
// This is the step the iOS template's "Build App" is, and it is the first
|
|
88
|
-
// step in that pipeline that resolves a package graph — so it is the one a
|
|
89
|
-
// refused fetch actually lands on. It was missed on the first pass.
|
|
90
|
-
const build = async (inputs = {}) => {
|
|
91
|
-
const executor = new XcodeBuildForSimulatorStepExecutor();
|
|
92
|
-
const result = await executor.execute({ project_path: 'MyApp.xcodeproj', scheme: 'MyApp', ...inputs }, {}, testConfig);
|
|
93
|
-
return result.script;
|
|
94
|
-
};
|
|
95
|
-
test('resolves package dependencies before building', async () => {
|
|
96
|
-
const script = await build();
|
|
97
|
-
expect(script).toContain('xcodebuild -resolvePackageDependencies');
|
|
98
|
-
expect(script.indexOf('xcodebuild -resolvePackageDependencies')).toBeLessThan(script.indexOf('xcodebuild build '));
|
|
99
|
-
});
|
|
100
|
-
test('wraps the resolve in the refused-fetch retry', async () => {
|
|
101
|
-
const script = await build();
|
|
102
|
-
expect(script).toContain('cibuild_fetch_was_refused');
|
|
103
|
-
expect(script).toContain('CIBUILD_FETCH_MAX_ATTEMPTS');
|
|
104
|
-
});
|
|
105
|
-
test('leaves the build invocation itself unwrapped', async () => {
|
|
106
|
-
expect(countOccurrences(await build(), 'CIBUILD_FETCH_MAX_ATTEMPTS=')).toBe(1);
|
|
107
|
-
});
|
|
108
|
-
test('passes the same project type and scheme as the build', async () => {
|
|
109
|
-
const resolveLine = (await build())
|
|
110
|
-
.split('\n')
|
|
111
|
-
.find((l) => l.includes('-resolvePackageDependencies'));
|
|
112
|
-
expect(resolveLine).toContain('"$PROJECT_TYPE"');
|
|
113
|
-
expect(resolveLine).toContain("-scheme 'MyApp'");
|
|
114
|
-
});
|
|
115
|
-
test('still honours a clean action and still finds the .app', async () => {
|
|
116
|
-
const script = await build({ perform_clean_action: 'yes' });
|
|
117
|
-
expect(script).toContain('xcodebuild clean build');
|
|
118
|
-
expect(script).toContain('CIBUILD_APP_DIR_PATH');
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
describe('cocoapods-install retries a refused pod source fetch', () => {
|
|
122
|
-
const build = async (inputs = {}) => {
|
|
123
|
-
const executor = new CocoapodsInstallStepExecutor();
|
|
124
|
-
const result = await executor.execute(inputs, {}, testConfig);
|
|
125
|
-
return result.script;
|
|
126
|
-
};
|
|
127
|
-
test('wraps the pod command in the retry', async () => {
|
|
128
|
-
const script = await build();
|
|
129
|
-
expect(script).toContain('cibuild_fetch_was_refused');
|
|
130
|
-
expect(script).toContain('CIBUILD_FETCH_MAX_ATTEMPTS');
|
|
131
|
-
});
|
|
132
|
-
test('still chooses between bundle exec and bare pod', async () => {
|
|
133
|
-
const script = await build();
|
|
134
|
-
expect(script).toContain('$BUNDLE_CMD exec pod');
|
|
135
|
-
expect(script).toContain('USE_BUNDLE_EXEC');
|
|
136
|
-
});
|
|
137
|
-
test('runs the pod command exactly once in the script', async () => {
|
|
138
|
-
// The old shape invoked pod in both branches of an if/else; the retry
|
|
139
|
-
// needs a single invocation or it would be wrapped twice.
|
|
140
|
-
expect(countOccurrences(await build(), 'CIBUILD_FETCH_MAX_ATTEMPTS=')).toBe(1);
|
|
141
|
-
});
|
|
142
|
-
test('still reports completion', async () => {
|
|
143
|
-
expect(await build()).toContain('CocoaPods');
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
//# sourceMappingURL=xcode-resolve-retry.test.js.map
|