From 0c04ee5c6134428eaf1920ea75892f8c9e197c51 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Fri, 14 Aug 2026 20:55:23 +0200 Subject: [PATCH] Add a test for staging all files when there are none The stage-all command acts on the whole file tree, and nothing stops it from doing that when the tree is empty. It ends up in the branch that explains why a submodule couldn't be staged, which has nothing to do with what the user did. Co-Authored-By: Claude Opus 5 (1M context) --- .../file/stage_all_without_changed_files.go | 28 +++++++++++++++++++ pkg/integration/tests/test_list.go | 1 + 2 files changed, 29 insertions(+) create mode 100644 pkg/integration/tests/file/stage_all_without_changed_files.go diff --git a/pkg/integration/tests/file/stage_all_without_changed_files.go b/pkg/integration/tests/file/stage_all_without_changed_files.go new file mode 100644 index 000000000..db9eecce3 --- /dev/null +++ b/pkg/integration/tests/file/stage_all_without_changed_files.go @@ -0,0 +1,28 @@ +package file + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var StageAllWithoutChangedFiles = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Pressing the stage-all key when there are no changed files says that there are none", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.EmptyCommit("first commit") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Files(). + IsFocused(). + IsEmpty(). + Press(keys.Files.ToggleStagedAll). + Tap(func() { + /* EXPECTED: + t.ExpectToast(Contains("No changed files")) + ACTUAL: */ + t.ExpectPopup().Alert().Title(Equals("Error")).Content(Contains("Nothing to stage")).Confirm() + }) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index a945e324d..16de7805a 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -248,6 +248,7 @@ var tests = []*components.IntegrationTest{ file.RenameSimilarityThresholdChange, file.RenamedFiles, file.RenamedFilesNoRootItem, + file.StageAllWithoutChangedFiles, file.StageChildrenRangeSelect, file.StageDeletedRangeSelect, file.StageRangeSelect,