bitwes / Gut

Godot Unit Test. Unit testing tool for Godot Game Engine.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

No tests when exporting to iOS

piiertho opened this issue · comments

Hello !
I'm trying to export gut scene on iOS using this guide.
But on device no tests are found:
image
It seems my .gutconfig file has been correctly exported:
image
Any step I'm missing ?

Are you encrypting your exported pck (that is not supported and needs to be added to the documentation). Are you excluding res://test from the export on the "Resources" tab? Those are the only two obvious things I can think of.

Are you encrypting your exported pck (that is not supported and needs to be added to the documentation). Are you excluding res://test from the export on the "Resources" tab? Those are the only two obvious things I can think of.

I am not encrypting pck and I did not excluded res://test.

Btw tests are here in pck:
image

I currently don't have an iOS device to test on, but I have verified that the export works on Android using

  • Godot 4.2.2
  • GUT 9.2.0

Let's see if some manual intervention will work. At the end of _ready() in your scene, add the following (where $GutControl is the node path to the GutControl):

func _ready():
    ...
    $GutControl.get_gut().add_directory('res://test/unit')

This should add all tests in the res://test/unit to the tree. This isn't a sustainable workaround, but it will help find where the issue is.

Note I just ran some tests on my device for a game and got errors in any test that used a Double. I'm not sure what is causing this but I will be creating a bug for it.

*Edit: I forgot GutControl.get_gut() exists, updated code and comments to use that instead.

If you can get logs off of your device that will help debug the issue as well.

Make sure you have logging enabled:
image

With this setup, user://logs/godot.log will be the latest log. I can't remember how to get files off of an iPhone, nor where user:// actually is, but it should be possible. If you can't figure that out, let me know, I have some "not ready for general consumption" tools that I can share to view files on the device and copy contents.

Adding

$GutControl.get_gut().add_directory('res://test/unit')

does not change behaviour.

I got logs in xcode:
Here are logs (maybe problem comes from fonts):

Logging Error: Failed to initialize logging system. Log messages may be missing. If this issue persists, try setting IDEPreferLogStreaming=YES in the active scheme actions environment variables.
Setting up keyboard input view.
Setting up keyboard input view.
Adding observer for keyboard show/hide.
Adding observer for keyboard show/hide.
Start animation!
Start animation!
USER ERROR: AudioOutputUnitStart failed, code: -50
   at: start (drivers/coreaudio/audio_driver_coreaudio.cpp:251)
USER ERROR: AudioOutputUnitStart failed, code: -50
   at: start (drivers/coreaudio/audio_driver_coreaudio.cpp:251)
