From c072141886787666d4e7303903f86c55aaabb52d Mon Sep 17 00:00:00 2001 From: chippmann Date: Wed, 21 Aug 2024 16:42:16 +0200 Subject: [PATCH] Add jvm desktop export tests --- .github/workflows/test_linux_exports.yml | 90 +++ .github/workflows/test_macos_exports.yml | 98 +++ .github/workflows/test_windows_exports.yml | 90 +++ .github/workflows/trigger_dev.yml | 11 + .github/workflows/trigger_on_pull_request.yml | 33 + harness/tests/build.gradle.kts | 111 ++- harness/tests/export_presets.cfg | 710 +++++++++++++++++- harness/tests/project.godot | 2 +- 8 files changed, 1089 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/test_linux_exports.yml create mode 100644 .github/workflows/test_macos_exports.yml create mode 100644 .github/workflows/test_windows_exports.yml diff --git a/.github/workflows/test_linux_exports.yml b/.github/workflows/test_linux_exports.yml new file mode 100644 index 0000000000..e2e64b76ba --- /dev/null +++ b/.github/workflows/test_linux_exports.yml @@ -0,0 +1,90 @@ +name: 🐧 Linux Exports Tests +on: + workflow_call: + inputs: + godot-version: + type: string + jvm-version: + type: string + +concurrency: + group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux_exports_tests + cancel-in-progress: true + +jobs: + test-linux-exports: + runs-on: ubuntu-20.04 + name: ${{ matrix.name }} + strategy: + matrix: + include: + - name: dev tests + target: dev + bootstrap-target: debug + - name: release tests + target: release + bootstrap-target: release + + steps: + - name: Clone Godot Engine + uses: actions/checkout@v4 + with: + repository: godotengine/godot + ref: ${{ inputs.godot-version }} + + - name: Clone Godot JVM module. + uses: actions/checkout@v4 + with: + path: modules/kotlin_jvm + + - uses: actions/setup-java@v4 + with: + distribution: adopt-hotspot + java-version: ${{ inputs.jvm-version }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + cache-read-only: ${{ github.ref != 'refs/heads/master' }} + + - name: Download linux editor ${{ matrix.target }} + uses: actions/download-artifact@v4 + with: + name: editor_${{ matrix.target }}_linux_x86_64 + path: './bin' + + - name: Download godot-bootstrap ${{ matrix.bootstrap-target }} + uses: actions/download-artifact@v4 + with: + name: jvm_godot-bootstrap_${{ matrix.bootstrap-target }} + path: './bin' + + - name: Download linux x86_64 ${{ matrix.bootstrap-target }} export template + uses: actions/download-artifact@v4 + with: + name: export_template_${{ matrix.bootstrap-target }}_linux_x86_64 + path: "./" + + - name: Prepare export + run: | + mkdir -p modules/kotlin_jvm/harness/tests/export + mv godot.linuxbsd.template_${{ matrix.bootstrap-target }}.x86_64 modules/kotlin_jvm/harness/tests/export/godot.linuxbsd.template_${{ matrix.bootstrap-target }}.x86_64 + + - name: Build tests project + run: | + modules/kotlin_jvm/harness/tests/gradlew -p modules/kotlin_jvm/harness/tests/ build -P${{ matrix.bootstrap-target }} + + - name: Create JRE + run: | + jlink --add-modules java.base,java.logging --output jre-amd64-linux + + - name: Export tests project + run: | + cd modules/kotlin_jvm/harness/tests/ + ../../../../editor_${{ matrix.target }}_linux_x86_64 --headless --export-release tests_linux + + - name: Run Tests + run: | + cd modules/kotlin_jvm/harness/tests/ + ./gradlew runExportedGutTests + timeout-minutes: 30 \ No newline at end of file diff --git a/.github/workflows/test_macos_exports.yml b/.github/workflows/test_macos_exports.yml new file mode 100644 index 0000000000..4a147fc0e0 --- /dev/null +++ b/.github/workflows/test_macos_exports.yml @@ -0,0 +1,98 @@ +name: 🍎 MacOS Exports Tests +on: + workflow_call: + inputs: + godot-version: + type: string + jvm-version: + type: string + +concurrency: + group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macos_exports_tests + cancel-in-progress: true + +jobs: + test-macos-exports: + runs-on: macos-latest + name: ${{ matrix.name }} + strategy: + matrix: + include: + - name: dev tests + target: dev + bootstrap-target: debug + - name: release tests + target: release + bootstrap-target: release + + steps: + - name: Clone Godot Engine + uses: actions/checkout@v4 + with: + repository: godotengine/godot + ref: ${{ inputs.godot-version }} + + - name: Clone Godot JVM module. + uses: actions/checkout@v4 + with: + path: modules/kotlin_jvm + + - uses: actions/setup-java@v4 + with: + distribution: adopt-hotspot + java-version: ${{ inputs.jvm-version }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + cache-read-only: ${{ github.ref != 'refs/heads/master' }} + + - name: Download macos editor ${{ matrix.target }} + uses: actions/download-artifact@v4 + with: + name: editor_${{ matrix.target }}_macos_universal + path: './bin' + + - name: Download godot-bootstrap ${{ matrix.bootstrap-target }} + uses: actions/download-artifact@v4 + with: + name: jvm_godot-bootstrap_${{ matrix.bootstrap-target }} + path: './bin' + + - name: Download macos export template + uses: actions/download-artifact@v4 + with: + name: export_template_all_macos + path: "./" + + - name: Prepare export + run: | + mkdir -p modules/kotlin_jvm/harness/tests/export + mv export_template_all_macos.zip modules/kotlin_jvm/harness/tests/export/export_template_all_macos.zip + + - name: Build tests project + run: | + modules/kotlin_jvm/harness/tests/gradlew -p modules/kotlin_jvm/harness/tests/ build -P${{ matrix.bootstrap-target }} + + - name: Create JRE + run: | + jlink --add-modules java.base,java.logging --output jre-arm64-macos + mkdir jre-amd64-macos #create a fake jre dir for amd64 so the export is happy. The test will run on arm anyways + + - name: Export tests project + run: | + cd modules/kotlin_jvm/harness/tests/ + ../../../../editor_${{ matrix.target }}_macos_universal --headless --export-release tests_macos + + - name: Extract app from dmg + run: | + cd modules/kotlin_jvm/harness/tests/export + hdiutil attach tests.dmg + cp -a /Volumes/tests/Godot\ Kotlin\ Tests.app Godot\ Kotlin\ Tests.app + hdiutil detach /Volumes/tests + + - name: Run Tests + run: | + cd modules/kotlin_jvm/harness/tests/ + ./gradlew runExportedGutTests + timeout-minutes: 30 \ No newline at end of file diff --git a/.github/workflows/test_windows_exports.yml b/.github/workflows/test_windows_exports.yml new file mode 100644 index 0000000000..036dd1ff40 --- /dev/null +++ b/.github/workflows/test_windows_exports.yml @@ -0,0 +1,90 @@ +name: 🪟 Windows Exports Tests +on: + workflow_call: + inputs: + godot-version: + type: string + jvm-version: + type: string + +concurrency: + group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-windows_exports_tests + cancel-in-progress: true + +jobs: + test-windows-exports: + runs-on: windows-latest + name: ${{ matrix.name }} + strategy: + matrix: + include: + - name: dev tests + target: dev + bootstrap-target: debug + - name: release tests + target: release + bootstrap-target: release + + steps: + - name: Clone Godot Engine + uses: actions/checkout@v4 + with: + repository: godotengine/godot + ref: ${{ inputs.godot-version }} + + - name: Clone Godot JVM module. + uses: actions/checkout@v4 + with: + path: modules/kotlin_jvm + + - uses: actions/setup-java@v4 + with: + distribution: adopt-hotspot + java-version: ${{ inputs.jvm-version }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + cache-read-only: ${{ github.ref != 'refs/heads/master' }} + + - name: Download windows editor ${{ matrix.target }} + uses: actions/download-artifact@v4 + with: + name: editor_${{ matrix.target }}_windows_x86_64 + path: './bin' + + - name: Download godot-bootstrap ${{ matrix.bootstrap-target }} + uses: actions/download-artifact@v4 + with: + name: jvm_godot-bootstrap_${{ matrix.bootstrap-target }} + path: './bin' + + - name: Download windows x86_64 ${{ matrix.bootstrap-target }} export template + uses: actions/download-artifact@v4 + with: + name: export_template_${{ matrix.bootstrap-target }}_windows_x86_64 + path: "./" + + - name: Prepare export + run: | + mkdir -p modules/kotlin_jvm/harness/tests/export + mv godot.windows.template_${{ matrix.bootstrap-target }}.x86_64 modules/kotlin_jvm/harness/tests/export/godot.windows.template_${{ matrix.bootstrap-target }}.x86_64 + + - name: Build tests project + run: | + modules/kotlin_jvm/harness/tests/gradlew -p modules/kotlin_jvm/harness/tests/ build -P${{ matrix.bootstrap-target }} + + - name: Create JRE + run: | + jlink --add-modules java.base,java.logging --output jre-amd64-windows + + - name: Export tests project + run: | + cd modules/kotlin_jvm/harness/tests/ + ../../../../editor_${{ matrix.target }}_windows_x86_64 --headless --export-release tests_windows + + - name: Run Tests + run: | + cd modules/kotlin_jvm/harness/tests/ + ./gradlew runExportedGutTests + timeout-minutes: 30 \ No newline at end of file diff --git a/.github/workflows/trigger_dev.yml b/.github/workflows/trigger_dev.yml index a5a3c046e6..0d44628547 100644 --- a/.github/workflows/trigger_dev.yml +++ b/.github/workflows/trigger_dev.yml @@ -89,6 +89,17 @@ jobs: test-linux: name: 🐧 Test Linux uses: ./.github/workflows/test_linux.yml + needs: + - setup-build-variables + - build-jvm + - build-linux + with: + godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} + jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} + + test-linux-exports: + name: 🐧 Test Linux Exports + uses: ./.github/workflows/test_linux_exports.yml needs: - setup-build-variables - build-jvm diff --git a/.github/workflows/trigger_on_pull_request.yml b/.github/workflows/trigger_on_pull_request.yml index 16216d52c8..3372f81099 100644 --- a/.github/workflows/trigger_on_pull_request.yml +++ b/.github/workflows/trigger_on_pull_request.yml @@ -157,3 +157,36 @@ jobs: with: godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} + + test-linux-exports: + name: 🐧 Test Linux Exports + uses: ./.github/workflows/test_linux_exports.yml + needs: + - setup-build-variables + - build-jvm + - build-linux + with: + godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} + jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} + + test-macos-exports: + name: 🍎 Test Macos + uses: ./.github/workflows/test_macos_exports.yml + needs: + - setup-build-variables + - build-jvm + - assemble-macos # we need the universal binary + with: + godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} + jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} + + test-windows-exports: + name: 🪟 Test Windows + uses: ./.github/workflows/test_windows_exports.yml + needs: + - setup-build-variables + - build-jvm + - build-windows + with: + godot-version: ${{ needs.setup-build-variables.outputs['godot-version'] }} + jvm-version: ${{ needs.setup-build-variables.outputs['jvm-version'] }} diff --git a/harness/tests/build.gradle.kts b/harness/tests/build.gradle.kts index 98bd2b3c72..b33839cea5 100644 --- a/harness/tests/build.gradle.kts +++ b/harness/tests/build.gradle.kts @@ -104,53 +104,84 @@ tasks { ?.absolutePath ?: throw Exception("Could not find editor executable") - var didAllTestsPass = false - var isJvmClosed = false - val testOutputFile = File("$projectDir/test_output.txt") - standardOutput = testOutputFile.outputStream() - errorOutput = testOutputFile.outputStream() - - doLast { - val testOutput = testOutputFile.readText() - val outputLines = testOutput.split("\n") - - outputLines.forEach { line -> - when { - line.contains("All tests passed") -> { - didAllTestsPass = true - } - - line.contains("JVM GC thread was closed") -> { - isJvmClosed = true - } + setupTestExecution(editorExecutable) + } + register("runExportedGutTests") { + group = "verification" + + dependsOn(importResources) + + val testExecutable: String = projectDir + .resolve("export") + .listFiles() + ?.also { + println("Test executables: [${it.joinToString()}]") + } + ?.firstOrNull { file -> + listOf("exe", "x64_64", "app") + .any { executableExtensions -> file.name.contains(executableExtensions) } + } + ?.let { executable -> + if (executable.name.contains("app")) { + executable.resolve("Contents/MacOS").listFiles().firstOrNull() + } else { + executable } } + ?.absolutePath + ?: throw Exception("Could not find test executable") - val error = when { - !didAllTestsPass -> Exception("ERROR: Some assertions failed") - !isJvmClosed -> Exception("ERROR: JVM has not closed properly") - else -> null - } + setupTestExecution(testExecutable) + } +} + +fun Exec.setupTestExecution(editorExecutable: String) { + var didAllTestsPass = false + var isJvmClosed = false + val testOutputFile = File("${projectDir}/test_output.txt") + this.standardOutput = testOutputFile.outputStream() + this.errorOutput = testOutputFile.outputStream() + + this.doLast { + val testOutput = testOutputFile.readText() + val outputLines = testOutput.split("\n") + + outputLines.forEach { line -> + when { + line.contains("All tests passed") -> { + didAllTestsPass = true + } - println(testOutput) + line.contains("JVM GC thread was closed") -> { + isJvmClosed = true + } + } + } - error?.let { throw it } + val error = when { + !didAllTestsPass -> Exception("ERROR: Some assertions failed") + !isJvmClosed -> Exception("ERROR: JVM has not closed properly") + else -> null } - isIgnoreExitValue = true + println(testOutput) - if (HostManager.hostIsMingw) { - commandLine( - "cmd", - "/c", - "$editorExecutable -s --headless --path $projectDir addons/gut/gut_cmdln.gd", - ) - } else { - commandLine( - "bash", - "-c", - "$editorExecutable -s --headless --path $projectDir addons/gut/gut_cmdln.gd", - ) - } + error?.let { throw it } + } + + this.isIgnoreExitValue = true + + if (HostManager.hostIsMingw) { + this.commandLine( + "cmd", + "/c", + "$editorExecutable -s --headless --path $projectDir addons/gut/gut_cmdln.gd", + ) + } else { + this.commandLine( + "bash", + "-c", + "$editorExecutable -s --headless --path $projectDir addons/gut/gut_cmdln.gd", + ) } } diff --git a/harness/tests/export_presets.cfg b/harness/tests/export_presets.cfg index 31f2ebfb0d..e2691a06e8 100644 --- a/harness/tests/export_presets.cfg +++ b/harness/tests/export_presets.cfg @@ -3,6 +3,7 @@ name="Windows" platform="Windows Desktop" runnable=true +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -13,6 +14,7 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.0.options] @@ -20,10 +22,8 @@ custom_template/debug="../../../../bin/godot.windows.template_debug.x86_64.exe" custom_template/release="../../../../bin/godot.windows.template_release.x86_64.exe" debug/export_console_wrapper=1 binary_format/embed_pck=false -texture_format/bptc=false -texture_format/s3tc=true -texture_format/etc=false -texture_format/etc2=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false binary_format/architecture="x86_64" codesign/enable=false codesign/timestamp=true @@ -43,6 +43,8 @@ application/file_description="" application/copyright="" application/trademarks="" application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" ssh_remote_deploy/port="22" @@ -60,6 +62,10 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue Remove-Item -Recurse -Force '{temp_dir}'" +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false debug/export_console_script=1 [preset.1] @@ -67,6 +73,7 @@ debug/export_console_script=1 name="Android" platform="Android" runnable=true +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -77,12 +84,16 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.1.options] custom_template/debug="" custom_template/release="" gradle_build/use_gradle_build=false +gradle_build/gradle_build_directory="" +gradle_build/android_source_template="" +gradle_build/compress_native_libraries=false gradle_build/export_format=0 gradle_build/min_sdk="" gradle_build/target_sdk="" @@ -271,8 +282,9 @@ xr_features/passthrough=0 [preset.2] name="Linux" -platform="Linux/X11" +platform="Linux" runnable=true +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -283,6 +295,7 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.2.options] @@ -290,10 +303,8 @@ custom_template/debug="../../../../bin/godot.linuxbsd.template_debug.x86_64" custom_template/release="../../../../bin/godot.linuxbsd.template_release.x86_64" debug/export_console_wrapper=1 binary_format/embed_pck=false -texture_format/bptc=false -texture_format/s3tc=true -texture_format/etc=false -texture_format/etc2=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false binary_format/architecture="x86_64" ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" @@ -307,6 +318,10 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") rm -rf \"{temp_dir}\"" +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false debug/export_console_script=1 [preset.3] @@ -314,6 +329,7 @@ debug/export_console_script=1 name="iOS" platform="iOS" runnable=true +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" @@ -324,6 +340,7 @@ encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.3.options] @@ -340,11 +357,16 @@ application/bundle_identifier="com.utopiarise.godotkotlin.tests" application/signature="" application/short_version="1.0" application/version="1.0" +application/min_ios_version="12.0" +application/additional_plist_content="" application/icon_interpolation=4 -application/launch_screens_interpolation=4 application/export_project_only=false +application/delete_old_export_files_unconditionally=false +application/generate_simulator_library_if_missing=true capabilities/access_wifi=false capabilities/push_notifications=false +capabilities/performance_gaming_tier=false +capabilities/performance_a12=false user_data/accessible_from_files_app=false user_data/accessible_from_itunes_sharing=false privacy/camera_usage_description="" @@ -353,6 +375,153 @@ privacy/microphone_usage_description="" privacy/microphone_usage_description_localized={} privacy/photolibrary_usage_description="" privacy/photolibrary_usage_description_localized={} +privacy/file_timestamp_access_reasons=3 +privacy/system_boot_time_access_reasons=1 +privacy/disk_space_access_reasons=3 +privacy/active_keyboard_access_reasons=0 +privacy/user_defaults_access_reasons=0 +privacy/tracking_enabled=false +privacy/tracking_domains=PackedStringArray() +privacy/collected_data/name/collected=false +privacy/collected_data/name/linked_to_user=false +privacy/collected_data/name/used_for_tracking=false +privacy/collected_data/name/collection_purposes=0 +privacy/collected_data/email_address/collected=false +privacy/collected_data/email_address/linked_to_user=false +privacy/collected_data/email_address/used_for_tracking=false +privacy/collected_data/email_address/collection_purposes=0 +privacy/collected_data/phone_number/collected=false +privacy/collected_data/phone_number/linked_to_user=false +privacy/collected_data/phone_number/used_for_tracking=false +privacy/collected_data/phone_number/collection_purposes=0 +privacy/collected_data/physical_address/collected=false +privacy/collected_data/physical_address/linked_to_user=false +privacy/collected_data/physical_address/used_for_tracking=false +privacy/collected_data/physical_address/collection_purposes=0 +privacy/collected_data/other_contact_info/collected=false +privacy/collected_data/other_contact_info/linked_to_user=false +privacy/collected_data/other_contact_info/used_for_tracking=false +privacy/collected_data/other_contact_info/collection_purposes=0 +privacy/collected_data/health/collected=false +privacy/collected_data/health/linked_to_user=false +privacy/collected_data/health/used_for_tracking=false +privacy/collected_data/health/collection_purposes=0 +privacy/collected_data/fitness/collected=false +privacy/collected_data/fitness/linked_to_user=false +privacy/collected_data/fitness/used_for_tracking=false +privacy/collected_data/fitness/collection_purposes=0 +privacy/collected_data/payment_info/collected=false +privacy/collected_data/payment_info/linked_to_user=false +privacy/collected_data/payment_info/used_for_tracking=false +privacy/collected_data/payment_info/collection_purposes=0 +privacy/collected_data/credit_info/collected=false +privacy/collected_data/credit_info/linked_to_user=false +privacy/collected_data/credit_info/used_for_tracking=false +privacy/collected_data/credit_info/collection_purposes=0 +privacy/collected_data/other_financial_info/collected=false +privacy/collected_data/other_financial_info/linked_to_user=false +privacy/collected_data/other_financial_info/used_for_tracking=false +privacy/collected_data/other_financial_info/collection_purposes=0 +privacy/collected_data/precise_location/collected=false +privacy/collected_data/precise_location/linked_to_user=false +privacy/collected_data/precise_location/used_for_tracking=false +privacy/collected_data/precise_location/collection_purposes=0 +privacy/collected_data/coarse_location/collected=false +privacy/collected_data/coarse_location/linked_to_user=false +privacy/collected_data/coarse_location/used_for_tracking=false +privacy/collected_data/coarse_location/collection_purposes=0 +privacy/collected_data/sensitive_info/collected=false +privacy/collected_data/sensitive_info/linked_to_user=false +privacy/collected_data/sensitive_info/used_for_tracking=false +privacy/collected_data/sensitive_info/collection_purposes=0 +privacy/collected_data/contacts/collected=false +privacy/collected_data/contacts/linked_to_user=false +privacy/collected_data/contacts/used_for_tracking=false +privacy/collected_data/contacts/collection_purposes=0 +privacy/collected_data/emails_or_text_messages/collected=false +privacy/collected_data/emails_or_text_messages/linked_to_user=false +privacy/collected_data/emails_or_text_messages/used_for_tracking=false +privacy/collected_data/emails_or_text_messages/collection_purposes=0 +privacy/collected_data/photos_or_videos/collected=false +privacy/collected_data/photos_or_videos/linked_to_user=false +privacy/collected_data/photos_or_videos/used_for_tracking=false +privacy/collected_data/photos_or_videos/collection_purposes=0 +privacy/collected_data/audio_data/collected=false +privacy/collected_data/audio_data/linked_to_user=false +privacy/collected_data/audio_data/used_for_tracking=false +privacy/collected_data/audio_data/collection_purposes=0 +privacy/collected_data/gameplay_content/collected=false +privacy/collected_data/gameplay_content/linked_to_user=false +privacy/collected_data/gameplay_content/used_for_tracking=false +privacy/collected_data/gameplay_content/collection_purposes=0 +privacy/collected_data/customer_support/collected=false +privacy/collected_data/customer_support/linked_to_user=false +privacy/collected_data/customer_support/used_for_tracking=false +privacy/collected_data/customer_support/collection_purposes=0 +privacy/collected_data/other_user_content/collected=false +privacy/collected_data/other_user_content/linked_to_user=false +privacy/collected_data/other_user_content/used_for_tracking=false +privacy/collected_data/other_user_content/collection_purposes=0 +privacy/collected_data/browsing_history/collected=false +privacy/collected_data/browsing_history/linked_to_user=false +privacy/collected_data/browsing_history/used_for_tracking=false +privacy/collected_data/browsing_history/collection_purposes=0 +privacy/collected_data/search_hhistory/collected=false +privacy/collected_data/search_hhistory/linked_to_user=false +privacy/collected_data/search_hhistory/used_for_tracking=false +privacy/collected_data/search_hhistory/collection_purposes=0 +privacy/collected_data/user_id/collected=false +privacy/collected_data/user_id/linked_to_user=false +privacy/collected_data/user_id/used_for_tracking=false +privacy/collected_data/user_id/collection_purposes=0 +privacy/collected_data/device_id/collected=false +privacy/collected_data/device_id/linked_to_user=false +privacy/collected_data/device_id/used_for_tracking=false +privacy/collected_data/device_id/collection_purposes=0 +privacy/collected_data/purchase_history/collected=false +privacy/collected_data/purchase_history/linked_to_user=false +privacy/collected_data/purchase_history/used_for_tracking=false +privacy/collected_data/purchase_history/collection_purposes=0 +privacy/collected_data/product_interaction/collected=false +privacy/collected_data/product_interaction/linked_to_user=false +privacy/collected_data/product_interaction/used_for_tracking=false +privacy/collected_data/product_interaction/collection_purposes=0 +privacy/collected_data/advertising_data/collected=false +privacy/collected_data/advertising_data/linked_to_user=false +privacy/collected_data/advertising_data/used_for_tracking=false +privacy/collected_data/advertising_data/collection_purposes=0 +privacy/collected_data/other_usage_data/collected=false +privacy/collected_data/other_usage_data/linked_to_user=false +privacy/collected_data/other_usage_data/used_for_tracking=false +privacy/collected_data/other_usage_data/collection_purposes=0 +privacy/collected_data/crash_data/collected=false +privacy/collected_data/crash_data/linked_to_user=false +privacy/collected_data/crash_data/used_for_tracking=false +privacy/collected_data/crash_data/collection_purposes=0 +privacy/collected_data/performance_data/collected=false +privacy/collected_data/performance_data/linked_to_user=false +privacy/collected_data/performance_data/used_for_tracking=false +privacy/collected_data/performance_data/collection_purposes=0 +privacy/collected_data/other_diagnostic_data/collected=false +privacy/collected_data/other_diagnostic_data/linked_to_user=false +privacy/collected_data/other_diagnostic_data/used_for_tracking=false +privacy/collected_data/other_diagnostic_data/collection_purposes=0 +privacy/collected_data/environment_scanning/collected=false +privacy/collected_data/environment_scanning/linked_to_user=false +privacy/collected_data/environment_scanning/used_for_tracking=false +privacy/collected_data/environment_scanning/collection_purposes=0 +privacy/collected_data/hands/collected=false +privacy/collected_data/hands/linked_to_user=false +privacy/collected_data/hands/used_for_tracking=false +privacy/collected_data/hands/collection_purposes=0 +privacy/collected_data/head/collected=false +privacy/collected_data/head/linked_to_user=false +privacy/collected_data/head/used_for_tracking=false +privacy/collected_data/head/collection_purposes=0 +privacy/collected_data/other_data_types/collected=false +privacy/collected_data/other_data_types/linked_to_user=false +privacy/collected_data/other_data_types/used_for_tracking=false +privacy/collected_data/other_data_types/collection_purposes=0 icons/iphone_120x120="" icons/iphone_180x180="" icons/ipad_76x76="" @@ -365,12 +534,13 @@ icons/settings_58x58="" icons/settings_87x87="" icons/notification_40x40="" icons/notification_60x60="" -storyboard/use_launch_screen_storyboard=false storyboard/image_scale_mode=0 storyboard/custom_image@2x="" storyboard/custom_image@3x="" storyboard/use_custom_bg_color=false storyboard/custom_bg_color=Color(0, 0, 0, 1) +application/launch_screens_interpolation=4 +storyboard/use_launch_screen_storyboard=false landscape_launch_screens/iphone_2436x1125="" landscape_launch_screens/iphone_2208x1242="" landscape_launch_screens/ipad_1024x768="" @@ -388,23 +558,25 @@ portrait_launch_screens/iphone_1242x2208="" name="macOS" platform="macOS" runnable=true +advanced_options=false dedicated_server=false custom_features="" export_filter="all_resources" -include_filter="" +include_filter="*.json" exclude_filter=",res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json" -export_path="./export/macos_export.dmg" +export_path="export/macos_export.dmg" encryption_include_filters="" encryption_exclude_filters="" encrypt_pck=false encrypt_directory=false +script_export_mode=0 [preset.4.options] export/distribution_type=0 binary_format/architecture="universal" -custom_template/debug="" -custom_template/release="" +custom_template/debug="/Users/chippmann/projects/04_godot/4/bin/export_template_all_macos.zip" +custom_template/release="/Users/chippmann/projects/04_godot/4/bin/export_template_all_macos.zip" debug/export_console_wrapper=1 application/icon="" application/icon_interpolation=4 @@ -418,6 +590,7 @@ application/copyright_localized={} application/min_macos_version="10.12" application/export_angle=0 display/high_res=true +application/additional_plist_content="" xcode/platform_build="14C18" xcode/sdk_version="13.1" xcode/sdk_build="22C55" @@ -476,6 +649,148 @@ privacy/network_volumes_usage_description="" privacy/network_volumes_usage_description_localized={} privacy/removable_volumes_usage_description="" privacy/removable_volumes_usage_description_localized={} +privacy/tracking_enabled=false +privacy/tracking_domains=PackedStringArray() +privacy/collected_data/name/collected=false +privacy/collected_data/name/linked_to_user=false +privacy/collected_data/name/used_for_tracking=false +privacy/collected_data/name/collection_purposes=0 +privacy/collected_data/email_address/collected=false +privacy/collected_data/email_address/linked_to_user=false +privacy/collected_data/email_address/used_for_tracking=false +privacy/collected_data/email_address/collection_purposes=0 +privacy/collected_data/phone_number/collected=false +privacy/collected_data/phone_number/linked_to_user=false +privacy/collected_data/phone_number/used_for_tracking=false +privacy/collected_data/phone_number/collection_purposes=0 +privacy/collected_data/physical_address/collected=false +privacy/collected_data/physical_address/linked_to_user=false +privacy/collected_data/physical_address/used_for_tracking=false +privacy/collected_data/physical_address/collection_purposes=0 +privacy/collected_data/other_contact_info/collected=false +privacy/collected_data/other_contact_info/linked_to_user=false +privacy/collected_data/other_contact_info/used_for_tracking=false +privacy/collected_data/other_contact_info/collection_purposes=0 +privacy/collected_data/health/collected=false +privacy/collected_data/health/linked_to_user=false +privacy/collected_data/health/used_for_tracking=false +privacy/collected_data/health/collection_purposes=0 +privacy/collected_data/fitness/collected=false +privacy/collected_data/fitness/linked_to_user=false +privacy/collected_data/fitness/used_for_tracking=false +privacy/collected_data/fitness/collection_purposes=0 +privacy/collected_data/payment_info/collected=false +privacy/collected_data/payment_info/linked_to_user=false +privacy/collected_data/payment_info/used_for_tracking=false +privacy/collected_data/payment_info/collection_purposes=0 +privacy/collected_data/credit_info/collected=false +privacy/collected_data/credit_info/linked_to_user=false +privacy/collected_data/credit_info/used_for_tracking=false +privacy/collected_data/credit_info/collection_purposes=0 +privacy/collected_data/other_financial_info/collected=false +privacy/collected_data/other_financial_info/linked_to_user=false +privacy/collected_data/other_financial_info/used_for_tracking=false +privacy/collected_data/other_financial_info/collection_purposes=0 +privacy/collected_data/precise_location/collected=false +privacy/collected_data/precise_location/linked_to_user=false +privacy/collected_data/precise_location/used_for_tracking=false +privacy/collected_data/precise_location/collection_purposes=0 +privacy/collected_data/coarse_location/collected=false +privacy/collected_data/coarse_location/linked_to_user=false +privacy/collected_data/coarse_location/used_for_tracking=false +privacy/collected_data/coarse_location/collection_purposes=0 +privacy/collected_data/sensitive_info/collected=false +privacy/collected_data/sensitive_info/linked_to_user=false +privacy/collected_data/sensitive_info/used_for_tracking=false +privacy/collected_data/sensitive_info/collection_purposes=0 +privacy/collected_data/contacts/collected=false +privacy/collected_data/contacts/linked_to_user=false +privacy/collected_data/contacts/used_for_tracking=false +privacy/collected_data/contacts/collection_purposes=0 +privacy/collected_data/emails_or_text_messages/collected=false +privacy/collected_data/emails_or_text_messages/linked_to_user=false +privacy/collected_data/emails_or_text_messages/used_for_tracking=false +privacy/collected_data/emails_or_text_messages/collection_purposes=0 +privacy/collected_data/photos_or_videos/collected=false +privacy/collected_data/photos_or_videos/linked_to_user=false +privacy/collected_data/photos_or_videos/used_for_tracking=false +privacy/collected_data/photos_or_videos/collection_purposes=0 +privacy/collected_data/audio_data/collected=false +privacy/collected_data/audio_data/linked_to_user=false +privacy/collected_data/audio_data/used_for_tracking=false +privacy/collected_data/audio_data/collection_purposes=0 +privacy/collected_data/gameplay_content/collected=false +privacy/collected_data/gameplay_content/linked_to_user=false +privacy/collected_data/gameplay_content/used_for_tracking=false +privacy/collected_data/gameplay_content/collection_purposes=0 +privacy/collected_data/customer_support/collected=false +privacy/collected_data/customer_support/linked_to_user=false +privacy/collected_data/customer_support/used_for_tracking=false +privacy/collected_data/customer_support/collection_purposes=0 +privacy/collected_data/other_user_content/collected=false +privacy/collected_data/other_user_content/linked_to_user=false +privacy/collected_data/other_user_content/used_for_tracking=false +privacy/collected_data/other_user_content/collection_purposes=0 +privacy/collected_data/browsing_history/collected=false +privacy/collected_data/browsing_history/linked_to_user=false +privacy/collected_data/browsing_history/used_for_tracking=false +privacy/collected_data/browsing_history/collection_purposes=0 +privacy/collected_data/search_hhistory/collected=false +privacy/collected_data/search_hhistory/linked_to_user=false +privacy/collected_data/search_hhistory/used_for_tracking=false +privacy/collected_data/search_hhistory/collection_purposes=0 +privacy/collected_data/user_id/collected=false +privacy/collected_data/user_id/linked_to_user=false +privacy/collected_data/user_id/used_for_tracking=false +privacy/collected_data/user_id/collection_purposes=0 +privacy/collected_data/device_id/collected=false +privacy/collected_data/device_id/linked_to_user=false +privacy/collected_data/device_id/used_for_tracking=false +privacy/collected_data/device_id/collection_purposes=0 +privacy/collected_data/purchase_history/collected=false +privacy/collected_data/purchase_history/linked_to_user=false +privacy/collected_data/purchase_history/used_for_tracking=false +privacy/collected_data/purchase_history/collection_purposes=0 +privacy/collected_data/product_interaction/collected=false +privacy/collected_data/product_interaction/linked_to_user=false +privacy/collected_data/product_interaction/used_for_tracking=false +privacy/collected_data/product_interaction/collection_purposes=0 +privacy/collected_data/advertising_data/collected=false +privacy/collected_data/advertising_data/linked_to_user=false +privacy/collected_data/advertising_data/used_for_tracking=false +privacy/collected_data/advertising_data/collection_purposes=0 +privacy/collected_data/other_usage_data/collected=false +privacy/collected_data/other_usage_data/linked_to_user=false +privacy/collected_data/other_usage_data/used_for_tracking=false +privacy/collected_data/other_usage_data/collection_purposes=0 +privacy/collected_data/crash_data/collected=false +privacy/collected_data/crash_data/linked_to_user=false +privacy/collected_data/crash_data/used_for_tracking=false +privacy/collected_data/crash_data/collection_purposes=0 +privacy/collected_data/performance_data/collected=false +privacy/collected_data/performance_data/linked_to_user=false +privacy/collected_data/performance_data/used_for_tracking=false +privacy/collected_data/performance_data/collection_purposes=0 +privacy/collected_data/other_diagnostic_data/collected=false +privacy/collected_data/other_diagnostic_data/linked_to_user=false +privacy/collected_data/other_diagnostic_data/used_for_tracking=false +privacy/collected_data/other_diagnostic_data/collection_purposes=0 +privacy/collected_data/environment_scanning/collected=false +privacy/collected_data/environment_scanning/linked_to_user=false +privacy/collected_data/environment_scanning/used_for_tracking=false +privacy/collected_data/environment_scanning/collection_purposes=0 +privacy/collected_data/hands/collected=false +privacy/collected_data/hands/linked_to_user=false +privacy/collected_data/hands/used_for_tracking=false +privacy/collected_data/hands/collection_purposes=0 +privacy/collected_data/head/collected=false +privacy/collected_data/head/linked_to_user=false +privacy/collected_data/head/used_for_tracking=false +privacy/collected_data/head/collection_purposes=0 +privacy/collected_data/other_data_types/collected=false +privacy/collected_data/other_data_types/linked_to_user=false +privacy/collected_data/other_data_types/used_for_tracking=false +privacy/collected_data/other_data_types/collection_purposes=0 ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" ssh_remote_deploy/port="22" @@ -487,3 +802,368 @@ open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\") rm -rf \"{temp_dir}\"" + +[preset.5] + +name="tests_macos" +platform="macOS" +runnable=false +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="*.json" +exclude_filter=",res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json,res://godot_kotlin_configuration.json" +export_path="./export/tests.dmg" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.5.options] + +export/distribution_type=0 +binary_format/architecture="universal" +custom_template/debug="export_template_all_macos.zip" +custom_template/release="export_template_all_macos.zip" +debug/export_console_wrapper=1 +application/icon="" +application/icon_interpolation=4 +application/bundle_identifier="com.godot.kotlin.tests" +application/signature="" +application/app_category="Games" +application/short_version="" +application/version="" +application/copyright="" +application/copyright_localized={} +application/min_macos_version="10.12" +application/export_angle=0 +display/high_res=true +application/additional_plist_content="" +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=0 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/entitlements/app_sandbox/helper_executables=[] +codesign/custom_options=PackedStringArray() +notarization/notarization=0 +privacy/microphone_usage_description="" +privacy/microphone_usage_description_localized={} +privacy/camera_usage_description="" +privacy/camera_usage_description_localized={} +privacy/location_usage_description="" +privacy/location_usage_description_localized={} +privacy/address_book_usage_description="" +privacy/address_book_usage_description_localized={} +privacy/calendar_usage_description="" +privacy/calendar_usage_description_localized={} +privacy/photos_library_usage_description="" +privacy/photos_library_usage_description_localized={} +privacy/desktop_folder_usage_description="" +privacy/desktop_folder_usage_description_localized={} +privacy/documents_folder_usage_description="" +privacy/documents_folder_usage_description_localized={} +privacy/downloads_folder_usage_description="" +privacy/downloads_folder_usage_description_localized={} +privacy/network_volumes_usage_description="" +privacy/network_volumes_usage_description_localized={} +privacy/removable_volumes_usage_description="" +privacy/removable_volumes_usage_description_localized={} +privacy/tracking_enabled=false +privacy/tracking_domains=PackedStringArray() +privacy/collected_data/name/collected=false +privacy/collected_data/name/linked_to_user=false +privacy/collected_data/name/used_for_tracking=false +privacy/collected_data/name/collection_purposes=0 +privacy/collected_data/email_address/collected=false +privacy/collected_data/email_address/linked_to_user=false +privacy/collected_data/email_address/used_for_tracking=false +privacy/collected_data/email_address/collection_purposes=0 +privacy/collected_data/phone_number/collected=false +privacy/collected_data/phone_number/linked_to_user=false +privacy/collected_data/phone_number/used_for_tracking=false +privacy/collected_data/phone_number/collection_purposes=0 +privacy/collected_data/physical_address/collected=false +privacy/collected_data/physical_address/linked_to_user=false +privacy/collected_data/physical_address/used_for_tracking=false +privacy/collected_data/physical_address/collection_purposes=0 +privacy/collected_data/other_contact_info/collected=false +privacy/collected_data/other_contact_info/linked_to_user=false +privacy/collected_data/other_contact_info/used_for_tracking=false +privacy/collected_data/other_contact_info/collection_purposes=0 +privacy/collected_data/health/collected=false +privacy/collected_data/health/linked_to_user=false +privacy/collected_data/health/used_for_tracking=false +privacy/collected_data/health/collection_purposes=0 +privacy/collected_data/fitness/collected=false +privacy/collected_data/fitness/linked_to_user=false +privacy/collected_data/fitness/used_for_tracking=false +privacy/collected_data/fitness/collection_purposes=0 +privacy/collected_data/payment_info/collected=false +privacy/collected_data/payment_info/linked_to_user=false +privacy/collected_data/payment_info/used_for_tracking=false +privacy/collected_data/payment_info/collection_purposes=0 +privacy/collected_data/credit_info/collected=false +privacy/collected_data/credit_info/linked_to_user=false +privacy/collected_data/credit_info/used_for_tracking=false +privacy/collected_data/credit_info/collection_purposes=0 +privacy/collected_data/other_financial_info/collected=false +privacy/collected_data/other_financial_info/linked_to_user=false +privacy/collected_data/other_financial_info/used_for_tracking=false +privacy/collected_data/other_financial_info/collection_purposes=0 +privacy/collected_data/precise_location/collected=false +privacy/collected_data/precise_location/linked_to_user=false +privacy/collected_data/precise_location/used_for_tracking=false +privacy/collected_data/precise_location/collection_purposes=0 +privacy/collected_data/coarse_location/collected=false +privacy/collected_data/coarse_location/linked_to_user=false +privacy/collected_data/coarse_location/used_for_tracking=false +privacy/collected_data/coarse_location/collection_purposes=0 +privacy/collected_data/sensitive_info/collected=false +privacy/collected_data/sensitive_info/linked_to_user=false +privacy/collected_data/sensitive_info/used_for_tracking=false +privacy/collected_data/sensitive_info/collection_purposes=0 +privacy/collected_data/contacts/collected=false +privacy/collected_data/contacts/linked_to_user=false +privacy/collected_data/contacts/used_for_tracking=false +privacy/collected_data/contacts/collection_purposes=0 +privacy/collected_data/emails_or_text_messages/collected=false +privacy/collected_data/emails_or_text_messages/linked_to_user=false +privacy/collected_data/emails_or_text_messages/used_for_tracking=false +privacy/collected_data/emails_or_text_messages/collection_purposes=0 +privacy/collected_data/photos_or_videos/collected=false +privacy/collected_data/photos_or_videos/linked_to_user=false +privacy/collected_data/photos_or_videos/used_for_tracking=false +privacy/collected_data/photos_or_videos/collection_purposes=0 +privacy/collected_data/audio_data/collected=false +privacy/collected_data/audio_data/linked_to_user=false +privacy/collected_data/audio_data/used_for_tracking=false +privacy/collected_data/audio_data/collection_purposes=0 +privacy/collected_data/gameplay_content/collected=false +privacy/collected_data/gameplay_content/linked_to_user=false +privacy/collected_data/gameplay_content/used_for_tracking=false +privacy/collected_data/gameplay_content/collection_purposes=0 +privacy/collected_data/customer_support/collected=false +privacy/collected_data/customer_support/linked_to_user=false +privacy/collected_data/customer_support/used_for_tracking=false +privacy/collected_data/customer_support/collection_purposes=0 +privacy/collected_data/other_user_content/collected=false +privacy/collected_data/other_user_content/linked_to_user=false +privacy/collected_data/other_user_content/used_for_tracking=false +privacy/collected_data/other_user_content/collection_purposes=0 +privacy/collected_data/browsing_history/collected=false +privacy/collected_data/browsing_history/linked_to_user=false +privacy/collected_data/browsing_history/used_for_tracking=false +privacy/collected_data/browsing_history/collection_purposes=0 +privacy/collected_data/search_hhistory/collected=false +privacy/collected_data/search_hhistory/linked_to_user=false +privacy/collected_data/search_hhistory/used_for_tracking=false +privacy/collected_data/search_hhistory/collection_purposes=0 +privacy/collected_data/user_id/collected=false +privacy/collected_data/user_id/linked_to_user=false +privacy/collected_data/user_id/used_for_tracking=false +privacy/collected_data/user_id/collection_purposes=0 +privacy/collected_data/device_id/collected=false +privacy/collected_data/device_id/linked_to_user=false +privacy/collected_data/device_id/used_for_tracking=false +privacy/collected_data/device_id/collection_purposes=0 +privacy/collected_data/purchase_history/collected=false +privacy/collected_data/purchase_history/linked_to_user=false +privacy/collected_data/purchase_history/used_for_tracking=false +privacy/collected_data/purchase_history/collection_purposes=0 +privacy/collected_data/product_interaction/collected=false +privacy/collected_data/product_interaction/linked_to_user=false +privacy/collected_data/product_interaction/used_for_tracking=false +privacy/collected_data/product_interaction/collection_purposes=0 +privacy/collected_data/advertising_data/collected=false +privacy/collected_data/advertising_data/linked_to_user=false +privacy/collected_data/advertising_data/used_for_tracking=false +privacy/collected_data/advertising_data/collection_purposes=0 +privacy/collected_data/other_usage_data/collected=false +privacy/collected_data/other_usage_data/linked_to_user=false +privacy/collected_data/other_usage_data/used_for_tracking=false +privacy/collected_data/other_usage_data/collection_purposes=0 +privacy/collected_data/crash_data/collected=false +privacy/collected_data/crash_data/linked_to_user=false +privacy/collected_data/crash_data/used_for_tracking=false +privacy/collected_data/crash_data/collection_purposes=0 +privacy/collected_data/performance_data/collected=false +privacy/collected_data/performance_data/linked_to_user=false +privacy/collected_data/performance_data/used_for_tracking=false +privacy/collected_data/performance_data/collection_purposes=0 +privacy/collected_data/other_diagnostic_data/collected=false +privacy/collected_data/other_diagnostic_data/linked_to_user=false +privacy/collected_data/other_diagnostic_data/used_for_tracking=false +privacy/collected_data/other_diagnostic_data/collection_purposes=0 +privacy/collected_data/environment_scanning/collected=false +privacy/collected_data/environment_scanning/linked_to_user=false +privacy/collected_data/environment_scanning/used_for_tracking=false +privacy/collected_data/environment_scanning/collection_purposes=0 +privacy/collected_data/hands/collected=false +privacy/collected_data/hands/linked_to_user=false +privacy/collected_data/hands/used_for_tracking=false +privacy/collected_data/hands/collection_purposes=0 +privacy/collected_data/head/collected=false +privacy/collected_data/head/linked_to_user=false +privacy/collected_data/head/used_for_tracking=false +privacy/collected_data/head/collection_purposes=0 +privacy/collected_data/other_data_types/collected=false +privacy/collected_data/other_data_types/linked_to_user=false +privacy/collected_data/other_data_types/used_for_tracking=false +privacy/collected_data/other_data_types/collection_purposes=0 +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" + +[preset.6] + +name="tests_linux" +platform="Linux" +runnable=false +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="all_resources" +include_filter="*.txt, *.cfg, *.json" +exclude_filter="" +export_path="./export/tests.x86_64" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.6.options] + +custom_template/debug="godot.linuxbsd.template_debug.x86_64" +custom_template/release="godot.linuxbsd.template_release.x86_64" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +debug/export_console_script=1 + +[preset.7] + +name="tests_windows" +platform="Windows Desktop" +runnable=false +advanced_options=false +dedicated_server=false +custom_features="*.json" +export_filter="all_resources" +include_filter="*.txt, *.cfg" +exclude_filter="" +export_path="./export/tests.exe" +encryption_include_filters="" +encryption_exclude_filters="" +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.7.options] + +custom_template/debug="godot.windows.template_debug.x86_64.exe" +custom_template/release="godot.windows.template_release.x86_64.exe" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +codesign/enable=false +codesign/timestamp=true +codesign/timestamp_server_url="" +codesign/digest_algorithm=1 +codesign/description="" +codesign/custom_options=PackedStringArray() +application/modify_resources=true +application/icon="" +application/console_wrapper_icon="" +application/icon_interpolation=4 +application/file_version="" +application/product_version="" +application/company_name="" +application/product_name="" +application/file_description="" +application/copyright="" +application/trademarks="" +application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}' +$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}' +$trigger = New-ScheduledTaskTrigger -Once -At 00:00 +$settings = New-ScheduledTaskSettingsSet +$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings +Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true +Start-ScheduledTask -TaskName godot_remote_debug +while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 } +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue" +ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue +Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue +Remove-Item -Recurse -Force '{temp_dir}'" +texture_format/bptc=false +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false +debug/export_console_script=1 diff --git a/harness/tests/project.godot b/harness/tests/project.godot index 442eced7ca..f070da54a3 100644 --- a/harness/tests/project.godot +++ b/harness/tests/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="Godot Kotlin Tests" run/main_scene="res://test/GutTests.tscn" -config/features=PackedStringArray("4.2") +config/features=PackedStringArray("4.3") config/icon="res://icon.png" [debug]