From 7911f3fc7875ef6bacd856a5cb74e932f73fb246 Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Thu, 22 Jul 2021 17:30:40 +0200 Subject: [PATCH] fix: xArgs command update (#2095) Fixes #1538 A small update to use a default option instead of failing straight out if the maxArgs is reached. ## Checklist - [x] Integration tests updated --- .../ftl/ios/xctest/common/ParseSwiftTests.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/test_runner/src/main/kotlin/ftl/ios/xctest/common/ParseSwiftTests.kt b/test_runner/src/main/kotlin/ftl/ios/xctest/common/ParseSwiftTests.kt index 6e6e97738f..03ac6b7b3d 100644 --- a/test_runner/src/main/kotlin/ftl/ios/xctest/common/ParseSwiftTests.kt +++ b/test_runner/src/main/kotlin/ftl/ios/xctest/common/ParseSwiftTests.kt @@ -16,11 +16,11 @@ internal fun parseSwiftTests(binary: String): List { // getconf ARG_MAX // Windows has different limits val argMax = if (isWindows) 250_36 else 262_144 - + val xargsOption = binary.quote().determineXArgsCommand(argMax) val cmd = when { - isMacOS -> "nm -gU ${binary.quote()} | xargs -s $argMax xcrun swift-demangle" - isLinux -> "export LD_LIBRARY_PATH=~/.flank; export PATH=~/.flank:\$PATH; nm -gU ${binary.quote()} | xargs -s $argMax swift-demangle" - isWindows -> "llvm-nm.exe -gU ${binary.quote().replace("\\", "/")} | xargs.exe -s $argMax swift-demangle.exe" + isMacOS -> "nm -gU ${binary.quote()} | xargs $xargsOption xcrun swift-demangle" + isLinux -> "export LD_LIBRARY_PATH=~/.flank; export PATH=~/.flank:\$PATH; nm -gU ${binary.quote()} | xargs $xargsOption swift-demangle" + isWindows -> "llvm-nm.exe -gU ${binary.quote().replace("\\", "/")} | xargs.exe $xargsOption swift-demangle.exe" else -> throw RuntimeException("Unsupported OS for Integration Tests") } @@ -45,3 +45,10 @@ internal fun parseSwiftTests(binary: String): List { } return results.distinct() } + +private fun String.determineXArgsCommand(argsMax: Int) = if (this.length > argsMax) { + println("WARNING: The amount of characters has exceeded the OS threshold for xArgs. -n1 will be used to ensure the command completes successfully. It may increase completion time substantially.") + "-n1" +} else { + "-s $argsMax" +}