Godot Engine v4.2.1.stable.custom_build.b09f793f5 - https://godotengine.org
Godot Engine v4.2.1.stable.custom_build.b09f793f5 - https://godotengine.org
TextServer: Added interface "Dummy"
TextServer: Added interface "Dummy"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
TextServer: Added interface "ICU / HarfBuzz / Graphite (Built-in)"
[mvk-info] MoltenVK version 1.2.6, supporting Vulkan version 1.2.268.
	The following 101 Vulkan extensions are supported:
		VK_KHR_16bit_storage v1
		VK_KHR_8bit_storage v1
		VK_KHR_bind_memory2 v1
		VK_KHR_buffer_device_address v1
		VK_KHR_copy_commands2 v1
		VK_KHR_create_renderpass2 v1
		VK_KHR_dedicated_allocation v3
		VK_KHR_deferred_host_operations v4
		VK_KHR_depth_stencil_resolve v1
		VK_KHR_descriptor_update_template v1
		VK_KHR_device_group v4
		VK_KHR_device_group_creation v1
		VK_KHR_driver_properties v1
		VK_KHR_dynamic_rendering v1
		VK_KHR_external_fence v1
		VK_KHR_external_fence_capabilities v1
		VK_KHR_external_memory v1
		VK_KHR_external_memory_capabilities v1
		VK_KHR_external_semaphore v1
		VK_KHR_external_semaphore_capabilities v1
		VK_KHR_fragment_shader_barycentric v1
		VK_KHR_get_memory_requirements2 v1
		VK_KHR_get_physical_device_properties2 v2
		VK_KHR_get_surface_capabilities2 v1
		VK_KHR_imageless_framebuffer v1
		VK_KHR_image_format_list v1
		VK_KHR_incremental_present v2
		VK_KHR_maintenance1 v2
		VK_KHR_maintenance2 v1
		VK_KHR_maintenance3 v1
		VK_KHR_map_memory2 v1
		VK_KHR_multiview v1
		VK_KHR_portability_subset v1
		VK_KHR_push_descriptor v2
		VK_KHR_relaxed_block_layout v1
		VK_KHR_sampler_mirror_clamp_to_edge v3
		VK_KHR_sampler_ycbcr_conversion v14
		VK_KHR_separate_depth_stencil_layouts v1
		VK_KHR_shader_draw_parameters v1
		VK_KHR_shader_float_controls v4
		VK_KHR_shader_float16_int8 v1
		VK_KHR_shader_non_semantic_info v1
		VK_KHR_shader_subgroup_extended_types v1
		VK_KHR_spirv_1_4 v1
		VK_KHR_storage_buffer_storage_class v1
		VK_KHR_surface v25
		VK_KHR_swapchain v70
		VK_KHR_swapchain_mutable_format v1
		VK_KHR_synchronization2 v1
		VK_KHR_timeline_semaphore v2
		VK_KHR_uniform_buffer_standard_layout v1
		VK_KHR_variable_pointers v1
		VK_EXT_4444_formats v1
		VK_EXT_buffer_device_address v2
		VK_EXT_calibrated_timestamps v2
		VK_EXT_debug_marker v4
		VK_EXT_debug_report v10
		VK_EXT_debug_utils v2
		VK_EXT_descriptor_indexing v2
		VK_EXT_extended_dynamic_state v1
		VK_EXT_extended_dynamic_state2 v1
		VK_EXT_external_memory_host v1
		VK_EXT_fragment_shader_interlock v1
		VK_EXT_host_query_reset v1
		VK_EXT_image_robustness v1
		VK_EXT_inline_uniform_block v1
		VK_EXT_memory_budget v1
		VK_EXT_metal_objects v1
		VK_EXT_metal_surface v1
		VK_EXT_pipeline_creation_cache_control v3
		VK_EXT_pipeline_creation_feedback v1
		VK_EXT_post_depth_coverage v1
		VK_EXT_private_data v1
		VK_EXT_robustness2 v1
		VK_EXT_sample_locations v1
		VK_EXT_scalar_block_layout v1
		VK_EXT_separate_stencil_usage v1
		VK_EXT_shader_atomic_float v1
		VK_EXT_shader_demote_to_helper_invocation v1
		VK_EXT_shader_stencil_export v1
		VK_EXT_shader_subgroup_ballot v1
		VK_EXT_shader_subgroup_vote v1
		VK_EXT_shader_viewport_index_layer v1
		VK_EXT_subgroup_size_control v2
		VK_EXT_surface_maintenance1 v1
		VK_EXT_swapchain_colorspace v4
		VK_EXT_swapchain_maintenance1 v1
		VK_EXT_texel_buffer_alignment v1
		VK_EXT_texture_compression_astc_hdr v1
		VK_EXT_vertex_attribute_divisor v3
		VK_AMD_gpu_shader_half_float v2
		VK_AMD_negative_viewport_height v1
		VK_AMD_shader_image_load_store_lod v1
		VK_AMD_shader_trinary_minmax v1
		VK_IMG_format_pvrtc v1
		VK_INTEL_shader_integer_functions2 v1
		VK_GOOGLE_display_timing v1
		VK_MVK_ios_surface v3
		VK_MVK_moltenvk v37
		VK_NV_fragment_shader_barycentric v1
		VK_NV_glsl_shader v1
