@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,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pods below the app's own deployment target are raised to it, after pod
|
|
3
|
-
* install, and nothing else moves. Witness: YuigaWada/MissCat (nightly-baseline
|
|
4
|
-
* issue 53) — SwiftLinkPreview 3.1.0 at iOS 8.0 linked libarclite, which
|
|
5
|
-
* Xcode 14.3 removed, in an app that targets iOS 12.0.
|
|
6
|
-
*
|
|
7
|
-
* The Ruby runs for real against projects the xcodeproj gem writes, when this
|
|
8
|
-
* machine's ruby can load it; otherwise those tests are skipped and say so.
|
|
9
|
-
*/
|
|
10
|
-
import { describe, test, expect } from '@jest/globals';
|
|
11
|
-
import { execFileSync } from 'node:child_process';
|
|
12
|
-
import { mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
|
13
|
-
import { tmpdir } from 'node:os';
|
|
14
|
-
import { join } from 'node:path';
|
|
15
|
-
import { POD_DEPLOYMENT_FLOOR_SOURCE, podDeploymentFloorLines } from './cocoapods-deployment-floor.js';
|
|
16
|
-
import { CocoapodsInstallStepExecutor } from './ios-deps.js';
|
|
17
|
-
import { testConfig } from './test-config.js';
|
|
18
|
-
const hasXcodeproj = (() => {
|
|
19
|
-
try {
|
|
20
|
-
execFileSync('ruby', ['-e', 'require %q(xcodeproj)'], { stdio: 'ignore' });
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
})();
|
|
27
|
-
/**
|
|
28
|
-
* MissCat's shape: an app at 12.0 and a share extension at 11.0, both
|
|
29
|
-
* integrated by CocoaPods; pods at 8.0 (SwiftLinkPreview), 11.0 and 13.0; a
|
|
30
|
-
* library target in the app's project that CocoaPods does not integrate, at 8.0.
|
|
31
|
-
*/
|
|
32
|
-
const FIXTURE = String.raw `
|
|
33
|
-
require 'xcodeproj'
|
|
34
|
-
require 'fileutils'
|
|
35
|
-
dir = ARGV[0]
|
|
36
|
-
FileUtils.mkdir_p(File.join(dir, 'Pods', 'Target Support Files', 'Pods-App'))
|
|
37
|
-
app = Xcodeproj::Project.new(File.join(dir, 'App.xcodeproj'))
|
|
38
|
-
xc = app.new_file('Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig')
|
|
39
|
-
[['App', :application, '12.0', true], ['Share', :app_extension, '11.0', true], ['Unpodded', :framework, '8.0', false]].each do |name, type, dt, podded|
|
|
40
|
-
t = app.new_target(type, name, :ios, dt)
|
|
41
|
-
t.build_configurations.each { |c| c.base_configuration_reference = xc if podded }
|
|
42
|
-
end
|
|
43
|
-
app.save
|
|
44
|
-
pods = Xcodeproj::Project.new(File.join(dir, 'Pods', 'Pods.xcodeproj'))
|
|
45
|
-
pods.new_target(:framework, 'Pods-App', :ios, '12.0')
|
|
46
|
-
[['SwiftLinkPreview', '8.0'], ['MidPod', '11.0'], ['NewPod', '13.0']].each { |n, dt| pods.new_target(:framework, n, :ios, dt) }
|
|
47
|
-
pods.save
|
|
48
|
-
ws = Xcodeproj::Workspace.new(nil)
|
|
49
|
-
ws << 'App.xcodeproj'
|
|
50
|
-
ws << 'Pods/Pods.xcodeproj'
|
|
51
|
-
ws.save_as(File.join(dir, 'App.xcworkspace'))
|
|
52
|
-
`;
|
|
53
|
-
const DUMP = String.raw `
|
|
54
|
-
require 'xcodeproj'
|
|
55
|
-
p = Xcodeproj::Project.open(ARGV[0])
|
|
56
|
-
p.targets.each { |t| t.build_configurations.each { |c| puts "#{t.name} #{c.name} #{c.build_settings['IPHONEOS_DEPLOYMENT_TARGET']}" } }
|
|
57
|
-
`;
|
|
58
|
-
const ruby = (source, args, cwd) => {
|
|
59
|
-
const dir = mkdtempSync(join(tmpdir(), 'pod-floor-rb-'));
|
|
60
|
-
try {
|
|
61
|
-
const f = join(dir, 's.rb');
|
|
62
|
-
writeFileSync(f, source);
|
|
63
|
-
return execFileSync('ruby', [f, ...args], { encoding: 'utf8', cwd });
|
|
64
|
-
}
|
|
65
|
-
finally {
|
|
66
|
-
rmSync(dir, { recursive: true, force: true });
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
(hasXcodeproj ? describe : describe.skip)('the raise, on projects the xcodeproj gem wrote', () => {
|
|
70
|
-
const withFixture = (fn) => {
|
|
71
|
-
const dir = mkdtempSync(join(tmpdir(), 'pod-floor-'));
|
|
72
|
-
try {
|
|
73
|
-
ruby(FIXTURE, [dir]);
|
|
74
|
-
fn(dir);
|
|
75
|
-
}
|
|
76
|
-
finally {
|
|
77
|
-
rmSync(dir, { recursive: true, force: true });
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
const settings = (projectPath) => Object.fromEntries(ruby(DUMP, [projectPath])
|
|
81
|
-
.trim()
|
|
82
|
-
.split('\n')
|
|
83
|
-
.map((l) => {
|
|
84
|
-
const [t, c, v] = l.split(' ');
|
|
85
|
-
return [`${t} ${c}`, v];
|
|
86
|
-
}));
|
|
87
|
-
test('raises pods below the lowest integrated user target to it, and only those', () => {
|
|
88
|
-
withFixture((dir) => {
|
|
89
|
-
const out = ruby(POD_DEPLOYMENT_FLOOR_SOURCE, ['Pods'], dir);
|
|
90
|
-
const pods = settings(join(dir, 'Pods', 'Pods.xcodeproj'));
|
|
91
|
-
// The floor is the share extension's 11.0, the lowest the app promises.
|
|
92
|
-
expect(pods['SwiftLinkPreview Debug']).toBe('11.0');
|
|
93
|
-
expect(pods['SwiftLinkPreview Release']).toBe('11.0');
|
|
94
|
-
expect(pods['MidPod Debug']).toBe('11.0');
|
|
95
|
-
expect(pods['NewPod Debug']).toBe('13.0');
|
|
96
|
-
expect(pods['Pods-App Debug']).toBe('12.0');
|
|
97
|
-
expect(out).toContain('IPHONEOS_DEPLOYMENT_TARGET 11.0');
|
|
98
|
-
expect(out).toContain('Raised 1 pod target(s)');
|
|
99
|
-
expect(out).toContain('SwiftLinkPreview 8.0');
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
test("never touches the app's own project, not even a target CocoaPods does not integrate", () => {
|
|
103
|
-
withFixture((dir) => {
|
|
104
|
-
const before = readFileSync(join(dir, 'App.xcodeproj', 'project.pbxproj'), 'utf8');
|
|
105
|
-
ruby(POD_DEPLOYMENT_FLOOR_SOURCE, ['Pods'], dir);
|
|
106
|
-
expect(readFileSync(join(dir, 'App.xcodeproj', 'project.pbxproj'), 'utf8')).toBe(before);
|
|
107
|
-
// ...and the unintegrated 8.0 library is not the floor: the pod was raised.
|
|
108
|
-
expect(settings(join(dir, 'Pods', 'Pods.xcodeproj'))['SwiftLinkPreview Debug']).toBe('11.0');
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
test('a second run changes nothing', () => {
|
|
112
|
-
withFixture((dir) => {
|
|
113
|
-
ruby(POD_DEPLOYMENT_FLOOR_SOURCE, ['Pods'], dir);
|
|
114
|
-
const once = readFileSync(join(dir, 'Pods', 'Pods.xcodeproj', 'project.pbxproj'), 'utf8');
|
|
115
|
-
expect(ruby(POD_DEPLOYMENT_FLOOR_SOURCE, ['Pods'], dir)).toContain('No pod target is below it');
|
|
116
|
-
expect(readFileSync(join(dir, 'Pods', 'Pods.xcodeproj', 'project.pbxproj'), 'utf8')).toBe(once);
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
test('no workspace to read the app from: says so, raises nothing, exits 0', () => {
|
|
120
|
-
withFixture((dir) => {
|
|
121
|
-
rmSync(join(dir, 'App.xcworkspace'), { recursive: true, force: true });
|
|
122
|
-
const before = readFileSync(join(dir, 'Pods', 'Pods.xcodeproj', 'project.pbxproj'), 'utf8');
|
|
123
|
-
expect(ruby(POD_DEPLOYMENT_FLOOR_SOURCE, ['Pods'], dir)).toContain('left as they are');
|
|
124
|
-
expect(readFileSync(join(dir, 'Pods', 'Pods.xcodeproj', 'project.pbxproj'), 'utf8')).toBe(before);
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
if (!hasXcodeproj) {
|
|
129
|
-
test.skip('the raise on real projects — this ruby cannot load xcodeproj', () => { });
|
|
130
|
-
}
|
|
131
|
-
describe('cocoapods-install runs the raise after pod install', () => {
|
|
132
|
-
const script = async (inputs = {}) => (await new CocoapodsInstallStepExecutor().execute(inputs, {}, testConfig)).script;
|
|
133
|
-
test('after the pod command, before the step reports done', async () => {
|
|
134
|
-
const s = await script();
|
|
135
|
-
const raise = s.indexOf('cibuild-pod-floor');
|
|
136
|
-
expect(raise).toBeGreaterThan(s.indexOf('$POD_INVOCATION $POD_CMD'));
|
|
137
|
-
expect(raise).toBeLessThan(s.indexOf('✅ CocoaPods'));
|
|
138
|
-
});
|
|
139
|
-
test('carries the Ruby verbatim, in a quoted heredoc', async () => {
|
|
140
|
-
const s = await script();
|
|
141
|
-
expect(s).toContain(`<< 'CIBUILD_POD_FLOOR_EOF'`);
|
|
142
|
-
expect(s).toContain(POD_DEPLOYMENT_FLOOR_SOURCE.trim());
|
|
143
|
-
});
|
|
144
|
-
test('never fails the step', () => {
|
|
145
|
-
const lines = podDeploymentFloorLines().join('\n');
|
|
146
|
-
expect(lines).toContain('|| echo "⚠️ Could not raise pods');
|
|
147
|
-
expect(lines).not.toMatch(/\bexit 1\b/);
|
|
148
|
-
});
|
|
149
|
-
test('the emitted script is valid bash', async () => {
|
|
150
|
-
const dir = mkdtempSync(join(tmpdir(), 'pod-floor-sh-'));
|
|
151
|
-
try {
|
|
152
|
-
const f = join(dir, 's.sh');
|
|
153
|
-
writeFileSync(f, await script({ skip_if_absent: true }));
|
|
154
|
-
expect(() => execFileSync('bash', ['-n', f])).not.toThrow();
|
|
155
|
-
}
|
|
156
|
-
finally {
|
|
157
|
-
rmSync(dir, { recursive: true, force: true });
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
test('the emitted lines run end to end: the raise happens through the bash', () => {
|
|
161
|
-
if (!hasXcodeproj)
|
|
162
|
-
return;
|
|
163
|
-
const dir = mkdtempSync(join(tmpdir(), 'pod-floor-e2e-'));
|
|
164
|
-
try {
|
|
165
|
-
ruby(FIXTURE, [dir]);
|
|
166
|
-
const f = join(dir, 'raise.sh');
|
|
167
|
-
writeFileSync(f, ['USE_BUNDLE_EXEC=false', 'BUNDLE_CMD=bundle', ...podDeploymentFloorLines()].join('\n'));
|
|
168
|
-
const out = execFileSync('bash', [f], { cwd: dir, encoding: 'utf8' });
|
|
169
|
-
expect(out).toContain('Raised 1 pod target(s)');
|
|
170
|
-
}
|
|
171
|
-
finally {
|
|
172
|
-
rmSync(dir, { recursive: true, force: true });
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
//# sourceMappingURL=cocoapods-deployment-floor.test.js.map
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Every way of telling `cocoapods-install` where to look must emit shell that
|
|
3
|
-
* bash will actually parse.
|
|
4
|
-
*
|
|
5
|
-
* `podfile_path` did not. One stray quote —
|
|
6
|
-
*
|
|
7
|
-
* WORK_DIR="$(dirname '/path/to/Podfile')""
|
|
8
|
-
*
|
|
9
|
-
* — opened a double-quoted string that never closed, so bash swallowed the
|
|
10
|
-
* following line and died with `unexpected EOF while looking for matching '"'`.
|
|
11
|
-
* The input is documented in SPEC.md and in `steps/cocoapods-install.yml`, and
|
|
12
|
-
* it could never have worked. Nothing in Invarn's templates passes it, which is
|
|
13
|
-
* why no build ever reported it.
|
|
14
|
-
*
|
|
15
|
-
* No string assertion could have caught this, and the existing tests for the
|
|
16
|
-
* input asserted only that the rendered script *mentioned* the path. So this
|
|
17
|
-
* file parses the script instead of reading it, and it does so for **all four**
|
|
18
|
-
* working-directory branches rather than the one that was broken — the bug was
|
|
19
|
-
* in a branch nobody exercised, and the next one will be too.
|
|
20
|
-
*/
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=cocoapods-install-emits-valid-bash.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cocoapods-install-emits-valid-bash.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/cocoapods-install-emits-valid-bash.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Every way of telling `cocoapods-install` where to look must emit shell that
|
|
3
|
-
* bash will actually parse.
|
|
4
|
-
*
|
|
5
|
-
* `podfile_path` did not. One stray quote —
|
|
6
|
-
*
|
|
7
|
-
* WORK_DIR="$(dirname '/path/to/Podfile')""
|
|
8
|
-
*
|
|
9
|
-
* — opened a double-quoted string that never closed, so bash swallowed the
|
|
10
|
-
* following line and died with `unexpected EOF while looking for matching '"'`.
|
|
11
|
-
* The input is documented in SPEC.md and in `steps/cocoapods-install.yml`, and
|
|
12
|
-
* it could never have worked. Nothing in Invarn's templates passes it, which is
|
|
13
|
-
* why no build ever reported it.
|
|
14
|
-
*
|
|
15
|
-
* No string assertion could have caught this, and the existing tests for the
|
|
16
|
-
* input asserted only that the rendered script *mentioned* the path. So this
|
|
17
|
-
* file parses the script instead of reading it, and it does so for **all four**
|
|
18
|
-
* working-directory branches rather than the one that was broken — the bug was
|
|
19
|
-
* in a branch nobody exercised, and the next one will be too.
|
|
20
|
-
*/
|
|
21
|
-
import { execFileSync } from 'node:child_process';
|
|
22
|
-
import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
23
|
-
import { tmpdir } from 'node:os';
|
|
24
|
-
import { join } from 'node:path';
|
|
25
|
-
import { describe, test, expect } from '@jest/globals';
|
|
26
|
-
import { CocoapodsInstallStepExecutor } from './ios-deps.js';
|
|
27
|
-
import { testConfig } from './test-config.js';
|
|
28
|
-
const render = async (inputs) => {
|
|
29
|
-
const result = await new CocoapodsInstallStepExecutor().execute(inputs, {}, testConfig);
|
|
30
|
-
return result.script;
|
|
31
|
-
};
|
|
32
|
-
/** Throws with bash's own diagnostic if the script does not parse. */
|
|
33
|
-
const parses = (script) => {
|
|
34
|
-
const dir = mkdtempSync(join(tmpdir(), 'cibuild-pods-syntax-'));
|
|
35
|
-
const path = join(dir, 'step.sh');
|
|
36
|
-
writeFileSync(path, script);
|
|
37
|
-
try {
|
|
38
|
-
execFileSync('bash', ['-n', path], { stdio: 'pipe' });
|
|
39
|
-
}
|
|
40
|
-
finally {
|
|
41
|
-
rmSync(dir, { recursive: true, force: true });
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
// The precedence the step documents: podfile_path, source_root_path,
|
|
45
|
-
// project_path, then $CIBUILD_SOURCE_DIR. One case per branch.
|
|
46
|
-
const branches = [
|
|
47
|
-
['podfile_path', { podfile_path: '/path/to/Podfile' }],
|
|
48
|
-
['source_root_path', { source_root_path: 'ios' }],
|
|
49
|
-
['project_path', { project_path: 'ios/MyApp.xcworkspace' }],
|
|
50
|
-
['neither — falls back to CIBUILD_SOURCE_DIR', {}],
|
|
51
|
-
];
|
|
52
|
-
describe('cocoapods-install emits bash that parses, on every path to a directory', () => {
|
|
53
|
-
for (const [name, inputs] of branches) {
|
|
54
|
-
test(name, async () => {
|
|
55
|
-
parses(await render(inputs));
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
// skip_if_absent rewrites the body of the `if [ ! -f "Podfile" ]` branch, so
|
|
59
|
-
// it is a second dimension over the same generated shell.
|
|
60
|
-
for (const [name, inputs] of branches) {
|
|
61
|
-
test(`${name}, with skip_if_absent`, async () => {
|
|
62
|
-
parses(await render({ ...inputs, skip_if_absent: true }));
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
test('pod update rather than install', async () => {
|
|
66
|
-
parses(await render({ source_root_path: 'ios', command: 'update' }));
|
|
67
|
-
});
|
|
68
|
-
test('a trailing flag on the command', async () => {
|
|
69
|
-
parses(await render({ project_path: 'ios/MyApp.xcodeproj', command: 'install --repo-update' }));
|
|
70
|
-
});
|
|
71
|
-
// A directory with a space in it is the case that makes quoting matter, and
|
|
72
|
-
// it is ordinary on iOS — "My App.xcworkspace".
|
|
73
|
-
test('a path containing a space', async () => {
|
|
74
|
-
parses(await render({ project_path: 'ios/My App.xcworkspace' }));
|
|
75
|
-
parses(await render({ podfile_path: '/Users/me/My Project/Podfile' }));
|
|
76
|
-
parses(await render({ source_root_path: 'My iOS Dir' }));
|
|
77
|
-
});
|
|
78
|
-
test('verbose logging', async () => {
|
|
79
|
-
parses(await render({ source_root_path: 'ios', verbose: true }));
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe('podfile_path still names the directory it was given', () => {
|
|
83
|
-
// Guarding the fix rather than only its syntax: the stray quote could have
|
|
84
|
-
// been "fixed" by deleting the line.
|
|
85
|
-
test('cds into the dirname of the Podfile', async () => {
|
|
86
|
-
const script = await render({ podfile_path: '/path/to/Podfile' });
|
|
87
|
-
expect(script).toContain(`WORK_DIR="$(dirname '/path/to/Podfile')"`);
|
|
88
|
-
expect(script).toContain('cd "$WORK_DIR"');
|
|
89
|
-
});
|
|
90
|
-
test('does not leave an unbalanced quote on the assignment', async () => {
|
|
91
|
-
const script = await render({ podfile_path: '/path/to/Podfile' });
|
|
92
|
-
const line = script.split('\n').find((l) => l.startsWith('WORK_DIR='));
|
|
93
|
-
expect(line).toBeDefined();
|
|
94
|
-
expect(line.split('"').length - 1).toBe(2);
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
//# sourceMappingURL=cocoapods-install-emits-valid-bash.test.js.map
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A Gemfile.lock names the bundler that must run it, and the step has to run
|
|
3
|
-
* that one.
|
|
4
|
-
*
|
|
5
|
-
* `BUNDLED WITH 2.3.21` is routine. The step found `bundle` on PATH — on a mac
|
|
6
|
-
* guest that is /usr/bin/bundle, system Ruby 2.6 — and ran `bundle install`,
|
|
7
|
-
* and RubyGems refused to start any bundler but the locked one:
|
|
8
|
-
*
|
|
9
|
-
* Could not find 'bundler' (2.3.21) required by your Gemfile.lock.
|
|
10
|
-
* (Gem::GemNotFoundException)
|
|
11
|
-
*
|
|
12
|
-
* System Ruby cannot `gem install` without sudo either, so nothing in the step
|
|
13
|
-
* could recover. These tests run the generated script against stand-in `gem`,
|
|
14
|
-
* `bundle`, `pod` and `brew` executables and read back what it invoked.
|
|
15
|
-
*/
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=cocoapods-locked-bundler.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cocoapods-locked-bundler.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/cocoapods-locked-bundler.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A Gemfile.lock names the bundler that must run it, and the step has to run
|
|
3
|
-
* that one.
|
|
4
|
-
*
|
|
5
|
-
* `BUNDLED WITH 2.3.21` is routine. The step found `bundle` on PATH — on a mac
|
|
6
|
-
* guest that is /usr/bin/bundle, system Ruby 2.6 — and ran `bundle install`,
|
|
7
|
-
* and RubyGems refused to start any bundler but the locked one:
|
|
8
|
-
*
|
|
9
|
-
* Could not find 'bundler' (2.3.21) required by your Gemfile.lock.
|
|
10
|
-
* (Gem::GemNotFoundException)
|
|
11
|
-
*
|
|
12
|
-
* System Ruby cannot `gem install` without sudo either, so nothing in the step
|
|
13
|
-
* could recover. These tests run the generated script against stand-in `gem`,
|
|
14
|
-
* `bundle`, `pod` and `brew` executables and read back what it invoked.
|
|
15
|
-
*/
|
|
16
|
-
import { execFileSync } from 'node:child_process';
|
|
17
|
-
import { chmodSync, mkdirSync, mkdtempSync, readFileSync, existsSync, writeFileSync } from 'node:fs';
|
|
18
|
-
import { tmpdir } from 'node:os';
|
|
19
|
-
import { join } from 'node:path';
|
|
20
|
-
import { describe, test, expect } from '@jest/globals';
|
|
21
|
-
import { CocoapodsInstallStepExecutor } from './ios-deps.js';
|
|
22
|
-
import { testConfig } from './test-config.js';
|
|
23
|
-
const LOCK_WITH_BUNDLER = `GEM
|
|
24
|
-
remote: https://rubygems.org/
|
|
25
|
-
specs:
|
|
26
|
-
cocoapods (1.15.2)
|
|
27
|
-
|
|
28
|
-
PLATFORMS
|
|
29
|
-
ruby
|
|
30
|
-
|
|
31
|
-
DEPENDENCIES
|
|
32
|
-
cocoapods
|
|
33
|
-
|
|
34
|
-
BUNDLED WITH
|
|
35
|
-
2.3.21
|
|
36
|
-
`;
|
|
37
|
-
const executable = (path, body) => {
|
|
38
|
-
writeFileSync(path, `#!/bin/bash\n${body}\n`);
|
|
39
|
-
chmodSync(path, 0o755);
|
|
40
|
-
};
|
|
41
|
-
/**
|
|
42
|
-
* Runs the step in a fresh project directory. `installed` lists the bundler
|
|
43
|
-
* versions the stand-in `gem` reports as already present.
|
|
44
|
-
*/
|
|
45
|
-
const run = async (opts) => {
|
|
46
|
-
const root = mkdtempSync(join(tmpdir(), 'cibuild-bundler-'));
|
|
47
|
-
const project = join(root, 'repo');
|
|
48
|
-
const bin = join(root, 'bin');
|
|
49
|
-
const scratch = join(root, 'scratch');
|
|
50
|
-
const log = join(root, 'calls.log');
|
|
51
|
-
mkdirSync(project);
|
|
52
|
-
mkdirSync(bin);
|
|
53
|
-
mkdirSync(scratch);
|
|
54
|
-
writeFileSync(join(project, 'Podfile'), "platform :ios, '15.0'\n");
|
|
55
|
-
if (opts.lock !== undefined)
|
|
56
|
-
writeFileSync(join(project, 'Gemfile.lock'), opts.lock);
|
|
57
|
-
writeFileSync(join(project, 'Gemfile'), opts.gemfile ?? "gem 'cocoapods'\n");
|
|
58
|
-
if (opts.rubyVersionFile !== undefined) {
|
|
59
|
-
writeFileSync(join(project, '.ruby-version'), opts.rubyVersionFile);
|
|
60
|
-
}
|
|
61
|
-
const installed = (opts.installed ?? []).join(' ');
|
|
62
|
-
executable(join(bin, 'gem'), `echo "gem $*" >> '${log}'
|
|
63
|
-
if [ "$1" = "list" ]; then
|
|
64
|
-
for v in ${installed}; do [ "$v" = "$5" ] && exit 0; done
|
|
65
|
-
exit 1
|
|
66
|
-
fi
|
|
67
|
-
if [ "$1" = "install" ]; then
|
|
68
|
-
${opts.gemInstallFails ? 'exit 1' : 'mkdir -p "$GEM_HOME/bin"; cp "$(dirname "$0")/bundle" "$GEM_HOME/bin/bundle"; exit 0'}
|
|
69
|
-
fi`);
|
|
70
|
-
executable(join(bin, 'bundle'), `echo "bundle $* (GEM_HOME=$GEM_HOME)" >> '${log}'`);
|
|
71
|
-
executable(join(bin, 'pod'), `echo "pod $*" >> '${log}'`);
|
|
72
|
-
executable(join(bin, 'ruby'), `echo "ruby $*" >> '${log}'; printf '2.6.10'`);
|
|
73
|
-
if (opts.brewRuby || opts.ruby33) {
|
|
74
|
-
const brewVersion = opts.brewRubyVersion ?? '3.4.1';
|
|
75
|
-
const keg = join(root, 'homebrew-ruby');
|
|
76
|
-
const keg33 = join(root, 'homebrew-ruby@3.3');
|
|
77
|
-
if (opts.brewRuby) {
|
|
78
|
-
mkdirSync(join(keg, 'bin'), { recursive: true });
|
|
79
|
-
executable(join(keg, 'bin', 'ruby'), `echo "brew-ruby $*" >> '${log}'; printf '${brewVersion}'`);
|
|
80
|
-
}
|
|
81
|
-
if (opts.ruby33) {
|
|
82
|
-
mkdirSync(join(keg33, 'bin'), { recursive: true });
|
|
83
|
-
executable(join(keg33, 'bin', 'ruby'), `echo "ruby33 $*" >> '${log}'; printf '3.3.10'`);
|
|
84
|
-
}
|
|
85
|
-
executable(join(bin, 'brew'), [
|
|
86
|
-
`if [ "$*" = "--prefix --installed ruby" ]; then ${opts.brewRuby ? `echo '${keg}'; exit 0` : 'exit 1'}; fi`,
|
|
87
|
-
`if [ "$*" = "list --versions ruby" ]; then ${opts.brewRuby ? `echo 'ruby ${brewVersion}'; exit 0` : 'exit 1'}; fi`,
|
|
88
|
-
`if [ "$*" = "--prefix --installed ruby@3.3" ]; then ${opts.ruby33 ? `echo '${keg33}'; exit 0` : 'exit 1'}; fi`,
|
|
89
|
-
'exit 1',
|
|
90
|
-
].join('\n'));
|
|
91
|
-
}
|
|
92
|
-
const script = (await new CocoapodsInstallStepExecutor().execute({ source_root_path: project }, {}, testConfig)).script;
|
|
93
|
-
const scriptPath = join(root, 'step.sh');
|
|
94
|
-
writeFileSync(scriptPath, script);
|
|
95
|
-
let output = '';
|
|
96
|
-
try {
|
|
97
|
-
output = execFileSync('bash', [scriptPath], {
|
|
98
|
-
cwd: root,
|
|
99
|
-
env: { PATH: `${bin}:/usr/bin:/bin`, HOME: root, CIBUILD_SCRATCH: scratch },
|
|
100
|
-
stdio: 'pipe',
|
|
101
|
-
}).toString();
|
|
102
|
-
}
|
|
103
|
-
catch (err) {
|
|
104
|
-
output = `${err.stdout ?? ''}${err.stderr ?? ''}\nEXIT ${err.status}`;
|
|
105
|
-
}
|
|
106
|
-
const calls = existsSync(log) ? readFileSync(log, 'utf-8').trim().split('\n') : [];
|
|
107
|
-
return { calls, output, gemHome: join(scratch, 'cibuild-gems'), scratch };
|
|
108
|
-
};
|
|
109
|
-
describe('cocoapods-install runs the bundler Gemfile.lock names', () => {
|
|
110
|
-
test('installs the locked bundler when it is missing', async () => {
|
|
111
|
-
const { calls } = await run({ lock: LOCK_WITH_BUNDLER });
|
|
112
|
-
expect(calls).toContain('gem install bundler -v 2.3.21 --no-document');
|
|
113
|
-
});
|
|
114
|
-
test('installs it into a writable GEM_HOME outside the checkout', async () => {
|
|
115
|
-
const { calls, gemHome } = await run({ lock: LOCK_WITH_BUNDLER });
|
|
116
|
-
const install = calls.find((c) => c.startsWith('bundle _2.3.21_ install'));
|
|
117
|
-
expect(install).toBeDefined();
|
|
118
|
-
expect(install).toContain(`GEM_HOME=${gemHome}`);
|
|
119
|
-
});
|
|
120
|
-
test('runs install and pod through that exact version', async () => {
|
|
121
|
-
const { calls } = await run({ lock: LOCK_WITH_BUNDLER });
|
|
122
|
-
expect(calls.some((c) => c.startsWith('bundle _2.3.21_ install'))).toBe(true);
|
|
123
|
-
expect(calls.some((c) => c.startsWith('bundle _2.3.21_ exec pod install'))).toBe(true);
|
|
124
|
-
// Never an unversioned bundle, which is what RubyGems refused.
|
|
125
|
-
expect(calls.some((c) => /^bundle (install|exec)/.test(c))).toBe(false);
|
|
126
|
-
});
|
|
127
|
-
test('does not reinstall a bundler that is already there', async () => {
|
|
128
|
-
const { calls } = await run({ lock: LOCK_WITH_BUNDLER, installed: ['2.3.21'] });
|
|
129
|
-
expect(calls.some((c) => c.startsWith('gem install'))).toBe(false);
|
|
130
|
-
expect(calls.some((c) => c.startsWith('bundle _2.3.21_ exec pod install'))).toBe(true);
|
|
131
|
-
});
|
|
132
|
-
test('a lockfile without BUNDLED WITH keeps plain bundle', async () => {
|
|
133
|
-
const { calls } = await run({ lock: LOCK_WITH_BUNDLER.replace(/BUNDLED WITH\n.*\n/, '') });
|
|
134
|
-
expect(calls.some((c) => c.startsWith('gem install'))).toBe(false);
|
|
135
|
-
expect(calls.some((c) => c.startsWith('bundle exec pod install'))).toBe(true);
|
|
136
|
-
});
|
|
137
|
-
test('a Gemfile with no lock keeps plain bundle', async () => {
|
|
138
|
-
const { calls } = await run({});
|
|
139
|
-
expect(calls.some((c) => c.startsWith('bundle install'))).toBe(true);
|
|
140
|
-
expect(calls.some((c) => c.startsWith('bundle exec pod install'))).toBe(true);
|
|
141
|
-
});
|
|
142
|
-
test('a project without cocoapods in its Gemfile runs pod directly', async () => {
|
|
143
|
-
const { calls } = await run({ gemfile: "gem 'fastlane'\n" });
|
|
144
|
-
expect(calls).toContain('pod install');
|
|
145
|
-
expect(calls.some((c) => c.startsWith('bundle'))).toBe(false);
|
|
146
|
-
});
|
|
147
|
-
test('says which bundler it could not install, and fails', async () => {
|
|
148
|
-
const { output } = await run({ lock: LOCK_WITH_BUNDLER, gemInstallFails: true });
|
|
149
|
-
expect(output).toContain('bundler 2.3.21');
|
|
150
|
-
expect(output).toContain('BUNDLED WITH');
|
|
151
|
-
expect(output).toMatch(/EXIT [1-9]/);
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
// Issue 08 preferred Homebrew's Ruby whenever it was installed. On the mac
|
|
155
|
-
// image that is Ruby 4, and an old lockfile's gems do not load there: rake
|
|
156
|
-
// 13.0.6 requires `ostruct`, which stopped being a default gem in Ruby 4.0,
|
|
157
|
-
// so a native-extension build died inside rake. The lockfile decides instead:
|
|
158
|
-
// its `RUBY VERSION`, then `.ruby-version`, and system Ruby when neither names
|
|
159
|
-
// one. Homebrew's Ruby only when the named Ruby is 3 or newer.
|
|
160
|
-
describe('cocoapods-install runs the Ruby the project names', () => {
|
|
161
|
-
const usedBrew = (calls) => calls.some((c) => c.startsWith('brew-ruby'));
|
|
162
|
-
const usedSystem = (calls) => calls.some((c) => c.startsWith('ruby '));
|
|
163
|
-
const lockWithRuby = (v) => LOCK_WITH_BUNDLER.replace('BUNDLED WITH', `RUBY VERSION\n ruby ${v}\n\nBUNDLED WITH`);
|
|
164
|
-
test('a lock that names no Ruby runs system Ruby, with the locked bundler', async () => {
|
|
165
|
-
const { calls, output, gemHome } = await run({ lock: LOCK_WITH_BUNDLER, brewRuby: true });
|
|
166
|
-
expect(usedSystem(calls)).toBe(true);
|
|
167
|
-
expect(usedBrew(calls)).toBe(false);
|
|
168
|
-
expect(calls).toContain('gem install bundler -v 2.3.21 --no-document');
|
|
169
|
-
expect(calls.find((c) => c.startsWith('bundle _2.3.21_ install'))).toContain(`GEM_HOME=${gemHome}`);
|
|
170
|
-
expect(output).toMatch(/^Ruby: .*\(2\.6\.10\), GEM_HOME: .* — system: lockfile names no Ruby, and no Ruby 3\.3 is installed$/m);
|
|
171
|
-
});
|
|
172
|
-
test('a lock whose RUBY VERSION is 3 or newer runs Homebrew Ruby', async () => {
|
|
173
|
-
const { calls, output } = await run({ lock: lockWithRuby('3.3.4p94'), brewRuby: true });
|
|
174
|
-
expect(usedBrew(calls)).toBe(true);
|
|
175
|
-
expect(usedSystem(calls)).toBe(false);
|
|
176
|
-
expect(output).toMatch(/^Ruby: .*homebrew-ruby\/bin\/ruby \(3\.4\.1\), .* — from Gemfile\.lock RUBY VERSION 3\.3\.4$/m);
|
|
177
|
-
});
|
|
178
|
-
test('a lock whose RUBY VERSION is 2.x runs system Ruby', async () => {
|
|
179
|
-
const { calls, output } = await run({ lock: lockWithRuby('2.7.2p137'), brewRuby: true });
|
|
180
|
-
expect(usedBrew(calls)).toBe(false);
|
|
181
|
-
expect(output).toContain('— from Gemfile.lock RUBY VERSION 2.7.2');
|
|
182
|
-
});
|
|
183
|
-
test('the lock outranks .ruby-version', async () => {
|
|
184
|
-
const { calls, output } = await run({
|
|
185
|
-
lock: lockWithRuby('3.3.4p94'),
|
|
186
|
-
rubyVersionFile: '2.7.6\n',
|
|
187
|
-
brewRuby: true,
|
|
188
|
-
});
|
|
189
|
-
expect(usedBrew(calls)).toBe(true);
|
|
190
|
-
expect(output).toContain('— from Gemfile.lock RUBY VERSION 3.3.4');
|
|
191
|
-
});
|
|
192
|
-
test('.ruby-version of 3 or newer runs Homebrew Ruby when the lock names none', async () => {
|
|
193
|
-
const { calls, output } = await run({ lock: LOCK_WITH_BUNDLER, rubyVersionFile: 'ruby-3.2.2\n', brewRuby: true });
|
|
194
|
-
expect(usedBrew(calls)).toBe(true);
|
|
195
|
-
expect(output).toContain('— from .ruby-version 3.2.2');
|
|
196
|
-
});
|
|
197
|
-
test('.ruby-version of 2.7 runs system Ruby, and says so', async () => {
|
|
198
|
-
const { calls, output } = await run({ lock: LOCK_WITH_BUNDLER, rubyVersionFile: '2.7.6\n', brewRuby: true });
|
|
199
|
-
expect(usedBrew(calls)).toBe(false);
|
|
200
|
-
expect(usedSystem(calls)).toBe(true);
|
|
201
|
-
expect(output).toContain('— from .ruby-version 2.7.6');
|
|
202
|
-
});
|
|
203
|
-
test('a .ruby-version that names no version is ignored', async () => {
|
|
204
|
-
const { calls, output } = await run({ lock: LOCK_WITH_BUNDLER, rubyVersionFile: 'system\n', brewRuby: true });
|
|
205
|
-
expect(usedBrew(calls)).toBe(false);
|
|
206
|
-
expect(output).toContain('— system: lockfile names no Ruby');
|
|
207
|
-
});
|
|
208
|
-
test('Ruby 3 named, no Homebrew Ruby installed: system Ruby, and says so', async () => {
|
|
209
|
-
const { calls, output } = await run({ lock: lockWithRuby('3.3.4p94') });
|
|
210
|
-
expect(usedSystem(calls)).toBe(true);
|
|
211
|
-
expect(output).toContain('— from Gemfile.lock RUBY VERSION 3.3.4, but no Homebrew Ruby is installed');
|
|
212
|
-
});
|
|
213
|
-
test('a project without cocoapods in its Gemfile never picks a Ruby', async () => {
|
|
214
|
-
const { calls } = await run({ gemfile: "gem 'fastlane'\n", rubyVersionFile: '3.3.0\n', brewRuby: true });
|
|
215
|
-
expect(calls).toContain('pod install');
|
|
216
|
-
expect(usedBrew(calls)).toBe(false);
|
|
217
|
-
expect(usedSystem(calls)).toBe(false);
|
|
218
|
-
});
|
|
219
|
-
});
|
|
220
|
-
// With the lock naming no Ruby, the step chose system Ruby 2.6 as above, and the build still died:
|
|
221
|
-
// the Xcode 26.4 SDK's Ruby 2.6 headers have no `ruby/config.h`, so no native extension (json, ffi)
|
|
222
|
-
// compiles. Homebrew's Ruby is 4, where the lock's rake 13.0.6 cannot load. So a Ruby 3.3 runs when
|
|
223
|
-
// the lock names no Ruby or one below 3; a named 3.x runs 3.3 unless Homebrew's matches it better; a
|
|
224
|
-
// named 4.x runs Homebrew's. A machine without 3.3 behaves as before.
|
|
225
|
-
describe('cocoapods-install runs Ruby 3.3 where system Ruby cannot build native gems', () => {
|
|
226
|
-
const used33 = (calls) => calls.some((c) => c.startsWith('ruby33'));
|
|
227
|
-
const usedBrew = (calls) => calls.some((c) => c.startsWith('brew-ruby'));
|
|
228
|
-
const usedSystem = (calls) => calls.some((c) => c.startsWith('ruby '));
|
|
229
|
-
const lockWithRuby = (v) => LOCK_WITH_BUNDLER.replace('BUNDLED WITH', `RUBY VERSION\n ruby ${v}\n\nBUNDLED WITH`);
|
|
230
|
-
const image = { brewRuby: true, brewRubyVersion: '4.0.2', ruby33: true };
|
|
231
|
-
test('a lock that names no Ruby runs 3.3, with the locked bundler', async () => {
|
|
232
|
-
const { calls, output, gemHome } = await run({ lock: LOCK_WITH_BUNDLER, ...image });
|
|
233
|
-
expect(used33(calls)).toBe(true);
|
|
234
|
-
expect(usedSystem(calls)).toBe(false);
|
|
235
|
-
expect(usedBrew(calls)).toBe(false);
|
|
236
|
-
expect(calls).toContain('gem install bundler -v 2.3.21 --no-document');
|
|
237
|
-
expect(calls.find((c) => c.startsWith('bundle _2.3.21_ install'))).toContain(`GEM_HOME=${gemHome}`);
|
|
238
|
-
expect(output).toMatch(/^Ruby: .*homebrew-ruby@3\.3\/bin\/ruby \(3\.3\.10\), GEM_HOME: .* — Ruby 3\.3: lockfile names no Ruby, and system Ruby 2\.6 cannot build native gems$/m);
|
|
239
|
-
});
|
|
240
|
-
test('a lock whose RUBY VERSION is 2.x runs 3.3', async () => {
|
|
241
|
-
const { calls, output } = await run({ lock: lockWithRuby('2.7.2p137'), ...image });
|
|
242
|
-
expect(used33(calls)).toBe(true);
|
|
243
|
-
expect(output).toContain('— from Gemfile.lock RUBY VERSION 2.7.2, run on Ruby 3.3: system Ruby 2.6 cannot build native gems');
|
|
244
|
-
});
|
|
245
|
-
test('a 2.x .ruby-version runs 3.3', async () => {
|
|
246
|
-
const { calls } = await run({ lock: LOCK_WITH_BUNDLER, rubyVersionFile: '2.7.6\n', ...image });
|
|
247
|
-
expect(used33(calls)).toBe(true);
|
|
248
|
-
});
|
|
249
|
-
test('a named 3.x that Homebrew does not match runs 3.3', async () => {
|
|
250
|
-
const { calls, output } = await run({ lock: lockWithRuby('3.2.2'), ...image });
|
|
251
|
-
expect(used33(calls)).toBe(true);
|
|
252
|
-
expect(usedBrew(calls)).toBe(false);
|
|
253
|
-
expect(output).toContain('— from Gemfile.lock RUBY VERSION 3.2.2, run on Ruby 3.3');
|
|
254
|
-
});
|
|
255
|
-
test('a named 3.3 runs 3.3 and needs no aside', async () => {
|
|
256
|
-
const { calls, output } = await run({ lock: lockWithRuby('3.3.4p94'), ...image });
|
|
257
|
-
expect(used33(calls)).toBe(true);
|
|
258
|
-
expect(output).toMatch(/— from Gemfile\.lock RUBY VERSION 3\.3\.4$/m);
|
|
259
|
-
});
|
|
260
|
-
test('a named 3.x that Homebrew matches runs Homebrew Ruby', async () => {
|
|
261
|
-
const { calls, output } = await run({ lock: lockWithRuby('3.4.1'), brewRuby: true, brewRubyVersion: '3.4.7', ruby33: true });
|
|
262
|
-
expect(usedBrew(calls)).toBe(true);
|
|
263
|
-
expect(used33(calls)).toBe(false);
|
|
264
|
-
expect(output).toMatch(/— from Gemfile\.lock RUBY VERSION 3\.4\.1$/m);
|
|
265
|
-
});
|
|
266
|
-
test('a named 4.x runs Homebrew Ruby', async () => {
|
|
267
|
-
const { calls } = await run({ lock: lockWithRuby('4.0.1'), ...image });
|
|
268
|
-
expect(usedBrew(calls)).toBe(true);
|
|
269
|
-
expect(used33(calls)).toBe(false);
|
|
270
|
-
});
|
|
271
|
-
test('without 3.3, a lock that names no Ruby runs system Ruby, and says 3.3 is missing', async () => {
|
|
272
|
-
const { calls, output } = await run({ lock: LOCK_WITH_BUNDLER, brewRuby: true, brewRubyVersion: '4.0.2' });
|
|
273
|
-
expect(usedSystem(calls)).toBe(true);
|
|
274
|
-
expect(output).toContain('— system: lockfile names no Ruby, and no Ruby 3.3 is installed');
|
|
275
|
-
});
|
|
276
|
-
test('without 3.3, a 2.x lock runs system Ruby, and says 3.3 is missing', async () => {
|
|
277
|
-
const { calls, output } = await run({ lock: lockWithRuby('2.7.2p137'), brewRuby: true });
|
|
278
|
-
expect(usedSystem(calls)).toBe(true);
|
|
279
|
-
expect(output).toContain('— from Gemfile.lock RUBY VERSION 2.7.2, and no Ruby 3.3 is installed');
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
//# sourceMappingURL=cocoapods-locked-bundler.test.js.map
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `cocoapods-install` can be asked to skip a project that has no Podfile.
|
|
3
|
-
*
|
|
4
|
-
* The default stays a hard failure, because a pipeline that names this step is
|
|
5
|
-
* asserting the project uses CocoaPods and a missing Podfile is a real error.
|
|
6
|
-
*
|
|
7
|
-
* The iOS template needs the other behaviour: it serves every iOS project and a
|
|
8
|
-
* large share of them resolve dependencies through Swift Package Manager, where
|
|
9
|
-
* "Podfile not found" would be a CocoaPods error in a project that does not use
|
|
10
|
-
* CocoaPods. Until this input existed the template could not use this step at
|
|
11
|
-
* all, so it ran `pod install` from an inline `script@1.0.0` — which put it out
|
|
12
|
-
* of reach of the refused-fetch retry this step carries. That is the gap this
|
|
13
|
-
* closes, and it is why the release order matters: this must ship before the
|
|
14
|
-
* template is pointed at the step, or every SPM-only iOS repo breaks.
|
|
15
|
-
*/
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=cocoapods-skip-if-absent.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cocoapods-skip-if-absent.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/cocoapods-skip-if-absent.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|