diff mbox series

[RFC,05/21] t3404: work around platform-specific behaviour on macOS 10.15

Message ID 00fd829833cae1d192d6c42237aa13427156e3ea.1727881164.git.ps@pks.im (mailing list archive)
State New
Headers show
Series Modernize the build system | expand

Commit Message

Patrick Steinhardt Oct. 2, 2024, 3:15 p.m. UTC
Two of our tests in t3404 use indented HERE docs where leading tabs on
some of the lines are actually relevant. The tabs do get removed though,
and we try to fix this up by using sed(1) to replace leading tabs in the
actual output, as well. But on macOS 10.15 this doesn't work as expected
and we somehow keep the tabs around in the actual output.

Work around this issue by retaining the tabs.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 t/t3404-rebase-interactive.sh | 38 +++++++++++++++++------------------
 1 file changed, 18 insertions(+), 20 deletions(-)

Comments

Eric Sunshine Oct. 2, 2024, 9:43 p.m. UTC | #1
On Wed, Oct 2, 2024 at 11:17 AM Patrick Steinhardt <ps@pks.im> wrote:
> Two of our tests in t3404 use indented HERE docs where leading tabs on
> some of the lines are actually relevant. The tabs do get removed though,
> and we try to fix this up by using sed(1) to replace leading tabs in the
> actual output, as well. But on macOS 10.15 this doesn't work as expected
> and we somehow keep the tabs around in the actual output.

I presume this nebulous explanation is due to the fact that the reason
why macOS 10.15 exhibits this anomalous behavior is not yet known?

> Work around this issue by retaining the tabs.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
> @@ -1917,18 +1917,17 @@ test_expect_success '--update-refs updates refs correctly' '
> -       cat >expect <<-\EOF &&
> -       Successfully rebased and updated refs/heads/update-refs.
> -       Updated the following refs with --update-refs:
> -               refs/heads/first
> -               refs/heads/no-conflict-branch
> -               refs/heads/second
> -               refs/heads/third
> -       EOF
> +       cat >expect <<\EOF &&
> +Successfully rebased and updated refs/heads/update-refs.
> +Updated the following refs with --update-refs:
> +       refs/heads/first
> +       refs/heads/no-conflict-branch
> +       refs/heads/second
> +       refs/heads/third
> +EOF

Although this works, the problem with this change (and its sibling
later in the patch) is that someday someone is going to come along
(say, for instance, a GSoC applicant doing a microproject) who submits
a patch to (re-)"modernize" this test by using `<<-` to (re-)indent
the heredoc body. A better approach would probably be to retain `<<-`
and use q_to_tab():

    q_to_tab >expect <<-\EOF &&
    Qrefs/heads/first
    Q...
    Qrefs/heads/third
    EOF
diff mbox series

Patch

diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index f171af3061..da4f3e6caf 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -1917,18 +1917,17 @@  test_expect_success '--update-refs updates refs correctly' '
 	test_cmp_rev HEAD~1 refs/heads/third &&
 	test_cmp_rev HEAD refs/heads/no-conflict-branch &&
 
-	cat >expect <<-\EOF &&
-	Successfully rebased and updated refs/heads/update-refs.
-	Updated the following refs with --update-refs:
-		refs/heads/first
-		refs/heads/no-conflict-branch
-		refs/heads/second
-		refs/heads/third
-	EOF
+	cat >expect <<\EOF &&
+Successfully rebased and updated refs/heads/update-refs.
+Updated the following refs with --update-refs:
+	refs/heads/first
+	refs/heads/no-conflict-branch
+	refs/heads/second
+	refs/heads/third
+EOF
 
 	# Clear "Rebasing (X/Y)" progress lines and drop leading tabs.
-	sed -e "s/Rebasing.*Successfully/Successfully/g" -e "s/^\t//g" \
-		<err >err.trimmed &&
+	sed "s/Rebasing.*Successfully/Successfully/g" <err >err.trimmed &&
 	test_cmp expect err.trimmed
 '
 
@@ -2178,19 +2177,18 @@  test_expect_success '--update-refs: check failed ref update' '
 	test_must_fail git rebase --continue 2>err &&
 	grep "update_ref failed for ref '\''refs/heads/second'\''" err &&
 
-	cat >expect <<-\EOF &&
-	Updated the following refs with --update-refs:
-		refs/heads/first
-		refs/heads/no-conflict-branch
-		refs/heads/third
-	Failed to update the following refs with --update-refs:
-		refs/heads/second
-	EOF
+	cat >expect <<\EOF &&
+Updated the following refs with --update-refs:
+	refs/heads/first
+	refs/heads/no-conflict-branch
+	refs/heads/third
+Failed to update the following refs with --update-refs:
+	refs/heads/second
+EOF
 
 	# Clear "Rebasing (X/Y)" progress lines and drop leading tabs.
 	tail -n 6 err >err.last &&
-	sed -e "s/Rebasing.*Successfully/Successfully/g" -e "s/^\t//g" \
-		<err.last >err.trimmed &&
+	sed "s/Rebasing.*Successfully/Successfully/g" <err.last >err.trimmed &&
 	test_cmp expect err.trimmed
 '