[mvk-info] GPU device:
		model: Apple A15 GPU
		type: Integrated
		vendorID: 0x106b
		deviceID: 0x110403f0
		pipelineCacheUUID: 9E4EE9E6-1104-03F0-0000-000000000000
		GPU memory available: 2041 MB
		GPU memory used: 0 MB
	supports the following Metal Versions, GPU's and Feature Sets:
		Metal Shading Language 3.0
		GPU Family Apple 8
		GPU Family Apple 7
		GPU Family Apple 6
		GPU Family Apple 5
		GPU Family Apple 4
		GPU Family Apple 3
		GPU Family Apple 2
		GPU Family Apple 1
		GPU Family Common 3
		GPU Family Common 2
		GPU Family Common 1
		iOS GPU Family 5 v1
		iOS GPU Family 4 v2
		iOS GPU Family 4 v1
		iOS GPU Family 3 v4
		iOS GPU Family 3 v3
		iOS GPU Family 3 v2
		iOS GPU Family 3 v1
		iOS GPU Family 2 v5
		iOS GPU Family 2 v4
		iOS GPU Family 2 v3
		iOS GPU Family 2 v2
		iOS GPU Family 2 v1
		iOS GPU Family 1 v5
		iOS GPU Family 1 v4
		iOS GPU Family 1 v3
		iOS GPU Family 1 v2
		iOS GPU Family 1 v1
[mvk-info] Created VkInstance for Vulkan version 1.2.0, as requested by app, with the following 4 Vulkan extensions enabled:
		VK_KHR_get_physical_device_properties2 v2
		VK_KHR_surface v25
		VK_EXT_debug_utils v2
		VK_MVK_ios_surface v3
Vulkan devices:
Vulkan devices:
  #0: Apple Apple A15 GPU - Supported, Integrated
  #0: Apple Apple A15 GPU - Supported, Integrated
Vulkan API 1.2.268 - Forward Mobile - Using Vulkan Device #0: Apple - Apple A15 GPU
Vulkan API 1.2.268 - Forward Mobile - Using Vulkan Device #0: Apple - Apple A15 GPU
Optional extension VK_KHR_fragment_shading_rate not found
Optional extension VK_KHR_fragment_shading_rate not found
- Vulkan Variable Rate Shading not supported
- Vulkan Variable Rate Shading not supported
- Vulkan multiview supported:
- Vulkan multiview supported:
  max view count: 32
  max view count: 32
  max instances: 134217727
  max instances: 134217727
- Vulkan subgroup:
- Vulkan subgroup:
  size: 32
  size: 32
  min size: 32
  min size: 32
  max size: 32
  max size: 32
  stages: STAGE_TESSELLATION_CONTROL, STAGE_FRAGMENT, STAGE_COMPUTE
  stages: STAGE_TESSELLATION_CONTROL, STAGE_FRAGMENT, STAGE_COMPUTE
  supported ops: FEATURE_BASIC, FEATURE_VOTE, FEATURE_ARITHMETIC, FEATURE_BALLOT, FEATURE_SHUFFLE, FEATURE_SHUFFLE_RELATIVE, FEATURE_QUAD
  supported ops: FEATURE_BASIC, FEATURE_VOTE, FEATURE_ARITHMETIC, FEATURE_BALLOT, FEATURE_SHUFFLE, FEATURE_SHUFFLE_RELATIVE, FEATURE_QUAD
  quad operations in all stages
  quad operations in all stages
[mvk-info] Vulkan semaphores using MTLEvent.
[mvk-info] Created VkDevice to run on GPU Apple A15 GPU with the following 12 Vulkan extensions enabled:
		VK_KHR_16bit_storage v1
		VK_KHR_create_renderpass2 v1
		VK_KHR_image_format_list v1
		VK_KHR_incremental_present v2
		VK_KHR_maintenance2 v1
		VK_KHR_multiview v1
		VK_KHR_shader_float16_int8 v1
		VK_KHR_storage_buffer_storage_class v1
		VK_KHR_swapchain v70
		VK_EXT_pipeline_creation_cache_control v3
		VK_EXT_subgroup_size_control v2
		VK_GOOGLE_display_timing v1
