- 
                Notifications
    
You must be signed in to change notification settings  - Fork 69
 
Open
Description
Summary
xctestrunner incorrectly parses the maxRuntimeVersion of iPhone 6s Plus (and similar devices) as 15.3, which makes it impossible to create a simulator with iOS 15.5.
Steps to Reproduce
Run following command on the valid bazel project:
bazel test --ios_simulator_device='iPhone 6s Plus' --ios_simulator_version=15.5Actual Behavior
The test runner fails with:
Traceback (most recent call last):
  File "/path/to/bazel//a59b5fbd1ac4fd988fa8e6c30761d359/sandbox/darwin-sandbox/487/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/Tests/Foundation/NSData_zlibTests/NSData_zlibUnitTest.runfiles/_main/../rules_apple++non_module_deps+xctestrunner/xctestrunner/test_runner/ios_test_runner.py", line 319, in <module>
    sys.exit(main(sys.argv))
             ^^^^^^^^^^^^^^
  File "/path/to/bazel//a59b5fbd1ac4fd988fa8e6c30761d359/sandbox/darwin-sandbox/487/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/Tests/Foundation/NSData_zlibTests/NSData_zlibUnitTest.runfiles/_main/../rules_apple++non_module_deps+xctestrunner/xctestrunner/test_runner/ios_test_runner.py", line 313, in main
    exit_code = args.func(args)
                ^^^^^^^^^^^^^^^
  File "/path/to/bazel//a59b5fbd1ac4fd988fa8e6c30761d359/sandbox/darwin-sandbox/487/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/Tests/Foundation/NSData_zlibTests/NSData_zlibUnitTest.runfiles/_main/../rules_apple++non_module_deps+xctestrunner/xctestrunner/test_runner/ios_test_runner.py", line 216, in _SimulatorTest
    return _RunSimulatorTest(args)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/to/bazel//a59b5fbd1ac4fd988fa8e6c30761d359/sandbox/darwin-sandbox/487/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/Tests/Foundation/NSData_zlibTests/NSData_zlibUnitTest.runfiles/_main/../rules_apple++non_module_deps+xctestrunner/xctestrunner/test_runner/ios_test_runner.py", line 186, in _RunSimulatorTest
    simulator_id, _, os_version, _ = simulator_util.CreateNewSimulator(
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/path/to/bazel//a59b5fbd1ac4fd988fa8e6c30761d359/sandbox/darwin-sandbox/487/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/Tests/Foundation/NSData_zlibTests/NSData_zlibUnitTest.runfiles/rules_apple++non_module_deps+xctestrunner/xctestrunner/simulator_control/simulator_util.py", line 358, in CreateNewSimulator
    _ValidateSimulatorTypeWithOsVersion(device_type, os_version)
  File "/path/to/bazel//a59b5fbd1ac4fd988fa8e6c30761d359/sandbox/darwin-sandbox/487/execroot/_main/bazel-out/darwin_arm64-fastbuild/bin/Tests/Foundation/NSData_zlibTests/NSData_zlibUnitTest.runfiles/rules_apple++non_module_deps+xctestrunner/xctestrunner/simulator_control/simulator_util.py", line 654, in _ValidateSimulatorTypeWithOsVersion
    raise ios_errors.IllegalArgumentError(
xctestrunner.shared.ios_errors.IllegalArgumentError: The max OS version of iPhone 6s Plus is 15.300000. But current OS version is 15.5
error: tests exited with '1
Root Cause
This happens because xctestrunner/simulator_control/simtype_profile.py does not handle special maxRuntimeVersion patterns correctly. On my machine:
$ xcrun simctl list devicetypes -j | python3 -c "
import json, sys
data = json.load(sys.stdin)
iphone_devices = [d for d in data['devicetypes'] if d['name'].startswith('iPhone')]
print('iPhone Runtime Version Analysis:')
print('=' * 50)
for device in iphone_devices:
    max_runtime = device.get('maxRuntimeVersionString', 'unlimited')
    print(f'{device[\"name\"]:30} Max Runtime: {max_runtime}')
"shows:
iPhone Runtime Version Analysis:
==================================================
iPhone 16 Pro                  Max Runtime: 65535.255.255
iPhone 16 Pro Max              Max Runtime: 65535.255.255
iPhone 16e                     Max Runtime: 65535.255.255
iPhone 16                      Max Runtime: 65535.255.255
iPhone 16 Plus                 Max Runtime: 65535.255.255
iPhone 15 Pro                  Max Runtime: 65535.255.255
iPhone 15 Pro Max              Max Runtime: 65535.255.255
iPhone 15                      Max Runtime: 65535.255.255
iPhone 15 Plus                 Max Runtime: 65535.255.255
iPhone 14 Pro                  Max Runtime: 65535.255.255
iPhone 14 Pro Max              Max Runtime: 65535.255.255
iPhone 14                      Max Runtime: 65535.255.255
iPhone 14 Plus                 Max Runtime: 65535.255.255
iPhone SE (3rd generation)     Max Runtime: 65535.255.255
iPhone 13 Pro                  Max Runtime: 65535.255.255
iPhone 13 Pro Max              Max Runtime: 65535.255.255
iPhone 13                      Max Runtime: 65535.255.255
iPhone 13 mini                 Max Runtime: 65535.255.255
iPhone 12 Pro                  Max Runtime: 65535.255.255
iPhone 12 Pro Max              Max Runtime: 65535.255.255
iPhone 12                      Max Runtime: 65535.255.255
iPhone 12 mini                 Max Runtime: 65535.255.255
iPhone SE (2nd generation)     Max Runtime: 65535.255.255
iPhone 11 Pro                  Max Runtime: 65535.255.255
iPhone 11 Pro Max              Max Runtime: 65535.255.255
iPhone 11                      Max Runtime: 65535.255.255
iPhone Xʀ                      Max Runtime: 18.99.0
iPhone Xs                      Max Runtime: 18.99.0
iPhone Xs Max                  Max Runtime: 18.99.0
iPhone X                       Max Runtime: 16.9.0
iPhone 8                       Max Runtime: 16.9.0
iPhone 8 Plus                  Max Runtime: 16.9.0
iPhone 7                       Max Runtime: 15.255.255
iPhone 7 Plus                  Max Runtime: 15.255.255
iPhone SE (1st generation)     Max Runtime: 15.255.255
iPhone 6s                      Max Runtime: 15.255.255
iPhone 6s Plus                 Max Runtime: 15.255.255
Considering the model's last supported iOS versions, the following patterns are used:
65535.255.255→ effectively unlimited18.99.0→ upper bound pattern15.255.255→ upper bound pattern
However, xctestrunner truncates these values incorrectly, causing 15.255.255 to be parsed as 15.3.
Expected Behavior
iPhone 6s Plusshould be treated as supporting up to iOS 15.x, so requesting15.5should succeed.- Special version encodings like 
255.255,99.0, or65535.255.255should be parsed as upper limits, not literal decimal values. 
Metadata
Metadata
Assignees
Labels
No labels