summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-05-04 12:35:57 +0200
committerStefan Haller <stefan@haller-berlin.de>2024-06-03 13:02:46 +0200
commit19d0048cc486b087ca938a14ce2be91ea0f0a3ae (patch)
tree2ea12130e8ca41c6a85d35b2a337255d322964f3
parent7c51ec21bf0f787c6f2d0079e920f3d5f566c9f0 (diff)
More explicit test of status panel content
Use Equals instead of Contains for asserting the status view content. This solves the problem that we might assert Contains("↓2 repo"), but what it really shows is "↑1↓2 repo", and the test still succeeds. At best this is confusing. Also, this way we don't have to use the awkward DoesNotContain to check that it really doesn't show a checkmark. To do this, we need to fix two whitespace problems: - there was always a space at the end for no reason. Simply remove it. It was added in efb51eee96, but from looking at that diff it seems it was added accidentally. - there was a space at the beginning if the branch status was empty. This is actually a cosmetic problem, for branches without a status the text was indented by once space. Change this so that the space is added conditionally. It's a bit awkward that we have to use Decolorise here, but this will go away again later in this branch.
-rw-r--r--pkg/gui/presentation/status.go8
-rw-r--r--pkg/integration/tests/branch/delete_remote_branch_with_credential_prompt.go6
-rw-r--r--pkg/integration/tests/sync/force_push.go4
-rw-r--r--pkg/integration/tests/sync/force_push_multiple_matching.go4
-rw-r--r--pkg/integration/tests/sync/force_push_multiple_upstream.go4
-rw-r--r--pkg/integration/tests/sync/pull.go4
-rw-r--r--pkg/integration/tests/sync/pull_and_set_upstream.go4
-rw-r--r--pkg/integration/tests/sync/pull_merge.go4
-rw-r--r--pkg/integration/tests/sync/pull_merge_conflict.go4
-rw-r--r--pkg/integration/tests/sync/pull_rebase.go4
-rw-r--r--pkg/integration/tests/sync/pull_rebase_conflict.go4
-rw-r--r--pkg/integration/tests/sync/pull_rebase_interactive_conflict.go4
-rw-r--r--pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go4
-rw-r--r--pkg/integration/tests/sync/push.go2
-rw-r--r--pkg/integration/tests/sync/push_and_auto_set_upstream.go2
-rw-r--r--pkg/integration/tests/sync/push_and_set_upstream.go2
-rw-r--r--pkg/integration/tests/sync/push_follow_tags.go4
-rw-r--r--pkg/integration/tests/sync/push_no_follow_tags.go4
-rw-r--r--pkg/integration/tests/sync/push_with_credential_prompt.go6
-rw-r--r--pkg/integration/tests/sync/shared.go2
20 files changed, 42 insertions, 38 deletions
diff --git a/pkg/gui/presentation/status.go b/pkg/gui/presentation/status.go
index d3686510e..5ac591c48 100644
--- a/pkg/gui/presentation/status.go
+++ b/pkg/gui/presentation/status.go
@@ -10,6 +10,7 @@ import (
"github.com/jesseduffield/lazygit/pkg/gui/style"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/i18n"
+ "github.com/jesseduffield/lazygit/pkg/utils"
)
func FormatStatus(
@@ -24,7 +25,10 @@ func FormatStatus(
status := ""
if currentBranch.IsRealBranch() {
- status += ColoredBranchStatus(currentBranch, itemOperation, tr, userConfig) + " "
+ status += ColoredBranchStatus(currentBranch, itemOperation, tr, userConfig)
+ if utils.Decolorise(status) != "" {
+ status += " "
+ }
}
if workingTreeState != enums.REBASE_MODE_NONE {
@@ -40,7 +44,7 @@ func FormatStatus(
}
repoName = fmt.Sprintf("%s(%s%s)", repoName, icon, style.FgCyan.Sprint(linkedWorktreeName))
}
- status += fmt.Sprintf("%s → %s ", repoName, name)
+ status += fmt.Sprintf("%s → %s", repoName, name)
return status
}
diff --git a/pkg/integration/tests/branch/delete_remote_branch_with_credential_prompt.go b/pkg/integration/tests/branch/delete_remote_branch_with_credential_prompt.go
index ad8f70c43..6e3f52028 100644
--- a/pkg/integration/tests/branch/delete_remote_branch_with_credential_prompt.go
+++ b/pkg/integration/tests/branch/delete_remote_branch_with_credential_prompt.go
@@ -44,7 +44,7 @@ var DeleteRemoteBranchWithCredentialPrompt = NewIntegrationTest(NewIntegrationTe
Confirm()
}
- t.Views().Status().Content(Contains("✓ repo → mybranch"))
+ t.Views().Status().Content(Equals("✓ repo → mybranch"))
deleteBranch()
@@ -66,7 +66,7 @@ var DeleteRemoteBranchWithCredentialPrompt = NewIntegrationTest(NewIntegrationTe
Content(Contains("incorrect username/password")).
Confirm()
- t.Views().Status().Content(Contains("✓ repo → mybranch"))
+ t.Views().Status().Content(Equals("✓ repo → mybranch"))
// try again with correct password
deleteBranch()
@@ -81,7 +81,7 @@ var DeleteRemoteBranchWithCredentialPrompt = NewIntegrationTest(NewIntegrationTe
Type("password").
Confirm()
- t.Views().Status().Content(Contains("repo → mybranch").DoesNotContain("✓"))
+ t.Views().Status().Content(Equals("(upstream gone) repo → mybranch"))
t.Views().Branches().TopLines(Contains("mybranch (upstream gone)"))
},
})
diff --git a/pkg/integration/tests/sync/force_push.go b/pkg/integration/tests/sync/force_push.go
index 89d8a8371..e563cfd28 100644
--- a/pkg/integration/tests/sync/force_push.go
+++ b/pkg/integration/tests/sync/force_push.go
@@ -26,7 +26,7 @@ var ForcePush = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓1 repo → master"))
+ t.Views().Status().Content(Equals("↓1 repo → master"))
t.Views().Files().IsFocused().Press(keys.Universal.Push)
@@ -40,7 +40,7 @@ var ForcePush = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
t.Views().Remotes().Focus().
Lines(Contains("origin")).
diff --git a/pkg/integration/tests/sync/force_push_multiple_matching.go b/pkg/integration/tests/sync/force_push_multiple_matching.go
index 37c43f264..63825ee4f 100644
--- a/pkg/integration/tests/sync/force_push_multiple_matching.go
+++ b/pkg/integration/tests/sync/force_push_multiple_matching.go
@@ -22,7 +22,7 @@ var ForcePushMultipleMatching = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓1 repo → master"))
+ t.Views().Status().Content(Equals("↓1 repo → master"))
t.Views().Branches().
Lines(
@@ -42,7 +42,7 @@ var ForcePushMultipleMatching = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
t.Views().Branches().
Lines(
diff --git a/pkg/integration/tests/sync/force_push_multiple_upstream.go b/pkg/integration/tests/sync/force_push_multiple_upstream.go
index 1ea512720..8c55b7e8c 100644
--- a/pkg/integration/tests/sync/force_push_multiple_upstream.go
+++ b/pkg/integration/tests/sync/force_push_multiple_upstream.go
@@ -21,7 +21,7 @@ var ForcePushMultipleUpstream = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓1 repo → master"))
+ t.Views().Status().Content(Equals("↓1 repo → master"))
t.Views().Branches().
Lines(
@@ -41,7 +41,7 @@ var ForcePushMultipleUpstream = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
t.Views().Branches().
Lines(
diff --git a/pkg/integration/tests/sync/pull.go b/pkg/integration/tests/sync/pull.go
index 7f5703791..b30cbb408 100644
--- a/pkg/integration/tests/sync/pull.go
+++ b/pkg/integration/tests/sync/pull.go
@@ -26,7 +26,7 @@ var Pull = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓1 repo → master"))
+ t.Views().Status().Content(Equals("↓1 repo → master"))
t.Views().Files().IsFocused().Press(keys.Universal.Pull)
@@ -36,6 +36,6 @@ var Pull = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
},
})
diff --git a/pkg/integration/tests/sync/pull_and_set_upstream.go b/pkg/integration/tests/sync/pull_and_set_upstream.go
index b2dbfddb4..acffa24be 100644
--- a/pkg/integration/tests/sync/pull_and_set_upstream.go
+++ b/pkg/integration/tests/sync/pull_and_set_upstream.go
@@ -25,7 +25,7 @@ var PullAndSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("repo → master"))
+ t.Views().Status().Content(Equals("repo → master"))
t.Views().Files().IsFocused().Press(keys.Universal.Pull)
@@ -40,6 +40,6 @@ var PullAndSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
},
})
diff --git a/pkg/integration/tests/sync/pull_merge.go b/pkg/integration/tests/sync/pull_merge.go
index d9c9e107d..d4809f00e 100644
--- a/pkg/integration/tests/sync/pull_merge.go
+++ b/pkg/integration/tests/sync/pull_merge.go
@@ -33,13 +33,13 @@ var PullMerge = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓2 repo → master"))
+ t.Views().Status().Content(Equals("↑1↓2 repo → master"))
t.Views().Files().
IsFocused().
Press(keys.Universal.Pull)
- t.Views().Status().Content(Contains("↑2 repo → master"))
+ t.Views().Status().Content(Equals("↑2 repo → master"))
t.Views().Commits().
Lines(
diff --git a/pkg/integration/tests/sync/pull_merge_conflict.go b/pkg/integration/tests/sync/pull_merge_conflict.go
index 3177cabe5..6e05fafae 100644
--- a/pkg/integration/tests/sync/pull_merge_conflict.go
+++ b/pkg/integration/tests/sync/pull_merge_conflict.go
@@ -34,7 +34,7 @@ var PullMergeConflict = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓2 repo → master"))
+ t.Views().Status().Content(Equals("↑1↓2 repo → master"))
t.Views().Files().
IsFocused().
@@ -62,7 +62,7 @@ var PullMergeConflict = NewIntegrationTest(NewIntegrationTestArgs{
t.Common().ContinueOnConflictsResolved()
- t.Views().Status().Content(Contains("↑2 repo → master"))
+ t.Views().Status().Content(Equals("↑2 repo → master"))
t.Views().Commits().
Focus().
diff --git a/pkg/integration/tests/sync/pull_rebase.go b/pkg/integration/tests/sync/pull_rebase.go
index 77810426e..158cdf3d3 100644
--- a/pkg/integration/tests/sync/pull_rebase.go
+++ b/pkg/integration/tests/sync/pull_rebase.go
@@ -35,13 +35,13 @@ var PullRebase = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓2 repo → master"))
+ t.Views().Status().Content(Equals("↑1↓2 repo → master"))
t.Views().Files().
IsFocused().
Press(keys.Universal.Pull)
- t.Views().Status().Content(Contains("↑1 repo → master"))
+ t.Views().Status().Content(Equals("↑1 repo → master"))
t.Views().Commits().
Lines(
diff --git a/pkg/integration/tests/sync/pull_rebase_conflict.go b/pkg/integration/tests/sync/pull_rebase_conflict.go
index 3b6c83b85..fa2920b7b 100644
--- a/pkg/integration/tests/sync/pull_rebase_conflict.go
+++ b/pkg/integration/tests/sync/pull_rebase_conflict.go
@@ -34,7 +34,7 @@ var PullRebaseConflict = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓2 repo → master"))
+ t.Views().Status().Content(Equals("↑1↓2 repo → master"))
t.Views().Files().
IsFocused().
@@ -63,7 +63,7 @@ var PullRebaseConflict = NewIntegrationTest(NewIntegrationTestArgs{
t.Common().ContinueOnConflictsResolved()
- t.Views().Status().Content(Contains("↑1 repo → master"))
+ t.Views().Status().Content(Equals("↑1 repo → master"))
t.Views().Commits().
Focus().
diff --git a/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go b/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go
index a6a3f5356..e93ca2e37 100644
--- a/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go
+++ b/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go
@@ -38,7 +38,7 @@ var PullRebaseInteractiveConflict = NewIntegrationTest(NewIntegrationTestArgs{
Contains("one"),
)
- t.Views().Status().Content(Contains("↓2 repo → master"))
+ t.Views().Status().Content(Equals("↑2↓2 repo → master"))
t.Views().Files().
IsFocused().
@@ -76,7 +76,7 @@ var PullRebaseInteractiveConflict = NewIntegrationTest(NewIntegrationTestArgs{
t.Common().ContinueOnConflictsResolved()
- t.Views().Status().Content(Contains("↑2 repo → master"))
+ t.Views().Status().Content(Equals("↑2 repo → master"))
t.Views().Commits().
Focus().
diff --git a/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go b/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go
index b53790964..eba3ba746 100644
--- a/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go
+++ b/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go
@@ -38,7 +38,7 @@ var PullRebaseInteractiveConflictDrop = NewIntegrationTest(NewIntegrationTestArg
Contains("one"),
)
- t.Views().Status().Content(Contains("↓2 repo → master"))
+ t.Views().Status().Content(Equals("↑2↓2 repo → master"))
t.Views().Files().
IsFocused().
@@ -85,7 +85,7 @@ var PullRebaseInteractiveConflictDrop = NewIntegrationTest(NewIntegrationTestArg
t.Common().ContinueOnConflictsResolved()
- t.Views().Status().Content(Contains("↑1 repo → master"))
+ t.Views().Status().Content(Equals("↑1 repo → master"))
t.Views().Commits().
Focus().
diff --git a/pkg/integration/tests/sync/push.go b/pkg/integration/tests/sync/push.go
index ea27b399c..cb1e11aa9 100644
--- a/pkg/integration/tests/sync/push.go
+++ b/pkg/integration/tests/sync/push.go
@@ -21,7 +21,7 @@ var Push = NewIntegrationTest(NewIntegrationTestArgs{
shell.EmptyCommit("two")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
- t.Views().Status().Content(Contains("↑1 repo → master"))
+ t.Views().Status().Content(Equals("↑1 repo → master"))
t.Views().Files().
IsFocused().
diff --git a/pkg/integration/tests/sync/push_and_auto_set_upstream.go b/pkg/integration/tests/sync/push_and_auto_set_upstream.go
index c3f58d644..d8a336ea4 100644
--- a/pkg/integration/tests/sync/push_and_auto_set_upstream.go
+++ b/pkg/integration/tests/sync/push_and_auto_set_upstream.go
@@ -22,7 +22,7 @@ var PushAndAutoSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
// assert no mention of upstream/downstream changes
- t.Views().Status().Content(MatchesRegexp(`^\s+repo → master`))
+ t.Views().Status().Content(Equals("repo → master"))
t.Views().Files().
IsFocused().
diff --git a/pkg/integration/tests/sync/push_and_set_upstream.go b/pkg/integration/tests/sync/push_and_set_upstream.go
index 0521c4b21..d900452eb 100644
--- a/pkg/integration/tests/sync/push_and_set_upstream.go
+++ b/pkg/integration/tests/sync/push_and_set_upstream.go
@@ -19,7 +19,7 @@ var PushAndSetUpstream = NewIntegrationTest(NewIntegrationTestArgs{
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
// assert no mention of upstream/downstream changes
- t.Views().Status().Content(MatchesRegexp(`^\s+repo → master`))
+ t.Views().Status().Content(Equals("repo → master"))
t.Views().Files().
IsFocused().
diff --git a/pkg/integration/tests/sync/push_follow_tags.go b/pkg/integration/tests/sync/push_follow_tags.go
index 463172abf..c293cf005 100644
--- a/pkg/integration/tests/sync/push_follow_tags.go
+++ b/pkg/integration/tests/sync/push_follow_tags.go
@@ -24,13 +24,13 @@ var PushFollowTags = NewIntegrationTest(NewIntegrationTestArgs{
shell.SetConfig("push.followTags", "true")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
- t.Views().Status().Content(Contains("↑1 repo → master"))
+ t.Views().Status().Content(Equals("↑1 repo → master"))
t.Views().Files().
IsFocused().
Press(keys.Universal.Push)
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
t.Views().Remotes().
Focus().
diff --git a/pkg/integration/tests/sync/push_no_follow_tags.go b/pkg/integration/tests/sync/push_no_follow_tags.go
index 599d05a64..18a1cf62d 100644
--- a/pkg/integration/tests/sync/push_no_follow_tags.go
+++ b/pkg/integration/tests/sync/push_no_follow_tags.go
@@ -22,13 +22,13 @@ var PushNoFollowTags = NewIntegrationTest(NewIntegrationTestArgs{
shell.CreateAnnotatedTag("mytag", "message", "HEAD")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
t.Views().Files().
IsFocused().
Press(keys.Universal.Push)
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
t.Views().Remotes().
Focus().
diff --git a/pkg/integration/tests/sync/push_with_credential_prompt.go b/pkg/integration/tests/sync/push_with_credential_prompt.go
index 79d7fcc1d..62be89bf4 100644
--- a/pkg/integration/tests/sync/push_with_credential_prompt.go
+++ b/pkg/integration/tests/sync/push_with_credential_prompt.go
@@ -26,7 +26,7 @@ var PushWithCredentialPrompt = NewIntegrationTest(NewIntegrationTestArgs{
shell.CopyHelpFile("pre-push", ".git/hooks/pre-push")
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
- t.Views().Status().Content(Contains("↑1 repo → master"))
+ t.Views().Status().Content(Equals("↑1 repo → master"))
t.Views().Files().
IsFocused().
@@ -50,7 +50,7 @@ var PushWithCredentialPrompt = NewIntegrationTest(NewIntegrationTestArgs{
Content(Contains("incorrect username/password")).
Confirm()
- t.Views().Status().Content(Contains("↑1 repo → master"))
+ t.Views().Status().Content(Equals("↑1 repo → master"))
// try again with correct password
t.Views().Files().
@@ -67,7 +67,7 @@ var PushWithCredentialPrompt = NewIntegrationTest(NewIntegrationTestArgs{
Type("password").
Confirm()
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
assertSuccessfullyPushed(t)
},
diff --git a/pkg/integration/tests/sync/shared.go b/pkg/integration/tests/sync/shared.go
index 8ea9a6c25..3e3d5c017 100644
--- a/pkg/integration/tests/sync/shared.go
+++ b/pkg/integration/tests/sync/shared.go
@@ -24,7 +24,7 @@ func createTwoBranchesReadyToForcePush(shell *Shell) {
}
func assertSuccessfullyPushed(t *TestDriver) {
- t.Views().Status().Content(Contains("✓ repo → master"))
+ t.Views().Status().Content(Equals("✓ repo → master"))
t.Views().Remotes().
Focus().