[mvk-info] Created 3 swapchain images with size (2436, 1125) and contents scale 3.0 in layer (null) (0x3038ab900) on screen Main Screen.
Startup PSO cache (1.6 MiB)
Startup PSO cache (1.6 MiB)
Using "default" pen tablet driver...
Using "default" pen tablet driver...
Creating VMA small objects pool for memory type index 0
Creating VMA small objects pool for memory type index 0
Shader 'CanvasSdfShaderRD' (group 0) SHA256: 5ea119f44a724a1f058ec3e8423ea4c3fe034d2ee82e56ebc747fa1a0baaa9bc
Shader 'CanvasSdfShaderRD' (group 0) SHA256: 5ea119f44a724a1f058ec3e8423ea4c3fe034d2ee82e56ebc747fa1a0baaa9bc
Shader 'SkeletonShaderRD' (group 0) SHA256: fe51f4681cb5f660b134059f4679e894971aa2532215387c71ac9af2165388e2
Shader 'SkeletonShaderRD' (group 0) SHA256: fe51f4681cb5f660b134059f4679e894971aa2532215387c71ac9af2165388e2
Shader 'SortShaderRD' (group 0) SHA256: 5a41c903acc8ad1e3956c60de9e61da06b1c56eface70cc3724e243559fd968d
Shader 'SortShaderRD' (group 0) SHA256: 5a41c903acc8ad1e3956c60de9e61da06b1c56eface70cc3724e243559fd968d
Shader 'ParticlesShaderRD' (group 0) SHA256: 86438f71dfc097273a57316133b6295383452b82f247f0c32c6bacc2d24ab0de
Shader 'ParticlesShaderRD' (group 0) SHA256: 86438f71dfc097273a57316133b6295383452b82f247f0c32c6bacc2d24ab0de
Shader 'ParticlesCopyShaderRD' (group 0) SHA256: a3e1fa80529fc326aaa0d25e1eb40783ae0890065374cacc3fb51bfee38dc2bf
Shader 'ParticlesCopyShaderRD' (group 0) SHA256: a3e1fa80529fc326aaa0d25e1eb40783ae0890065374cacc3fb51bfee38dc2bf
Shader 'CanvasShaderRD' (group 0) SHA256: ce2ff3af69127014b437cf6ef26d6ba65198c6c1ca61ad9a54466a14bb72a2f4
Shader 'CanvasShaderRD' (group 0) SHA256: ce2ff3af69127014b437cf6ef26d6ba65198c6c1ca61ad9a54466a14bb72a2f4
Shader 'CanvasOcclusionShaderRD' (group 0) SHA256: afa67418ce46d450afc59595eac9e84111a41a6eff5abaaa7651ab7795ef5254
Shader 'CanvasOcclusionShaderRD' (group 0) SHA256: afa67418ce46d450afc59595eac9e84111a41a6eff5abaaa7651ab7795ef5254
Shader 'SceneForwardMobileShaderRD' (group 0) SHA256: d1a5488f1f352b093c3dc49561dc29cdd2d631645431e6f7e52b02d8386b90ea
Shader 'SceneForwardMobileShaderRD' (group 0) SHA256: d1a5488f1f352b093c3dc49561dc29cdd2d631645431e6f7e52b02d8386b90ea
Shader 'SkyShaderRD' (group 0) SHA256: 2cbc48bdeaf80156e01ba054bc4a97b23ff406e51ef1a60b1ee5ec4b2fd8cf5d
Shader 'SkyShaderRD' (group 0) SHA256: 2cbc48bdeaf80156e01ba054bc4a97b23ff406e51ef1a60b1ee5ec4b2fd8cf5d
Shader 'BokehDofRasterShaderRD' (group 0) SHA256: 11902fef5e3b1aea49c9de355fc49c94414704ec539ac3a2274c926c49b4e26f
Shader 'BokehDofRasterShaderRD' (group 0) SHA256: 11902fef5e3b1aea49c9de355fc49c94414704ec539ac3a2274c926c49b4e26f
Shader 'BlurRasterShaderRD' (group 0) SHA256: 46618603369d68d0540f9f9262d4cfeef17b4be845399248cbb16708c580f813
Shader 'BlurRasterShaderRD' (group 0) SHA256: 46618603369d68d0540f9f9262d4cfeef17b4be845399248cbb16708c580f813
Shader 'CopyToFbShaderRD' (group 0) SHA256: ad524b1410c56ace12680ca485b507cba7f6026cce5a21066250f103a56e2c75
Shader 'CopyToFbShaderRD' (group 0) SHA256: ad524b1410c56ace12680ca485b507cba7f6026cce5a21066250f103a56e2c75
Shader 'CubeToDpShaderRD' (group 0) SHA256: cab703e71ceb93072e1cce6199c1a385846ce7b2af91ad4763e661e4982fc4ce
Shader 'CubeToDpShaderRD' (group 0) SHA256: cab703e71ceb93072e1cce6199c1a385846ce7b2af91ad4763e661e4982fc4ce
Shader 'CubemapDownsamplerRasterShaderRD' (group 0) SHA256: 48cd383d9780101b03ec8f840c861d179bf16dc7fea8df675cf8c780acf38505
Shader 'CubemapDownsamplerRasterShaderRD' (group 0) SHA256: 48cd383d9780101b03ec8f840c861d179bf16dc7fea8df675cf8c780acf38505
Shader 'CubemapFilterRasterShaderRD' (group 0) SHA256: 88913124ce5a66b777595d580d877bec7a7c970fbcfdd86385fbfef5eef039bf
Shader 'CubemapFilterRasterShaderRD' (group 0) SHA256: 88913124ce5a66b777595d580d877bec7a7c970fbcfdd86385fbfef5eef039bf
Shader 'CubemapRoughnessRasterShaderRD' (group 0) SHA256: 962afd6e2abfaf1b99d0014591faab8c6cad897df7f345da9b98d9a4f560c8d0
Shader 'CubemapRoughnessRasterShaderRD' (group 0) SHA256: 962afd6e2abfaf1b99d0014591faab8c6cad897df7f345da9b98d9a4f560c8d0
Shader 'SpecularMergeShaderRD' (group 0) SHA256: 2a1f4efcac9c94e97732581883706096b536a5591eeaafb086efa80e8418ffea
Shader 'SpecularMergeShaderRD' (group 0) SHA256: 2a1f4efcac9c94e97732581883706096b536a5591eeaafb086efa80e8418ffea
Shader 'ShadowFrustumShaderRD' (group 0) SHA256: 8ffff230ab427840e93dd79dfa0631002d74a82943f4d1e3d3ce23c7a8954db4
Shader 'ShadowFrustumShaderRD' (group 0) SHA256: 8ffff230ab427840e93dd79dfa0631002d74a82943f4d1e3d3ce23c7a8954db4
Shader 'MotionVectorsShaderRD' (group 0) SHA256: 5dcc88fc536f1b60ee01359298130471af2a29487dcf556b67e0e953e8b91655
Shader 'MotionVectorsShaderRD' (group 0) SHA256: 5dcc88fc536f1b60ee01359298130471af2a29487dcf556b67e0e953e8b91655
Shader 'LuminanceReduceRasterShaderRD' (group 0) SHA256: fbac6dbbf0071eb78b79e7807dfe60bffc6488db0ab9d31e0ee00df20319ce6e
Shader 'LuminanceReduceRasterShaderRD' (group 0) SHA256: fbac6dbbf0071eb78b79e7807dfe60bffc6488db0ab9d31e0ee00df20319ce6e
Shader 'TonemapShaderRD' (group 0) SHA256: b947a9cc5d44ad577b236462eb0a4fcd80bce1745c38ee168a8fcc9fa800bfe4
Shader 'TonemapShaderRD' (group 0) SHA256: b947a9cc5d44ad577b236462eb0a4fcd80bce1745c38ee168a8fcc9fa800bfe4
Shader 'BlitShaderRD' (group 0) SHA256: 0e6a459c322d7fb87a642985a50befb4eb4e0da295f7131ffa4ff65537e856b4
Shader 'BlitShaderRD' (group 0) SHA256: 0e6a459c322d7fb87a642985a50befb4eb4e0da295f7131ffa4ff65537e856b4
CoreAudio: detected 2 channels
CoreAudio: detected 2 channels
CoreAudio: audio buffer frames: 512 calculated latency: 11ms
CoreAudio: audio buffer frames: 512 calculated latency: 11ms

 
TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
TextServer: Primary interface set to: "ICU / HarfBuzz / Graphite (Built-in)".
USER ERROR: Godot-JVM: Error parsing Godot Kotlin configuration ! Falling back to default configuration
   at: from_json (modules/kotlin_jvm/src/gd_kotlin_configuration.cpp:36)
