codemagic-cli-tools 0.49.0__tar.gz → 0.50.1__tar.gz
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.
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/PKG-INFO +1 -1
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/pyproject.toml +1 -1
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/__version__.py +1 -1
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/__version__.py-e +1 -1
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/bundle_id_capability.py +11 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/enums.py +46 -2
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xctests/__init__.py +1 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xctests/xcresulttool.py +10 -3
- codemagic_cli_tools-0.50.1/src/codemagic/tools/app_store_connect/action_groups/bundle_ids_action_group.py +317 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/arguments.py +12 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/xcode_project.py +32 -17
- codemagic_cli_tools-0.50.1/tests/apple/resources/enums/test_capability_type.py +77 -0
- codemagic_cli_tools-0.50.1/tests/apple/resources/test_bundle_id_capability_resource.py +21 -0
- codemagic_cli_tools-0.49.0/src/codemagic/tools/app_store_connect/action_groups/bundle_ids_action_group.py +0 -165
- codemagic_cli_tools-0.49.0/tests/apple/resources/test_bundle_id_capability_resource.py +0 -8
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/LICENSE +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/README.md +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/api_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/api_error.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/api_session.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/apps/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/apps/apps.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/builds/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/builds/builds.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/json_web_token_manager.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/provisioning/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/provisioning/bundle_id_capabilities.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/provisioning/bundle_ids.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/provisioning/devices.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/provisioning/profiles.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/provisioning/signing_certificates.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/resource_manager.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/testflight/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/testflight/beta_groups.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/type_declarations.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/app_store_version_localizations.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/app_store_version_submissions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/app_store_versions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/beta_app_review_submissions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/beta_build_localizations.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/pre_release_versions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/review_submission_items.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/app_store_connect/versioning/review_submissions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/app.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/app_store_version.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/app_store_version_localization.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/app_store_version_submission.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/beta_app_localization.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/beta_app_review_detail.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/beta_app_review_submission.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/beta_build_localization.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/beta_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/build.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/build_beta_detail.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/bundle_id.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/device.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/error_response.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/pre_release_version.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/profile.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/review_submission.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/review_submission_item.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/signing_certificate.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/action_callable.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/argument.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/argument_formatter.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/argument_parser_builder.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/argument_properties.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/common_argument_types.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/argument/typed_cli_argument.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/cli_app.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/cli_help_formatter.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/cli_process.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/cli_process_stream.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/cli_types.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/colors.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/cli/environment.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/data/jars/bundletool-all-1.13.1.jar +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/errors.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/firebase_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/google_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resource_managers/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resource_managers/mixins/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resource_managers/mixins/acting_manager_mixin.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resource_managers/mixins/listing_manager_mixin.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resource_managers/release_manager.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resource_managers/resource_manager.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resources/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resources/identifiers/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resources/identifiers/app_identifier.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resources/identifiers/resource_identifier.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resources/release.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resources/release_notes.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google/resources/resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/api_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/api_error.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/resources/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/resources/edit.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/resources/enums.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/resources/resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/google_play/resources/track.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/mixins/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/mixins/path_finder.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/mixins/running_cli_app.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/mixins/str_converter.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/altool/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/altool/altool.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/altool/altool_result.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/altool/enums.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/android_signing_info.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/application_package/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/application_package/abstract_package.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/application_package/ipa.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/application_package/macos_package.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/bundle_id_detector.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/certificate.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/certificate_attributes.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/certificate_p12_exporter.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/code_sign_entitlements.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/code_signing_settings_manager.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/enums.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/export_options.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/json_serializable.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/junit/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/junit/definitions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/junit/printer.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/keystore.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/pbx_project.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/private_key.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/provisioning_profile.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/simulator/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/simulator/core_simulator_service.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/simulator/runtime.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/simulator/simulator.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/table/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/table/line.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/table/table.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xcode.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xcodebuild.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xcpretty.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xctests/collector.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xctests/converter.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/models/xctests/xcresult.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/py.typed +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/scripts/code_signing_manager.rb +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/shell_tools/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/shell_tools/abstract_shell_tool.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/shell_tools/keytool.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/_xcode_project/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/_xcode_project/arguments.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/android_app_bundle.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/android_keystore/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/android_keystore/__main__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/android_keystore/android_keystore.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/android_keystore/argument_types.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/android_keystore/arguments.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/__main__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/abstract_base_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_localizations_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/app_store_version_submissions_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/app_store_versions_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/apps_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/beta_app_review_submissions_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/beta_build_localizations_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/beta_groups_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/builds_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/certificates_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/devices_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/profiles_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/review_submission_items_actions_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/action_groups/review_submissions_actions_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/actions/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/actions/fetch_signing_files_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/actions/latest_build_number_actions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/actions/publish_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/app_store_connect.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/errors.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/mixins/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/mixins/resource_manager_mixin.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/mixins/signing_file_saver_mixin.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/app_store_connect/resource_printer.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/codemagic_cli_tools.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/__main__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/action_groups/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/action_groups/firebase_action_groups.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/action_groups/releases_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/actions/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/actions/get_latest_build_version_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/argument_types.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/arguments.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/errors.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/firebase_app_distribution_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/firebase_app_distribution/resource_printer.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/git_changelog.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/__main__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/action_groups/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/action_groups/google_play_action_groups.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/action_groups/tracks_action_group.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/actions/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/actions/get_latest_build_number_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/argument_types.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/arguments.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/errors.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/google_play.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/google_play/google_play_base_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/keychain.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/universal_apk_generator.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/auditing/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/auditing/base_auditor.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/auditing/exception_auditor.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/auditing/http_request_auditor.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/backwards_file_reader.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/case_conversion.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/decorators.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/levenshtein_distance.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/log.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/utilities/versions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/apps/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/apps/test_apps.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/builds/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/builds/test_builds.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/provisioning/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/provisioning/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/provisioning/test_bundle_id_capabilities.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/provisioning/test_bundle_ids.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/provisioning/test_devices.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/provisioning/test_profiles.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/provisioning/test_signing_certificates.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/resource_manager_test_base.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/test_api_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/test_api_session.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/test_json_web_token_manager.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/test_resource_manager.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/testflight/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/testflight/test_beta_groups.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_app_store_version_localizations.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_app_store_version_submissions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_app_store_versions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_beta_app_review_submissions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_beta_build_localizations.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_pre_release_versions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_review_submission_items.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/app_store_connect/versioning/test_review_submissions.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/enums/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/enums/test_certificate_type.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/enums/test_profile_type.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/app_store_version.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/build.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/bundle_id.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/bundle_id_capability.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/certificate.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/device.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/error_response.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/error_response_entity_state_invalid.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/error_response_with_links.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/mock_resource.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/pre_release_version.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/mocks/profile.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_app_store_version_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_build_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_bundle_id_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_device_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_error_response.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_pre_release_version_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_profile_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_signing_certificate_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/apple/resources/test_undefined_resource_fields.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/argument/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/argument/common_argument_types/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/argument/common_argument_types/test_bounded_number.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/argument/common_argument_types/test_iso_8601_datetime.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/argument/common_argument_types/test_maybe_dir.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/argument/test_argument.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/mocks/utf-8-sample.txt +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/test_cli_process.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/cli/test_decorators.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google/test_firebase_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google/test_live_firebase_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/resources/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/resources/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/resources/mocks/edit.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/resources/mocks/track.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/resources/test_edit_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/resources/test_resource_print.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/resources/test_track_resource.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/google_play/test_api_client.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/mixins/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/mixins/test_string_converter.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/mocks/certificate.asn1 +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/mocks/encrypted.pem +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/mocks/encrypted.pem.pub +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/mocks/unencrypted.pem +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/mocks/unencrypted.pem.pub +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/altool/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/altool/mocks/mock_failure_auth.txt +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/altool/mocks/mock_failure_other.txt +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/altool/mocks/mock_upload_success.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/altool/mocks/mock_validation_failure.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/altool/test_altool_result.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/altool/test_altool_retrying.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/enums/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/enums/test_resource_enum.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/junit/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/junit/mocks/testsuite.xml +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/junit/test_xml_generation.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/certificate-no-password.p12 +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/certificate.p12 +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/codemagic_io_wildcard_development.mobileprovision +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/export_options.plist +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock.ipa +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock.xcarchive/Products/Applications/Capybara App.app/Capybara App +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock_0_icloud_container_environments.plist +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock_1_icloud_container_environments.plist +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock_2_icloud_container_environments.plist +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock_openssh_private_key +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock_rsa_private_key +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/mocks/mock_xcode/Contents/version.plist +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/simulator/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/simulator/mocks/devices.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/simulator/mocks/simulator.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/simulator/test_runtime.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/simulator/test_simulator.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_certificate.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_certificate_attributes.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_code_sign_entitlements.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_export_options.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_private_key.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_provisioning_profile.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_table.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/test_xcode.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_1NtPgUPcB1A83X977l5Q91ElstUeVDnqAhumk_VJG8DIS4GA1sb8ElPPHZZGYEHmNvnHU1VVaPDCw1tI8n3uXg__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_5rAUs3HknUI7DU8Jyc5RlFcosqCXTOV-qwOaOE1Mul_ppK8QCta-NSxxCdtVg6i12km4zTR5l0SjgzfHGUNxog__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_97T9qQZ3dEI1oDS6NvYTPcFk_jUXFJ0NRwyd5FZ2S585JGMtlqbF28Hc85yeifgKEnNoInoW93Za9c5QJCspeQ__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_DVcJZnHFaQQlzl8czovv7RuDRQIToEr5_3lLe-Mn1Sm6VreJ5xoXEFqBaWNv0XRmSg00NJ77XzQKgddhfkuk7w__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_FZMbIp5VAUEiJv1wUUM-K78Dtmb4o-titbTusDJqRuarbS9OatzAykygXo4NUqEoR9sxCIoeu8VDioQmbba6mw__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_Hj6SOUxY1APmxdQEA2HdqbA52GD3WJE571nqr_Z-w8vi_buxP-GUjNxCsGYQvnKnnwlyykwxY-KJmjqKYmPyXQ__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_NnCmQ8rMqVyUBgL3ZDjfjJ9Vt1AMGeMzZPkDH30rGMYer0pFDpp4UDZlCEHRImO-48LdC_KdcbjP70IZA6zKUQ__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_YK9aPHVT-grv_ZVooRT79GBO9n82BNogkuWVzFO6itJEtbtsRTQpK2-0ZDLot1JpCfPb26aZwEZjeb9G4GHiBQ__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0__H1_RrdBT9b-ZhkWCQiRKpHlwURmyWUudeOhj5UslLXhXl8mr9w5CGqdobi9A5wCVEIRMsO4yuFyzx2gMPr-_Q__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/0_evvkuGf92MVrmIvhr07911LuRTiPBKDjIQ0q_7L-mPGGYkWVKMBPQ5pB5lbjoaOnvr0fpC9k003EunfwSdss2g__.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/mocks/actions_invocation_record.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/test_collector.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/test_converter.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/models/xctests/test_xcresult.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/mocks/android.ks +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.jks +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/mocks/non-rfc-cert-keystore.p12 +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.jks +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/mocks/rfc-cert-keystore.p12 +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/test_get_certificate.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/test_get_certificates.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/shell_tools/keytool/test_validate.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/app_store_connect/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/app_store_connect/arguments/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/app_store_connect/arguments/test_beta_build_localizations.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/app_store_connect/conftest.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/app_store_connect/mocks/AuthKeyMock.p8 +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/app_store_connect/test_from_cli_args.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/app_store_connect/test_publish_action.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/mocks/firebase_releases.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/mocks/google_play_tracks.json +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/test_android_app_bundle.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/test_firebase_app_distribution.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/test_google_play.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/test_keychain.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/tools/test_universal_apk_generator.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/utilities/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/utilities/decorators/__init__.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/utilities/decorators/test_deprecated.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/utilities/test_backwards_file_reader.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/utilities/test_case_conversion.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/utilities/test_levenshtein_distance.py +0 -0
- {codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/tests/utilities/test_versions.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
+
from typing import Any
|
|
4
5
|
from typing import Optional
|
|
5
6
|
|
|
6
7
|
from .enums import CapabilityOptionKey
|
|
@@ -66,3 +67,13 @@ class BundleIdCapability(Resource):
|
|
|
66
67
|
@dataclass
|
|
67
68
|
class Relationships(Resource.Relationships):
|
|
68
69
|
bundleId: Relationship
|
|
70
|
+
|
|
71
|
+
def _format_attribute_value(self, attribute_name: str, value: Any) -> Any:
|
|
72
|
+
if attribute_name == "capabilityType":
|
|
73
|
+
# In case we get an unknown capability type from API response, then this is stored as
|
|
74
|
+
# a runtime-created fallback enumeration `GracefulCapabilityType` which does not have
|
|
75
|
+
# the properties and methods that `CapabilityType` has.
|
|
76
|
+
if isinstance(self.attributes.capabilityType, CapabilityType):
|
|
77
|
+
return self.attributes.capabilityType.display_name
|
|
78
|
+
return CapabilityType.get_default_display_name(self.attributes.capabilityType.value)
|
|
79
|
+
return super()._format_attribute_value(attribute_name, value)
|
{codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/apple/resources/enums.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import re
|
|
3
4
|
from typing import Tuple
|
|
4
5
|
|
|
5
6
|
from codemagic.models.enums import ResourceEnum
|
|
@@ -78,30 +79,73 @@ class CapabilitySettingKey(ResourceEnum):
|
|
|
78
79
|
|
|
79
80
|
|
|
80
81
|
class CapabilityType(ResourceEnum):
|
|
82
|
+
"""
|
|
83
|
+
https://developer.apple.com/documentation/appstoreconnectapi/capabilitytype
|
|
84
|
+
"""
|
|
85
|
+
|
|
81
86
|
ACCESS_WIFI_INFORMATION = "ACCESS_WIFI_INFORMATION"
|
|
82
|
-
|
|
87
|
+
APPLE_ID_AUTH = "APPLE_ID_AUTH"
|
|
83
88
|
APPLE_PAY = "APPLE_PAY"
|
|
89
|
+
APP_GROUPS = "APP_GROUPS"
|
|
84
90
|
ASSOCIATED_DOMAINS = "ASSOCIATED_DOMAINS"
|
|
85
91
|
AUTOFILL_CREDENTIAL_PROVIDER = "AUTOFILL_CREDENTIAL_PROVIDER"
|
|
86
92
|
CLASSKIT = "CLASSKIT"
|
|
93
|
+
COREMEDIA_HLS_LOW_LATENCY = "COREMEDIA_HLS_LOW_LATENCY"
|
|
87
94
|
DATA_PROTECTION = "DATA_PROTECTION"
|
|
88
95
|
GAME_CENTER = "GAME_CENTER"
|
|
89
96
|
HEALTHKIT = "HEALTHKIT"
|
|
90
97
|
HOMEKIT = "HOMEKIT"
|
|
91
98
|
HOT_SPOT = "HOT_SPOT"
|
|
92
99
|
ICLOUD = "ICLOUD"
|
|
93
|
-
IN_APP_PURCHASE = "IN_APP_PURCHASE"
|
|
94
100
|
INTER_APP_AUDIO = "INTER_APP_AUDIO"
|
|
101
|
+
IN_APP_PURCHASE = "IN_APP_PURCHASE"
|
|
95
102
|
MAPS = "MAPS"
|
|
96
103
|
MULTIPATH = "MULTIPATH"
|
|
104
|
+
NETWORK_CUSTOM_PROTOCOL = "NETWORK_CUSTOM_PROTOCOL"
|
|
97
105
|
NETWORK_EXTENSIONS = "NETWORK_EXTENSIONS"
|
|
106
|
+
NETWORK_SLICING = "NETWORK_SLICING"
|
|
98
107
|
NFC_TAG_READING = "NFC_TAG_READING"
|
|
99
108
|
PERSONAL_VPN = "PERSONAL_VPN"
|
|
100
109
|
PUSH_NOTIFICATIONS = "PUSH_NOTIFICATIONS"
|
|
101
110
|
SIRIKIT = "SIRIKIT"
|
|
111
|
+
SYSTEM_EXTENSION_INSTALL = "SYSTEM_EXTENSION_INSTALL"
|
|
112
|
+
USER_MANAGEMENT = "USER_MANAGEMENT"
|
|
102
113
|
WALLET = "WALLET"
|
|
103
114
|
WIRELESS_ACCESSORY_CONFIGURATION = "WIRELESS_ACCESSORY_CONFIGURATION"
|
|
104
115
|
|
|
116
|
+
@classmethod
|
|
117
|
+
def from_display_name(cls, display_name: str) -> CapabilityType:
|
|
118
|
+
for capability_type in cls:
|
|
119
|
+
if capability_type.display_name == display_name:
|
|
120
|
+
return capability_type
|
|
121
|
+
raise ValueError("Unknown capability type", display_name)
|
|
122
|
+
|
|
123
|
+
@property
|
|
124
|
+
def display_name(self) -> str:
|
|
125
|
+
try:
|
|
126
|
+
return {
|
|
127
|
+
CapabilityType.ACCESS_WIFI_INFORMATION: "Access Wi-Fi Information",
|
|
128
|
+
CapabilityType.APPLE_ID_AUTH: "Sign In with Apple",
|
|
129
|
+
CapabilityType.COREMEDIA_HLS_LOW_LATENCY: "Low Latency HLS",
|
|
130
|
+
CapabilityType.HOT_SPOT: "Hotspot",
|
|
131
|
+
CapabilityType.ICLOUD: "iCloud",
|
|
132
|
+
CapabilityType.INTER_APP_AUDIO: "Inter-App Audio",
|
|
133
|
+
CapabilityType.IN_APP_PURCHASE: "In-App Purchase",
|
|
134
|
+
CapabilityType.NETWORK_CUSTOM_PROTOCOL: "Custom Network Protocol",
|
|
135
|
+
CapabilityType.NETWORK_SLICING: "5G Network Slicing",
|
|
136
|
+
CapabilityType.NFC_TAG_READING: "NFC Tag Reading",
|
|
137
|
+
CapabilityType.PERSONAL_VPN: "Personal VPN",
|
|
138
|
+
CapabilityType.SYSTEM_EXTENSION_INSTALL: "System Extension",
|
|
139
|
+
}[self]
|
|
140
|
+
except KeyError:
|
|
141
|
+
return self.get_default_display_name(self.value)
|
|
142
|
+
|
|
143
|
+
@classmethod
|
|
144
|
+
def get_default_display_name(cls, capability_type_value: str) -> str:
|
|
145
|
+
parts = capability_type_value.split("_")
|
|
146
|
+
title = " ".join(parts).title()
|
|
147
|
+
return re.sub(r"(kit)$", "Kit", title)
|
|
148
|
+
|
|
105
149
|
|
|
106
150
|
class CertificateType(ResourceEnum):
|
|
107
151
|
DEVELOPER_ID_APPLICATION = "DEVELOPER_ID_APPLICATION"
|
|
@@ -13,12 +13,19 @@ from typing import Sequence
|
|
|
13
13
|
|
|
14
14
|
from codemagic.cli import CommandArg
|
|
15
15
|
from codemagic.mixins import RunningCliAppMixin
|
|
16
|
+
from codemagic.mixins import StringConverterMixin
|
|
16
17
|
|
|
17
18
|
if TYPE_CHECKING:
|
|
18
19
|
from codemagic.cli import CliApp
|
|
19
20
|
|
|
20
21
|
|
|
21
|
-
class
|
|
22
|
+
class XcResultToolError(IOError):
|
|
23
|
+
def __init__(self, message: str, stderr: str):
|
|
24
|
+
super().__init__(message)
|
|
25
|
+
self.stderr = stderr
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class XcResultTool(RunningCliAppMixin, StringConverterMixin):
|
|
22
29
|
@classmethod
|
|
23
30
|
def get_bundle(cls, xcresult: pathlib.Path) -> Dict[str, Any]:
|
|
24
31
|
cmd_args: List[CommandArg] = [
|
|
@@ -66,8 +73,8 @@ class XcResultTool(RunningCliAppMixin):
|
|
|
66
73
|
return cls._run_command_with_cli_app(cli_app, command_args)
|
|
67
74
|
else:
|
|
68
75
|
return subprocess.check_output(command_args)
|
|
69
|
-
except subprocess.CalledProcessError:
|
|
70
|
-
raise
|
|
76
|
+
except subprocess.CalledProcessError as cpe:
|
|
77
|
+
raise XcResultToolError(error_message, cls._str(cpe.stderr)) from cpe
|
|
71
78
|
|
|
72
79
|
@classmethod
|
|
73
80
|
def _run_command_with_cli_app(cls, cli_app: CliApp, command_args: Sequence[CommandArg]) -> bytes:
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from abc import ABCMeta
|
|
4
|
+
from typing import List
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from typing import Sequence
|
|
7
|
+
from typing import Union
|
|
8
|
+
|
|
9
|
+
from codemagic import cli
|
|
10
|
+
from codemagic.apple import AppStoreConnectApiError
|
|
11
|
+
from codemagic.apple.resources import BundleId
|
|
12
|
+
from codemagic.apple.resources import BundleIdCapability
|
|
13
|
+
from codemagic.apple.resources import BundleIdPlatform
|
|
14
|
+
from codemagic.apple.resources import CapabilityType
|
|
15
|
+
from codemagic.apple.resources import Profile
|
|
16
|
+
from codemagic.apple.resources import ProfileState
|
|
17
|
+
from codemagic.apple.resources import ProfileType
|
|
18
|
+
from codemagic.apple.resources import ResourceId
|
|
19
|
+
from codemagic.cli import Colors
|
|
20
|
+
|
|
21
|
+
from ..abstract_base_action import AbstractBaseAction
|
|
22
|
+
from ..action_group import AppStoreConnectActionGroup
|
|
23
|
+
from ..arguments import BundleIdArgument
|
|
24
|
+
from ..arguments import CommonArgument
|
|
25
|
+
from ..arguments import ProfileArgument
|
|
26
|
+
from ..errors import AppStoreConnectError
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class BundleIdsActionGroup(AbstractBaseAction, metaclass=ABCMeta):
|
|
30
|
+
@cli.action(
|
|
31
|
+
"create",
|
|
32
|
+
BundleIdArgument.BUNDLE_ID_IDENTIFIER,
|
|
33
|
+
BundleIdArgument.BUNDLE_ID_NAME,
|
|
34
|
+
BundleIdArgument.PLATFORM,
|
|
35
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
36
|
+
deprecation_info=cli.ActionDeprecationInfo("create-bundle-id", "0.49.0"),
|
|
37
|
+
)
|
|
38
|
+
def create_bundle_id(
|
|
39
|
+
self,
|
|
40
|
+
bundle_id_identifier: str,
|
|
41
|
+
bundle_id_name: Optional[str] = None,
|
|
42
|
+
platform: BundleIdPlatform = BundleIdPlatform.IOS,
|
|
43
|
+
should_print: bool = True,
|
|
44
|
+
) -> BundleId:
|
|
45
|
+
"""
|
|
46
|
+
Create Bundle ID in Apple Developer portal for specifier identifier
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
if bundle_id_name is None:
|
|
50
|
+
bundle_id_name = bundle_id_identifier.replace(".", " ")
|
|
51
|
+
|
|
52
|
+
create_params = dict(identifier=bundle_id_identifier, name=bundle_id_name, platform=platform)
|
|
53
|
+
return self._create_resource(self.api_client.bundle_ids, should_print, **create_params)
|
|
54
|
+
|
|
55
|
+
@cli.action(
|
|
56
|
+
"get",
|
|
57
|
+
BundleIdArgument.BUNDLE_ID_RESOURCE_ID,
|
|
58
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
59
|
+
deprecation_info=cli.ActionDeprecationInfo("get-bundle-id", "0.49.0"),
|
|
60
|
+
)
|
|
61
|
+
def get_bundle_id(
|
|
62
|
+
self,
|
|
63
|
+
bundle_id_resource_id: ResourceId,
|
|
64
|
+
should_print: bool = True,
|
|
65
|
+
) -> BundleId:
|
|
66
|
+
"""
|
|
67
|
+
Get specified Bundle ID from Apple Developer portal
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
return self._get_resource(bundle_id_resource_id, self.api_client.bundle_ids, should_print)
|
|
71
|
+
|
|
72
|
+
@cli.action(
|
|
73
|
+
"list",
|
|
74
|
+
BundleIdArgument.BUNDLE_ID_IDENTIFIER_OPTIONAL,
|
|
75
|
+
BundleIdArgument.BUNDLE_ID_NAME,
|
|
76
|
+
BundleIdArgument.PLATFORM_OPTIONAL,
|
|
77
|
+
BundleIdArgument.IDENTIFIER_STRICT_MATCH,
|
|
78
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
79
|
+
deprecation_info=cli.ActionDeprecationInfo("list-bundle-ids", "0.49.0"),
|
|
80
|
+
)
|
|
81
|
+
def list_bundle_ids(
|
|
82
|
+
self,
|
|
83
|
+
bundle_id_identifier: Optional[str] = None,
|
|
84
|
+
bundle_id_name: Optional[str] = None,
|
|
85
|
+
platform: Optional[BundleIdPlatform] = None,
|
|
86
|
+
bundle_id_identifier_strict_match: bool = False,
|
|
87
|
+
should_print: bool = True,
|
|
88
|
+
) -> List[BundleId]:
|
|
89
|
+
"""
|
|
90
|
+
List Bundle IDs from Apple Developer portal matching given constraints
|
|
91
|
+
"""
|
|
92
|
+
|
|
93
|
+
def predicate(bundle_id):
|
|
94
|
+
return bundle_id.attributes.identifier == bundle_id_identifier
|
|
95
|
+
|
|
96
|
+
bundle_id_filter = self.api_client.bundle_ids.Filter(
|
|
97
|
+
identifier=bundle_id_identifier,
|
|
98
|
+
name=bundle_id_name,
|
|
99
|
+
platform=platform,
|
|
100
|
+
)
|
|
101
|
+
bundle_ids = self._list_resources(
|
|
102
|
+
bundle_id_filter,
|
|
103
|
+
self.api_client.bundle_ids,
|
|
104
|
+
should_print,
|
|
105
|
+
filter_predicate=predicate if bundle_id_identifier_strict_match else None,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
return bundle_ids
|
|
109
|
+
|
|
110
|
+
@cli.action(
|
|
111
|
+
"delete",
|
|
112
|
+
BundleIdArgument.BUNDLE_ID_RESOURCE_ID,
|
|
113
|
+
CommonArgument.IGNORE_NOT_FOUND,
|
|
114
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
115
|
+
deprecation_info=cli.ActionDeprecationInfo("delete-bundle-id", "0.49.0"),
|
|
116
|
+
)
|
|
117
|
+
def delete_bundle_id(
|
|
118
|
+
self,
|
|
119
|
+
bundle_id_resource_id: ResourceId,
|
|
120
|
+
ignore_not_found: bool = False,
|
|
121
|
+
) -> None:
|
|
122
|
+
"""
|
|
123
|
+
Delete specified Bundle ID from Apple Developer portal
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
self._delete_resource(self.api_client.bundle_ids, bundle_id_resource_id, ignore_not_found)
|
|
127
|
+
|
|
128
|
+
@cli.action(
|
|
129
|
+
"profiles",
|
|
130
|
+
BundleIdArgument.BUNDLE_ID_RESOURCE_IDS,
|
|
131
|
+
ProfileArgument.PROFILE_TYPE_OPTIONAL,
|
|
132
|
+
ProfileArgument.PROFILE_STATE_OPTIONAL,
|
|
133
|
+
ProfileArgument.PROFILE_NAME,
|
|
134
|
+
CommonArgument.SAVE,
|
|
135
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
136
|
+
deprecation_info=cli.ActionDeprecationInfo("list-bundle-id-profiles", "0.49.0"),
|
|
137
|
+
)
|
|
138
|
+
def list_bundle_id_profiles(
|
|
139
|
+
self,
|
|
140
|
+
bundle_id_resource_ids: Sequence[ResourceId],
|
|
141
|
+
profile_type: Optional[ProfileType] = None,
|
|
142
|
+
profile_state: Optional[ProfileState] = None,
|
|
143
|
+
profile_name: Optional[str] = None,
|
|
144
|
+
save: bool = False,
|
|
145
|
+
should_print: bool = True,
|
|
146
|
+
) -> List[Profile]:
|
|
147
|
+
"""
|
|
148
|
+
List provisioning profiles from Apple Developer Portal for specified Bundle IDs
|
|
149
|
+
"""
|
|
150
|
+
|
|
151
|
+
profiles_filter = self.api_client.profiles.Filter(
|
|
152
|
+
profile_type=profile_type,
|
|
153
|
+
profile_state=profile_state,
|
|
154
|
+
name=profile_name,
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
profiles = []
|
|
158
|
+
for resource_id in set(bundle_id_resource_ids):
|
|
159
|
+
bundle_id_profiles = self._list_related_resources(
|
|
160
|
+
resource_id,
|
|
161
|
+
BundleId,
|
|
162
|
+
Profile,
|
|
163
|
+
self.api_client.bundle_ids.list_profiles,
|
|
164
|
+
profiles_filter,
|
|
165
|
+
should_print,
|
|
166
|
+
)
|
|
167
|
+
profiles.extend(bundle_id_profiles)
|
|
168
|
+
|
|
169
|
+
if save:
|
|
170
|
+
self._save_profiles(profiles)
|
|
171
|
+
return profiles
|
|
172
|
+
|
|
173
|
+
@cli.action(
|
|
174
|
+
"capabilities",
|
|
175
|
+
BundleIdArgument.BUNDLE_ID_RESOURCE_ID,
|
|
176
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
177
|
+
)
|
|
178
|
+
def list_bundle_id_capabilities(
|
|
179
|
+
self,
|
|
180
|
+
bundle_id_resource_id: ResourceId,
|
|
181
|
+
should_print: bool = True,
|
|
182
|
+
) -> List[BundleIdCapability]:
|
|
183
|
+
"""
|
|
184
|
+
Check the capabilities that are enabled for identifier
|
|
185
|
+
"""
|
|
186
|
+
return self._list_related_resources(
|
|
187
|
+
bundle_id_resource_id,
|
|
188
|
+
BundleId,
|
|
189
|
+
BundleIdCapability,
|
|
190
|
+
self.api_client.bundle_ids.list_capabilities,
|
|
191
|
+
None,
|
|
192
|
+
should_print,
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
@cli.action(
|
|
196
|
+
"enable-capabilities",
|
|
197
|
+
BundleIdArgument.BUNDLE_ID_RESOURCE_ID,
|
|
198
|
+
BundleIdArgument.CAPABILITY_TYPES,
|
|
199
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
200
|
+
)
|
|
201
|
+
def enable_bundle_id_capabilities(
|
|
202
|
+
self,
|
|
203
|
+
bundle_id_resource_id: ResourceId,
|
|
204
|
+
capabilities: Sequence[Union[CapabilityType, str]],
|
|
205
|
+
):
|
|
206
|
+
"""
|
|
207
|
+
Enable capabilities for identifier
|
|
208
|
+
"""
|
|
209
|
+
capability_types = self._resolve_capability_types(capabilities)
|
|
210
|
+
bundle_id = self._get_bundle_id(bundle_id_resource_id)
|
|
211
|
+
self.logger.info(Colors.BLUE(f'Enable {BundleIdCapability.s} for identifier "{bundle_id.attributes.name}"'))
|
|
212
|
+
|
|
213
|
+
for capability_type in capability_types:
|
|
214
|
+
self._enable_capability(bundle_id, capability_type)
|
|
215
|
+
|
|
216
|
+
success_message = f'Successfully enabled {BundleIdCapability.s} for identifier "{bundle_id.attributes.name}"'
|
|
217
|
+
self.logger.info(Colors.GREEN(success_message))
|
|
218
|
+
|
|
219
|
+
@cli.action(
|
|
220
|
+
"disable-capabilities",
|
|
221
|
+
BundleIdArgument.BUNDLE_ID_RESOURCE_ID,
|
|
222
|
+
BundleIdArgument.CAPABILITY_TYPES,
|
|
223
|
+
action_group=AppStoreConnectActionGroup.BUNDLE_IDS,
|
|
224
|
+
)
|
|
225
|
+
def disable_bundle_id_capabilities(
|
|
226
|
+
self,
|
|
227
|
+
bundle_id_resource_id: ResourceId,
|
|
228
|
+
capabilities: Sequence[Union[CapabilityType, str]],
|
|
229
|
+
):
|
|
230
|
+
"""
|
|
231
|
+
Disable identifier capabilities
|
|
232
|
+
"""
|
|
233
|
+
capability_types = self._resolve_capability_types(capabilities)
|
|
234
|
+
bundle_id = self._get_bundle_id(bundle_id_resource_id)
|
|
235
|
+
self.logger.info(Colors.BLUE(f'Disable {BundleIdCapability.s} for identifier "{bundle_id.attributes.name}"'))
|
|
236
|
+
|
|
237
|
+
enabled_capabilities = self._get_capabilities(bundle_id, capability_types)
|
|
238
|
+
if not enabled_capabilities:
|
|
239
|
+
skip_message = (
|
|
240
|
+
f"None of the specified {BundleIdCapability.s} are enabled for identifier "
|
|
241
|
+
f'"{bundle_id.attributes.name}". Skip disabling.'
|
|
242
|
+
)
|
|
243
|
+
self.logger.info(Colors.YELLOW(skip_message))
|
|
244
|
+
return
|
|
245
|
+
|
|
246
|
+
for capability in enabled_capabilities:
|
|
247
|
+
self._disable_capability(bundle_id, capability)
|
|
248
|
+
|
|
249
|
+
success_message = f'Successfully disabled {BundleIdCapability.s} for identifier "{bundle_id.attributes.name}"'
|
|
250
|
+
self.logger.info(Colors.GREEN(success_message))
|
|
251
|
+
|
|
252
|
+
def _get_bundle_id(self, bundle_id_resource_id: ResourceId) -> BundleId:
|
|
253
|
+
try:
|
|
254
|
+
return self.api_client.bundle_ids.read(bundle_id_resource_id)
|
|
255
|
+
except AppStoreConnectApiError as api_error:
|
|
256
|
+
raise AppStoreConnectError(
|
|
257
|
+
str(api_error),
|
|
258
|
+
api_error_response=api_error.error_response,
|
|
259
|
+
) from api_error
|
|
260
|
+
|
|
261
|
+
@classmethod
|
|
262
|
+
def _resolve_capability_types(
|
|
263
|
+
cls,
|
|
264
|
+
capabilities: Optional[Sequence[Union[CapabilityType, str]]],
|
|
265
|
+
) -> List[CapabilityType]:
|
|
266
|
+
if not capabilities:
|
|
267
|
+
return []
|
|
268
|
+
return [c if isinstance(c, CapabilityType) else CapabilityType.from_display_name(c) for c in capabilities]
|
|
269
|
+
|
|
270
|
+
def _get_capabilities(
|
|
271
|
+
self,
|
|
272
|
+
bundle_id: BundleId,
|
|
273
|
+
capability_types: Sequence[CapabilityType],
|
|
274
|
+
) -> List[BundleIdCapability]:
|
|
275
|
+
try:
|
|
276
|
+
capabilities = self.api_client.bundle_ids.list_capabilities(bundle_id)
|
|
277
|
+
except AppStoreConnectApiError as api_error:
|
|
278
|
+
raise AppStoreConnectError(
|
|
279
|
+
str(api_error),
|
|
280
|
+
api_error_response=api_error.error_response,
|
|
281
|
+
) from api_error
|
|
282
|
+
return [c for c in capabilities if c.attributes.capabilityType in capability_types]
|
|
283
|
+
|
|
284
|
+
def _enable_capability(self, bundle_id: BundleId, capability_type: CapabilityType) -> BundleIdCapability:
|
|
285
|
+
try:
|
|
286
|
+
capability = self.api_client.bundle_id_capabilities.enable(
|
|
287
|
+
capability_type,
|
|
288
|
+
bundle_id=bundle_id.id,
|
|
289
|
+
)
|
|
290
|
+
except AppStoreConnectApiError as api_error:
|
|
291
|
+
raise AppStoreConnectError(
|
|
292
|
+
(
|
|
293
|
+
f"Failed to enable capability {capability_type.value} for bundle identifier "
|
|
294
|
+
f'"{bundle_id.attributes.name}" ({bundle_id.id}): {api_error}'
|
|
295
|
+
),
|
|
296
|
+
api_error_response=api_error.error_response,
|
|
297
|
+
) from api_error
|
|
298
|
+
|
|
299
|
+
self.echo(Colors.BLUE(f"-- Enabled {capability.__class__} --"))
|
|
300
|
+
self.echo(f"{capability}")
|
|
301
|
+
return capability
|
|
302
|
+
|
|
303
|
+
def _disable_capability(self, bundle_id: BundleId, capability: BundleIdCapability):
|
|
304
|
+
try:
|
|
305
|
+
self.api_client.bundle_id_capabilities.disable(capability)
|
|
306
|
+
except AppStoreConnectApiError as api_error:
|
|
307
|
+
raise AppStoreConnectError(
|
|
308
|
+
(
|
|
309
|
+
f"Failed to disable capability {capability.attributes.capabilityType.value} "
|
|
310
|
+
f"for bundle identifier "
|
|
311
|
+
f'"{bundle_id.attributes.name}" ({bundle_id.id}): {api_error}'
|
|
312
|
+
),
|
|
313
|
+
api_error_response=api_error.error_response,
|
|
314
|
+
) from api_error
|
|
315
|
+
|
|
316
|
+
self.echo(Colors.BLUE(f"-- Disabled {capability.__class__} --"))
|
|
317
|
+
self.echo(f"{capability}")
|
|
@@ -23,6 +23,7 @@ from codemagic.apple.resources import AppStoreState
|
|
|
23
23
|
from codemagic.apple.resources import BetaReviewState
|
|
24
24
|
from codemagic.apple.resources import BuildProcessingState
|
|
25
25
|
from codemagic.apple.resources import BundleIdPlatform
|
|
26
|
+
from codemagic.apple.resources import CapabilityType
|
|
26
27
|
from codemagic.apple.resources import CertificateType
|
|
27
28
|
from codemagic.apple.resources import DeviceStatus
|
|
28
29
|
from codemagic.apple.resources import Locale
|
|
@@ -1229,6 +1230,17 @@ class BundleIdArgument(cli.Argument):
|
|
|
1229
1230
|
"metavar": "bundle-identifier-id",
|
|
1230
1231
|
},
|
|
1231
1232
|
)
|
|
1233
|
+
CAPABILITY_TYPES = cli.ArgumentProperties(
|
|
1234
|
+
key="capabilities",
|
|
1235
|
+
flags=("--capability",),
|
|
1236
|
+
type=str,
|
|
1237
|
+
description="Name of the identifier capability",
|
|
1238
|
+
argparse_kwargs={
|
|
1239
|
+
"required": True,
|
|
1240
|
+
"choices": [ct.display_name for ct in CapabilityType],
|
|
1241
|
+
"nargs": "+",
|
|
1242
|
+
},
|
|
1243
|
+
)
|
|
1232
1244
|
PLATFORM = cli.ArgumentProperties(
|
|
1233
1245
|
key="platform",
|
|
1234
1246
|
flags=("--platform",),
|
{codemagic_cli_tools-0.49.0 → codemagic_cli_tools-0.50.1}/src/codemagic/tools/xcode_project.py
RENAMED
|
@@ -36,6 +36,7 @@ from codemagic.models.simulator import Runtime
|
|
|
36
36
|
from codemagic.models.simulator import Simulator
|
|
37
37
|
from codemagic.models.xctests import XcResultCollector
|
|
38
38
|
from codemagic.models.xctests import XcResultConverter
|
|
39
|
+
from codemagic.models.xctests import XcResultToolError
|
|
39
40
|
|
|
40
41
|
from ._xcode_project.arguments import CustomExportOptions
|
|
41
42
|
from ._xcode_project.arguments import ExportIpaArgument
|
|
@@ -501,21 +502,25 @@ class XcodeProject(cli.CliApp, PathFinderMixin):
|
|
|
501
502
|
if not xcresult_collector.get_collected_results():
|
|
502
503
|
raise XcodeProjectException("Did not find any test results")
|
|
503
504
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
f"{
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
505
|
+
try:
|
|
506
|
+
test_suites, xcresult = self._get_test_suites(
|
|
507
|
+
xcresult_collector,
|
|
508
|
+
show_found_result=True,
|
|
509
|
+
save_xcresult_dir=output_dir,
|
|
510
|
+
)
|
|
511
|
+
except XcResultToolError as e:
|
|
512
|
+
test_suites = None
|
|
513
|
+
self.logger.error(Colors.RED(f"Parsing test results failed\n{e}\n{e.stderr}"))
|
|
514
|
+
else:
|
|
515
|
+
message = (
|
|
516
|
+
f"Executed {test_suites.tests} tests with "
|
|
517
|
+
f"{test_suites.failures} failures and "
|
|
518
|
+
f"{test_suites.errors} errors in "
|
|
519
|
+
f"{test_suites.time:.2f} seconds.\n"
|
|
520
|
+
)
|
|
521
|
+
self.echo(Colors.BLUE(message))
|
|
522
|
+
TestSuitePrinter(self.echo).print_test_suites(test_suites)
|
|
523
|
+
self._save_test_suite(xcresult, test_suites, output_dir, output_extension)
|
|
519
524
|
|
|
520
525
|
if not graceful_exit:
|
|
521
526
|
if testing_failed or (test_suites and test_suites.has_failed_tests()):
|
|
@@ -539,7 +544,12 @@ class XcodeProject(cli.CliApp, PathFinderMixin):
|
|
|
539
544
|
if not xcresults:
|
|
540
545
|
raise XcodeProjectException("Did not find any Xcode test results for given patterns")
|
|
541
546
|
|
|
542
|
-
|
|
547
|
+
try:
|
|
548
|
+
test_suites, xcresult = self._get_test_suites(xcresult_collector, show_found_result=True)
|
|
549
|
+
except XcResultToolError as e:
|
|
550
|
+
self.logger.error(Colors.RED(f"{e}\n{e.stderr}"))
|
|
551
|
+
raise XcodeProjectException("Parsing test results failed") from e
|
|
552
|
+
|
|
543
553
|
TestSuitePrinter(self.echo).print_test_suites(test_suites)
|
|
544
554
|
|
|
545
555
|
@cli.action(
|
|
@@ -564,7 +574,12 @@ class XcodeProject(cli.CliApp, PathFinderMixin):
|
|
|
564
574
|
if not xcresults:
|
|
565
575
|
raise XcodeProjectException("Did not find any Xcode test results for given patterns")
|
|
566
576
|
|
|
567
|
-
|
|
577
|
+
try:
|
|
578
|
+
test_suites, xcresult = self._get_test_suites(xcresult_collector, show_found_result=True)
|
|
579
|
+
except XcResultToolError as e:
|
|
580
|
+
self.logger.error(Colors.RED(f"{e}\n{e.stderr}"))
|
|
581
|
+
raise XcodeProjectException("Parsing test results failed") from e
|
|
582
|
+
|
|
568
583
|
output_dir.mkdir(parents=True, exist_ok=True)
|
|
569
584
|
self._save_test_suite(xcresult, test_suites, output_dir, output_extension)
|
|
570
585
|
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from codemagic.apple.resources import CapabilityType
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@pytest.mark.parametrize(
|
|
6
|
+
("capability_type", "expected_display_name"),
|
|
7
|
+
(
|
|
8
|
+
(CapabilityType.ACCESS_WIFI_INFORMATION, "Access Wi-Fi Information"),
|
|
9
|
+
(CapabilityType.APPLE_ID_AUTH, "Sign In with Apple"),
|
|
10
|
+
(CapabilityType.APPLE_PAY, "Apple Pay"),
|
|
11
|
+
(CapabilityType.APP_GROUPS, "App Groups"),
|
|
12
|
+
(CapabilityType.ASSOCIATED_DOMAINS, "Associated Domains"),
|
|
13
|
+
(CapabilityType.AUTOFILL_CREDENTIAL_PROVIDER, "Autofill Credential Provider"),
|
|
14
|
+
(CapabilityType.CLASSKIT, "ClassKit"),
|
|
15
|
+
(CapabilityType.COREMEDIA_HLS_LOW_LATENCY, "Low Latency HLS"),
|
|
16
|
+
(CapabilityType.DATA_PROTECTION, "Data Protection"),
|
|
17
|
+
(CapabilityType.GAME_CENTER, "Game Center"),
|
|
18
|
+
(CapabilityType.HEALTHKIT, "HealthKit"),
|
|
19
|
+
(CapabilityType.HOMEKIT, "HomeKit"),
|
|
20
|
+
(CapabilityType.HOT_SPOT, "Hotspot"),
|
|
21
|
+
(CapabilityType.ICLOUD, "iCloud"),
|
|
22
|
+
(CapabilityType.INTER_APP_AUDIO, "Inter-App Audio"),
|
|
23
|
+
(CapabilityType.IN_APP_PURCHASE, "In-App Purchase"),
|
|
24
|
+
(CapabilityType.MAPS, "Maps"),
|
|
25
|
+
(CapabilityType.MULTIPATH, "Multipath"),
|
|
26
|
+
(CapabilityType.NETWORK_CUSTOM_PROTOCOL, "Custom Network Protocol"),
|
|
27
|
+
(CapabilityType.NETWORK_EXTENSIONS, "Network Extensions"),
|
|
28
|
+
(CapabilityType.NFC_TAG_READING, "NFC Tag Reading"),
|
|
29
|
+
(CapabilityType.PERSONAL_VPN, "Personal VPN"),
|
|
30
|
+
(CapabilityType.PUSH_NOTIFICATIONS, "Push Notifications"),
|
|
31
|
+
(CapabilityType.SIRIKIT, "SiriKit"),
|
|
32
|
+
(CapabilityType.SYSTEM_EXTENSION_INSTALL, "System Extension"),
|
|
33
|
+
(CapabilityType.USER_MANAGEMENT, "User Management"),
|
|
34
|
+
(CapabilityType.WALLET, "Wallet"),
|
|
35
|
+
(CapabilityType.WIRELESS_ACCESSORY_CONFIGURATION, "Wireless Accessory Configuration"),
|
|
36
|
+
),
|
|
37
|
+
)
|
|
38
|
+
def test_display_name(capability_type: CapabilityType, expected_display_name: str):
|
|
39
|
+
assert capability_type.display_name == expected_display_name
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@pytest.mark.parametrize(
|
|
43
|
+
("display_name", "expected_capability_type"),
|
|
44
|
+
(
|
|
45
|
+
("Access Wi-Fi Information", CapabilityType.ACCESS_WIFI_INFORMATION),
|
|
46
|
+
("Sign In with Apple", CapabilityType.APPLE_ID_AUTH),
|
|
47
|
+
("Apple Pay", CapabilityType.APPLE_PAY),
|
|
48
|
+
("App Groups", CapabilityType.APP_GROUPS),
|
|
49
|
+
("Associated Domains", CapabilityType.ASSOCIATED_DOMAINS),
|
|
50
|
+
("Autofill Credential Provider", CapabilityType.AUTOFILL_CREDENTIAL_PROVIDER),
|
|
51
|
+
("ClassKit", CapabilityType.CLASSKIT),
|
|
52
|
+
("Low Latency HLS", CapabilityType.COREMEDIA_HLS_LOW_LATENCY),
|
|
53
|
+
("Data Protection", CapabilityType.DATA_PROTECTION),
|
|
54
|
+
("Game Center", CapabilityType.GAME_CENTER),
|
|
55
|
+
("HealthKit", CapabilityType.HEALTHKIT),
|
|
56
|
+
("HomeKit", CapabilityType.HOMEKIT),
|
|
57
|
+
("Hotspot", CapabilityType.HOT_SPOT),
|
|
58
|
+
("iCloud", CapabilityType.ICLOUD),
|
|
59
|
+
("Inter-App Audio", CapabilityType.INTER_APP_AUDIO),
|
|
60
|
+
("In-App Purchase", CapabilityType.IN_APP_PURCHASE),
|
|
61
|
+
("Maps", CapabilityType.MAPS),
|
|
62
|
+
("Multipath", CapabilityType.MULTIPATH),
|
|
63
|
+
("Custom Network Protocol", CapabilityType.NETWORK_CUSTOM_PROTOCOL),
|
|
64
|
+
("Network Extensions", CapabilityType.NETWORK_EXTENSIONS),
|
|
65
|
+
("NFC Tag Reading", CapabilityType.NFC_TAG_READING),
|
|
66
|
+
("Personal VPN", CapabilityType.PERSONAL_VPN),
|
|
67
|
+
("Push Notifications", CapabilityType.PUSH_NOTIFICATIONS),
|
|
68
|
+
("SiriKit", CapabilityType.SIRIKIT),
|
|
69
|
+
("System Extension", CapabilityType.SYSTEM_EXTENSION_INSTALL),
|
|
70
|
+
("User Management", CapabilityType.USER_MANAGEMENT),
|
|
71
|
+
("Wallet", CapabilityType.WALLET),
|
|
72
|
+
("Wireless Accessory Configuration", CapabilityType.WIRELESS_ACCESSORY_CONFIGURATION),
|
|
73
|
+
),
|
|
74
|
+
)
|
|
75
|
+
def test_from_display_name(display_name: str, expected_capability_type: CapabilityType):
|
|
76
|
+
capability_type = CapabilityType.from_display_name(display_name)
|
|
77
|
+
assert capability_type is expected_capability_type
|