t3420 remove progress from output
cover t3420 remove progress from output
Remove ugliness in the tests that check the output of git rebase
Based-On: sg/rebase-progress Cc: SZEDER Gábor [email protected] [[email protected]]
Phillip Wood (1):
t3420: remove progress lines before comparing output
t/t3420-rebase-autostash.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
base-commit: 5b12e3123b7b70e3875404a4ffe571ca079364fe
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-276%2Fphillipwood%2Fwip%2Ft3420-remove-progress-from-output-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-276/phillipwood/wip/t3420-remove-progress-from-output-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/276
Signature · 1 line
gitgitgadget
PATCH 1/1 t3420: remove progress lines before comparing output
From: Phillip Wood <[email protected]>
Some of the tests check the output of rebase is what we expect. These were added after a regression that added unwanted stash output when using --autostash. They are useful as they prevent unintended changes to the output of the various rebase commands. However they also include all the progress output which is less useful as it only tests what would be written to a dumb terminal which is not the normal use case. The recent changes to fix clearing the line when printing progress necessarily meant making an ugly change to these tests. Address this my removing the progress output before comparing it to the expected output. We do this by removing everything before the final "\r" on each line as we don't care about the progress indicator, but we do care about what is printed immediately after it.
--- t/t3420-rebase-autostash.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)
t/t3420-rebase-autostash.sh +9 -7
@@ -48,8 +48,8 @@ create_expected_success_interactive () { q_to_cr >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplied autostash. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Applied autostash. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }
@@ -67,13 +67,13 @@ create_expected_failure_am () { } create_expected_failure_interactive () { - q_to_cr >expected <<-EOF + cat >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplying autostash resulted in conflicts. + Applying autostash resulted in conflicts. Your changes are safe in the stash. You can run "git stash pop" or "git stash drop" at any time. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }
@@ -109,7 +109,8 @@ testrebase () { suffix=interactive fi && create_expected_success_$suffix && - test_i18ncmp expected actual + sed "$(printf "s/.*\\r//")" <actual >actual2 && + test_i18ncmp expected actual2 ' test_expect_success "rebase$type: dirty index, non-conflicting rebase" '
@@ -209,7 +210,8 @@ testrebase () { suffix=interactive fi && create_expected_failure_$suffix && - test_i18ncmp expected actual + sed "$(printf "s/.*\\r//")" <actual >actual2 && + test_i18ncmp expected actual2 ' }
Signature · 1 line
gitgitgadget
Re: [PATCH 1/1] t3420: remove progress lines before comparing output
Quoted 4 lines · Phillip Wood via GitGitGadget
progress output before comparing it to the expected output. We do this by removing everything before the final "\r" on each line as we don't care about the progress indicator, but we do care about what is printed immediately after it.
As long as sed implementation used here does not do anything funny to CR, I think the approach to strip everything before the last CR on the line is sensible. As I am not familiar with how Windows port of sed wants to treat a CR byte in the pattern, I am not sure about the precondition of the above statement, though.
I also have to wonder if we can/want to do this without an extra printf process every time we sanitize the output, though I do not think I care too deeply about it.
Quoted 56 lines
Signed-off-by Phillip Wood <[email protected]>--- t/t3420-rebase-autostash.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)t/t3420-rebase-autostash.sh +9
-7@@ -48,8 +48,8 @@ create_expected_success_interactive () { q_to_cr >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplied autostash. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Applied autostash. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }@@ -67,13 +67,13 @@ create_expected_failure_am () { } create_expected_failure_interactive () { - q_to_cr >expected <<-EOF + cat >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplying autostash resulted in conflicts. + Applying autostash resulted in conflicts. Your changes are safe in the stash. You can run "git stash pop" or "git stash drop" at any time. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }@@ -109,7 +109,8 @@ testrebase () { suffix=interactive fi && create_expected_success_$suffix && - test_i18ncmp expected actual + sed "$(printf "s/.*\\r//")" <actual >actual2 && + test_i18ncmp expected actual2 ' test_expect_success "rebase$type: dirty index, non-conflicting rebase" '@@ -209,7 +210,8 @@ testrebase () { suffix=interactive fi && create_expected_failure_$suffix && - test_i18ncmp expected actual + sed "$(printf "s/.*\\r//")" <actual >actual2 && + test_i18ncmp expected actual2 ' }
Re: [PATCH 1/1] t3420: remove progress lines before comparing output
Quoted 7 lines · Junio C Hamano
Quoted 4 lines · Phillip Wood via GitGitGadget
progress output before comparing it to the expected output. We do this by removing everything before the final "\r" on each line as we don't care about the progress indicator, but we do care about what is printed immediately after it.
Quoted 5 lines
As long as sed implementation used here does not do anything funny to CR, I think the approach to strip everything before the last CR on the line is sensible. As I am not familiar with how Windows port of sed wants to treat a CR byte in the pattern, I am not sure about the precondition of the above statement, though.
I wondered about that too, but it passes the CI tests under windows.
Quoted 3 lines
I also have to wonder if we can/want to do this without an extra printf process every time we sanitize the output, though I do not think I care too deeply about it.
I could add 're="$(printf ...)"' to the setup at the top of the file if you want
Best Wishes
Phillip
Quoted 56 lines
Quoted 56 lines
Signed-off-by Phillip Wood <[email protected]>--- t/t3420-rebase-autostash.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-)t/t3420-rebase-autostash.sh +9
-7@@ -48,8 +48,8 @@ create_expected_success_interactive () { q_to_cr >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplied autostash. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Applied autostash. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }@@ -67,13 +67,13 @@ create_expected_failure_am () { } create_expected_failure_interactive () { - q_to_cr >expected <<-EOF + cat >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplying autostash resulted in conflicts. + Applying autostash resulted in conflicts. Your changes are safe in the stash. You can run "git stash pop" or "git stash drop" at any time. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }@@ -109,7 +109,8 @@ testrebase () { suffix=interactive fi && create_expected_success_$suffix && - test_i18ncmp expected actual + sed "$(printf "s/.*\\r//")" <actual >actual2 && + test_i18ncmp expected actual2 ' test_expect_success "rebase$type: dirty index, non-conflicting rebase" '@@ -209,7 +210,8 @@ testrebase () { suffix=interactive fi && create_expected_failure_$suffix && - test_i18ncmp expected actual + sed "$(printf "s/.*\\r//")" <actual >actual2 && + test_i18ncmp expected actual2 ' }
Re: [PATCH 1/1] t3420: remove progress lines before comparing output
Quoted 7 lines · Phillip Wood
Quoted 5 lines
As long as sed implementation used here does not do anything funny to CR, I think the approach to strip everything before the last CR on the line is sensible. As I am not familiar with how Windows port of sed wants to treat a CR byte in the pattern, I am not sure about the precondition of the above statement, though.
I wondered about that too, but it passes the CI tests under windows.
Hopefully Git for Windows, MinGW, and CygWin would all behave similarly.
Quoted 6 lines
Quoted 3 lines
I also have to wonder if we can/want to do this without an extra printf process every time we sanitize the output, though I do not think I care too deeply about it.
I could add 're="$(printf ...)"' to the setup at the top of the file if you want
As I do not care too deeply about it, we recently saw a lot about reducing number of processes in the tests, so apparently some folks care and I presume they want to see something like that to happen. I do not think $re is a good name for such a variable, though ;-)
Re: [PATCH 1/1] t3420: remove progress lines before comparing output
Quoted 17 lines · Junio C Hamano
Quoted 7 lines · Phillip Wood
Quoted 5 lines
As long as sed implementation used here does not do anything funny to CR, I think the approach to strip everything before the last CR on the line is sensible. As I am not familiar with how Windows port of sed wants to treat a CR byte in the pattern, I am not sure about the precondition of the above statement, though.
I wondered about that too, but it passes the CI tests under windows.
Hopefully Git for Windows, MinGW, and CygWin would all behave similarly.
Quoted 4 lines
Quoted 3 lines
I also have to wonder if we can/want to do this without an extra printf process every time we sanitize the output, though I do not think I care too deeply about it.
Quoted 7 lines
Quoted 2 lines
I could add 're="$(printf ...)"' to the setup at the top of the file if you want
As I do not care too deeply about it, we recently saw a lot about reducing number of processes in the tests, so apparently some folks care and I presume they want to see something like that to happen. I do not think $re is a good name for such a variable, though ;-)
Yes, $re was just a place holder - naming is hard ...
Best Wishes
Phillip
v2 cover t3420 remove progress from output
In reply to Phillip Wood via GitGitGadgetRemove ugliness in the tests that check the output of git rebase
I've updated this to avoid repeated calls to printf as suggested by Junio
Based-On: sg/rebase-progress
Phillip Wood (1):
t3420: remove progress lines before comparing output
t/t3420-rebase-autostash.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
base-commit: 5b12e3123b7b70e3875404a4ffe571ca079364fe
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-276%2Fphillipwood%2Fwip%2Ft3420-remove-progress-from-output-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-276/phillipwood/wip/t3420-remove-progress-from-output-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/276
Range-diff vs v1:
1: 52501623f6 ! 1: e1b4023bc0 t3420: remove progress lines before comparing output
@@ -20,6 +20,16 @@
diff --git a/t/t3420-rebase-autostash.sh b/t/t3420-rebase-autostash.sh
--- a/t/t3420-rebase-autostash.sh
+++ b/t/t3420-rebase-autostash.sh
+@@
+ echo conflicting-change >file2 &&
+ git add . &&
+ test_tick &&
+- git commit -m "related commit"
++ git commit -m "related commit" &&
++ remove_progress_re="$(printf "s/.*\\r//")"
+ '
+
+ create_expected_success_am () {
@@
q_to_cr >expected <<-EOF
$(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual)
@@ -53,7 +63,7 @@
fi &&
create_expected_success_$suffix &&
- test_i18ncmp expected actual
-+ sed "$(printf "s/.*\\r//")" <actual >actual2 &&
++ sed "$remove_progress_re" <actual >actual2 &&
+ test_i18ncmp expected actual2
'
@@ -63,7 +73,7 @@
fi &&
create_expected_failure_$suffix &&
- test_i18ncmp expected actual
-+ sed "$(printf "s/.*\\r//")" <actual >actual2 &&
++ sed "$remove_progress_re" <actual >actual2 &&
+ test_i18ncmp expected actual2
'
}Signature · 1 line
gitgitgadget
PATCH v2 1/1 t3420: remove progress lines before comparing output
From: Phillip Wood <[email protected]>
Some of the tests check the output of rebase is what we expect. These were added after a regression that added unwanted stash output when using --autostash. They are useful as they prevent unintended changes to the output of the various rebase commands. However they also include all the progress output which is less useful as it only tests what would be written to a dumb terminal which is not the normal use case. The recent changes to fix clearing the line when printing progress necessarily meant making an ugly change to these tests. Address this my removing the progress output before comparing it to the expected output. We do this by removing everything before the final "\r" on each line as we don't care about the progress indicator, but we do care about what is printed immediately after it.
--- t/t3420-rebase-autostash.sh | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
t/t3420-rebase-autostash.sh +11 -8
@@ -30,7 +30,8 @@ test_expect_success setup ' echo conflicting-change >file2 && git add . && test_tick && - git commit -m "related commit" + git commit -m "related commit" && + remove_progress_re="$(printf "s/.*\\r//")" ' create_expected_success_am () {
@@ -48,8 +49,8 @@ create_expected_success_interactive () { q_to_cr >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplied autostash. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Applied autostash. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }
@@ -67,13 +68,13 @@ create_expected_failure_am () { } create_expected_failure_interactive () { - q_to_cr >expected <<-EOF + cat >expected <<-EOF $(grep "^Created autostash: [0-9a-f][0-9a-f]*\$" actual) HEAD is now at $(git rev-parse --short feature-branch) third commit - Rebasing (1/2)QRebasing (2/2)QApplying autostash resulted in conflicts. + Applying autostash resulted in conflicts. Your changes are safe in the stash. You can run "git stash pop" or "git stash drop" at any time. - Q QSuccessfully rebased and updated refs/heads/rebased-feature-branch. + Successfully rebased and updated refs/heads/rebased-feature-branch. EOF }
@@ -109,7 +110,8 @@ testrebase () { suffix=interactive fi && create_expected_success_$suffix && - test_i18ncmp expected actual + sed "$remove_progress_re" <actual >actual2 && + test_i18ncmp expected actual2 ' test_expect_success "rebase$type: dirty index, non-conflicting rebase" '
@@ -209,7 +211,8 @@ testrebase () { suffix=interactive fi && create_expected_failure_$suffix && - test_i18ncmp expected actual + sed "$remove_progress_re" <actual >actual2 && + test_i18ncmp expected actual2 ' }
Signature · 1 line
gitgitgadget