USER ERROR: Godot-JVM: Error parsing Godot Kotlin configuration ! Falling back to default configuration
   at: from_json (modules/kotlin_jvm/src/gd_kotlin_configuration.cpp:36)
Godot-JVM: Starting JVM ...
Godot-JVM: Starting JVM ...
Godot-JVM: Using jvm type: graal_native_image
Godot-JVM: Using jvm type: graal_native_image
Godot-JVM: Starting GC thread
Godot-JVM: GC thread started.
Godot-JVM: GC thread started.
Godot-JVM: ClassInheritanceParent user type is parent of ClassInheritanceChild.
Godot-JVM: ClassInheritanceParent user type is parent of ClassInheritanceChild.
Godot-JVM: godot_tests_library_fqname_FQNLSimple user type is parent of godot_tests_library_fqname_FQNLSimpleChild.
Godot-JVM: godot_tests_library_fqname_FQNLSimple user type is parent of godot_tests_library_fqname_FQNLSimpleChild.
CORE API HASH: 2677697815
CORE API HASH: 2677697815
EDITOR API HASH: 1313472085
EDITOR API HASH: 1313472085
[mvk-info] Created 3 swapchain images with size (2436, 1125) and contents scale 3.0 in layer (null) (0x3038ab900) on screen Main Screen.
Loaded builtin CA certificates
Loaded builtin CA certificates
Failed to get modified time for: res://addons/gut/fonts/AnonymousPro-Regular.ttf
Failed to get modified time for: res://addons/gut/fonts/AnonymousPro-Regular.ttf
Failed to get modified time for: res://addons/gut/fonts/CourierPrime-Regular.ttf
Failed to get modified time for: res://addons/gut/fonts/CourierPrime-Regular.ttf
Failed to get modified time for: res://addons/gut/images/Script.svg
Failed to get modified time for: res://addons/gut/images/Script.svg
Failed to get modified time for: res://addons/gut/images/Folder.svg
Failed to get modified time for: res://addons/gut/images/Folder.svg
USER WARNING: Icon not supported by this display server.
   at: set_icon (servers/display_server.cpp:577)
