Skip to content

Commit 2fff2ec

Browse files
Use a non-printable character for sed delimiters (#2790)
Prevents issues if `@` appears in the substation. Signed-off-by: Brentley Jones <github@brentleyjones.com>
1 parent e7c7a5a commit 2fff2ec

2 files changed

Lines changed: 40 additions & 32 deletions

File tree

apple/testing/default_runner/ios_xctestrun_runner.template.sh

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ for test_env_key_value in ${test_env}; do
168168
done
169169
IFS=$saved_IFS
170170

171+
declare -r sed_delim=$'\001'
172+
171173
xcrun_target_app_path=""
172174
xcrun_test_host_bundle_identifier=""
173175
xcrun_test_bundle_path="__TESTROOT__/$test_bundle_name.xctest"
@@ -219,10 +221,10 @@ if [[ -n "$test_host_path" ]]; then
219221
runner_app_infoplist="$runner_app_destination/Info.plist"
220222
/usr/bin/plutil -convert xml1 "$runner_app_infoplist"
221223
/usr/bin/sed \
222-
-e "s@\$(WRAPPEDPRODUCTNAME)@XCTRunner@g"\
223-
-e "s@WRAPPEDPRODUCTNAME@XCTRunner@g"\
224-
-e "s@\$(WRAPPEDPRODUCTBUNDLEIDENTIFIER)@$xcrun_test_host_bundle_identifier@g"\
225-
-e "s@WRAPPEDPRODUCTBUNDLEIDENTIFIER@$xcrun_test_host_bundle_identifier@g"\
224+
-e "s${sed_delim}\$(WRAPPEDPRODUCTNAME)${sed_delim}XCTRunner${sed_delim}g"\
225+
-e "s${sed_delim}WRAPPEDPRODUCTNAME${sed_delim}XCTRunner${sed_delim}g"\
226+
-e "s${sed_delim}\$(WRAPPEDPRODUCTBUNDLEIDENTIFIER)${sed_delim}$xcrun_test_host_bundle_identifier${sed_delim}g"\
227+
-e "s${sed_delim}WRAPPEDPRODUCTBUNDLEIDENTIFIER${sed_delim}$xcrun_test_host_bundle_identifier${sed_delim}g"\
226228
-i "" \
227229
"$runner_app_infoplist"
228230
/usr/bin/plutil -convert binary1 "$runner_app_infoplist"
@@ -269,8 +271,8 @@ if [[ -n "$test_host_path" ]]; then
269271
codesigning_team_identifier=$(codesign -dvv "$test_host_binary_path" 2>&1 >/dev/null | /usr/bin/sed -n -E 's/TeamIdentifier=(.*)/\1/p')
270272
codesigning_authority=$(codesign -dvv "$test_host_binary_path" 2>&1 >/dev/null | /usr/bin/sed -n -E 's/^Authority=(.*)/\1/p'| head -n 1)
271273
/usr/bin/sed \
272-
-e "s@BAZEL_CODESIGNING_TEAM_IDENTIFIER@$codesigning_team_identifier@g" \
273-
-e "s@BAZEL_TEST_HOST_BUNDLE_IDENTIFIER@$xcrun_test_host_bundle_identifier@g" \
274+
-e "s${sed_delim}BAZEL_CODESIGNING_TEAM_IDENTIFIER${sed_delim}$codesigning_team_identifier${sed_delim}g" \
275+
-e "s${sed_delim}BAZEL_TEST_HOST_BUNDLE_IDENTIFIER${sed_delim}$xcrun_test_host_bundle_identifier${sed_delim}g" \
274276
"%(xctrunner_entitlements_template)s" > "$xctrunner_entitlements"
275277
codesign -f \
276278
--entitlements "$xctrunner_entitlements" \
@@ -472,27 +474,28 @@ if [[ "$should_use_xcodebuild" == true ]]; then
472474

473475
readonly xctestrun_file="$test_tmp_dir/tests.xctestrun"
474476
/usr/bin/sed \
475-
-e "s@BAZEL_INSERT_LIBRARIES@$xctestrun_libraries@g" \
476-
-e "s@BAZEL_TEST_BUNDLE_PATH@$xcrun_test_bundle_path@g" \
477-
-e "s@BAZEL_TEST_ENVIRONMENT@$xctestrun_env@g" \
478-
-e "s@BAZEL_TEST_HOST_BASED@$xctestrun_test_host_based@g" \
479-
-e "s@BAZEL_TEST_HOST_PATH@$xctestrun_test_host_path@g" \
480-
-e "s@BAZEL_TEST_HOST_BUNDLE_IDENTIFIER@$xcrun_test_host_bundle_identifier@g" \
481-
-e "s@BAZEL_TEST_PRODUCT_MODULE_NAME@${test_bundle_name//-/_}@g" \
482-
-e "s@BAZEL_IS_XCTRUNNER_HOSTED_BUNDLE@$xcrun_is_xctrunner_hosted_bundle@g" \
483-
-e "s@BAZEL_IS_UI_TEST_BUNDLE@$xcrun_is_ui_test_bundle@g" \
484-
-e "s@BAZEL_TARGET_APP_PATH@$xcrun_target_app_path@g" \
485-
-e "s@BAZEL_TEST_ORDER_STRING@%(test_order)s@g" \
486-
-e "s@BAZEL_DYLD_LIBRARY_PATH@__PLATFORMS__/$test_execution_platform/Developer/usr/lib@g" \
487-
-e "s@BAZEL_COVERAGE_OUTPUT_DIR@$test_tmp_dir@g" \
488-
-e "s@BAZEL_COMMAND_LINE_ARGS_SECTION@$xctestrun_cmd_line_args_section@g" \
489-
-e "s@BAZEL_ATTACHMENT_LIFETIME_SECTION@$xctestrun_attachment_lifetime_section@g" \
490-
-e "s@BAZEL_SKIP_TEST_SECTION@$xctestrun_skip_test_section@g" \
491-
-e "s@BAZEL_ONLY_TEST_SECTION@$xctestrun_only_test_section@g" \
492-
-e "s@BAZEL_ARCHITECTURE@$architecture@g" \
493-
-e "s@BAZEL_TEST_BUNDLE_NAME@$test_bundle_name.xctest@g" \
494-
-e "s@BAZEL_PRODUCT_PATH@$xcrun_test_bundle_path@g" \
495-
"%(xctestrun_template)s" > "$xctestrun_file"
477+
-e "s${sed_delim}BAZEL_INSERT_LIBRARIES${sed_delim}$xctestrun_libraries${sed_delim}g" \
478+
-e "s${sed_delim}BAZEL_TEST_BUNDLE_PATH${sed_delim}$xcrun_test_bundle_path${sed_delim}g" \
479+
-e "s${sed_delim}BAZEL_TEST_ENVIRONMENT${sed_delim}$xctestrun_env${sed_delim}g" \
480+
-e "s${sed_delim}BAZEL_TEST_HOST_BASED${sed_delim}$xctestrun_test_host_based${sed_delim}g" \
481+
-e "s${sed_delim}BAZEL_TEST_HOST_PATH${sed_delim}$xctestrun_test_host_path${sed_delim}g" \
482+
-e "s${sed_delim}BAZEL_TEST_HOST_BUNDLE_IDENTIFIER${sed_delim}$xcrun_test_host_bundle_identifier${sed_delim}g" \
483+
-e "s${sed_delim}BAZEL_TEST_PRODUCT_MODULE_NAME${sed_delim}${test_bundle_name//-/_}${sed_delim}g" \
484+
-e "s${sed_delim}BAZEL_IS_XCTRUNNER_HOSTED_BUNDLE${sed_delim}$xcrun_is_xctrunner_hosted_bundle${sed_delim}g" \
485+
-e "s${sed_delim}BAZEL_IS_UI_TEST_BUNDLE${sed_delim}$xcrun_is_ui_test_bundle${sed_delim}g" \
486+
-e "s${sed_delim}BAZEL_TARGET_APP_PATH${sed_delim}$xcrun_target_app_path${sed_delim}g" \
487+
-e "s${sed_delim}BAZEL_TEST_ORDER_STRING${sed_delim}%(test_order)s${sed_delim}g" \
488+
-e "s${sed_delim}BAZEL_DYLD_LIBRARY_PATH${sed_delim}__PLATFORMS__/$test_execution_platform/Developer/usr/lib${sed_delim}g" \
489+
-e "s${sed_delim}BAZEL_COVERAGE_OUTPUT_DIR${sed_delim}$test_tmp_dir${sed_delim}g" \
490+
-e "s${sed_delim}BAZEL_COMMAND_LINE_ARGS_SECTION${sed_delim}$xctestrun_cmd_line_args_section${sed_delim}g" \
491+
-e "s${sed_delim}BAZEL_ATTACHMENT_LIFETIME_SECTION${sed_delim}$xctestrun_attachment_lifetime_section${sed_delim}g" \
492+
-e "s${sed_delim}BAZEL_SKIP_TEST_SECTION${sed_delim}$xctestrun_skip_test_section${sed_delim}g" \
493+
-e "s${sed_delim}BAZEL_ONLY_TEST_SECTION${sed_delim}$xctestrun_only_test_section${sed_delim}g" \
494+
-e "s${sed_delim}BAZEL_ARCHITECTURE${sed_delim}$architecture${sed_delim}g" \
495+
-e "s${sed_delim}BAZEL_TEST_BUNDLE_NAME${sed_delim}$test_bundle_name.xctest${sed_delim}g" \
496+
-e "s${sed_delim}BAZEL_PRODUCT_PATH${sed_delim}$xcrun_test_bundle_path${sed_delim}g" \
497+
"%(xctestrun_template)s" \
498+
> "$xctestrun_file"
496499

497500
if [[ -n "${DEBUG_XCTESTRUNNER:-}" ]]; then
498501
echo

apple/testing/default_runner/macos_test_runner.template.sh

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,17 @@ for SINGLE_TEST_ENV in ${TEST_ENV//,/ }; do
127127
XCTESTRUN_ENV+="<key>$(escape "$key")</key><string>$(escape "$value")</string>"
128128
done
129129

130+
declare -r sed_delim=$'\001'
131+
130132
# Replace the substitution values into the xctestrun file.
131-
/usr/bin/sed -i '' 's@BAZEL_TEST_BUNDLE_PATH@'"$XCTESTRUN_TEST_BUNDLE_PATH"'@g' "$XCTESTRUN"
132-
/usr/bin/sed -i '' 's@BAZEL_TEST_HOST_BASED@'"$XCTESTRUN_TEST_HOST_BASED"'@g' "$XCTESTRUN"
133-
/usr/bin/sed -i '' 's@BAZEL_TEST_HOST_BINARY@'"$XCTESTRUN_TEST_HOST_BINARY"'@g' "$XCTESTRUN"
134-
/usr/bin/sed -i '' 's@BAZEL_TEST_HOST_PATH@'"$XCTESTRUN_TEST_HOST_PATH"'@g' "$XCTESTRUN"
135-
/usr/bin/sed -i '' 's@BAZEL_TEST_ENVIRONMENT@'"$XCTESTRUN_ENV"'@g' "$XCTESTRUN"
133+
/usr/bin/sed \
134+
-e "s${sed_delim}BAZEL_TEST_BUNDLE_PATH${sed_delim}$XCTESTRUN_TEST_BUNDLE_PATH${sed_delim}g" \
135+
-e "s${sed_delim}BAZEL_TEST_HOST_BASED${sed_delim}$XCTESTRUN_TEST_HOST_BASED${sed_delim}g" \
136+
-e "s${sed_delim}BAZEL_TEST_HOST_BINARY${sed_delim}$XCTESTRUN_TEST_HOST_BINARY${sed_delim}g" \
137+
-e "s${sed_delim}BAZEL_TEST_HOST_PATH${sed_delim}$XCTESTRUN_TEST_HOST_PATH${sed_delim}g" \
138+
-e "s${sed_delim}BAZEL_TEST_ENVIRONMENT${sed_delim}$XCTESTRUN_ENV${sed_delim}g" \
139+
-i "" \
140+
"$XCTESTRUN"
136141

137142
# If XML_OUTPUT_FILE is not an absolute path, make it absolute with regards of
138143
# where this script is being run.

0 commit comments

Comments
 (0)