USER WARNING: Icon not supported by this display server.
   at: set_icon (servers/display_server.cpp:577)
GUT config loaded
GUT config loaded
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-Regular.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-Regular.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-Bold.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-Bold.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-Italic.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-Italic.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-BoldItalic.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
USER ERROR: Can't open file from path 'res://addons/gut/fonts/CourierPrime-BoldItalic.ttf'.
   at: get_file_as_bytes (core/io/file_access.cpp:748)
\^[[1m[INFO]:  \^[[0m
�[1m[INFO]:  �[0m
using [/var/mobile/Containers/Data/Application/87AE54C6-1D40-4DB4-80A3-E0D9E8F10EED/Documents] for temporary output.
using [/var/mobile/Containers/Data/Application/87AE54C6-1D40-4DB4-80A3-E0D9E8F10EED/Documents] for temporary output.
Godot version:  4.2.1
GUT version:  9.1.1
Godot version:  4.2.1
GUT version:  9.1.1





\^[[33m==============================================
\^[[0m
�[33m==============================================
�[0m
\^[[33m= Run Summary
\^[[0m
�[33m= Run Summary
�[0m
\^[[33m==============================================
\^[[0m
�[33m==============================================
�[0m


---- Totals ----
---- Totals ----
Scripts           none
Scripts           none
Tests             none
Tests             none
  Passing         none
  Passing         none
Asserts           none
Asserts           none
Time              0.001s
Time              0.001s



\^[[32m---- All tests passed! ----
\^[[0m
�[32m---- All tests passed! ----
�[0m

It looks like you are using GUT 9.1.1. Update GUT to 9.2.1, I think this is related to #557 (which I completely forgot about). This was fixed in 9.2.0.

Indeed, this works.
Sorry for forgetting to update.