From 6422b399e73967f012c29b05c9a26fc9e852711a Mon Sep 17 00:00:00 2001 From: lkearn <liam@sproutlabs.com.au> Date: Tue, 9 Aug 2022 17:58:43 +1000 Subject: [PATCH 01/44] Feat: Add emacs character navigation, because I'm weird like that :) --- pkg/gui/editors.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/gui/editors.go b/pkg/gui/editors.go index 6f40c6d58..777d897d8 100644 --- a/pkg/gui/editors.go +++ b/pkg/gui/editors.go @@ -22,9 +22,9 @@ func (gui *Gui) handleEditorKeypress(textArea *gocui.TextArea, key gocui.Key, ch textArea.MoveCursorDown() case key == gocui.KeyArrowUp: textArea.MoveCursorUp() - case key == gocui.KeyArrowLeft: + case key == gocui.KeyArrowLeft || key == gocui.KeyCtrlB: textArea.MoveCursorLeft() - case key == gocui.KeyArrowRight: + case key == gocui.KeyArrowRight || key == gocui.KeyCtrlF: textArea.MoveCursorRight() case key == newlineKey: if allowMultiline { From 47f84b6aea493d3dcfe4f72b9c584b8225171f5c Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 18:51:24 +1000 Subject: [PATCH 02/44] better assertions --- pkg/integration/components/assert.go | 8 ++++++++ pkg/integration/components/input.go | 3 +++ 2 files changed, 11 insertions(+) diff --git a/pkg/integration/components/assert.go b/pkg/integration/components/assert.go index ae363eb8d..7316eafe4 100644 --- a/pkg/integration/components/assert.go +++ b/pkg/integration/components/assert.go @@ -78,6 +78,14 @@ func (self *Assert) CommitCount(expectedCount int) { }) } +func (self *Assert) AtLeastOneCommit() { + self.assertWithRetries(func() (bool, string) { + actualCount := len(self.gui.Model().Commits) + + return actualCount > 0, "Expected at least one commit present" + }) +} + func (self *Assert) MatchHeadCommitMessage(matcher *matcher) { self.assertWithRetries(func() (bool, string) { return len(self.gui.Model().Commits) > 0, "Expected at least one commit to be present" diff --git a/pkg/integration/components/input.go b/pkg/integration/components/input.go index 63e902613..2f0666ebc 100644 --- a/pkg/integration/components/input.go +++ b/pkg/integration/components/input.go @@ -147,17 +147,20 @@ func (self *Input) NavigateToListItemContainingText(text string) { if matchCount == 1 { selectedLineIdx := view.SelectedLineIdx() if selectedLineIdx == matchIndex { + self.assert.MatchSelectedLine(Contains(text)) return } if selectedLineIdx < matchIndex { for i := selectedLineIdx; i < matchIndex; i++ { self.NextItem() } + self.assert.MatchSelectedLine(Contains(text)) return } else { for i := selectedLineIdx; i > matchIndex; i-- { self.PreviousItem() } + self.assert.MatchSelectedLine(Contains(text)) return } } From 79620fc6cfa712dd03adfd7d4b46339bbfc1575a Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 18:51:34 +1000 Subject: [PATCH 03/44] don't quit integration test tui upon error --- pkg/integration/clients/cli.go | 4 ++-- pkg/integration/clients/tui.go | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/integration/clients/cli.go b/pkg/integration/clients/cli.go index eedb82984..17c379c85 100644 --- a/pkg/integration/clients/cli.go +++ b/pkg/integration/clients/cli.go @@ -33,7 +33,7 @@ func RunCLI(testNames []string, slow bool) { getTestsToRun(testNames), log.Printf, runCmdInTerminal, - runAndPrintError, + runAndPrintFatalError, getModeFromEnv(), keyPressDelay, ) @@ -42,7 +42,7 @@ func RunCLI(testNames []string, slow bool) { } } -func runAndPrintError(test *components.IntegrationTest, f func() error) { +func runAndPrintFatalError(test *components.IntegrationTest, f func() error) { if err := f(); err != nil { log.Fatalf(err.Error()) } diff --git a/pkg/integration/clients/tui.go b/pkg/integration/clients/tui.go index 9348cd1f3..96ffed8b0 100644 --- a/pkg/integration/clients/tui.go +++ b/pkg/integration/clients/tui.go @@ -380,3 +380,9 @@ func runTuiTest(test *components.IntegrationTest, mode components.Mode, keyPress log.Println(err.Error()) } } + +func runAndPrintError(test *components.IntegrationTest, f func() error) { + if err := f(); err != nil { + log.Println(err.Error()) + } +} From 010f430d1f429a084f888c2440a650d2ad2524e1 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 19:34:02 +1000 Subject: [PATCH 04/44] add bisect integration test --- pkg/gui/gui_driver.go | 8 ++ pkg/integration/components/assert.go | 24 ++++- pkg/integration/tests/bisect/basic.go | 86 ++++++++++++++++++ pkg/integration/tests/tests.go | 2 + pkg/integration/types/types.go | 1 + .../repo/.git_keep/BISECT_ANCESTORS_OK | 0 .../repo/.git_keep/BISECT_EXPECTED_REV | 1 - .../bisect/expected/repo/.git_keep/BISECT_LOG | 16 ---- .../expected/repo/.git_keep/BISECT_NAMES | 1 - .../expected/repo/.git_keep/BISECT_START | 1 - .../expected/repo/.git_keep/BISECT_TERMS | 2 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 - .../bisect/expected/repo/.git_keep/HEAD | 1 - .../bisect/expected/repo/.git_keep/index | Bin 137 -> 0 bytes .../bisect/expected/repo/.git_keep/logs/HEAD | 24 ----- .../repo/.git_keep/logs/refs/heads/master | 20 ---- .../repo/.git_keep/logs/refs/heads/test | 1 - .../00/5ca78c7fb8157683fa61158235b250d2316004 | Bin 118 -> 0 bytes .../00/750edc07d6415dcc07ae0351e9397b0222b7ba | Bin 17 -> 0 bytes .../05/4bdf969fdcf1f90f1998666f628d40f72fde4f | 2 - .../07/552205114379b7c1abd7cb39575cb7a30a2e8c | Bin 49 -> 0 bytes .../0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f | Bin 17 -> 0 bytes .../11/0046b8d92b877def6cda61639cf8f37bc2829c | Bin 49 -> 0 bytes .../12/e46e3c37d1a43a26b909a346ecd2d97677c641 | Bin 49 -> 0 bytes .../1b/01733c2b372c7b5544c7f2293c3b7341824112 | Bin 49 -> 0 bytes .../1e/8b314962144c26d5e0e50fd29d2ca327864913 | Bin 17 -> 0 bytes .../20/9e3ef4b6247ce746048d5711befda46206d235 | Bin 18 -> 0 bytes .../26/7465454f74736bbe5b493c7f69dd3d024e26e5 | Bin 147 -> 0 bytes .../32/e7b0308424a817ed5aa5bba94b06b72a1b8ce5 | Bin 148 -> 0 bytes .../39/983ea412adebe6c5a3d4451a7673cf0962c472 | 2 - .../3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 | Bin 18 -> 0 bytes .../3e/02ce90348f3386128ebb2972515fb1a3788818 | Bin 49 -> 0 bytes .../3f/f8b0f3820fd2eb3da53a5b803f94caf30dc2ab | Bin 49 -> 0 bytes .../43/78c740dfa0de7a973216b54b99c45a3c03f83c | Bin 49 -> 0 bytes .../45/a4fb75db864000d01701c0f7a51864bd4daabf | Bin 17 -> 0 bytes .../47/8a007451b33c7a234c60f0d13b164561b29094 | Bin 148 -> 0 bytes .../48/082f72f087ce7e6fa75b9c41d7387daecd447b | Bin 18 -> 0 bytes .../4b/65d66c089cd4f6bfa69dff2d7ba4c27337cd23 | Bin 49 -> 0 bytes .../54/3c0ef66d928051f16f8b9d7d33d6c4ea1f4e4f | Bin 49 -> 0 bytes .../5f/9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 | Bin 148 -> 0 bytes .../60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 | Bin 18 -> 0 bytes .../66/19c0a1a3eb6449eb15ce6cd0916fec0e410c10 | 1 - .../67/fbfb3b74c2381ad1e058949231f2b4f0c8921f | Bin 149 -> 0 bytes .../78/d41b2abbd2f52c1ebf2f496268a915d59eb27b | 2 - .../7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 | Bin 17 -> 0 bytes .../7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 | Bin 17 -> 0 bytes .../80/eeef1a7c49b376f3373ea26c6ba44d69d90d9c | Bin 49 -> 0 bytes .../82/d721eb037f7045056023d0904989781ce1f526 | Bin 146 -> 0 bytes .../83/51c19397f4fcd5238d10034fa7fa384f14d580 | Bin 18 -> 0 bytes .../91/36f315e5952043f1e7ecdc0d28c208eaeaed71 | Bin 49 -> 0 bytes .../96/202a92c1d3bde1b20d6f3dec8e742d09732b4d | Bin 147 -> 0 bytes .../98/d9bcb75a685dfbfd60f611c309410152935b3d | Bin 18 -> 0 bytes .../ae/95e9aa3b8881aedb7a526c86ec5d60f371ca6c | Bin 49 -> 0 bytes .../af/f6316148f1524977997c486bcfe624c9094c4e | Bin 49 -> 0 bytes .../b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e | Bin 18 -> 0 bytes .../b4/de3947675361a7770d29b8982c407b0ec6b2a0 | Bin 18 -> 0 bytes .../b5/31696093a6482eca9ad4bcab63407172225b93 | 1 - .../b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 | Bin 18 -> 0 bytes .../b8/626c4cff2849624fb67f87cd0ad72b163671ad | Bin 17 -> 0 bytes .../b9/7844c9437a4ab69c8165cadd97bc597b43135b | Bin 147 -> 0 bytes .../ba/8e7277a0ee7cdf84cd5c6138057adb85947a90 | Bin 49 -> 0 bytes .../bc/21c8fabc28201fab6c60503168ecda25ad8626 | Bin 148 -> 0 bytes .../d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d | Bin 17 -> 0 bytes .../d1/f7a85555fe6f10dd44754d35459ae741cb107c | Bin 149 -> 0 bytes .../d5/42aa84743f8ba1380358d4009408f03dbfb247 | Bin 49 -> 0 bytes .../d6/b24041cf04154f8f902651969675021f4d93a5 | Bin 18 -> 0 bytes .../d9/328d9b2c9536fdf01641dd03f4a254d2c86601 | Bin 148 -> 0 bytes .../d9/cc608eedd5d2cc63c262272b7a0f6ab6aed5dd | Bin 49 -> 0 bytes .../db/b21289ee21b2ff0f3de2bc7d00038b30c4e353 | Bin 148 -> 0 bytes .../e5/9bbaffe94b06acaadab4245f30ff3e11c66e5b | Bin 148 -> 0 bytes .../e9/27f0f9467e772eea36f24053c9b534303b106a | Bin 148 -> 0 bytes .../e9/d2f825e793bc9ac2be698348dbe669bad34cad | 4 - .../ea/684d3f868c358400465f2ec16a640c319ea6a3 | Bin 49 -> 0 bytes .../eb/e59a71e9750e75fb983f241687cdf7f0c8ce94 | Bin 148 -> 0 bytes .../ec/635144f60048986bc560c5576355344005e6e7 | Bin 17 -> 0 bytes .../f2/7c6ae26adb8396d3861976ba268f87ad8afa0b | Bin 49 -> 0 bytes .../f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 | Bin 18 -> 0 bytes .../expected/repo/.git_keep/refs/bisect/bad | 1 - ...d-39983ea412adebe6c5a3d4451a7673cf0962c472 | 1 - ...d-67fbfb3b74c2381ad1e058949231f2b4f0c8921f | 1 - ...d-e927f0f9467e772eea36f24053c9b534303b106a | 1 - ...d-e9d2f825e793bc9ac2be698348dbe669bad34cad | 1 - ...p-bc21c8fabc28201fab6c60503168ecda25ad8626 | 1 - ...p-d1f7a85555fe6f10dd44754d35459ae741cb107c | 1 - .../expected/repo/.git_keep/refs/heads/master | 1 - .../expected/repo/.git_keep/refs/heads/test | 1 - test/integration/bisect/expected/repo/file | 1 - test/integration/bisect/recording.json | 1 - test/integration/bisect/setup.sh | 17 ---- test/integration/bisect/test.json | 5 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../basic}/expected/repo/.git_keep/FETCH_HEAD | 0 .../bisect/basic/expected/repo/.git_keep/HEAD | 1 + .../basic}/expected/repo/.git_keep/config | 2 + .../expected/repo/.git_keep/description | 0 .../basic/expected/repo/.git_keep/index | Bin 0 -> 866 bytes .../expected/repo/.git_keep/info/exclude | 0 .../basic/expected/repo/.git_keep/logs/HEAD | 13 +++ .../repo/.git_keep/logs/refs/heads/master | 10 ++ .../06/47fe4b7302efbfb235b8f0681b592cc3389d36 | Bin 0 -> 30 bytes .../08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c | Bin 0 -> 212 bytes .../0c/e746de5bee98147a370a19b4568b448fdedfcc | Bin 0 -> 147 bytes .../0f/77bf7bd7dd91550c927549af82d5b7c6f8a0d7 | 4 + .../17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c | Bin 0 -> 30 bytes .../18/197bb6052becf371aca9ab58d8352cebd3bc29 | 2 + .../30/ad007c4cb09b175810e069b1b2b02ab0140857 | Bin 0 -> 30 bytes .../31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 | Bin 0 -> 186 bytes .../35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 | Bin 0 -> 133 bytes .../37/6048ba8da4b619088a7f4a5df3f528fde41f1a | 2 + .../3b/f868a389d0073e715e848f0ee33d71064539ca | Bin 0 -> 30 bytes .../47/d78ad7a27fc7fe483389512ebf7ea34c5514bc | Bin 0 -> 30 bytes .../48/3fcff024ff52df164dddea9ab5032370d14228 | Bin 0 -> 148 bytes .../50/d561270fcfcdc9afc85f6136f937c529accaaa | Bin 0 -> 30 bytes .../55/3197193920043fb04f3e39e825916990955204 | Bin 0 -> 55 bytes .../67/0ea6605e6780007c543b3d034bcf49c898290d | Bin 0 -> 147 bytes .../68/5d0baa299ec29ff2c7a1ca9268abdd374adef2 | Bin 0 -> 147 bytes .../8d/49129429cacbb6694f0290b3219e91a6f364cd | Bin 0 -> 30 bytes .../a0/2c4b36b68df7081152282cf1aabcab7b24e69b | Bin 0 -> 81 bytes .../a8/3ada2a0a285982aaa96baeddb70135532ed004 | Bin 0 -> 149 bytes .../a8/9b19d40efb59f1f77b5a6b59ed1a9898545d0d | 2 + .../b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 | 1 + .../bf/2b038a7c59d4db31a492793086fafec802ec2f | Bin 0 -> 30 bytes .../c2/55cf4ef7fd5661a9d68b717243a978e42b05ac | Bin 0 -> 30 bytes .../cf/b438e7991d830d830d58744b99cff451a9d07e | Bin 0 -> 265 bytes .../d4/308139592744ccc7fa9ab0931812da9fdfcc1d | Bin 0 -> 148 bytes .../e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 | Bin 0 -> 160 bytes .../e6/db1f58c2bb5ead41049a8ef3910360eead21e2 | Bin 0 -> 108 bytes .../f2/c01a881661486f147e47f5be82914c5d0c0030 | Bin 0 -> 30 bytes .../f3/f9cf9d8f02f35f955b868d277913fc45d724db | Bin 0 -> 148 bytes .../expected/repo/.git_keep/packed-refs | 0 .../expected/repo/.git_keep/refs/heads/master | 1 + .../bisect/basic/expected/repo/file01.txt | 1 + .../bisect/basic/expected/repo/file02.txt | 1 + .../bisect/basic/expected/repo/file03.txt | 1 + .../bisect/basic/expected/repo/file04.txt | 1 + .../bisect/basic/expected/repo/file05.txt | 1 + .../bisect/basic/expected/repo/file06.txt | 1 + .../bisect/basic/expected/repo/file07.txt | 1 + .../bisect/basic/expected/repo/file08.txt | 1 + .../bisect/basic/expected/repo/file09.txt | 1 + .../bisect/basic/expected/repo/file10.txt | 1 + 141 files changed, 169 insertions(+), 114 deletions(-) create mode 100644 pkg/integration/tests/bisect/basic.go delete mode 100644 test/integration/bisect/expected/repo/.git_keep/BISECT_ANCESTORS_OK delete mode 100644 test/integration/bisect/expected/repo/.git_keep/BISECT_EXPECTED_REV delete mode 100644 test/integration/bisect/expected/repo/.git_keep/BISECT_LOG delete mode 100644 test/integration/bisect/expected/repo/.git_keep/BISECT_NAMES delete mode 100644 test/integration/bisect/expected/repo/.git_keep/BISECT_START delete mode 100644 test/integration/bisect/expected/repo/.git_keep/BISECT_TERMS delete mode 100644 test/integration/bisect/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/bisect/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/bisect/expected/repo/.git_keep/index delete mode 100644 test/integration/bisect/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/test delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/00/5ca78c7fb8157683fa61158235b250d2316004 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/00/750edc07d6415dcc07ae0351e9397b0222b7ba delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/05/4bdf969fdcf1f90f1998666f628d40f72fde4f delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/07/552205114379b7c1abd7cb39575cb7a30a2e8c delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/11/0046b8d92b877def6cda61639cf8f37bc2829c delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/12/e46e3c37d1a43a26b909a346ecd2d97677c641 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/1b/01733c2b372c7b5544c7f2293c3b7341824112 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/1e/8b314962144c26d5e0e50fd29d2ca327864913 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/20/9e3ef4b6247ce746048d5711befda46206d235 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/26/7465454f74736bbe5b493c7f69dd3d024e26e5 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/32/e7b0308424a817ed5aa5bba94b06b72a1b8ce5 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/39/983ea412adebe6c5a3d4451a7673cf0962c472 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/3e/02ce90348f3386128ebb2972515fb1a3788818 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/3f/f8b0f3820fd2eb3da53a5b803f94caf30dc2ab delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/43/78c740dfa0de7a973216b54b99c45a3c03f83c delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/45/a4fb75db864000d01701c0f7a51864bd4daabf delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/47/8a007451b33c7a234c60f0d13b164561b29094 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/48/082f72f087ce7e6fa75b9c41d7387daecd447b delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/4b/65d66c089cd4f6bfa69dff2d7ba4c27337cd23 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/54/3c0ef66d928051f16f8b9d7d33d6c4ea1f4e4f delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/5f/9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/66/19c0a1a3eb6449eb15ce6cd0916fec0e410c10 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/67/fbfb3b74c2381ad1e058949231f2b4f0c8921f delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/78/d41b2abbd2f52c1ebf2f496268a915d59eb27b delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/80/eeef1a7c49b376f3373ea26c6ba44d69d90d9c delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/82/d721eb037f7045056023d0904989781ce1f526 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/83/51c19397f4fcd5238d10034fa7fa384f14d580 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/91/36f315e5952043f1e7ecdc0d28c208eaeaed71 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/96/202a92c1d3bde1b20d6f3dec8e742d09732b4d delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/98/d9bcb75a685dfbfd60f611c309410152935b3d delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/ae/95e9aa3b8881aedb7a526c86ec5d60f371ca6c delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/af/f6316148f1524977997c486bcfe624c9094c4e delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/b4/de3947675361a7770d29b8982c407b0ec6b2a0 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/b5/31696093a6482eca9ad4bcab63407172225b93 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/b8/626c4cff2849624fb67f87cd0ad72b163671ad delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/b9/7844c9437a4ab69c8165cadd97bc597b43135b delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/ba/8e7277a0ee7cdf84cd5c6138057adb85947a90 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/bc/21c8fabc28201fab6c60503168ecda25ad8626 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/d1/f7a85555fe6f10dd44754d35459ae741cb107c delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/d5/42aa84743f8ba1380358d4009408f03dbfb247 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/d6/b24041cf04154f8f902651969675021f4d93a5 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/d9/328d9b2c9536fdf01641dd03f4a254d2c86601 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/d9/cc608eedd5d2cc63c262272b7a0f6ab6aed5dd delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/db/b21289ee21b2ff0f3de2bc7d00038b30c4e353 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/e5/9bbaffe94b06acaadab4245f30ff3e11c66e5b delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/e9/27f0f9467e772eea36f24053c9b534303b106a delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/e9/d2f825e793bc9ac2be698348dbe669bad34cad delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/ea/684d3f868c358400465f2ec16a640c319ea6a3 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/eb/e59a71e9750e75fb983f241687cdf7f0c8ce94 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/ec/635144f60048986bc560c5576355344005e6e7 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/f2/7c6ae26adb8396d3861976ba268f87ad8afa0b delete mode 100644 test/integration/bisect/expected/repo/.git_keep/objects/f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/bisect/bad delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-39983ea412adebe6c5a3d4451a7673cf0962c472 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-67fbfb3b74c2381ad1e058949231f2b4f0c8921f delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e927f0f9467e772eea36f24053c9b534303b106a delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e9d2f825e793bc9ac2be698348dbe669bad34cad delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-bc21c8fabc28201fab6c60503168ecda25ad8626 delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-d1f7a85555fe6f10dd44754d35459ae741cb107c delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/bisect/expected/repo/.git_keep/refs/heads/test delete mode 100644 test/integration/bisect/expected/repo/file delete mode 100644 test/integration/bisect/recording.json delete mode 100644 test/integration/bisect/setup.sh delete mode 100644 test/integration/bisect/test.json create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/COMMIT_EDITMSG rename test/{integration/bisect => integration_new/bisect/basic}/expected/repo/.git_keep/FETCH_HEAD (100%) create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/HEAD rename test/{integration/bisect => integration_new/bisect/basic}/expected/repo/.git_keep/config (87%) rename test/{integration/bisect => integration_new/bisect/basic}/expected/repo/.git_keep/description (100%) create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/index rename test/{integration/bisect => integration_new/bisect/basic}/expected/repo/.git_keep/info/exclude (100%) create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/logs/refs/heads/master create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/06/47fe4b7302efbfb235b8f0681b592cc3389d36 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/0c/e746de5bee98147a370a19b4568b448fdedfcc create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/0f/77bf7bd7dd91550c927549af82d5b7c6f8a0d7 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/18/197bb6052becf371aca9ab58d8352cebd3bc29 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/30/ad007c4cb09b175810e069b1b2b02ab0140857 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/3b/f868a389d0073e715e848f0ee33d71064539ca create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/47/d78ad7a27fc7fe483389512ebf7ea34c5514bc create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/48/3fcff024ff52df164dddea9ab5032370d14228 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/50/d561270fcfcdc9afc85f6136f937c529accaaa create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/55/3197193920043fb04f3e39e825916990955204 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/67/0ea6605e6780007c543b3d034bcf49c898290d create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/68/5d0baa299ec29ff2c7a1ca9268abdd374adef2 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/8d/49129429cacbb6694f0290b3219e91a6f364cd create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a0/2c4b36b68df7081152282cf1aabcab7b24e69b create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a8/3ada2a0a285982aaa96baeddb70135532ed004 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a8/9b19d40efb59f1f77b5a6b59ed1a9898545d0d create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/bf/2b038a7c59d4db31a492793086fafec802ec2f create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/c2/55cf4ef7fd5661a9d68b717243a978e42b05ac create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/cf/b438e7991d830d830d58744b99cff451a9d07e create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/d4/308139592744ccc7fa9ab0931812da9fdfcc1d create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/e6/db1f58c2bb5ead41049a8ef3910360eead21e2 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/f2/c01a881661486f147e47f5be82914c5d0c0030 create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/objects/f3/f9cf9d8f02f35f955b868d277913fc45d724db rename test/{integration/bisect => integration_new/bisect/basic}/expected/repo/.git_keep/packed-refs (100%) create mode 100644 test/integration_new/bisect/basic/expected/repo/.git_keep/refs/heads/master create mode 100644 test/integration_new/bisect/basic/expected/repo/file01.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file02.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file03.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file04.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file05.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file06.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file07.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file08.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file09.txt create mode 100644 test/integration_new/bisect/basic/expected/repo/file10.txt diff --git a/pkg/gui/gui_driver.go b/pkg/gui/gui_driver.go index 7df2b95ba..919ad5416 100644 --- a/pkg/gui/gui_driver.go +++ b/pkg/gui/gui_driver.go @@ -79,3 +79,11 @@ func (self *GuiDriver) MainView() *gocui.View { func (self *GuiDriver) SecondaryView() *gocui.View { return self.gui.secondaryView() } + +func (self *GuiDriver) View(viewName string) *gocui.View { + view, err := self.gui.g.View(viewName) + if err != nil { + panic(err) + } + return view +} diff --git a/pkg/integration/components/assert.go b/pkg/integration/components/assert.go index 7316eafe4..4b56a76e7 100644 --- a/pkg/integration/components/assert.go +++ b/pkg/integration/components/assert.go @@ -46,7 +46,13 @@ func (self *matcher) context(prefix string) *matcher { func Contains(target string) *matcher { return &matcher{testFn: func(value string) (bool, string) { - return strings.Contains(value, target), fmt.Sprintf("Expected '%s' to contain '%s'", value, target) + return strings.Contains(value, target), fmt.Sprintf("Expected '%s' to be found in '%s'", target, value) + }} +} + +func NotContains(target string) *matcher { + return &matcher{testFn: func(value string) (bool, string) { + return !strings.Contains(value, target), fmt.Sprintf("Expected '%s' to NOT be found in '%s'", target, value) }} } @@ -164,6 +170,22 @@ func (self *Assert) MatchCurrentViewTitle(matcher *matcher) { ) } +func (self *Assert) MatchViewContent(viewName string, matcher *matcher) { + self.matchString(matcher, fmt.Sprintf("Unexpected content in view '%s'.", viewName), + func() string { + return self.gui.View(viewName).Buffer() + }, + ) +} + +func (self *Assert) MatchCurrentViewContent(matcher *matcher) { + self.matchString(matcher, "Unexpected content in current view.", + func() string { + return self.gui.CurrentContext().GetView().Buffer() + }, + ) +} + func (self *Assert) MatchMainViewContent(matcher *matcher) { self.matchString(matcher, "Unexpected main view content.", func() string { diff --git a/pkg/integration/tests/bisect/basic.go b/pkg/integration/tests/bisect/basic.go new file mode 100644 index 000000000..0c9494b82 --- /dev/null +++ b/pkg/integration/tests/bisect/basic.go @@ -0,0 +1,86 @@ +package bisect + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var Basic = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Start a git bisect to find a bad commit", + ExtraCmdArgs: "", + Skip: false, + SetupRepo: func(shell *Shell) { + shell. + CreateNCommits(10) + }, + SetupConfig: func(cfg *config.AppConfig) {}, + Run: func( + shell *Shell, + input *Input, + assert *Assert, + keys config.KeybindingConfig, + ) { + viewBisectOptions := func() { + input.PressKeys(keys.Commits.ViewBisectOptions) + assert.InMenu() + } + markCommitAsBad := func() { + viewBisectOptions() + assert.MatchSelectedLine(Contains("bad")) + + input.Confirm() + } + + markCommitAsGood := func() { + viewBisectOptions() + assert.MatchSelectedLine(Contains("bad")) + input.NextItem() + assert.MatchSelectedLine(Contains("good")) + + input.Confirm() + } + + assert.AtLeastOneCommit() + + input.SwitchToCommitsWindow() + + assert.MatchSelectedLine(Contains("commit 10")) + + input.NavigateToListItemContainingText("commit 09") + + markCommitAsBad() + + assert.MatchViewContent("information", Contains("bisecting")) + + assert.CurrentViewName("commits") + assert.MatchSelectedLine(Contains("<-- bad")) + + input.NavigateToListItemContainingText("commit 02") + + markCommitAsGood() + + // lazygit will land us in the comit between our good and bad commits. + assert.CurrentViewName("commits") + assert.MatchSelectedLine(Contains("commit 05")) + assert.MatchSelectedLine(Contains("<-- current")) + + markCommitAsBad() + + assert.CurrentViewName("commits") + assert.MatchSelectedLine(Contains("commit 04")) + assert.MatchSelectedLine(Contains("<-- current")) + + markCommitAsGood() + + assert.InAlert() + assert.MatchCurrentViewContent(Contains("Bisect complete!")) + // commit 5 is the culprit because we marked 4 as good and 5 as bad. + assert.MatchCurrentViewContent(Contains("commit 05")) + assert.MatchCurrentViewContent(Contains("Do you want to reset")) + input.Confirm() + + assert.CurrentViewName("commits") + assert.MatchCurrentViewContent(Contains("commit 04")) + assert.MatchViewContent("information", NotContains("bisecting")) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index 587ac8e30..5668fcbba 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -9,6 +9,7 @@ import ( "github.com/jesseduffield/generics/set" "github.com/jesseduffield/generics/slices" "github.com/jesseduffield/lazygit/pkg/integration/components" + "github.com/jesseduffield/lazygit/pkg/integration/tests/bisect" "github.com/jesseduffield/lazygit/pkg/integration/tests/branch" "github.com/jesseduffield/lazygit/pkg/integration/tests/commit" "github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands" @@ -27,6 +28,7 @@ var tests = []*components.IntegrationTest{ custom_commands.Basic, custom_commands.MultiplePrompts, custom_commands.MenuFromCommand, + bisect.Basic, } func GetTests() []*components.IntegrationTest { diff --git a/pkg/integration/types/types.go b/pkg/integration/types/types.go index b5ee2ca68..4bc8569f7 100644 --- a/pkg/integration/types/types.go +++ b/pkg/integration/types/types.go @@ -34,4 +34,5 @@ type GuiDriver interface { // the other view that sometimes appears to the right of the side panel // e.g. when we're showing both staged and unstaged changes SecondaryView() *gocui.View + View(viewName string) *gocui.View } diff --git a/test/integration/bisect/expected/repo/.git_keep/BISECT_ANCESTORS_OK b/test/integration/bisect/expected/repo/.git_keep/BISECT_ANCESTORS_OK deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/bisect/expected/repo/.git_keep/BISECT_EXPECTED_REV b/test/integration/bisect/expected/repo/.git_keep/BISECT_EXPECTED_REV deleted file mode 100644 index aeb0e94fb..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/BISECT_EXPECTED_REV +++ /dev/null @@ -1 +0,0 @@ -e927f0f9467e772eea36f24053c9b534303b106a diff --git a/test/integration/bisect/expected/repo/.git_keep/BISECT_LOG b/test/integration/bisect/expected/repo/.git_keep/BISECT_LOG deleted file mode 100644 index db4a771e2..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/BISECT_LOG +++ /dev/null @@ -1,16 +0,0 @@ -git bisect start -# bad: [054bdf969fdcf1f90f1998666f628d40f72fde4f] commit 19 -git bisect bad 054bdf969fdcf1f90f1998666f628d40f72fde4f -# good: [39983ea412adebe6c5a3d4451a7673cf0962c472] commit 9 -git bisect good 39983ea412adebe6c5a3d4451a7673cf0962c472 -# good: [e9d2f825e793bc9ac2be698348dbe669bad34cad] commit 14 -git bisect good e9d2f825e793bc9ac2be698348dbe669bad34cad -# skip: [d1f7a85555fe6f10dd44754d35459ae741cb107c] commit 15 -git bisect skip d1f7a85555fe6f10dd44754d35459ae741cb107c -# skip: [bc21c8fabc28201fab6c60503168ecda25ad8626] commit 17 -git bisect skip bc21c8fabc28201fab6c60503168ecda25ad8626 -# good: [67fbfb3b74c2381ad1e058949231f2b4f0c8921f] commit 16 -git bisect good 67fbfb3b74c2381ad1e058949231f2b4f0c8921f -# good: [e927f0f9467e772eea36f24053c9b534303b106a] commit 18 -git bisect good e927f0f9467e772eea36f24053c9b534303b106a -# first bad commit: [054bdf969fdcf1f90f1998666f628d40f72fde4f] commit 19 diff --git a/test/integration/bisect/expected/repo/.git_keep/BISECT_NAMES b/test/integration/bisect/expected/repo/.git_keep/BISECT_NAMES deleted file mode 100644 index 8b1378917..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/BISECT_NAMES +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/integration/bisect/expected/repo/.git_keep/BISECT_START b/test/integration/bisect/expected/repo/.git_keep/BISECT_START deleted file mode 100644 index 1f7391f92..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/BISECT_START +++ /dev/null @@ -1 +0,0 @@ -master diff --git a/test/integration/bisect/expected/repo/.git_keep/BISECT_TERMS b/test/integration/bisect/expected/repo/.git_keep/BISECT_TERMS deleted file mode 100644 index 25dd30b14..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/BISECT_TERMS +++ /dev/null @@ -1,2 +0,0 @@ -bad -good diff --git a/test/integration/bisect/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/bisect/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index e6cf6d392..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1 +0,0 @@ -commit 20 diff --git a/test/integration/bisect/expected/repo/.git_keep/HEAD b/test/integration/bisect/expected/repo/.git_keep/HEAD deleted file mode 100644 index cea9d05ed..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/test diff --git a/test/integration/bisect/expected/repo/.git_keep/index b/test/integration/bisect/expected/repo/.git_keep/index deleted file mode 100644 index 2ad3e517ba8dcf0981429c77789bbd541b438fcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmZ?q402{*U|<4b#>9^-Go-SZ4})ll|7>R&85mfZG+x*<Ff=X!N`D2a5dmUmg?V;g zwyD%ScVp=d7u@%ENfO&7QwEl_%$!u9ED(eQxw--=Nd`j&11|5>YdIWqu6*0SZ0>*E h>LrJY&Ce=Z?wGJ3i~Sw%i;2??|G)WbwrK^s5dd%eE-U~5 diff --git a/test/integration/bisect/expected/repo/.git_keep/logs/HEAD b/test/integration/bisect/expected/repo/.git_keep/logs/HEAD deleted file mode 100644 index 8f4ef5553..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/logs/HEAD +++ /dev/null @@ -1,24 +0,0 @@ -0000000000000000000000000000000000000000 005ca78c7fb8157683fa61158235b250d2316004 CI <CI@example.com> 1643185278 +1100 commit (initial): commit 1 -005ca78c7fb8157683fa61158235b250d2316004 d9328d9b2c9536fdf01641dd03f4a254d2c86601 CI <CI@example.com> 1643185278 +1100 commit: commit 2 -d9328d9b2c9536fdf01641dd03f4a254d2c86601 e59bbaffe94b06acaadab4245f30ff3e11c66e5b CI <CI@example.com> 1643185278 +1100 commit: commit 3 -e59bbaffe94b06acaadab4245f30ff3e11c66e5b 32e7b0308424a817ed5aa5bba94b06b72a1b8ce5 CI <CI@example.com> 1643185278 +1100 commit: commit 4 -32e7b0308424a817ed5aa5bba94b06b72a1b8ce5 96202a92c1d3bde1b20d6f3dec8e742d09732b4d CI <CI@example.com> 1643185278 +1100 commit: commit 5 -96202a92c1d3bde1b20d6f3dec8e742d09732b4d 82d721eb037f7045056023d0904989781ce1f526 CI <CI@example.com> 1643185278 +1100 commit: commit 6 -82d721eb037f7045056023d0904989781ce1f526 b97844c9437a4ab69c8165cadd97bc597b43135b CI <CI@example.com> 1643185278 +1100 commit: commit 7 -b97844c9437a4ab69c8165cadd97bc597b43135b ebe59a71e9750e75fb983f241687cdf7f0c8ce94 CI <CI@example.com> 1643185278 +1100 commit: commit 8 -ebe59a71e9750e75fb983f241687cdf7f0c8ce94 39983ea412adebe6c5a3d4451a7673cf0962c472 CI <CI@example.com> 1643185278 +1100 commit: commit 9 -39983ea412adebe6c5a3d4451a7673cf0962c472 dbb21289ee21b2ff0f3de2bc7d00038b30c4e353 CI <CI@example.com> 1643185278 +1100 commit: commit 10 -dbb21289ee21b2ff0f3de2bc7d00038b30c4e353 5f9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 CI <CI@example.com> 1643185278 +1100 commit: commit 11 -5f9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 267465454f74736bbe5b493c7f69dd3d024e26e5 CI <CI@example.com> 1643185278 +1100 commit: commit 12 -267465454f74736bbe5b493c7f69dd3d024e26e5 478a007451b33c7a234c60f0d13b164561b29094 CI <CI@example.com> 1643185278 +1100 commit: commit 13 -478a007451b33c7a234c60f0d13b164561b29094 e9d2f825e793bc9ac2be698348dbe669bad34cad CI <CI@example.com> 1643185278 +1100 commit: commit 14 -e9d2f825e793bc9ac2be698348dbe669bad34cad d1f7a85555fe6f10dd44754d35459ae741cb107c CI <CI@example.com> 1643185278 +1100 commit: commit 15 -d1f7a85555fe6f10dd44754d35459ae741cb107c 67fbfb3b74c2381ad1e058949231f2b4f0c8921f CI <CI@example.com> 1643185278 +1100 commit: commit 16 -67fbfb3b74c2381ad1e058949231f2b4f0c8921f bc21c8fabc28201fab6c60503168ecda25ad8626 CI <CI@example.com> 1643185278 +1100 commit: commit 17 -bc21c8fabc28201fab6c60503168ecda25ad8626 e927f0f9467e772eea36f24053c9b534303b106a CI <CI@example.com> 1643185278 +1100 commit: commit 18 -e927f0f9467e772eea36f24053c9b534303b106a 054bdf969fdcf1f90f1998666f628d40f72fde4f CI <CI@example.com> 1643185278 +1100 commit: commit 19 -054bdf969fdcf1f90f1998666f628d40f72fde4f 78d41b2abbd2f52c1ebf2f496268a915d59eb27b CI <CI@example.com> 1643185278 +1100 commit: commit 20 -78d41b2abbd2f52c1ebf2f496268a915d59eb27b e9d2f825e793bc9ac2be698348dbe669bad34cad CI <CI@example.com> 1643185283 +1100 checkout: moving from master to e9d2f825e793bc9ac2be698348dbe669bad34cad -e9d2f825e793bc9ac2be698348dbe669bad34cad 67fbfb3b74c2381ad1e058949231f2b4f0c8921f CI <CI@example.com> 1643185286 +1100 checkout: moving from e9d2f825e793bc9ac2be698348dbe669bad34cad to 67fbfb3b74c2381ad1e058949231f2b4f0c8921f -67fbfb3b74c2381ad1e058949231f2b4f0c8921f e927f0f9467e772eea36f24053c9b534303b106a CI <CI@example.com> 1643185295 +1100 checkout: moving from 67fbfb3b74c2381ad1e058949231f2b4f0c8921f to e927f0f9467e772eea36f24053c9b534303b106a -e927f0f9467e772eea36f24053c9b534303b106a 78d41b2abbd2f52c1ebf2f496268a915d59eb27b CI <CI@example.com> 1643185301 +1100 checkout: moving from e927f0f9467e772eea36f24053c9b534303b106a to test diff --git a/test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 61c607364..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1,20 +0,0 @@ -0000000000000000000000000000000000000000 005ca78c7fb8157683fa61158235b250d2316004 CI <CI@example.com> 1643185278 +1100 commit (initial): commit 1 -005ca78c7fb8157683fa61158235b250d2316004 d9328d9b2c9536fdf01641dd03f4a254d2c86601 CI <CI@example.com> 1643185278 +1100 commit: commit 2 -d9328d9b2c9536fdf01641dd03f4a254d2c86601 e59bbaffe94b06acaadab4245f30ff3e11c66e5b CI <CI@example.com> 1643185278 +1100 commit: commit 3 -e59bbaffe94b06acaadab4245f30ff3e11c66e5b 32e7b0308424a817ed5aa5bba94b06b72a1b8ce5 CI <CI@example.com> 1643185278 +1100 commit: commit 4 -32e7b0308424a817ed5aa5bba94b06b72a1b8ce5 96202a92c1d3bde1b20d6f3dec8e742d09732b4d CI <CI@example.com> 1643185278 +1100 commit: commit 5 -96202a92c1d3bde1b20d6f3dec8e742d09732b4d 82d721eb037f7045056023d0904989781ce1f526 CI <CI@example.com> 1643185278 +1100 commit: commit 6 -82d721eb037f7045056023d0904989781ce1f526 b97844c9437a4ab69c8165cadd97bc597b43135b CI <CI@example.com> 1643185278 +1100 commit: commit 7 -b97844c9437a4ab69c8165cadd97bc597b43135b ebe59a71e9750e75fb983f241687cdf7f0c8ce94 CI <CI@example.com> 1643185278 +1100 commit: commit 8 -ebe59a71e9750e75fb983f241687cdf7f0c8ce94 39983ea412adebe6c5a3d4451a7673cf0962c472 CI <CI@example.com> 1643185278 +1100 commit: commit 9 -39983ea412adebe6c5a3d4451a7673cf0962c472 dbb21289ee21b2ff0f3de2bc7d00038b30c4e353 CI <CI@example.com> 1643185278 +1100 commit: commit 10 -dbb21289ee21b2ff0f3de2bc7d00038b30c4e353 5f9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 CI <CI@example.com> 1643185278 +1100 commit: commit 11 -5f9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 267465454f74736bbe5b493c7f69dd3d024e26e5 CI <CI@example.com> 1643185278 +1100 commit: commit 12 -267465454f74736bbe5b493c7f69dd3d024e26e5 478a007451b33c7a234c60f0d13b164561b29094 CI <CI@example.com> 1643185278 +1100 commit: commit 13 -478a007451b33c7a234c60f0d13b164561b29094 e9d2f825e793bc9ac2be698348dbe669bad34cad CI <CI@example.com> 1643185278 +1100 commit: commit 14 -e9d2f825e793bc9ac2be698348dbe669bad34cad d1f7a85555fe6f10dd44754d35459ae741cb107c CI <CI@example.com> 1643185278 +1100 commit: commit 15 -d1f7a85555fe6f10dd44754d35459ae741cb107c 67fbfb3b74c2381ad1e058949231f2b4f0c8921f CI <CI@example.com> 1643185278 +1100 commit: commit 16 -67fbfb3b74c2381ad1e058949231f2b4f0c8921f bc21c8fabc28201fab6c60503168ecda25ad8626 CI <CI@example.com> 1643185278 +1100 commit: commit 17 -bc21c8fabc28201fab6c60503168ecda25ad8626 e927f0f9467e772eea36f24053c9b534303b106a CI <CI@example.com> 1643185278 +1100 commit: commit 18 -e927f0f9467e772eea36f24053c9b534303b106a 054bdf969fdcf1f90f1998666f628d40f72fde4f CI <CI@example.com> 1643185278 +1100 commit: commit 19 -054bdf969fdcf1f90f1998666f628d40f72fde4f 78d41b2abbd2f52c1ebf2f496268a915d59eb27b CI <CI@example.com> 1643185278 +1100 commit: commit 20 diff --git a/test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/test b/test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/test deleted file mode 100644 index a2526105f..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/logs/refs/heads/test +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 78d41b2abbd2f52c1ebf2f496268a915d59eb27b CI <CI@example.com> 1643185301 +1100 branch: Created from master diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/00/5ca78c7fb8157683fa61158235b250d2316004 b/test/integration/bisect/expected/repo/.git_keep/objects/00/5ca78c7fb8157683fa61158235b250d2316004 deleted file mode 100644 index a22627c8d8fb87e35cc74ee98e0a06e006ff545c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmV-+0Ez#20gcT;3IZ_<KvCB{MfQR;?U-ahM3~haBW+U@ER~^x$9EPU!0qS3&%L$B z0G#+RHZ!P!GpPmAk|fSlq7cqZNdrk0)*@QfC#Uam?;9*DT$c4_A8oIvopNtiK$;@T YIk3PH(R;VoeKPD%{_}wD3wV4jH6Ro=sQ>@~ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/00/750edc07d6415dcc07ae0351e9397b0222b7ba b/test/integration/bisect/expected/repo/.git_keep/objects/00/750edc07d6415dcc07ae0351e9397b0222b7ba deleted file mode 100644 index d3c45d51ea5d755dabd6e35ce0322533b264abdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;29GG9|w~@05+rq>Hq)$ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/05/4bdf969fdcf1f90f1998666f628d40f72fde4f b/test/integration/bisect/expected/repo/.git_keep/objects/05/4bdf969fdcf1f90f1998666f628d40f72fde4f deleted file mode 100644 index dd18604e8..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/objects/05/4bdf969fdcf1f90f1998666f628d40f72fde4f +++ /dev/null @@ -1,2 +0,0 @@ -x��K -1D]���?���0�9F�tP0�0D��f��v�{PU��(�C�U!��*��%�h��-K��ca��G�@f˻�:h�P�&냆��y�l�II7'VPn�>����u�i��4_�����SY��[��8D8!�юQ]���8a��:E \ No newline at end of file diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/07/552205114379b7c1abd7cb39575cb7a30a2e8c b/test/integration/bisect/expected/repo/.git_keep/objects/07/552205114379b7c1abd7cb39575cb7a30a2e8c deleted file mode 100644 index 2ea04996709d3243767594f3bd3e31a3a703ec02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5^@r8x!1C*D((3(Tl}}3KBDL03|N5lHps`A@ F006BP688WA diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f b/test/integration/bisect/expected/repo/.git_keep/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f deleted file mode 100644 index da246e1fe4dd7506e33985df613ec74645cf32b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;1Lr89~+Y%05*XH;{X5v diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/11/0046b8d92b877def6cda61639cf8f37bc2829c b/test/integration/bisect/expected/repo/.git_keep/objects/11/0046b8d92b877def6cda61639cf8f37bc2829c deleted file mode 100644 index ad217ecf465dc56683950a7e26798e5dd53f02ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5bw*+F`EM(FZrraI-p48TtR#hJmP{@;gTz99 FApo{05&ZxF diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/12/e46e3c37d1a43a26b909a346ecd2d97677c641 b/test/integration/bisect/expected/repo/.git_keep/objects/12/e46e3c37d1a43a26b909a346ecd2d97677c641 deleted file mode 100644 index 700547c7a04e5483468be0b904ca17113c64683f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5HG|K_qVm^t`|zpNtTX;j|G(*j_|97l41z29 FeE^-M60-mR diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/1b/01733c2b372c7b5544c7f2293c3b7341824112 b/test/integration/bisect/expected/repo/.git_keep/objects/1b/01733c2b372c7b5544c7f2293c3b7341824112 deleted file mode 100644 index 11276c468be906b5461d014ec3315907a099f768..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgW$@t8FZ$4at}cIh^c=_Q7Pafnx>N%I H0F@5y*~=AL diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/1e/8b314962144c26d5e0e50fd29d2ca327864913 b/test/integration/bisect/expected/repo/.git_keep/objects/1e/8b314962144c26d5e0e50fd29d2ca327864913 deleted file mode 100644 index f1722ae0044d12235bc5ca37b7e8d52b3303d02d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;4u>eA0Lwu05+rq@Bjb+ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/20/9e3ef4b6247ce746048d5711befda46206d235 b/test/integration/bisect/expected/repo/.git_keep/objects/20/9e3ef4b6247ce746048d5711befda46206d235 deleted file mode 100644 index 12e1f82f122993c9598b583241cad99aa966231d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~})JgFru1JODkq1=9ck diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/26/7465454f74736bbe5b493c7f69dd3d024e26e5 b/test/integration/bisect/expected/repo/.git_keep/objects/26/7465454f74736bbe5b493c7f69dd3d024e26e5 deleted file mode 100644 index edae3689b69f1ae3ac24c4cc81ba12867e93f314..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gcX03c@fDKw;NCMfQSpev(N*MChu=NX7{Y#+DMn<J*M?aQpZcPnXsn z-9ZY6zL_~FBM6aVAwiYmJ+n$hOr%tV7$PzN4r|`*)t#@2l9(@Q23avvwQ!5XH%6mS zgsrmXIOKP~FPocYcb?{}eR5l$cG9I?90Vqa9woXXz&H+j-KV<!$$#GMS6}9MIyXUn BM8E(5 diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/32/e7b0308424a817ed5aa5bba94b06b72a1b8ce5 b/test/integration/bisect/expected/repo/.git_keep/objects/32/e7b0308424a817ed5aa5bba94b06b72a1b8ce5 deleted file mode 100644 index f220ca5b80a65ef08f08e1ee8ad2fbf09af71d3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcW<3c@fDKvCB@#q0&iB$H_aB0^U^#!Q@`U~DN7Jic9c0JopF_+@GB z(E)Qh^vw)3MdZvrM`0R+70GfVEutLB4>*JnlIG}E+3eN9QdX5(Et7hdB61U@K&eJw zYc#~dY)PHG`+eD9n&CXnSNlj?pLQxsy8tpp98(xZI3jxQ_PS4X`;-4Xkoy8q{5u)~ C^+TWl diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/39/983ea412adebe6c5a3d4451a7673cf0962c472 b/test/integration/bisect/expected/repo/.git_keep/objects/39/983ea412adebe6c5a3d4451a7673cf0962c472 deleted file mode 100644 index 63c4d53b2..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/objects/39/983ea412adebe6c5a3d4451a7673cf0962c472 +++ /dev/null @@ -1,2 +0,0 @@ -x��M -1�a�=E��4��$ "�j����C�o�����[��P���պ�b}��=O�XsvB.b��'fF6[���A�FI�*�� ¾��S�U����&��}�a^�</W���=�T�v��G����֚�����1_��9� \ No newline at end of file diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 b/test/integration/bisect/expected/repo/.git_keep/objects/3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 deleted file mode 100644 index ecdb2d612f7d882a44c9abe5dc8d59f9032ac286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>V9Nt027x(DX#hd^25A5Q diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/3e/02ce90348f3386128ebb2972515fb1a3788818 b/test/integration/bisect/expected/repo/.git_keep/objects/3e/02ce90348f3386128ebb2972515fb1a3788818 deleted file mode 100644 index ee5a4ea606656779d24a668ce90cf0bff87334ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWq6Yu=<<!hV@CGTgrnifp(YNj&z=JS H0}~F3#xfJO diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/3f/f8b0f3820fd2eb3da53a5b803f94caf30dc2ab b/test/integration/bisect/expected/repo/.git_keep/objects/3f/f8b0f3820fd2eb3da53a5b803f94caf30dc2ab deleted file mode 100644 index 39d2a914c015fabd3034039a3831ed5f588c7eaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgW!Sd-#+-}?r_x?#%?j+)Ic&Qvf5&0~ HA%qa&&6X6V diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/43/78c740dfa0de7a973216b54b99c45a3c03f83c b/test/integration/bisect/expected/repo/.git_keep/objects/43/78c740dfa0de7a973216b54b99c45a3c03f83c deleted file mode 100644 index e2d7fffb2870635abb5e726ae39b2453491215ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5bwgs<iik}fYHA-odEV}9HQltj{Cf-o!^Z+X FM*yub6IB2J diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/45/a4fb75db864000d01701c0f7a51864bd4daabf b/test/integration/bisect/expected/repo/.git_keep/objects/45/a4fb75db864000d01701c0f7a51864bd4daabf deleted file mode 100644 index fdf2bc81d1e32f103ffac8e4afe9c1a2ff38c60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb|y!viJ;J|QL(06Luoa{vGU diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/47/8a007451b33c7a234c60f0d13b164561b29094 b/test/integration/bisect/expected/repo/.git_keep/objects/47/8a007451b33c7a234c60f0d13b164561b29094 deleted file mode 100644 index 1e2ee9643cb6426e8129e7660e2d941f5f41bb19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcW*3IZ_@Kw;~gVtPT6%w%Q*BEnW4BR>-qjJqrmJic3a0Nck`yt4HE z7~mow#-<9BRn_K_6p9&z8={~l&xLa$svK*yH5Rj`O<w~%3vr-8O-PV)){rS;k+#c< z)p}CT8cceR`?A4&gY$g5>L>N}si(5^3pgfpQ}8mu(K&0)UiYb?fAXIPhvo}aLOPY5 C@kJ{D diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/48/082f72f087ce7e6fa75b9c41d7387daecd447b b/test/integration/bisect/expected/repo/.git_keep/objects/48/082f72f087ce7e6fa75b9c41d7387daecd447b deleted file mode 100644 index 23ff2840ff2459a64132f323f24859beb43d2125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~m7VgTMr)1OPqU1=#=q diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/4b/65d66c089cd4f6bfa69dff2d7ba4c27337cd23 b/test/integration/bisect/expected/repo/.git_keep/objects/4b/65d66c089cd4f6bfa69dff2d7ba4c27337cd23 deleted file mode 100644 index 3d5e2f0a3a803710a98d667696a364ca49ac6c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5HDE^i_te>5XN%3J-77d)TR&Z8W2_M?1H%Qr FcmS;*5^Vqg diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/54/3c0ef66d928051f16f8b9d7d33d6c4ea1f4e4f b/test/integration/bisect/expected/repo/.git_keep/objects/54/3c0ef66d928051f16f8b9d7d33d6c4ea1f4e4f deleted file mode 100644 index b8e566a28e95559d5a9d4f14bbbf9deccb500d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5^+wV8OSZNag_V};pY=&v@m;MsZl=q?@Mkt3 FGXSLT5$^y1 diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/5f/9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 b/test/integration/bisect/expected/repo/.git_keep/objects/5f/9397e5bcee1ac2a3fe6d834d42e36b74ef4ca8 deleted file mode 100644 index 2fe3c0d43e74831bbab6ebb3511c8497af892879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gaAJ3c@fDKwak)vlnD0lcWiV2wi!Md}dHEwv-4S-!43W+sAwG>eBmT z0Htskn+SNv6-7g6$wu^~6f~C9rpDYtb&^S)I5lhD<Tap`V#&rNVyReFRBmERof;x? zER1`@o=tv_`?A4&gY$g5$|v{rDW|&h3s7)O(c3A)kqFW3be|gXr~dPS$b12pOFJQ! Czem~t diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 b/test/integration/bisect/expected/repo/.git_keep/objects/60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 deleted file mode 100644 index d94cbe67d82850de2f8527e7aa60dbd605b2259b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~m_tgTOSVWB@(}1?2z$ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/66/19c0a1a3eb6449eb15ce6cd0916fec0e410c10 b/test/integration/bisect/expected/repo/.git_keep/objects/66/19c0a1a3eb6449eb15ce6cd0916fec0e410c10 deleted file mode 100644 index 67a41cc9f..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/objects/66/19c0a1a3eb6449eb15ce6cd0916fec0e410c10 +++ /dev/null @@ -1 +0,0 @@ -x+)JMU06b040031QH��Ie��6�L�Q���)���:���<��� \ No newline at end of file diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/67/fbfb3b74c2381ad1e058949231f2b4f0c8921f b/test/integration/bisect/expected/repo/.git_keep/objects/67/fbfb3b74c2381ad1e058949231f2b4f0c8921f deleted file mode 100644 index 66023ddfa8144a7229c7e225a1f29a2b16d25d0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmV;G0BZku0gaA93IZ_<MP2t4-3yX5?X&|T!mK<-+9oJiXBaAYe7o=fzUAlfd1Y<w z(Jju?q3<G=R8t0}<Up&FOqBz1$O%YiUswrhah%P@yS%!ssF70`s7#7btM@VZO2LPj zC3-9wAr`~$eqVRH-0XR|UFE}Vd&;S-?P78Ageka~>=6;bjCDkH`BVS-<Hvjf%!WHw DY*tE= diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/78/d41b2abbd2f52c1ebf2f496268a915d59eb27b b/test/integration/bisect/expected/repo/.git_keep/objects/78/d41b2abbd2f52c1ebf2f496268a915d59eb27b deleted file mode 100644 index 74386cac6..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/objects/78/d41b2abbd2f52c1ebf2f496268a915d59eb27b +++ /dev/null @@ -1,2 +0,0 @@ -x��A -1@Q�=E��4m'm@D���h��C��,<���[�����L�����$D�&���fbQuK�E�c�͚��`�PD�X�**[E�DDJ.I��Jj�{ܗ ���۵}r_��T�~��1M.&8"Zk��O��'�yp�|�;� \ No newline at end of file diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 b/test/integration/bisect/expected/repo/.git_keep/objects/7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 deleted file mode 100644 index 637482d7a82554db2176cef4841bccc3141df169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;3*RW9}klu05+=x?*IS* diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 b/test/integration/bisect/expected/repo/.git_keep/objects/7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 deleted file mode 100644 index 60454ab43e0c116e11fe1c78bd1bd18ca16bd18e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;5icmp8%6F05-=2_W%F@ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/80/eeef1a7c49b376f3373ea26c6ba44d69d90d9c b/test/integration/bisect/expected/repo/.git_keep/objects/80/eeef1a7c49b376f3373ea26c6ba44d69d90d9c deleted file mode 100644 index 7f09ffe72ac0917db36c2cfca714d5dcb19d2ff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5^~R3tNwdY+4^PV1uJDmN=`#2K*O29W42&gw FPXViQ66pW{ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/82/d721eb037f7045056023d0904989781ce1f526 b/test/integration/bisect/expected/repo/.git_keep/objects/82/d721eb037f7045056023d0904989781ce1f526 deleted file mode 100644 index 85c68ea1fe28feab9be24b6ca55e96c932f9d50e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmV;D0B!$x0gaA93c@fD06pgwdlzJPlWrR*BJ|W}B%3V?#+DMn=i7r1@H))E=vwQe z0mbgrb~6y6sF)~u%MwDgOr4r&!AP>0q6I=FbX(f()gTHZr^rgh=VFu@i!8pF4%P=g zvfgtJ#ie(<uRBaLjMIFxPpaF~F1pq$kOWUd$Nd0jB1Cu4W2)Jo`p*Y(UomVturWtP AJ^%m! diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/83/51c19397f4fcd5238d10034fa7fa384f14d580 b/test/integration/bisect/expected/repo/.git_keep/objects/83/51c19397f4fcd5238d10034fa7fa384f14d580 deleted file mode 100644 index 12805e9602f07af94a24ad47b987f6eebc8aad35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~mtlgTNG~Bmh0*1>OJv diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/91/36f315e5952043f1e7ecdc0d28c208eaeaed71 b/test/integration/bisect/expected/repo/.git_keep/objects/91/36f315e5952043f1e7ecdc0d28c208eaeaed71 deleted file mode 100644 index 5108746ca8d15f9559dc5be603d372e2062d8257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWw^G<!SOtcsDJ+iwZLi9N}1$+Cocs6 H_^}N_(p40y diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/96/202a92c1d3bde1b20d6f3dec8e742d09732b4d b/test/integration/bisect/expected/repo/.git_keep/objects/96/202a92c1d3bde1b20d6f3dec8e742d09732b4d deleted file mode 100644 index 059fc9c25c8ea1f5ce20b145c9250e3c6d1ef2c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gcW<3c^4PKvCCoirEX2%p^_<B0^U^M$$=9u(p&DJic9c0JopF_~SCq zj~21xL)+YAWlE|-h4Lh(m<2LRC4i1VCdkz$OH{(Do4;Dj$%{b-p+qWJys|2rX-5WU zD@oC0bPoD%_hpOy5HJ03^N-H!(@*0vUn8C=qi`w`kB9(aulrQ<Kl#r`4qvb7IrB$< BMVJ5p diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/98/d9bcb75a685dfbfd60f611c309410152935b3d b/test/integration/bisect/expected/repo/.git_keep/objects/98/d9bcb75a685dfbfd60f611c309410152935b3d deleted file mode 100644 index f6e750c5d4d0d926ebc13a4aaee8f87c90e064bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~ng-gTO4NQ~*9A1?>O; diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/ae/95e9aa3b8881aedb7a526c86ec5d60f371ca6c b/test/integration/bisect/expected/repo/.git_keep/objects/ae/95e9aa3b8881aedb7a526c86ec5d60f371ca6c deleted file mode 100644 index 175cab4ccbe8abaf0cd9fa1558e4d6e99e2e2beb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWvK6Gl-q8b;C$)X?YTMvf>YONFn$66 H`1cLO)e04Z diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/af/f6316148f1524977997c486bcfe624c9094c4e b/test/integration/bisect/expected/repo/.git_keep/objects/af/f6316148f1524977997c486bcfe624c9094c4e deleted file mode 100644 index 7e3df8fbf75f23ee822e874de412c92e609bce20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWnd`fyTg9XG4>4mI_AKameov3+jju~ H?J5lh!p9Tg diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e b/test/integration/bisect/expected/repo/.git_keep/objects/b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e deleted file mode 100644 index 268d0f4596bcf2600c8598a88037be18713815f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~mVdgTN%FL;yYi1>gVx diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/b4/de3947675361a7770d29b8982c407b0ec6b2a0 b/test/integration/bisect/expected/repo/.git_keep/objects/b4/de3947675361a7770d29b8982c407b0ec6b2a0 deleted file mode 100644 index 6d65f13b4ba310fca2adfb687ac6239597dddfa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~l)NgFqisJODl81=s)p diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/b5/31696093a6482eca9ad4bcab63407172225b93 b/test/integration/bisect/expected/repo/.git_keep/objects/b5/31696093a6482eca9ad4bcab63407172225b93 deleted file mode 100644 index 268e52a98..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/objects/b5/31696093a6482eca9ad4bcab63407172225b93 +++ /dev/null @@ -1 +0,0 @@ -x+)JMU06b040031QH��Ieؑ���_�3�[}�Y���bf�k� \ No newline at end of file diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 b/test/integration/bisect/expected/repo/.git_keep/objects/b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 deleted file mode 100644 index 02dc6889120b0c2a240806b626b6a255b325ac62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~nI#gTM@?6aYQ{1?B(% diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/b8/626c4cff2849624fb67f87cd0ad72b163671ad b/test/integration/bisect/expected/repo/.git_keep/objects/b8/626c4cff2849624fb67f87cd0ad72b163671ad deleted file mode 100644 index 0761b6105a0c6d0e83d26edd1b1dddb94e8d9fdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;2{$O9~YAW05*sO=l}o! diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/b9/7844c9437a4ab69c8165cadd97bc597b43135b b/test/integration/bisect/expected/repo/.git_keep/objects/b9/7844c9437a4ab69c8165cadd97bc597b43135b deleted file mode 100644 index 25e0f33f890cdf139eb5e5443880003e5926ac5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gaA93c@fD06pgwdlzIkX|fv-5qk0&+hmJ^v86=t`S#!gybi-KWohlv zfpR?b%?#9Xw5%E?5h1lYu|}VYBrCBdoC8zQRNShYy*h}m?8zn!JTndvV?rM)W*o9) z7Ai*b9&q~Z_hp0e2Iuj1wU4&-X{WNZ3s4#YN%SmmBtmpM-KV<!ssDUn_XYdqIq%vl BMPC2_ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/ba/8e7277a0ee7cdf84cd5c6138057adb85947a90 b/test/integration/bisect/expected/repo/.git_keep/objects/ba/8e7277a0ee7cdf84cd5c6138057adb85947a90 deleted file mode 100644 index c9ed3ff6bcc41646145806713f12a0d0dc56ef20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWpG{cyYzOO1H%Pz#slA%N~G-dU9}$o H3G5G2y6Y3z diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/bc/21c8fabc28201fab6c60503168ecda25ad8626 b/test/integration/bisect/expected/repo/.git_keep/objects/bc/21c8fabc28201fab6c60503168ecda25ad8626 deleted file mode 100644 index 8751f191563adfe2179ba3c2e4286986a7890427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gaA93c@fD06pgwdlw|TNs|qT2tD-~$!3FswWUPx`Bv}&UWb7hS?2lP z0aG~iO%)KW^`UT0R5-?}ElAA)gG<u5xmbjll9)Ab`s@&5E3LQ^y^v$f71a)$d?JU9 zif>jp5jK-w{kCi{PH-NltG@HRKJ+BZd;tvJArBN8j^Do7=|0u<PyOcuM)LtcpgM*) C;zYXu diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d b/test/integration/bisect/expected/repo/.git_keep/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d deleted file mode 100644 index 8dab6a9eaf1fff6a519dfb7bec1a5bdb56ff845d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;0Y509}AN%05*sO;s5{u diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/d1/f7a85555fe6f10dd44754d35459ae741cb107c b/test/integration/bisect/expected/repo/.git_keep/objects/d1/f7a85555fe6f10dd44754d35459ae741cb107c deleted file mode 100644 index 017c9bf7eaaad332c8c08b5633943ace4900dce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmV;G0BZku0gcW<3c@fDg<;n@#q0&iWRh_LB0^U^#x$9tU~MT8Jib|Y0C$g{Z}G~y zERP15`OtPVFlC9AW??CmBzhk?&A|$?a`c5TccSDr-R;%Dat*VDWams%$y&l>oQ0y) zJ~&TWDHg3x-|fEcFpO{+#+!X~*`9VP>v9F;NGK_s1&)Z`yI%XLW`FXZ2Tbk@ab7zc D5c)=r diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/d5/42aa84743f8ba1380358d4009408f03dbfb247 b/test/integration/bisect/expected/repo/.git_keep/objects/d5/42aa84743f8ba1380358d4009408f03dbfb247 deleted file mode 100644 index 776eafd0bff72ea3bbfa37f482cfdf5acc34f259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWvILMzv*7~8LbKx`;$j~?Y^!Nxs?e3 H8K@8?%N7&M diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/d6/b24041cf04154f8f902651969675021f4d93a5 b/test/integration/bisect/expected/repo/.git_keep/objects/d6/b24041cf04154f8f902651969675021f4d93a5 deleted file mode 100644 index 1ece9675cc1bf1b0364aa64b41e4b1e260ab79ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>V9OIG27!4@=>S3-25<lX diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/d9/328d9b2c9536fdf01641dd03f4a254d2c86601 b/test/integration/bisect/expected/repo/.git_keep/objects/d9/328d9b2c9536fdf01641dd03f4a254d2c86601 deleted file mode 100644 index a2c2b4a5cc1143cf6be0f6542f6ab8939602b55f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gaA93c@fDMP26<*$Xl==}aPs2wn9UlVpm5wWUPx_-5e&+<o4Ai(l4d zc{Gn_KD6D;*K;WX$*fkc)ORQ(M3Hh-m_@UwbyMA@yS<tR;G!{=IOl{MC52f9krM^Z z#84@q01Qsw?Y{1Qocv{+ZuZe-d)le2%hjU{0TWY9{)h<RI_;;L{h9xIPwopuYdTqA C1W3F9 diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/d9/cc608eedd5d2cc63c262272b7a0f6ab6aed5dd b/test/integration/bisect/expected/repo/.git_keep/objects/d9/cc608eedd5d2cc63c262272b7a0f6ab6aed5dd deleted file mode 100644 index dcf2f12d5820464bcee04e58f285014994d72f13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgW#IY!p`-23%9S$PgWt59obW&WRA)W_ H9g7gx_xBdd diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/db/b21289ee21b2ff0f3de2bc7d00038b30c4e353 b/test/integration/bisect/expected/repo/.git_keep/objects/db/b21289ee21b2ff0f3de2bc7d00038b30c4e353 deleted file mode 100644 index e4e6a90b7acdc3d9250f4aba0efafb0a17922bbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcW<3c@fDKvCB@#q0&iB$-SCB0^U^#$-C8U~MT8Jic9c0JopF_`1yV zqXX7_=$jdMCJMn5Vv1ZFD@vPKTdc&SjU{>sR@AMs*{egWwM3JIK_+XKl_X9n5ejFH zdh<00O&pxO`+eD97~wpOSNq7kKJBE-d;!cUVxhnVj)>m7z3x-p{^UOo=-n6NgE|5W CKt+%M diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/e5/9bbaffe94b06acaadab4245f30ff3e11c66e5b b/test/integration/bisect/expected/repo/.git_keep/objects/e5/9bbaffe94b06acaadab4245f30ff3e11c66e5b deleted file mode 100644 index e69a0bf1702455e2aeba72e46c91242c7636d862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gaAJ3c@fDKwak)vlk?jOg;l5LRURToJ>$Kwv-4S-!43W+sAwGWa<4e z0684SrV6FC=rJPYhQSf1#GHh3yh+pONZ2w7saeaWuK|_4%aw0VIQZCVvlt0$wZ2ht zfvS@nqeWBR<GyS#&2XOPtA0vfpL&v|Utljh=HOC>Bciotr~A~<KlPsv-h2U@&N-e+ CuScW+ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/e9/27f0f9467e772eea36f24053c9b534303b106a b/test/integration/bisect/expected/repo/.git_keep/objects/e9/27f0f9467e772eea36f24053c9b534303b106a deleted file mode 100644 index b3ab8fa488d54af22d5148d6b2dd74b23830cc19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gaAJ3IZ_@1zqP9*$dL0ZwEw#S$T|}P7eyk8HNZR-z+?Ut5+1Yc(S(k z=oU*l^j*~kpGk6nx-eADT(WnV<{0KuBt-TCejzVr<6U3f&f-vL;j!cZ2P8=l!DAwo z$}V!H<dWfczpuNUZuUIguKMA&J@q7OyI4%YBSn|V9uWb|u;WzMKl5L2k<1rZK{~?J C-9>N! diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/e9/d2f825e793bc9ac2be698348dbe669bad34cad b/test/integration/bisect/expected/repo/.git_keep/objects/e9/d2f825e793bc9ac2be698348dbe669bad34cad deleted file mode 100644 index be6b5b0fa..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/objects/e9/d2f825e793bc9ac2be698348dbe669bad34cad +++ /dev/null @@ -1,4 +0,0 @@ -x��M -�@�a�s���LҤ��#�# -�-e��,<�ۗ��/��>�$��� -K�D�ј,H��d�c�!O*�I�f{y5`�{�#QR�I��g��`}����}�a^�</��=�)����C���^��V��?��{�9 \ No newline at end of file diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/ea/684d3f868c358400465f2ec16a640c319ea6a3 b/test/integration/bisect/expected/repo/.git_keep/objects/ea/684d3f868c358400465f2ec16a640c319ea6a3 deleted file mode 100644 index fa152b466e61bfb1bddd90ba332d1573ede50788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgWk|TZ>C2L{@nYt$7buu^|BE{vcjprT H7-JCG%A^!2 diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/eb/e59a71e9750e75fb983f241687cdf7f0c8ce94 b/test/integration/bisect/expected/repo/.git_keep/objects/eb/e59a71e9750e75fb983f241687cdf7f0c8ce94 deleted file mode 100644 index b995a9db560e19f0c6194ac4499cd883d5f1d0b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcWv3IZ_@g<<QQBE2BVCX<<fh_KZjV=@_0Fz&KM@c5?i05-4q`HClN zYmaVyhC|;~ZDCTJ5ZS4s)Eh;qAjt=EfLsefj>y@Wjdy)@TQX9Nl4C%QTv8VD3509S zSOmtz-~$xH?|xr*J1_P;FIW9=+n#!owOy=F!w^hJ_UOHHX4G-2>!1AREtxMi-#V85 Cn@7C> diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/ec/635144f60048986bc560c5576355344005e6e7 b/test/integration/bisect/expected/repo/.git_keep/objects/ec/635144f60048986bc560c5576355344005e6e7 deleted file mode 100644 index 0207e4b4bda9947f005801b14769db56d4b4e592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb|y!xJV3J`pBU06M@0dH?_b diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/f2/7c6ae26adb8396d3861976ba268f87ad8afa0b b/test/integration/bisect/expected/repo/.git_keep/objects/f2/7c6ae26adb8396d3861976ba268f87ad8afa0b deleted file mode 100644 index 1bb91768c4520f1dcc85e21a945532d28015006b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5b;kjtkNL4*w#7@i9~FONc5CBQ-HLVk41#m{ F0|B>G69)hQ diff --git a/test/integration/bisect/expected/repo/.git_keep/objects/f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 b/test/integration/bisect/expected/repo/.git_keep/objects/f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 deleted file mode 100644 index 674e37f3f65cd9ec8edc356497f730f3b356e4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~liFgFp{c8~{DQ1<?Qi diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/bad b/test/integration/bisect/expected/repo/.git_keep/refs/bisect/bad deleted file mode 100644 index 7394d82df..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/bad +++ /dev/null @@ -1 +0,0 @@ -054bdf969fdcf1f90f1998666f628d40f72fde4f diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-39983ea412adebe6c5a3d4451a7673cf0962c472 b/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-39983ea412adebe6c5a3d4451a7673cf0962c472 deleted file mode 100644 index 6f59b6df1..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-39983ea412adebe6c5a3d4451a7673cf0962c472 +++ /dev/null @@ -1 +0,0 @@ -39983ea412adebe6c5a3d4451a7673cf0962c472 diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-67fbfb3b74c2381ad1e058949231f2b4f0c8921f b/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-67fbfb3b74c2381ad1e058949231f2b4f0c8921f deleted file mode 100644 index 3be7f3d16..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-67fbfb3b74c2381ad1e058949231f2b4f0c8921f +++ /dev/null @@ -1 +0,0 @@ -67fbfb3b74c2381ad1e058949231f2b4f0c8921f diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e927f0f9467e772eea36f24053c9b534303b106a b/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e927f0f9467e772eea36f24053c9b534303b106a deleted file mode 100644 index aeb0e94fb..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e927f0f9467e772eea36f24053c9b534303b106a +++ /dev/null @@ -1 +0,0 @@ -e927f0f9467e772eea36f24053c9b534303b106a diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e9d2f825e793bc9ac2be698348dbe669bad34cad b/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e9d2f825e793bc9ac2be698348dbe669bad34cad deleted file mode 100644 index 07ab39a86..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/good-e9d2f825e793bc9ac2be698348dbe669bad34cad +++ /dev/null @@ -1 +0,0 @@ -e9d2f825e793bc9ac2be698348dbe669bad34cad diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-bc21c8fabc28201fab6c60503168ecda25ad8626 b/test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-bc21c8fabc28201fab6c60503168ecda25ad8626 deleted file mode 100644 index 4c1452285..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-bc21c8fabc28201fab6c60503168ecda25ad8626 +++ /dev/null @@ -1 +0,0 @@ -bc21c8fabc28201fab6c60503168ecda25ad8626 diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-d1f7a85555fe6f10dd44754d35459ae741cb107c b/test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-d1f7a85555fe6f10dd44754d35459ae741cb107c deleted file mode 100644 index 5010f334f..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/bisect/skip-d1f7a85555fe6f10dd44754d35459ae741cb107c +++ /dev/null @@ -1 +0,0 @@ -d1f7a85555fe6f10dd44754d35459ae741cb107c diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/heads/master b/test/integration/bisect/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index 914b1ab9d..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -78d41b2abbd2f52c1ebf2f496268a915d59eb27b diff --git a/test/integration/bisect/expected/repo/.git_keep/refs/heads/test b/test/integration/bisect/expected/repo/.git_keep/refs/heads/test deleted file mode 100644 index 914b1ab9d..000000000 --- a/test/integration/bisect/expected/repo/.git_keep/refs/heads/test +++ /dev/null @@ -1 +0,0 @@ -78d41b2abbd2f52c1ebf2f496268a915d59eb27b diff --git a/test/integration/bisect/expected/repo/file b/test/integration/bisect/expected/repo/file deleted file mode 100644 index 209e3ef4b..000000000 --- a/test/integration/bisect/expected/repo/file +++ /dev/null @@ -1 +0,0 @@ -20 diff --git a/test/integration/bisect/recording.json b/test/integration/bisect/recording.json deleted file mode 100644 index a4c4a31c1..000000000 --- a/test/integration/bisect/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":595,"Mod":0,"Key":259,"Ch":0},{"Timestamp":731,"Mod":0,"Key":259,"Ch":0},{"Timestamp":964,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1235,"Mod":0,"Key":256,"Ch":98},{"Timestamp":1515,"Mod":0,"Key":13,"Ch":13},{"Timestamp":1954,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2131,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2298,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2442,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2618,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2794,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2971,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3122,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3306,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3490,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3690,"Mod":0,"Key":256,"Ch":98},{"Timestamp":4226,"Mod":0,"Key":258,"Ch":0},{"Timestamp":4706,"Mod":0,"Key":13,"Ch":13},{"Timestamp":5721,"Mod":0,"Key":256,"Ch":98},{"Timestamp":7034,"Mod":0,"Key":258,"Ch":0},{"Timestamp":7355,"Mod":0,"Key":13,"Ch":13},{"Timestamp":8499,"Mod":0,"Key":258,"Ch":0},{"Timestamp":9010,"Mod":0,"Key":256,"Ch":98},{"Timestamp":9362,"Mod":0,"Key":258,"Ch":0},{"Timestamp":9587,"Mod":0,"Key":258,"Ch":0},{"Timestamp":9826,"Mod":0,"Key":258,"Ch":0},{"Timestamp":10178,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10666,"Mod":0,"Key":13,"Ch":13},{"Timestamp":11714,"Mod":0,"Key":257,"Ch":0},{"Timestamp":12042,"Mod":0,"Key":257,"Ch":0},{"Timestamp":12466,"Mod":0,"Key":256,"Ch":98},{"Timestamp":12962,"Mod":0,"Key":258,"Ch":0},{"Timestamp":13130,"Mod":0,"Key":258,"Ch":0},{"Timestamp":13554,"Mod":0,"Key":13,"Ch":13},{"Timestamp":14434,"Mod":0,"Key":258,"Ch":0},{"Timestamp":14850,"Mod":0,"Key":256,"Ch":98},{"Timestamp":15523,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16074,"Mod":0,"Key":13,"Ch":13},{"Timestamp":16642,"Mod":0,"Key":256,"Ch":98},{"Timestamp":17754,"Mod":0,"Key":258,"Ch":0},{"Timestamp":18139,"Mod":0,"Key":13,"Ch":13},{"Timestamp":19889,"Mod":0,"Key":27,"Ch":0},{"Timestamp":20603,"Mod":0,"Key":260,"Ch":0},{"Timestamp":21754,"Mod":0,"Key":256,"Ch":110},{"Timestamp":21938,"Mod":0,"Key":256,"Ch":116},{"Timestamp":21978,"Mod":0,"Key":256,"Ch":101},{"Timestamp":22139,"Mod":0,"Key":256,"Ch":115},{"Timestamp":22178,"Mod":0,"Key":256,"Ch":116},{"Timestamp":22386,"Mod":0,"Key":13,"Ch":13},{"Timestamp":23090,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/bisect/setup.sh b/test/integration/bisect/setup.sh deleted file mode 100644 index 6aa3bf7df..000000000 --- a/test/integration/bisect/setup.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e - -cd $1 - -git init - -git config user.email "CI@example.com" -git config user.name "CI" - -for i in {1..20} -do - echo "$i" > file - git add . - git commit -m "commit $i" -done diff --git a/test/integration/bisect/test.json b/test/integration/bisect/test.json deleted file mode 100644 index 58263936d..000000000 --- a/test/integration/bisect/test.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "description": "Basic git bisect usage", - "speed": 5, - "skip": true -} diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/bisect/basic/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..7444ad06a --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +commit 10 diff --git a/test/integration/bisect/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/bisect/basic/expected/repo/.git_keep/FETCH_HEAD similarity index 100% rename from test/integration/bisect/expected/repo/.git_keep/FETCH_HEAD rename to test/integration_new/bisect/basic/expected/repo/.git_keep/FETCH_HEAD diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/HEAD b/test/integration_new/bisect/basic/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..cb089cd89 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/test/integration/bisect/expected/repo/.git_keep/config b/test/integration_new/bisect/basic/expected/repo/.git_keep/config similarity index 87% rename from test/integration/bisect/expected/repo/.git_keep/config rename to test/integration_new/bisect/basic/expected/repo/.git_keep/config index 8ae104545..8a748ce32 100644 --- a/test/integration/bisect/expected/repo/.git_keep/config +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/config @@ -8,3 +8,5 @@ [user] email = CI@example.com name = CI +[commit] + gpgSign = false diff --git a/test/integration/bisect/expected/repo/.git_keep/description b/test/integration_new/bisect/basic/expected/repo/.git_keep/description similarity index 100% rename from test/integration/bisect/expected/repo/.git_keep/description rename to test/integration_new/bisect/basic/expected/repo/.git_keep/description diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/index b/test/integration_new/bisect/basic/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..d7cd698470e6e19b1e1ca68ffc52885ce0709504 GIT binary patch literal 866 zcmZ?q402{*U|<4bu4HDPqkPv_U5C+(3=FKypF~+07#f!_Ffe`vsu2NVKKJWg*B8|v z|L0-c8K}3vZn00O$Q}l+w9K4T14F%%iV~n2FaVh&VD-TtMnlb$K{t=h{hxO+)BF9K zOm}?9kdD+jY%$jiYMv3gd4lUXeuK;d(NOdB(9N^{k+Hb*0=r#dTuVRSW7|SDSIbjS z^Ni8W6V~zh12PXpL(OwQH}BH{sSdG3k9?6j_pke!Ci=wkFc?71GeI-&I8*U9OQ3mR z8fxAnbn^~{p7;CyH!N}GweG?q=am&tv{~0c%`?R?uY3Y8*gPN&HSaOHdE%X=#|~Xx zaXEjo`TKjTG#HXLzOR9rXNF;3)$7+_^MEweyeH`98LVZf@!2q2JVM|>=EhAMv^I!v zghS0U$1tzX!v$;}kcOJ~6y3c2+RR-wkymaTE}2wm(Dv)!38pvtQ1dJ>%xj$C1vU>z zL(O}JZeGCEM0Ni2XHTv_5ua%G)BLFBnp3Nw=2>Ex*QyN(KOhY??>V}8y`Dl-G*6x0 zmg&zlVYA}AiOW8xoQ0TYXn<^9NRX>5FkwqE7#b)TaG57~?CM>zO_HOl-YfR=SB<|< c<fX0)ol%#VDEJ_F=EE+p)6L5(^j6vf0Lz^Iv;Y7A literal 0 HcmV?d00001 diff --git a/test/integration/bisect/expected/repo/.git_keep/info/exclude b/test/integration_new/bisect/basic/expected/repo/.git_keep/info/exclude similarity index 100% rename from test/integration/bisect/expected/repo/.git_keep/info/exclude rename to test/integration_new/bisect/basic/expected/repo/.git_keep/info/exclude diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/logs/HEAD b/test/integration_new/bisect/basic/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..b7b69aa41 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,13 @@ +0000000000000000000000000000000000000000 18197bb6052becf371aca9ab58d8352cebd3bc29 CI <CI@example.com> 1661160645 +1000 commit (initial): commit 01 +18197bb6052becf371aca9ab58d8352cebd3bc29 0ce746de5bee98147a370a19b4568b448fdedfcc CI <CI@example.com> 1661160645 +1000 commit: commit 02 +0ce746de5bee98147a370a19b4568b448fdedfcc d4308139592744ccc7fa9ab0931812da9fdfcc1d CI <CI@example.com> 1661160645 +1000 commit: commit 03 +d4308139592744ccc7fa9ab0931812da9fdfcc1d 0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 CI <CI@example.com> 1661160645 +1000 commit: commit 04 +0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 685d0baa299ec29ff2c7a1ca9268abdd374adef2 CI <CI@example.com> 1661160645 +1000 commit: commit 05 +685d0baa299ec29ff2c7a1ca9268abdd374adef2 483fcff024ff52df164dddea9ab5032370d14228 CI <CI@example.com> 1661160645 +1000 commit: commit 06 +483fcff024ff52df164dddea9ab5032370d14228 f3f9cf9d8f02f35f955b868d277913fc45d724db CI <CI@example.com> 1661160645 +1000 commit: commit 07 +f3f9cf9d8f02f35f955b868d277913fc45d724db a83ada2a0a285982aaa96baeddb70135532ed004 CI <CI@example.com> 1661160645 +1000 commit: commit 08 +a83ada2a0a285982aaa96baeddb70135532ed004 a89b19d40efb59f1f77b5a6b59ed1a9898545d0d CI <CI@example.com> 1661160645 +1000 commit: commit 09 +a89b19d40efb59f1f77b5a6b59ed1a9898545d0d 670ea6605e6780007c543b3d034bcf49c898290d CI <CI@example.com> 1661160645 +1000 commit: commit 10 +670ea6605e6780007c543b3d034bcf49c898290d 685d0baa299ec29ff2c7a1ca9268abdd374adef2 CI <CI@example.com> 1661160646 +1000 checkout: moving from master to 685d0baa299ec29ff2c7a1ca9268abdd374adef2 +685d0baa299ec29ff2c7a1ca9268abdd374adef2 0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 CI <CI@example.com> 1661160646 +1000 checkout: moving from 685d0baa299ec29ff2c7a1ca9268abdd374adef2 to 0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 +0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 670ea6605e6780007c543b3d034bcf49c898290d CI <CI@example.com> 1661160647 +1000 checkout: moving from 0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 to master diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/logs/refs/heads/master b/test/integration_new/bisect/basic/expected/repo/.git_keep/logs/refs/heads/master new file mode 100644 index 000000000..86cbc642d --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/logs/refs/heads/master @@ -0,0 +1,10 @@ +0000000000000000000000000000000000000000 18197bb6052becf371aca9ab58d8352cebd3bc29 CI <CI@example.com> 1661160645 +1000 commit (initial): commit 01 +18197bb6052becf371aca9ab58d8352cebd3bc29 0ce746de5bee98147a370a19b4568b448fdedfcc CI <CI@example.com> 1661160645 +1000 commit: commit 02 +0ce746de5bee98147a370a19b4568b448fdedfcc d4308139592744ccc7fa9ab0931812da9fdfcc1d CI <CI@example.com> 1661160645 +1000 commit: commit 03 +d4308139592744ccc7fa9ab0931812da9fdfcc1d 0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 CI <CI@example.com> 1661160645 +1000 commit: commit 04 +0f77bf7bd7dd91550c927549af82d5b7c6f8a0d7 685d0baa299ec29ff2c7a1ca9268abdd374adef2 CI <CI@example.com> 1661160645 +1000 commit: commit 05 +685d0baa299ec29ff2c7a1ca9268abdd374adef2 483fcff024ff52df164dddea9ab5032370d14228 CI <CI@example.com> 1661160645 +1000 commit: commit 06 +483fcff024ff52df164dddea9ab5032370d14228 f3f9cf9d8f02f35f955b868d277913fc45d724db CI <CI@example.com> 1661160645 +1000 commit: commit 07 +f3f9cf9d8f02f35f955b868d277913fc45d724db a83ada2a0a285982aaa96baeddb70135532ed004 CI <CI@example.com> 1661160645 +1000 commit: commit 08 +a83ada2a0a285982aaa96baeddb70135532ed004 a89b19d40efb59f1f77b5a6b59ed1a9898545d0d CI <CI@example.com> 1661160645 +1000 commit: commit 09 +a89b19d40efb59f1f77b5a6b59ed1a9898545d0d 670ea6605e6780007c543b3d034bcf49c898290d CI <CI@example.com> 1661160645 +1000 commit: commit 10 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/06/47fe4b7302efbfb235b8f0681b592cc3389d36 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/06/47fe4b7302efbfb235b8f0681b592cc3389d36 new file mode 100644 index 0000000000000000000000000000000000000000..a8a2b586df771ca14cecde7807a27ce30a6b580c GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8>+k8|g>J<n=0GWZ>5cLD&o#S2XU literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c new file mode 100644 index 0000000000000000000000000000000000000000..f3e747107bb9d87ddf233fb1249f6677eb244de5 GIT binary patch literal 212 zcmV;_04x7^0V^p=O;s>5Gh;9`FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD z6;HHT*C4Ah1FI76EIoGU>Wa(xlg;1XTcyE}wDElnvMO`1DucBQH9i|=i$@4N$lSPT OgVqKSj&J}0IcDi5lxa!; literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/0c/e746de5bee98147a370a19b4568b448fdedfcc b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/0c/e746de5bee98147a370a19b4568b448fdedfcc new file mode 100644 index 0000000000000000000000000000000000000000..c5d3bb6b19ec6abf5b0948158f33cb15ab9001fa GIT binary patch literal 147 zcmV;E0Brww0gaA93c@fD06pgwxeJorG@ArOgr0oH?skiUv86=t`S#!gybd!ky0rG_ z9x5IBX68Ad4iZVIOmhweAR!ji8JI;`vfyA;#jU*AYYz+5EJ7inn9eZ+D_53OrV<mX z$rMGgI)3;2vib4m&*SZCA8zZ@PP(*<2O<CpG$en75Q5w3KGp3{{pb6D?hCL*J6~RS BMfCsx literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/0f/77bf7bd7dd91550c927549af82d5b7c6f8a0d7 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/0f/77bf7bd7dd91550c927549af82d5b7c6f8a0d7 new file mode 100644 index 000000000..08a230736 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/0f/77bf7bd7dd91550c927549af82d5b7c6f8a0d7 @@ -0,0 +1,4 @@ +x��A +1@Q�=E��$M[[f5�H��C��,<���[|]z�c�� �ٔ��"saA����{� +�U��Pc$N>ٳs�zn�$cb�d��V�*#�q_6�f�L�~���zҥ_�B +��#!���>5�������;@ \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c new file mode 100644 index 0000000000000000000000000000000000000000..933e877a004be087db3ad361d41a016285123f23 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?nk8|g>J<n=0GWfk_cLM;qLko5Q literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/18/197bb6052becf371aca9ab58d8352cebd3bc29 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/18/197bb6052becf371aca9ab58d8352cebd3bc29 new file mode 100644 index 000000000..0c5f11730 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/18/197bb6052becf371aca9ab58d8352cebd3bc29 @@ -0,0 +1,2 @@ +x��M +�@@a�s��I&?6P��U�QK���H���E����[j)�$ݩm���Wr��(��QV��:�;�jFI�=���8 ����������1�u��������+ \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/30/ad007c4cb09b175810e069b1b2b02ab0140857 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/30/ad007c4cb09b175810e069b1b2b02ab0140857 new file mode 100644 index 0000000000000000000000000000000000000000..9d7077433af455660d7eaba15a6156e4ea83b0cb GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?%k8|g>J<n=0GWdOAcLxBumkWdd literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 new file mode 100644 index 0000000000000000000000000000000000000000..dc002385b950b9b8a85d84ba3da3955db702074b GIT binary patch literal 186 zcmV;r07d_J0V^p=O;s>5vS2VYFfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD o6;HHT*C4Ah1FI76EIoGU>Wa(xlg;1XTcyE}wDEln0K+a>>qpLC$N&HU literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 new file mode 100644 index 0000000000000000000000000000000000000000..350af2800533c3104a701dce1729c5212dcef1f0 GIT binary patch literal 133 zcmV;00DAv;0V^p=O;s>7HDWL{FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY n3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZZ^CcZiEHDN%H literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a new file mode 100644 index 000000000..e8c48561b --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a @@ -0,0 +1,2 @@ +x+)JMU0�0`040031QH��I50�+�(ap��u}Q��Ɲ�z������AVeV���ϻ����M�;>dHG���k������G����v�q-�|�m�\-O!�2��t@�C,�#_���뾦�>�<ȪL�������7,q���"�O�Y� �2��,=v��������[�����} �*s�*��5>f�G<�ܸi���pdU`U����j"��6\2�Ҡ�Lo��UY�U\MT�?����f?͏j�9� +I��XU����S��e�3Mج8o��)g�I�� \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/3b/f868a389d0073e715e848f0ee33d71064539ca b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/3b/f868a389d0073e715e848f0ee33d71064539ca new file mode 100644 index 0000000000000000000000000000000000000000..07b07e91fc3473d2d2b21397ee9c3197bcd0bbe6 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?1k8|g>J<n=0GWcC!cLo5t84Ftg literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/47/d78ad7a27fc7fe483389512ebf7ea34c5514bc b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/47/d78ad7a27fc7fe483389512ebf7ea34c5514bc new file mode 100644 index 0000000000000000000000000000000000000000..c562d38cc74cf217a96352f3dc336a387371e749 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8>sk8|g>J<n=0GWhLdcLV^q#S29M literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/48/3fcff024ff52df164dddea9ab5032370d14228 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/48/3fcff024ff52df164dddea9ab5032370d14228 new file mode 100644 index 0000000000000000000000000000000000000000..018de21ed12e4e7bd2cbb8abb2aa0b312fffa0ff GIT binary patch literal 148 zcmV;F0Biqv0gcW*3IZ_@Kw;~gVtPR``I*gth_IE%m?RSvjJqrmJic3a0Nck`yt4HE z7=TQNv8jSb7u2>ETZrhXHOJJLlltP-*(v*qnIxH2Hhm4C6syf5j#-Q2-IqzQ2s=uW zYxPr*s?8aBkNdL0e1r3RyXr^!`qWcd`UQ{(kt~G>N3_<Oz3x*(|KvXpmdqEOC_7yx CXiEnG literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/50/d561270fcfcdc9afc85f6136f937c529accaaa b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/50/d561270fcfcdc9afc85f6136f937c529accaaa new file mode 100644 index 0000000000000000000000000000000000000000..f11f051fc4d081c513a9e04677e32e65caf944af GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPty${9_P+$d!E&1WbkKW_XGgGDGL?= literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/55/3197193920043fb04f3e39e825916990955204 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/55/3197193920043fb04f3e39e825916990955204 new file mode 100644 index 0000000000000000000000000000000000000000..ac90c394afbc05bf205db7dcf331d28a569142fd GIT binary patch literal 55 zcmV-70LcG%0V^p=O;s?qU@$Z=Ff%bxNXyJgH89jGsVHG^zut9yQT_3M9>$%4di(1Z N`-F<@0RUnl5mQh97fApB literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/67/0ea6605e6780007c543b3d034bcf49c898290d b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/67/0ea6605e6780007c543b3d034bcf49c898290d new file mode 100644 index 0000000000000000000000000000000000000000..3ba98094c97fad577b670838dffab1a5fa893167 GIT binary patch literal 147 zcmV;E0Brww0gaA93c@fD06pgwdlzKaCYue22tD-~n`VQ8v86=t`S#!gybZ$~W?ou* zbfCnCzL~)g8NFncqCPVv6wz3{hEj(b&Qgncs-$k!&0ZZ;Ql?ZqTFoI<sxjuEyt5V3 zBuRn~1&h;nzb_k%6I{mWW*=?q(@yi!u0YI0jO+s(2@&0H_o;4w=D!{Y-4~8sI}G}_ BLnr_M literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/68/5d0baa299ec29ff2c7a1ca9268abdd374adef2 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/68/5d0baa299ec29ff2c7a1ca9268abdd374adef2 new file mode 100644 index 0000000000000000000000000000000000000000..6c9b79171733a1cca36851cb102c73b349aafe73 GIT binary patch literal 147 zcmV;E0Brww0gaAJ3c@fDKwak)vlnD0?PMA#B6QVb<TF9R*is^Re6#QXZXb`wOIxjv z2ISqT9jc&~yiCd=lrjk0m{p@2IFWOriGAYO8JRsC`f7khBo>KTa`wcG$y?#khcemB zQIacDz$_-b+kHD=Sz%t*n|?ywpL$7Ky+ThDIdmh#nGn%*+NYZSssDUHHec|$JD^6@ BMg;%> literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/8d/49129429cacbb6694f0290b3219e91a6f364cd b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/8d/49129429cacbb6694f0290b3219e91a6f364cd new file mode 100644 index 0000000000000000000000000000000000000000..8d434f2041605e3a4058a78bd8bb3d5a1ad5f503 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg9csk8|g>J<n=0GWhLhcLV^q%nL>U literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a0/2c4b36b68df7081152282cf1aabcab7b24e69b b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a0/2c4b36b68df7081152282cf1aabcab7b24e69b new file mode 100644 index 0000000000000000000000000000000000000000..85866acd897b150150557b0a331c827562ca4fa7 GIT binary patch literal 81 zcmV-X0IvUd0V^p=O;s>AV=y!@Ff%bxNXyJgH89jGsVHG^zut9yQT_3M9>$%4di(1Z n`-F<@K~`l1R>kK2&%2oE{r*j+J3eGcN9r85m}>?A;$I(9i#8>| literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a8/3ada2a0a285982aaa96baeddb70135532ed004 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a8/3ada2a0a285982aaa96baeddb70135532ed004 new file mode 100644 index 0000000000000000000000000000000000000000..da4e3e339e95a2fd020b4c4e3afa98a569702309 GIT binary patch literal 149 zcmV;G0BZku0gcW*3IZ_@Kw;~gVtPR`NoJCOh_IE%$j=N4uDdJ|Jic3a0Nck`ytd5q zV*qA8j7<cpFG3jEwMN<HN-Zc?CP}4Z$P_RHmE_D?HhB$DueoXNNv%^)nu%)S)Lo1j zy|zF-y3ngB?{Qx?m~L>MZddt~d40;ME%ODC8Idgqf+JdM&0hDZA%F6p2b;_nP8&Ls DRWC!Q literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a8/9b19d40efb59f1f77b5a6b59ed1a9898545d0d b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a8/9b19d40efb59f1f77b5a6b59ed1a9898545d0d new file mode 100644 index 000000000..9d4aa4be5 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/a8/9b19d40efb59f1f77b5a6b59ed1a9898545d0d @@ -0,0 +1,2 @@ +x��K +�0@]��d&���c�LQ����"���<���e����o�P��]��L-;�r�0�i�&5�l�� �I+(6�VD8��JBr!8� �y�۲�0�y���y}�.�(F���8"���S]��= �d�:� \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 new file mode 100644 index 000000000..7eacc86e0 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 @@ -0,0 +1 @@ +x+)JMU060a040031QH��I50�+�(ap��u}Q��Ɲ�z������AVeV���ϻ����M�;>dHG���k������G����v�q-�|�m�\-O!�2��t@�C,�#_���뾦�>�<ȪL�������7,q���"�O�Y� �2��,=v��������[�����} �*s�*��5>f�G<�ܸi���pdU`U����j"��6\2�Ҡ�Lo�4�v5 \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/bf/2b038a7c59d4db31a492793086fafec802ec2f b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/bf/2b038a7c59d4db31a492793086fafec802ec2f new file mode 100644 index 0000000000000000000000000000000000000000..17f75bca502e6b34e2f231b56e520976da3a5221 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPty$n9_P+$d!E&1WbpgT?g0S6(F_Lw literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/c2/55cf4ef7fd5661a9d68b717243a978e42b05ac b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/c2/55cf4ef7fd5661a9d68b717243a978e42b05ac new file mode 100644 index 0000000000000000000000000000000000000000..6ac1f71b1ac5591558972d0ca7dba18052afb32b GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?Xk8|g>J<n=0GWb1WcLe~sLkn&I literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/cf/b438e7991d830d830d58744b99cff451a9d07e b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/cf/b438e7991d830d830d58744b99cff451a9d07e new file mode 100644 index 0000000000000000000000000000000000000000..f184b6b997d3abbf26741a2a27476f2e32ffbe5c GIT binary patch literal 265 zcmV+k0rviQ0V^p=O;s>9F=8+@FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD z6;HHT*C4Ah1FI76EIoGU>Wa(xlg;1XTcyE}wDElnvMO`1DucBQH9i|=i$@4N$lSPT zgVqKSj&NjE7GPETwVAtWBCp&wTr#QBpzYVc6HIUPkyTlORRvs4ROdf`_T>5#@rh<X P&5vrXIkgG^y`zQc0`Y}{ literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/d4/308139592744ccc7fa9ab0931812da9fdfcc1d b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/d4/308139592744ccc7fa9ab0931812da9fdfcc1d new file mode 100644 index 0000000000000000000000000000000000000000..27a1e4ef2f5bdef0d86f86cf4c2acb8aa87ba32e GIT binary patch literal 148 zcmV;F0Biqv0gcX03c@fDhGEw^#q0%{X_9FIB0^UlBR^kIu(p&49^WoJfZLa6@s?$t zADtxXp>F^|YnJ9i8FKbW)d{<p0-BA&RvCL61cO=AhF2#p7@b!548$OAOm^fXF*~mz zI~Q6-ZKas>?)PP*=|<=2cEu;n>l3H4%oh?>5oL9rj>61lulrQTpZw>Et@#4$-aD(l CYeonF literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 new file mode 100644 index 0000000000000000000000000000000000000000..37f59fe0fb0228d08de7eb36a278ec52c722aec2 GIT binary patch literal 160 zcmV;R0AK%j0V^p=O;s?oG+;0^FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD O6;HHT*8l*@%}K*azEJT1 literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/e6/db1f58c2bb5ead41049a8ef3910360eead21e2 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/e6/db1f58c2bb5ead41049a8ef3910360eead21e2 new file mode 100644 index 0000000000000000000000000000000000000000..8bcfafeb644d88961fada612e53598966fbe73ed GIT binary patch literal 108 zcmV-y0F(cC0V^p=O;s>7G+{6_FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY O3)x&PPXPdnMJ)ztA2U4w literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/f2/c01a881661486f147e47f5be82914c5d0c0030 b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/f2/c01a881661486f147e47f5be82914c5d0c0030 new file mode 100644 index 0000000000000000000000000000000000000000..7e30b2e352ac316b3082ec42a9aabada4e057a17 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?Hk8|g>J<n=0GWgwOcL4yn?+ai6 literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/f3/f9cf9d8f02f35f955b868d277913fc45d724db b/test/integration_new/bisect/basic/expected/repo/.git_keep/objects/f3/f9cf9d8f02f35f955b868d277913fc45d724db new file mode 100644 index 0000000000000000000000000000000000000000..14633d8d179de3187ee703e6839db47e97b4aff3 GIT binary patch literal 148 zcmV;F0Biqv0gcW*3IZ_@Kw;~gVtPSl@*fZpw%TLFnG6cXU6u$Q-z_|V?c*yRFTFno zP>F}JwFa0Aa?-3d3o(VH)^i9o-crggIwy{W3!AlW?KQw>r>u(Bs|G7d(Thl{rQQNM z>k<liYqP2EabGr=W;jptwS8(|pY6m;zW~KZ6fyb$M?yri*L`ZVKl#rCCi4YuuR6zE C@Io{I literal 0 HcmV?d00001 diff --git a/test/integration/bisect/expected/repo/.git_keep/packed-refs b/test/integration_new/bisect/basic/expected/repo/.git_keep/packed-refs similarity index 100% rename from test/integration/bisect/expected/repo/.git_keep/packed-refs rename to test/integration_new/bisect/basic/expected/repo/.git_keep/packed-refs diff --git a/test/integration_new/bisect/basic/expected/repo/.git_keep/refs/heads/master b/test/integration_new/bisect/basic/expected/repo/.git_keep/refs/heads/master new file mode 100644 index 000000000..0081272f7 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/.git_keep/refs/heads/master @@ -0,0 +1 @@ +670ea6605e6780007c543b3d034bcf49c898290d diff --git a/test/integration_new/bisect/basic/expected/repo/file01.txt b/test/integration_new/bisect/basic/expected/repo/file01.txt new file mode 100644 index 000000000..47d78ad7a --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file01.txt @@ -0,0 +1 @@ +file01 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file02.txt b/test/integration_new/bisect/basic/expected/repo/file02.txt new file mode 100644 index 000000000..0647fe4b7 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file02.txt @@ -0,0 +1 @@ +file02 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file03.txt b/test/integration_new/bisect/basic/expected/repo/file03.txt new file mode 100644 index 000000000..3bf868a38 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file03.txt @@ -0,0 +1 @@ +file03 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file04.txt b/test/integration_new/bisect/basic/expected/repo/file04.txt new file mode 100644 index 000000000..f2c01a881 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file04.txt @@ -0,0 +1 @@ +file04 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file05.txt b/test/integration_new/bisect/basic/expected/repo/file05.txt new file mode 100644 index 000000000..c255cf4ef --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file05.txt @@ -0,0 +1 @@ +file05 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file06.txt b/test/integration_new/bisect/basic/expected/repo/file06.txt new file mode 100644 index 000000000..178975c6c --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file06.txt @@ -0,0 +1 @@ +file06 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file07.txt b/test/integration_new/bisect/basic/expected/repo/file07.txt new file mode 100644 index 000000000..30ad007c4 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file07.txt @@ -0,0 +1 @@ +file07 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file08.txt b/test/integration_new/bisect/basic/expected/repo/file08.txt new file mode 100644 index 000000000..bf2b038a7 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file08.txt @@ -0,0 +1 @@ +file08 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file09.txt b/test/integration_new/bisect/basic/expected/repo/file09.txt new file mode 100644 index 000000000..50d561270 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file09.txt @@ -0,0 +1 @@ +file09 content \ No newline at end of file diff --git a/test/integration_new/bisect/basic/expected/repo/file10.txt b/test/integration_new/bisect/basic/expected/repo/file10.txt new file mode 100644 index 000000000..8d4912942 --- /dev/null +++ b/test/integration_new/bisect/basic/expected/repo/file10.txt @@ -0,0 +1 @@ +file10 content \ No newline at end of file From 8cdfc6758fd7e57d8a592f470f9c38f04a8372d0 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 19:52:05 +1000 Subject: [PATCH 05/44] add another bisect integration test --- pkg/integration/components/shell.go | 4 + .../tests/bisect/from_other_branch.go | 69 ++++++++++++++++++ pkg/integration/tests/tests.go | 1 + .../repo/.git_keep/BISECT_ANCESTORS_OK | 0 .../repo/.git_keep/BISECT_EXPECTED_REV | 1 - .../expected/repo/.git_keep/BISECT_LOG | 12 --- .../expected/repo/.git_keep/BISECT_NAMES | 1 - .../expected/repo/.git_keep/BISECT_START | 1 - .../expected/repo/.git_keep/BISECT_TERMS | 2 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 - .../expected/repo/.git_keep/HEAD | 1 - .../expected/repo/.git_keep/index | Bin 137 -> 0 bytes .../expected/repo/.git_keep/logs/HEAD | 28 ------- .../repo/.git_keep/logs/refs/heads/master | 1 - .../repo/.git_keep/logs/refs/heads/other | 21 ------ .../repo/.git_keep/logs/refs/heads/test | 1 - .../00/750edc07d6415dcc07ae0351e9397b0222b7ba | Bin 17 -> 0 bytes .../03/ecdaa424af1fdaeab1bd1852319652b9518f11 | Bin 76 -> 0 bytes .../04/a577be2858b8024716876aefe6b665a98e1e4f | Bin 76 -> 0 bytes .../05/57fc43da38567eae00831e9b385fd2cad22643 | Bin 76 -> 0 bytes .../0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f | Bin 17 -> 0 bytes .../0d/1bbe8d012c8c070167a006a4898b525cfbd930 | Bin 76 -> 0 bytes .../0f/373801691c466240bd131d28b2168712b045ba | 3 - .../10/e171beacb963e4f8a4dc1d80fd291c135902bb | Bin 148 -> 0 bytes .../11/e4fd4011c9ed3800bb33b85580dd1d09f6aefd | Bin 147 -> 0 bytes .../15/d4c5b8608fe472fd224333e60d44ea826cc80e | Bin 147 -> 0 bytes .../1a/35564b85e24c96e647b477aaf8d35dcf0de84d | Bin 147 -> 0 bytes .../1a/b342c03b4226cca1c751dba71fa2df0e7d82ee | Bin 148 -> 0 bytes .../1e/8b314962144c26d5e0e50fd29d2ca327864913 | Bin 17 -> 0 bytes .../20/9e3ef4b6247ce746048d5711befda46206d235 | Bin 18 -> 0 bytes .../26/661287266e53bda69d8daa3aac1f714650f13c | Bin 76 -> 0 bytes .../30/68d0d730547aaa5b86dbfe638db83133ae1421 | Bin 146 -> 0 bytes .../31/df6c951dc82b75b11bc48836e780134a16e6ad | Bin 76 -> 0 bytes .../33/3ff293caf2d3216edf22e3f1df64d43a7e1311 | Bin 149 -> 0 bytes .../36/903784186b1b8b4a150dc656eccd49f94e114e | Bin 121 -> 0 bytes .../38/242e5215bc35b3e418c1d6d63fd0291001e10b | 2 - .../3a/05ed1ca9671bc362c7197eb09bddff040c9110 | Bin 76 -> 0 bytes .../3b/e94d6b1b1b3b63db9e412b2e788d08979bc176 | Bin 76 -> 0 bytes .../3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 | Bin 18 -> 0 bytes .../3f/bb9e626d4b7d30e58346b3eefaa342b15ab776 | Bin 147 -> 0 bytes .../3f/d9ad29c185eac6106cfa005a3aa594e21b9e06 | Bin 147 -> 0 bytes .../43/99b07bd31d1f58a0ff10b5434d5ff4f36e38fb | Bin 76 -> 0 bytes .../45/a4fb75db864000d01701c0f7a51864bd4daabf | Bin 17 -> 0 bytes .../48/082f72f087ce7e6fa75b9c41d7387daecd447b | Bin 18 -> 0 bytes .../4a/9e01012c736e5e0998b7184d9a54e8c610ed02 | Bin 77 -> 0 bytes .../54/93d27d38b9902cf28b1035c644bf470df76060 | Bin 147 -> 0 bytes .../60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 | Bin 18 -> 0 bytes .../6f/a769bf11bd9dc4ff4e85f4951950b0bc34326f | 3 - .../74/cd0e856d938eb6b665284c5485c00f87e20dc5 | Bin 51 -> 0 bytes .../7c/fd51ebd06287effcfdab241235305cb6439d40 | Bin 76 -> 0 bytes .../7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 | Bin 17 -> 0 bytes .../7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 | Bin 17 -> 0 bytes .../83/51c19397f4fcd5238d10034fa7fa384f14d580 | Bin 18 -> 0 bytes .../88/8633a131a49f1b8981d70c13d666defed6ba15 | Bin 77 -> 0 bytes .../8b/0156bd25a1ecd82ef7c4c53e9d6d312bb6d403 | Bin 76 -> 0 bytes .../90/dfebd90b0a89766c39928f22901b8c02b51fda | 1 - .../98/d9bcb75a685dfbfd60f611c309410152935b3d | Bin 18 -> 0 bytes .../9c/836a5c3f513818d300b410f8cb3a2e3bbd42a1 | Bin 148 -> 0 bytes .../9d/33ec0915534bf6401be9412203697791e40a04 | 1 - .../b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e | Bin 18 -> 0 bytes .../b2/970eba9fd8dba8655094dc38fb4ee50b9bf23e | Bin 148 -> 0 bytes .../b4/de3947675361a7770d29b8982c407b0ec6b2a0 | Bin 18 -> 0 bytes .../b6/14152a335aabd8b5daa2c6abccc9425eb14177 | 2 - .../b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 | Bin 18 -> 0 bytes .../b8/626c4cff2849624fb67f87cd0ad72b163671ad | Bin 17 -> 0 bytes .../cd/c58c0f95a2313ded9185e102bc35253f6a1bed | Bin 76 -> 0 bytes .../d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d | Bin 17 -> 0 bytes .../d2/7a997859219951ecc95c351174c70ea0cf9d37 | 3 - .../d3/6e09d97bf2c1527118bde353ad64b157f8b269 | 1 - .../d4/e982570808a24722649e852a92bda5cf54c9dd | Bin 76 -> 0 bytes .../d6/b24041cf04154f8f902651969675021f4d93a5 | Bin 18 -> 0 bytes .../d8/4e0684b1038552d5c8d86e67398d634f77ad3b | Bin 148 -> 0 bytes .../da/8dacb2a073ebc2adeddceb3cc2b39b6c95c858 | Bin 76 -> 0 bytes .../db/76c03074879025735b647b825786a7b3fcfe7c | Bin 76 -> 0 bytes .../e5/59f83c6e8dd11680de70b487725e37ff2e283f | 3 - .../e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 | Bin 15 -> 0 bytes .../ec/635144f60048986bc560c5576355344005e6e7 | Bin 17 -> 0 bytes .../f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 | Bin 18 -> 0 bytes .../ff/231021500c7beb87de0d6d5edc29b6f9c000b1 | Bin 147 -> 0 bytes .../expected/repo/.git_keep/refs/bisect/bad | 1 - ...d-38242e5215bc35b3e418c1d6d63fd0291001e10b | 1 - ...d-3fbb9e626d4b7d30e58346b3eefaa342b15ab776 | 1 - .../expected/repo/.git_keep/refs/heads/master | 1 - .../expected/repo/.git_keep/refs/heads/other | 1 - .../expected/repo/.git_keep/refs/heads/test | 1 - .../expected/repo/myfile | 0 .../bisectFromOtherBranch/recording.json | 1 - .../bisectFromOtherBranch/setup.sh | 27 ------- .../bisectFromOtherBranch/test.json | 4 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../expected/repo/.git_keep/HEAD | 1 + .../expected/repo/.git_keep/config | 2 + .../expected/repo/.git_keep/description | 0 .../expected/repo/.git_keep/index | Bin 0 -> 65 bytes .../expected/repo/.git_keep/info/exclude | 0 .../expected/repo/.git_keep/logs/HEAD | 15 ++++ .../repo/.git_keep/logs/refs/heads/master | 1 + .../repo/.git_keep/logs/refs/heads/other | 11 +++ .../06/47fe4b7302efbfb235b8f0681b592cc3389d36 | Bin 0 -> 30 bytes .../08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c | Bin 0 -> 212 bytes .../0d/4e099996a7c3dc58120cfe1ec34973b309d0e0 | Bin 0 -> 148 bytes .../17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c | Bin 0 -> 30 bytes .../30/ad007c4cb09b175810e069b1b2b02ab0140857 | Bin 0 -> 30 bytes .../31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 | Bin 0 -> 186 bytes .../35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 | Bin 0 -> 133 bytes .../37/6048ba8da4b619088a7f4a5df3f528fde41f1a | 2 + .../3a/899150d167edb02f0ef2ab43bf446d23d90310 | Bin 0 -> 146 bytes .../3b/f868a389d0073e715e848f0ee33d71064539ca | Bin 0 -> 30 bytes .../41/bffcc8f25d268518574e91483a55e66124574c | Bin 0 -> 148 bytes .../47/d78ad7a27fc7fe483389512ebf7ea34c5514bc | Bin 0 -> 30 bytes .../4b/825dc642cb6eb9a060e54bf8d69288fbee4904 | Bin 0 -> 15 bytes .../50/d561270fcfcdc9afc85f6136f937c529accaaa | Bin 0 -> 30 bytes .../55/3197193920043fb04f3e39e825916990955204 | Bin 0 -> 55 bytes .../5c/9b8a0a95c49c1674753ad827246ce05965e7fe | 6 ++ .../5f/80f6e6bd2410efe5b5f613adc5b4fcf50e930d | 3 + .../7f/8a9a8381ae3fe82a0c43385d3a5bb25cf90699 | Bin 0 -> 148 bytes .../8d/49129429cacbb6694f0290b3219e91a6f364cd | Bin 0 -> 30 bytes .../9c/dece2525ed2b34f940b168a2f628984468a8c6 | Bin 0 -> 148 bytes .../a0/2c4b36b68df7081152282cf1aabcab7b24e69b | Bin 0 -> 81 bytes .../b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 | 1 + .../bf/2b038a7c59d4db31a492793086fafec802ec2f | Bin 0 -> 30 bytes .../c2/55cf4ef7fd5661a9d68b717243a978e42b05ac | Bin 0 -> 30 bytes .../cf/b438e7991d830d830d58744b99cff451a9d07e | Bin 0 -> 265 bytes .../d4/779d400f252d1de4e76ef79e3b4d554fffadb5 | Bin 0 -> 148 bytes .../df/f71e43e297a66eb7ec85b7b95ece827751cdbd | Bin 0 -> 148 bytes .../e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 | Bin 0 -> 160 bytes .../e4/fca3fab85b7a477a2de101e917fe43538e0302 | Bin 0 -> 148 bytes .../e6/db1f58c2bb5ead41049a8ef3910360eead21e2 | Bin 0 -> 108 bytes .../e7/39ef9112312917b4fc678e40e2372cc8fda25f | Bin 0 -> 147 bytes .../f2/c01a881661486f147e47f5be82914c5d0c0030 | Bin 0 -> 30 bytes .../expected/repo/.git_keep/packed-refs | 0 .../expected/repo/.git_keep/refs/heads/master | 1 + .../expected/repo/.git_keep/refs/heads/other | 1 + 134 files changed, 119 insertions(+), 127 deletions(-) create mode 100644 pkg/integration/tests/bisect/from_other_branch.go delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_ANCESTORS_OK delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_EXPECTED_REV delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_LOG delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_NAMES delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_START delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_TERMS delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/index delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/other delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/test delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/00/750edc07d6415dcc07ae0351e9397b0222b7ba delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/03/ecdaa424af1fdaeab1bd1852319652b9518f11 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/04/a577be2858b8024716876aefe6b665a98e1e4f delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/05/57fc43da38567eae00831e9b385fd2cad22643 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0d/1bbe8d012c8c070167a006a4898b525cfbd930 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0f/373801691c466240bd131d28b2168712b045ba delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/10/e171beacb963e4f8a4dc1d80fd291c135902bb delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/11/e4fd4011c9ed3800bb33b85580dd1d09f6aefd delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/15/d4c5b8608fe472fd224333e60d44ea826cc80e delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1a/35564b85e24c96e647b477aaf8d35dcf0de84d delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1a/b342c03b4226cca1c751dba71fa2df0e7d82ee delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1e/8b314962144c26d5e0e50fd29d2ca327864913 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/20/9e3ef4b6247ce746048d5711befda46206d235 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/26/661287266e53bda69d8daa3aac1f714650f13c delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/30/68d0d730547aaa5b86dbfe638db83133ae1421 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/31/df6c951dc82b75b11bc48836e780134a16e6ad delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/33/3ff293caf2d3216edf22e3f1df64d43a7e1311 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/36/903784186b1b8b4a150dc656eccd49f94e114e delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/38/242e5215bc35b3e418c1d6d63fd0291001e10b delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3a/05ed1ca9671bc362c7197eb09bddff040c9110 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3b/e94d6b1b1b3b63db9e412b2e788d08979bc176 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3f/bb9e626d4b7d30e58346b3eefaa342b15ab776 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3f/d9ad29c185eac6106cfa005a3aa594e21b9e06 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/43/99b07bd31d1f58a0ff10b5434d5ff4f36e38fb delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/45/a4fb75db864000d01701c0f7a51864bd4daabf delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/48/082f72f087ce7e6fa75b9c41d7387daecd447b delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/4a/9e01012c736e5e0998b7184d9a54e8c610ed02 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/54/93d27d38b9902cf28b1035c644bf470df76060 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/6f/a769bf11bd9dc4ff4e85f4951950b0bc34326f delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/74/cd0e856d938eb6b665284c5485c00f87e20dc5 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7c/fd51ebd06287effcfdab241235305cb6439d40 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/83/51c19397f4fcd5238d10034fa7fa384f14d580 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/88/8633a131a49f1b8981d70c13d666defed6ba15 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/8b/0156bd25a1ecd82ef7c4c53e9d6d312bb6d403 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/90/dfebd90b0a89766c39928f22901b8c02b51fda delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/98/d9bcb75a685dfbfd60f611c309410152935b3d delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/9c/836a5c3f513818d300b410f8cb3a2e3bbd42a1 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/9d/33ec0915534bf6401be9412203697791e40a04 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b2/970eba9fd8dba8655094dc38fb4ee50b9bf23e delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b4/de3947675361a7770d29b8982c407b0ec6b2a0 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b6/14152a335aabd8b5daa2c6abccc9425eb14177 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b8/626c4cff2849624fb67f87cd0ad72b163671ad delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/cd/c58c0f95a2313ded9185e102bc35253f6a1bed delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d2/7a997859219951ecc95c351174c70ea0cf9d37 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d3/6e09d97bf2c1527118bde353ad64b157f8b269 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d4/e982570808a24722649e852a92bda5cf54c9dd delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d6/b24041cf04154f8f902651969675021f4d93a5 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d8/4e0684b1038552d5c8d86e67398d634f77ad3b delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/da/8dacb2a073ebc2adeddceb3cc2b39b6c95c858 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/db/76c03074879025735b647b825786a7b3fcfe7c delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/e5/59f83c6e8dd11680de70b487725e37ff2e283f delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/ec/635144f60048986bc560c5576355344005e6e7 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/ff/231021500c7beb87de0d6d5edc29b6f9c000b1 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/bad delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-38242e5215bc35b3e418c1d6d63fd0291001e10b delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-3fbb9e626d4b7d30e58346b3eefaa342b15ab776 delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/other delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/test delete mode 100644 test/integration/bisectFromOtherBranch/expected/repo/myfile delete mode 100644 test/integration/bisectFromOtherBranch/recording.json delete mode 100644 test/integration/bisectFromOtherBranch/setup.sh delete mode 100644 test/integration/bisectFromOtherBranch/test.json create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/COMMIT_EDITMSG rename test/{integration/bisectFromOtherBranch => integration_new/bisect/from_other_branch}/expected/repo/.git_keep/FETCH_HEAD (100%) create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/HEAD rename test/{integration/bisectFromOtherBranch => integration_new/bisect/from_other_branch}/expected/repo/.git_keep/config (87%) rename test/{integration/bisectFromOtherBranch => integration_new/bisect/from_other_branch}/expected/repo/.git_keep/description (100%) create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/index rename test/{integration/bisectFromOtherBranch => integration_new/bisect/from_other_branch}/expected/repo/.git_keep/info/exclude (100%) create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/master create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/other create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/06/47fe4b7302efbfb235b8f0681b592cc3389d36 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/0d/4e099996a7c3dc58120cfe1ec34973b309d0e0 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/30/ad007c4cb09b175810e069b1b2b02ab0140857 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/3a/899150d167edb02f0ef2ab43bf446d23d90310 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/3b/f868a389d0073e715e848f0ee33d71064539ca create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/41/bffcc8f25d268518574e91483a55e66124574c create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/47/d78ad7a27fc7fe483389512ebf7ea34c5514bc create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/50/d561270fcfcdc9afc85f6136f937c529accaaa create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/55/3197193920043fb04f3e39e825916990955204 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5c/9b8a0a95c49c1674753ad827246ce05965e7fe create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5f/80f6e6bd2410efe5b5f613adc5b4fcf50e930d create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/7f/8a9a8381ae3fe82a0c43385d3a5bb25cf90699 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/8d/49129429cacbb6694f0290b3219e91a6f364cd create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/9c/dece2525ed2b34f940b168a2f628984468a8c6 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/a0/2c4b36b68df7081152282cf1aabcab7b24e69b create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/bf/2b038a7c59d4db31a492793086fafec802ec2f create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/c2/55cf4ef7fd5661a9d68b717243a978e42b05ac create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/cf/b438e7991d830d830d58744b99cff451a9d07e create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/d4/779d400f252d1de4e76ef79e3b4d554fffadb5 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/df/f71e43e297a66eb7ec85b7b95ece827751cdbd create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e4/fca3fab85b7a477a2de101e917fe43538e0302 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e6/db1f58c2bb5ead41049a8ef3910360eead21e2 create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e7/39ef9112312917b4fc678e40e2372cc8fda25f create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/f2/c01a881661486f147e47f5be82914c5d0c0030 rename test/{integration/bisectFromOtherBranch => integration_new/bisect/from_other_branch}/expected/repo/.git_keep/packed-refs (100%) create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/master create mode 100644 test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/other diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index ee57cf401..7b7a68543 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -44,6 +44,10 @@ func (s *Shell) NewBranch(name string) *Shell { return s.RunCommand("git checkout -b " + name) } +func (s *Shell) Checkout(name string) *Shell { + return s.RunCommand("git checkout " + name) +} + func (s *Shell) GitAdd(path string) *Shell { return s.RunCommand(fmt.Sprintf("git add \"%s\"", path)) } diff --git a/pkg/integration/tests/bisect/from_other_branch.go b/pkg/integration/tests/bisect/from_other_branch.go new file mode 100644 index 000000000..4ef9a4d73 --- /dev/null +++ b/pkg/integration/tests/bisect/from_other_branch.go @@ -0,0 +1,69 @@ +package bisect + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var FromOtherBranch = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Opening lazygit when bisect has been started from another branch. There's an issue where we don't reselect the current branch if we mark the current branch as bad so this test side-steps that problem", + ExtraCmdArgs: "", + Skip: false, + SetupRepo: func(shell *Shell) { + shell. + EmptyCommit("only commit on master"). // this'll ensure we have a master branch + NewBranch("other"). + CreateNCommits(10). + Checkout("master"). + RunCommand("git bisect start other~2 other~5") + }, + SetupConfig: func(cfg *config.AppConfig) {}, + Run: func( + shell *Shell, + input *Input, + assert *Assert, + keys config.KeybindingConfig, + ) { + viewBisectOptions := func() { + input.PressKeys(keys.Commits.ViewBisectOptions) + assert.InMenu() + } + + markCommitAsGood := func() { + viewBisectOptions() + assert.MatchSelectedLine(Contains("bad")) + input.NextItem() + assert.MatchSelectedLine(Contains("good")) + + input.Confirm() + } + + assert.MatchViewContent("information", Contains("bisecting")) + + assert.AtLeastOneCommit() + + input.SwitchToCommitsWindow() + + assert.MatchSelectedLine(Contains("<-- bad")) + assert.MatchSelectedLine(Contains("commit 08")) + + input.NextItem() + assert.MatchSelectedLine(Contains("<-- current")) + assert.MatchSelectedLine(Contains("commit 07")) + + markCommitAsGood() + + assert.InAlert() + assert.MatchCurrentViewContent(Contains("Bisect complete!")) + assert.MatchCurrentViewContent(Contains("commit 08")) + assert.MatchCurrentViewContent(Contains("Do you want to reset")) + input.Confirm() + + assert.MatchViewContent("information", NotContains("bisecting")) + + // back in master branch which just had the one commit + assert.CurrentViewName("commits") + assert.CommitCount(1) + assert.MatchSelectedLine(Contains("only commit on master")) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index 5668fcbba..6fcd8249f 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -29,6 +29,7 @@ var tests = []*components.IntegrationTest{ custom_commands.MultiplePrompts, custom_commands.MenuFromCommand, bisect.Basic, + bisect.FromOtherBranch, } func GetTests() []*components.IntegrationTest { diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_ANCESTORS_OK b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_ANCESTORS_OK deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_EXPECTED_REV b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_EXPECTED_REV deleted file mode 100644 index df35eff7a..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_EXPECTED_REV +++ /dev/null @@ -1 +0,0 @@ -10e171beacb963e4f8a4dc1d80fd291c135902bb diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_LOG b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_LOG deleted file mode 100644 index 6a5f8b695..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_LOG +++ /dev/null @@ -1,12 +0,0 @@ -# bad: [0f373801691c466240bd131d28b2168712b045ba] commit 18 -# good: [38242e5215bc35b3e418c1d6d63fd0291001e10b] commit 7 -git bisect start 'other~2' 'other~13' -# bad: [d27a997859219951ecc95c351174c70ea0cf9d37] commit 12 -git bisect bad d27a997859219951ecc95c351174c70ea0cf9d37 -# good: [3fbb9e626d4b7d30e58346b3eefaa342b15ab776] commit 9 -git bisect good 3fbb9e626d4b7d30e58346b3eefaa342b15ab776 -# bad: [d84e0684b1038552d5c8d86e67398d634f77ad3b] commit 11 -git bisect bad d84e0684b1038552d5c8d86e67398d634f77ad3b -# bad: [10e171beacb963e4f8a4dc1d80fd291c135902bb] commit 10 -git bisect bad 10e171beacb963e4f8a4dc1d80fd291c135902bb -# first bad commit: [10e171beacb963e4f8a4dc1d80fd291c135902bb] commit 10 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_NAMES b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_NAMES deleted file mode 100644 index 8b1378917..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_NAMES +++ /dev/null @@ -1 +0,0 @@ - diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_START b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_START deleted file mode 100644 index 1f7391f92..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_START +++ /dev/null @@ -1 +0,0 @@ -master diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_TERMS b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_TERMS deleted file mode 100644 index 25dd30b14..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/BISECT_TERMS +++ /dev/null @@ -1,2 +0,0 @@ -bad -good diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index e6cf6d392..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1 +0,0 @@ -commit 20 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/HEAD b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/HEAD deleted file mode 100644 index cea9d05ed..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/test diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/index b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/index deleted file mode 100644 index c469e6ea5f4096d9bb1a8b5449f62143b0a46ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmZ?q402{*U|<4b#>5ZLS4fBT1%YVEUmwI785mfZG-~fMFf=X!N`D2a5dmU`XLBFT z-gNPrvv;@Vy7H(Sho1BVPh?=rtxU_zNd?J=1i88bDM<!H1p}^<vwW?&ll!)9OV#iR iX+6N-{)qSJn&rDD>{_{FqnAHp<Fo5wd&BmXl>-20U^7tw diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/HEAD b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/HEAD deleted file mode 100644 index 31a81bf7a..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/HEAD +++ /dev/null @@ -1,28 +0,0 @@ -0000000000000000000000000000000000000000 36903784186b1b8b4a150dc656eccd49f94e114e CI <CI@example.com> 1643177881 +1100 commit (initial): first commit -36903784186b1b8b4a150dc656eccd49f94e114e 36903784186b1b8b4a150dc656eccd49f94e114e CI <CI@example.com> 1643177881 +1100 checkout: moving from master to other -36903784186b1b8b4a150dc656eccd49f94e114e 1ab342c03b4226cca1c751dba71fa2df0e7d82ee CI <CI@example.com> 1643177881 +1100 commit: commit 1 -1ab342c03b4226cca1c751dba71fa2df0e7d82ee 15d4c5b8608fe472fd224333e60d44ea826cc80e CI <CI@example.com> 1643177881 +1100 commit: commit 2 -15d4c5b8608fe472fd224333e60d44ea826cc80e b614152a335aabd8b5daa2c6abccc9425eb14177 CI <CI@example.com> 1643177881 +1100 commit: commit 3 -b614152a335aabd8b5daa2c6abccc9425eb14177 1a35564b85e24c96e647b477aaf8d35dcf0de84d CI <CI@example.com> 1643177881 +1100 commit: commit 4 -1a35564b85e24c96e647b477aaf8d35dcf0de84d 11e4fd4011c9ed3800bb33b85580dd1d09f6aefd CI <CI@example.com> 1643177881 +1100 commit: commit 5 -11e4fd4011c9ed3800bb33b85580dd1d09f6aefd 3068d0d730547aaa5b86dbfe638db83133ae1421 CI <CI@example.com> 1643177881 +1100 commit: commit 6 -3068d0d730547aaa5b86dbfe638db83133ae1421 38242e5215bc35b3e418c1d6d63fd0291001e10b CI <CI@example.com> 1643177881 +1100 commit: commit 7 -38242e5215bc35b3e418c1d6d63fd0291001e10b ff231021500c7beb87de0d6d5edc29b6f9c000b1 CI <CI@example.com> 1643177881 +1100 commit: commit 8 -ff231021500c7beb87de0d6d5edc29b6f9c000b1 3fbb9e626d4b7d30e58346b3eefaa342b15ab776 CI <CI@example.com> 1643177881 +1100 commit: commit 9 -3fbb9e626d4b7d30e58346b3eefaa342b15ab776 10e171beacb963e4f8a4dc1d80fd291c135902bb CI <CI@example.com> 1643177881 +1100 commit: commit 10 -10e171beacb963e4f8a4dc1d80fd291c135902bb d84e0684b1038552d5c8d86e67398d634f77ad3b CI <CI@example.com> 1643177882 +1100 commit: commit 11 -d84e0684b1038552d5c8d86e67398d634f77ad3b d27a997859219951ecc95c351174c70ea0cf9d37 CI <CI@example.com> 1643177882 +1100 commit: commit 12 -d27a997859219951ecc95c351174c70ea0cf9d37 3fd9ad29c185eac6106cfa005a3aa594e21b9e06 CI <CI@example.com> 1643177882 +1100 commit: commit 13 -3fd9ad29c185eac6106cfa005a3aa594e21b9e06 b2970eba9fd8dba8655094dc38fb4ee50b9bf23e CI <CI@example.com> 1643177882 +1100 commit: commit 14 -b2970eba9fd8dba8655094dc38fb4ee50b9bf23e 6fa769bf11bd9dc4ff4e85f4951950b0bc34326f CI <CI@example.com> 1643177882 +1100 commit: commit 15 -6fa769bf11bd9dc4ff4e85f4951950b0bc34326f 9c836a5c3f513818d300b410f8cb3a2e3bbd42a1 CI <CI@example.com> 1643177882 +1100 commit: commit 16 -9c836a5c3f513818d300b410f8cb3a2e3bbd42a1 5493d27d38b9902cf28b1035c644bf470df76060 CI <CI@example.com> 1643177882 +1100 commit: commit 17 -5493d27d38b9902cf28b1035c644bf470df76060 0f373801691c466240bd131d28b2168712b045ba CI <CI@example.com> 1643177882 +1100 commit: commit 18 -0f373801691c466240bd131d28b2168712b045ba 333ff293caf2d3216edf22e3f1df64d43a7e1311 CI <CI@example.com> 1643177882 +1100 commit: commit 19 -333ff293caf2d3216edf22e3f1df64d43a7e1311 e559f83c6e8dd11680de70b487725e37ff2e283f CI <CI@example.com> 1643177882 +1100 commit: commit 20 -e559f83c6e8dd11680de70b487725e37ff2e283f 36903784186b1b8b4a150dc656eccd49f94e114e CI <CI@example.com> 1643177882 +1100 checkout: moving from other to master -36903784186b1b8b4a150dc656eccd49f94e114e d27a997859219951ecc95c351174c70ea0cf9d37 CI <CI@example.com> 1643177882 +1100 checkout: moving from master to d27a997859219951ecc95c351174c70ea0cf9d37 -d27a997859219951ecc95c351174c70ea0cf9d37 3fbb9e626d4b7d30e58346b3eefaa342b15ab776 CI <CI@example.com> 1643177885 +1100 checkout: moving from d27a997859219951ecc95c351174c70ea0cf9d37 to 3fbb9e626d4b7d30e58346b3eefaa342b15ab776 -3fbb9e626d4b7d30e58346b3eefaa342b15ab776 d84e0684b1038552d5c8d86e67398d634f77ad3b CI <CI@example.com> 1643177886 +1100 checkout: moving from 3fbb9e626d4b7d30e58346b3eefaa342b15ab776 to d84e0684b1038552d5c8d86e67398d634f77ad3b -d84e0684b1038552d5c8d86e67398d634f77ad3b 10e171beacb963e4f8a4dc1d80fd291c135902bb CI <CI@example.com> 1643177888 +1100 checkout: moving from d84e0684b1038552d5c8d86e67398d634f77ad3b to 10e171beacb963e4f8a4dc1d80fd291c135902bb -10e171beacb963e4f8a4dc1d80fd291c135902bb 36903784186b1b8b4a150dc656eccd49f94e114e CI <CI@example.com> 1643177893 +1100 checkout: moving from 10e171beacb963e4f8a4dc1d80fd291c135902bb to test diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 4aff8c25b..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 36903784186b1b8b4a150dc656eccd49f94e114e CI <CI@example.com> 1643177881 +1100 commit (initial): first commit diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/other b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/other deleted file mode 100644 index db03baa43..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/other +++ /dev/null @@ -1,21 +0,0 @@ -0000000000000000000000000000000000000000 36903784186b1b8b4a150dc656eccd49f94e114e CI <CI@example.com> 1643177881 +1100 branch: Created from HEAD -36903784186b1b8b4a150dc656eccd49f94e114e 1ab342c03b4226cca1c751dba71fa2df0e7d82ee CI <CI@example.com> 1643177881 +1100 commit: commit 1 -1ab342c03b4226cca1c751dba71fa2df0e7d82ee 15d4c5b8608fe472fd224333e60d44ea826cc80e CI <CI@example.com> 1643177881 +1100 commit: commit 2 -15d4c5b8608fe472fd224333e60d44ea826cc80e b614152a335aabd8b5daa2c6abccc9425eb14177 CI <CI@example.com> 1643177881 +1100 commit: commit 3 -b614152a335aabd8b5daa2c6abccc9425eb14177 1a35564b85e24c96e647b477aaf8d35dcf0de84d CI <CI@example.com> 1643177881 +1100 commit: commit 4 -1a35564b85e24c96e647b477aaf8d35dcf0de84d 11e4fd4011c9ed3800bb33b85580dd1d09f6aefd CI <CI@example.com> 1643177881 +1100 commit: commit 5 -11e4fd4011c9ed3800bb33b85580dd1d09f6aefd 3068d0d730547aaa5b86dbfe638db83133ae1421 CI <CI@example.com> 1643177881 +1100 commit: commit 6 -3068d0d730547aaa5b86dbfe638db83133ae1421 38242e5215bc35b3e418c1d6d63fd0291001e10b CI <CI@example.com> 1643177881 +1100 commit: commit 7 -38242e5215bc35b3e418c1d6d63fd0291001e10b ff231021500c7beb87de0d6d5edc29b6f9c000b1 CI <CI@example.com> 1643177881 +1100 commit: commit 8 -ff231021500c7beb87de0d6d5edc29b6f9c000b1 3fbb9e626d4b7d30e58346b3eefaa342b15ab776 CI <CI@example.com> 1643177881 +1100 commit: commit 9 -3fbb9e626d4b7d30e58346b3eefaa342b15ab776 10e171beacb963e4f8a4dc1d80fd291c135902bb CI <CI@example.com> 1643177881 +1100 commit: commit 10 -10e171beacb963e4f8a4dc1d80fd291c135902bb d84e0684b1038552d5c8d86e67398d634f77ad3b CI <CI@example.com> 1643177882 +1100 commit: commit 11 -d84e0684b1038552d5c8d86e67398d634f77ad3b d27a997859219951ecc95c351174c70ea0cf9d37 CI <CI@example.com> 1643177882 +1100 commit: commit 12 -d27a997859219951ecc95c351174c70ea0cf9d37 3fd9ad29c185eac6106cfa005a3aa594e21b9e06 CI <CI@example.com> 1643177882 +1100 commit: commit 13 -3fd9ad29c185eac6106cfa005a3aa594e21b9e06 b2970eba9fd8dba8655094dc38fb4ee50b9bf23e CI <CI@example.com> 1643177882 +1100 commit: commit 14 -b2970eba9fd8dba8655094dc38fb4ee50b9bf23e 6fa769bf11bd9dc4ff4e85f4951950b0bc34326f CI <CI@example.com> 1643177882 +1100 commit: commit 15 -6fa769bf11bd9dc4ff4e85f4951950b0bc34326f 9c836a5c3f513818d300b410f8cb3a2e3bbd42a1 CI <CI@example.com> 1643177882 +1100 commit: commit 16 -9c836a5c3f513818d300b410f8cb3a2e3bbd42a1 5493d27d38b9902cf28b1035c644bf470df76060 CI <CI@example.com> 1643177882 +1100 commit: commit 17 -5493d27d38b9902cf28b1035c644bf470df76060 0f373801691c466240bd131d28b2168712b045ba CI <CI@example.com> 1643177882 +1100 commit: commit 18 -0f373801691c466240bd131d28b2168712b045ba 333ff293caf2d3216edf22e3f1df64d43a7e1311 CI <CI@example.com> 1643177882 +1100 commit: commit 19 -333ff293caf2d3216edf22e3f1df64d43a7e1311 e559f83c6e8dd11680de70b487725e37ff2e283f CI <CI@example.com> 1643177882 +1100 commit: commit 20 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/test b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/test deleted file mode 100644 index 7ae7f188f..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/logs/refs/heads/test +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 36903784186b1b8b4a150dc656eccd49f94e114e CI <CI@example.com> 1643177893 +1100 branch: Created from master diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/00/750edc07d6415dcc07ae0351e9397b0222b7ba b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/00/750edc07d6415dcc07ae0351e9397b0222b7ba deleted file mode 100644 index d3c45d51ea5d755dabd6e35ce0322533b264abdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;29GG9|w~@05+rq>Hq)$ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/03/ecdaa424af1fdaeab1bd1852319652b9518f11 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/03/ecdaa424af1fdaeab1bd1852319652b9518f11 deleted file mode 100644 index 355004b9ecfdaf84db14c525047e90a089f0b6f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgW!RCF<MUs`Gs%BjefwFi>)K*wg=?Ym ixs_lQ&*nawz3JjLXYX#!b>&ev4n64!o(KTWJRSQQ*(7BE diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/04/a577be2858b8024716876aefe6b665a98e1e4f b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/04/a577be2858b8024716876aefe6b665a98e1e4f deleted file mode 100644 index da9396d18b519565de1b74100a8adf4f949ce5cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgW!Q4h(mg#mad|nf=8hRU4%K|eHZ6e4 i=T?GMJe&Jy_NI&1oV~j>*Of=zIP|0^cp?DCt{vx}dm_C6 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/05/57fc43da38567eae00831e9b385fd2cad22643 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/05/57fc43da38567eae00831e9b385fd2cad22643 deleted file mode 100644 index 0ff3d683a82f9318d89e942addbc0a4ea1421b59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWl)%B_hp+(&2u-F-f+Qvf0rb&T{4Br i=T?GMJe&Jy_NI&1oV~j>*Of=zIP|0^cp?DT3?4(k?;>&l diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0c/fbf08886fca9a91cb753ec8734c84fcbe52c9f deleted file mode 100644 index da246e1fe4dd7506e33985df613ec74645cf32b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;1Lr89~+Y%05*XH;{X5v diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0d/1bbe8d012c8c070167a006a4898b525cfbd930 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0d/1bbe8d012c8c070167a006a4898b525cfbd930 deleted file mode 100644 index be2aa43869953cc0862e265f93e5bfc49c1d3d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWvILMzv*7~8LbKx`;$j~?Y^!Nxs?f( i&#eTjcsBRZ>`fQ1IeT|&t}Bnaap*};@I(MCKOhO!ydil2 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0f/373801691c466240bd131d28b2168712b045ba b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0f/373801691c466240bd131d28b2168712b045ba deleted file mode 100644 index 97cb55d14..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/0f/373801691c466240bd131d28b2168712b045ba +++ /dev/null @@ -1,3 +0,0 @@ -x��K -�0@]��d&�IE��z��cK������z�x����(�i쵂ff���Τ"K("F$S�d�a#��&{} p6��}1!ň:7�q��M�z,�32*y���ü�4/����=�%�� -��!h8!��S����z�����9� \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/10/e171beacb963e4f8a4dc1d80fd291c135902bb b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/10/e171beacb963e4f8a4dc1d80fd291c135902bb deleted file mode 100644 index 72e97d56143e3b7e5880862fcf3c3e69ada1a0ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcW*3IZ_@Kw;~gVtPSl@-s<5MA&MNF-b-gjJqrmJic3a0Nck`yt?%M z7(kg1V^ak$S&@)zjgB=a=A25T<Xe{DHB~0mhSsdI>1%+ym6DY$H(z3Ns3AGe#i`yz zoVSI7lo;8_d)$`|rWwxDeASQi^{J=2^a~JsM=_>Ea3n%Bd)=po{>gtH2+bE94LWXo Ctwpl{ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/11/e4fd4011c9ed3800bb33b85580dd1d09f6aefd b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/11/e4fd4011c9ed3800bb33b85580dd1d09f6aefd deleted file mode 100644 index 76c433f1ee70ab6fa6f7fbb7461c21b127efd642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gaA93c@fD06pgwxeKz}WRndP5qjz~HpvzRV@rwP^X<V0cpYY7%G%na zTTFE7yQ+nXIV)Gdp>Tl+7@`0K@tio*KxN4_IWU{-`Z_{!M8Rh!9ehbagOAzAD6(*M zRLcTY*;ga)eqVPx&32sTn|`EiPra12T`dOhFh*vyXG8#V&||9WpZd?YWWM?;I&aP_ BM3Vpj diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/15/d4c5b8608fe472fd224333e60d44ea826cc80e b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/15/d4c5b8608fe472fd224333e60d44ea826cc80e deleted file mode 100644 index 1bbb2bb68baeea545c2b6438086218dcf99532dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gaA93c@fD06pgwxeKzp*(41V5qjz~HpvzRV@rwP^X<V0cpYY7%G%na zTTK4ccU7CJb6Oyw_m1-t7%*#MBmx&wj0u%NfXybmzK&3`V=CY>6NOR)OY~T?L|laG z0vhW;sz%=ZzV3FK?KsUh{YcxMdMRtWS`6$k#$iBvMg%YiJ*K+;ssDUS<_nhbIq1o> BM1KGP diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1a/35564b85e24c96e647b477aaf8d35dcf0de84d b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1a/35564b85e24c96e647b477aaf8d35dcf0de84d deleted file mode 100644 index 90434de85801ddcbcc680506cea4f2893956265a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gcW<3c@fDg<;n@#q0&?B$+gUB0^U^#!NCr!PrtFczm<)0B#@OgFkPz zJ{n-6Q#({)aGDFVx1LvA3o8ps!ARC&3S=b_#ud@*eCVrz1oTLjog-!`QK-Ld4lFt6 z<SnUmFph@b?Y<o_FEGu^O+Q@sr(W__uYke3PGUqjBMyV<YmaLBC;xfy<_m{+J1cM5 BLTUg2 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1a/b342c03b4226cca1c751dba71fa2df0e7d82ee b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1a/b342c03b4226cca1c751dba71fa2df0e7d82ee deleted file mode 100644 index 89ad61ab401e4c7f4e0819dd5d5d287dee1b7eda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcW}3c@fHMq$TU#hnY1ze#QqC?a&!W#n;-g0ZDUaQSxN0-PSc!6|EN zk4}j0)OQi8hDFC3eO`tFH+UfAD#n>q*=9JuggkImTiWH-$#B%h2aCWNIb@sQbS>;y zN~tz3(F$NirFXxtJ54i<(|nUpYTHvTWo=giTLbSy0G$D?)lrYBE`Rc$C#WyP{5kIM C=S6J* diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1e/8b314962144c26d5e0e50fd29d2ca327864913 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/1e/8b314962144c26d5e0e50fd29d2ca327864913 deleted file mode 100644 index f1722ae0044d12235bc5ca37b7e8d52b3303d02d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;4u>eA0Lwu05+rq@Bjb+ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/20/9e3ef4b6247ce746048d5711befda46206d235 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/20/9e3ef4b6247ce746048d5711befda46206d235 deleted file mode 100644 index 12e1f82f122993c9598b583241cad99aa966231d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~})JgFru1JODkq1=9ck diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/26/661287266e53bda69d8daa3aac1f714650f13c b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/26/661287266e53bda69d8daa3aac1f714650f13c deleted file mode 100644 index 77e40c5af43f6756eb8ffde9e1c9a273347feea9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWw2pZs93T{CMNLmN!y8qHL|OB_gsL= i=T?GMJe&Jy_NI&1oV~j>*Of=zIP|0^cp?D9zaAybd?RQ8 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/30/68d0d730547aaa5b86dbfe638db83133ae1421 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/30/68d0d730547aaa5b86dbfe638db83133ae1421 deleted file mode 100644 index 8d4ae099919d55c7fb868c061a6fe1aca300889b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146 zcmV;D0B!$x0gaAJ3c@fH0A1%4*$eVs)1)sTB6Q_3-mfTFTS^3vZx<fG?JxtQ%RE0? z#F`InbC1SktkN+I$wfOhH&d6S+DWQXv}UDDVdc$Vdx+jo)&rtew?qIUDGB9FV1@>D zD(sU5ez*Iw#qk!;<L&Anp4X?JbeS&^OP_EUh%g=z0m4rAspfy`KR=f61yg@KYFu4H AV*mgE diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/31/df6c951dc82b75b11bc48836e780134a16e6ad b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/31/df6c951dc82b75b11bc48836e780134a16e6ad deleted file mode 100644 index 204aace94187223c3a29d2f08a20047216d02fd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWteeu&-SQ{*x!E>z6l=YbYu*g9Bm7g i&#eTjcsBRZ>`fQ1IeT|&t}Bnaap*};@I(LxvL5!7;2{41 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/33/3ff293caf2d3216edf22e3f1df64d43a7e1311 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/33/3ff293caf2d3216edf22e3f1df64d43a7e1311 deleted file mode 100644 index 36368d1fc2e774010ea6d3dbf123b88f38f7d511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149 zcmV;G0BZku0gaDA3c@fDMP26<*$Xn0NoS@YB6Q_3GHHr}v86=t_-5e&+&w;T@n2qR zeKe0FAKG4upG`Oefkc%N!XPvlM=|ZFoWy9!OOfohw3k=&u#k`f@`yPyhX^(!;T+Tg zvI+)+I9PJ&-R|q|r<*@dw`=*Nx;@J&ul3@QBcX_D@JB=d*Vlfkl|S{L-y_@?RDU@4 DnNCNI diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/36/903784186b1b8b4a150dc656eccd49f94e114e b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/36/903784186b1b8b4a150dc656eccd49f94e114e deleted file mode 100644 index abb03d100e97c328f4234aaa5bd09a96b4c396ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmV-<0EYi~0ga783c@fD06pgwdlzK4%_b{|2tD-~?PiMwLnNlq=UeatUWXY*OU`Qp zVmh^I2GMIm6AtOxi_KvUfjjZaURV(qiPm9KcGK3LrNS`6Z5SW6Px<|_i<W!`3cjZp bMF`GBi0+`rq}iXkTh{t%@T=Sx*a9wVH={TT diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/38/242e5215bc35b3e418c1d6d63fd0291001e10b b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/38/242e5215bc35b3e418c1d6d63fd0291001e10b deleted file mode 100644 index 5ca009d7c..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/38/242e5215bc35b3e418c1d6d63fd0291001e10b +++ /dev/null @@ -1,2 +0,0 @@ -x��M -�@@a�s���L�'���U����(X[��.<��Ƿxm��G<�C�̀�ǔ��$hM9�TZl��Y C�Y�'��f��3��B>�""�r�:Y&�ʄDb:y����0�eo��y}ک-�0G�R�����S���?�}-�:� \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3a/05ed1ca9671bc362c7197eb09bddff040c9110 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3a/05ed1ca9671bc362c7197eb09bddff040c9110 deleted file mode 100644 index 1ede294e1ab755fe8ca68c45a4a6cc08de9f2940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWnd`fyTg9XG4>4mI_AKameov3+jl|b ib1T6rp3QwUd(*{h&feXc>&l~U9D33dJP`nuqa5n!#Utzh diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3b/e94d6b1b1b3b63db9e412b2e788d08979bc176 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3b/e94d6b1b1b3b63db9e412b2e788d08979bc176 deleted file mode 100644 index 00f0e017670c2d0c9ee4a4994d34458de210ee2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgW!SjaVw)BR!;)_+cuXG2M4kWjRHqIq ipIZr5@oes+*_$q2bN24mTvr}-<It0y;E4d~d>+Y}TO#}b diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3c/032078a4a21c5c51d3c93d91717c1dabbb8cd0 deleted file mode 100644 index ecdb2d612f7d882a44c9abe5dc8d59f9032ac286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>V9Nt027x(DX#hd^25A5Q diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3f/bb9e626d4b7d30e58346b3eefaa342b15ab776 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3f/bb9e626d4b7d30e58346b3eefaa342b15ab776 deleted file mode 100644 index 34440506906eb68ddfc6af9deaafda1444db49e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gcW*3IZ_@Kw;~gVtPSl5+^?(B5bwCNG1~$jJqrmJic3a0Nck`JXv~w z44}k^v8jSo;V9S=XY0sSt%)Klp)KOrvTHt5(Q4Mb>1#l1J3~v1D4}SHp(<8iS*zGo zd`p6eg-m{r`?A3_!)2Op`pJEL>PeP<1@dP{A;d^<BtkTM-KU2B$$uV_`2uS+I}|V- BLaYD) diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3f/d9ad29c185eac6106cfa005a3aa594e21b9e06 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/3f/d9ad29c185eac6106cfa005a3aa594e21b9e06 deleted file mode 100644 index f03b029abc6a828ffe646ed1fb872248a9ee56dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gaAJ3IZ_@1zqP9y%!{%U#CGtnAIF3>9i;qXBZ-Qd}rYSq;`+uQL^;@ z7=WA(V^alRl|xGvcYIC0Rn~y6I;EVO%}iVcDVeow`Wnz26=uqj9WqB$5su;`A_XC< z#mbGFCsW?zzHBhfaGvI?eo9}TdXlAI08{Wt`@e%DqP1pU_o$(N>OUXQn=czcIyK8! BK}G-o diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/43/99b07bd31d1f58a0ff10b5434d5ff4f36e38fb b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/43/99b07bd31d1f58a0ff10b5434d5ff4f36e38fb deleted file mode 100644 index 23915f2bc8f06a0e661308e696ff1e4d23164426..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWoQmOIC=V)KUbA|1(^Mp|FZBGx!M4g i&#eTjcsBRZ>`fQ1IeT|&t}Bnaap*};@I(LyZXYm*lpt~d diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/45/a4fb75db864000d01701c0f7a51864bd4daabf b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/45/a4fb75db864000d01701c0f7a51864bd4daabf deleted file mode 100644 index fdf2bc81d1e32f103ffac8e4afe9c1a2ff38c60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb|y!viJ;J|QL(06Luoa{vGU diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/48/082f72f087ce7e6fa75b9c41d7387daecd447b b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/48/082f72f087ce7e6fa75b9c41d7387daecd447b deleted file mode 100644 index 23ff2840ff2459a64132f323f24859beb43d2125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~m7VgTMr)1OPqU1=#=q diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/4a/9e01012c736e5e0998b7184d9a54e8c610ed02 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/4a/9e01012c736e5e0998b7184d9a54e8c610ed02 deleted file mode 100644 index 3b4ccc564783d5a50463d644e2f8a1a0b27533db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77 zcmV-T0J8sh0V^p=O;s>6V=y!@Ff%bxNXyJgW%xStQFqsd8z+xedE|5+St_i1`tl~I jd~PLJ#k0AOW^cN9&DpzKb6t7VjYCg*f+qq1XEz~Kxd9-k diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/54/93d27d38b9902cf28b1035c644bf470df76060 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/54/93d27d38b9902cf28b1035c644bf470df76060 deleted file mode 100644 index 166e5ee14d061e7625ac31a9e77ebedace8e8755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gaAJ3c@fDKwak)vlk@O$!7{8LRTJRGMS=aY$*{uzFl|#x9`2h)1|dX z2OQI(Z)QMP=cHrAsyvh&3u4j0Ovy5Pq#&3qNp-7i_UbU|t|ThW5s8s2d0zthnYEA% zMy1p+2s(N9`?A4wgY$H|+DF>@w39CF0+<3}&ddWG5xsXi-KV<!ng4pg?7kZwI$h&` BMil@6 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/60/d3b2f4a4cd5f1637eba020358bfe5ecb5edcf2 deleted file mode 100644 index d94cbe67d82850de2f8527e7aa60dbd605b2259b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~m_tgTOSVWB@(}1?2z$ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/6f/a769bf11bd9dc4ff4e85f4951950b0bc34326f b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/6f/a769bf11bd9dc4ff4e85f4951950b0bc34326f deleted file mode 100644 index 7f9ad8243..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/6f/a769bf11bd9dc4ff4e85f4951950b0bc34326f +++ /dev/null @@ -1,3 +0,0 @@ -x��A -1@Q�=E��$��M@D���h��C��,<���[����9ƦjjS��8�X<��� -p��lּ�kXq�@%s�T%Sx��S�I5��4�����/��o�<߮��}}�,�b1NS"r��`��O �����`���;w \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/74/cd0e856d938eb6b665284c5485c00f87e20dc5 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/74/cd0e856d938eb6b665284c5485c00f87e20dc5 deleted file mode 100644 index 9888101455ffdc7410b4271ca3dfff619c4272ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmb<m)YkO!4K*-JG%ztRFg6T4vDWAG8PC)Tv+oz*_=>N$tS--9r`^A+@P()U2NwqC HeL|uD>30-* diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7c/fd51ebd06287effcfdab241235305cb6439d40 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7c/fd51ebd06287effcfdab241235305cb6439d40 deleted file mode 100644 index 8a6a651cabd069b134e5ccafe1cd4b07f8259801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgW$@t8FZ$4at}cIh^c=_Q7Pafnx>Q5u ib1T6rp3QwUd(*{h&feXc>&l~U9D33dJP`ottsc=Iyd_2e diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7e/d6ff82de6bcc2a78243fc9c54d3ef5ac14da69 deleted file mode 100644 index 637482d7a82554db2176cef4841bccc3141df169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;3*RW9}klu05+=x?*IS* diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/7f/8f011eb73d6043d2e6db9d2c101195ae2801f2 deleted file mode 100644 index 60454ab43e0c116e11fe1c78bd1bd18ca16bd18e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;5icmp8%6F05-=2_W%F@ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/83/51c19397f4fcd5238d10034fa7fa384f14d580 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/83/51c19397f4fcd5238d10034fa7fa384f14d580 deleted file mode 100644 index 12805e9602f07af94a24ad47b987f6eebc8aad35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~mtlgTNG~Bmh0*1>OJv diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/88/8633a131a49f1b8981d70c13d666defed6ba15 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/88/8633a131a49f1b8981d70c13d666defed6ba15 deleted file mode 100644 index 1c62650e27ecc52460141bf27de06c658029f918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77 zcmV-T0J8sh0V^p=O;s>6V=y!@Ff%bxNXyJgW!Sd-#+-}?r_x?#%?j+)Ic&Qvf5&2| jd~PLJ#k0AOW^cN9&DpzKb6t7VjYCg*f+qq1O%ou+0U9Dk diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/8b/0156bd25a1ecd82ef7c4c53e9d6d312bb6d403 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/8b/0156bd25a1ecd82ef7c4c53e9d6d312bb6d403 deleted file mode 100644 index f78367c1d2f726b5d815bda15726758235ab9a05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWvK6Gl-q8b;C$)X?YTMvf>YONFn)r{ i=T?GMJe&Jy_NI&1oV~j>*Of=zIP|0^cp?D0tR1Kjfh6nz diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/90/dfebd90b0a89766c39928f22901b8c02b51fda b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/90/dfebd90b0a89766c39928f22901b8c02b51fda deleted file mode 100644 index 851fbe7da..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/90/dfebd90b0a89766c39928f22901b8c02b51fda +++ /dev/null @@ -1 +0,0 @@ -x+)JMU03c040031QH��IeH���˒��b�(�v��;w�T>�����G�7]���ݭ��<�ơ'=�B� � \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/98/d9bcb75a685dfbfd60f611c309410152935b3d b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/98/d9bcb75a685dfbfd60f611c309410152935b3d deleted file mode 100644 index f6e750c5d4d0d926ebc13a4aaee8f87c90e064bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~ng-gTO4NQ~*9A1?>O; diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/9c/836a5c3f513818d300b410f8cb3a2e3bbd42a1 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/9c/836a5c3f513818d300b410f8cb3a2e3bbd42a1 deleted file mode 100644 index 22a928539b7b990e1b7ccec0d6d049e911dabee3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gaAJ3c@fDKwak)vlk@OB$Ek<2wi!Md}dHEwv-4S-!43W+sEVa>eBmT z046$&O$3;koXhAi`=nSnF}7$cx<*7zR2r3x!K`_c*8tKSDHTO5Ew$=Zy>L*U0;XV# zE!BB9k(&G-_hp0m2Iu*9l~3;LQ%-g17eMk3V`QG-h-j_Z={_~&PyOfb9rFcE4LZI= CnnqUu diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/9d/33ec0915534bf6401be9412203697791e40a04 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/9d/33ec0915534bf6401be9412203697791e40a04 deleted file mode 100644 index c6c240e0c..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/9d/33ec0915534bf6401be9412203697791e40a04 +++ /dev/null @@ -1 +0,0 @@ -x+)JMU03c040031QH��Ie�������ʕ2ۃߴ���?�Tg>T>�����G�7]���ݭ��<�ơ'=�G� � \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b1/bd38b62a0800a4f6a80c34e21c5acffae52c7e deleted file mode 100644 index 268d0f4596bcf2600c8598a88037be18713815f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~mVdgTN%FL;yYi1>gVx diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b2/970eba9fd8dba8655094dc38fb4ee50b9bf23e b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b2/970eba9fd8dba8655094dc38fb4ee50b9bf23e deleted file mode 100644 index e9a1d720b63f4d4f80a9c6f29728ec2e6cd380f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcW<3c@fDKvCB@#q0%{=_F|aB0^UlW0K6EU~MT8Jic9c0JopF_;s1* zM+eIB&^J}^oO8jkG^R!tlAsx337&lmX5Kg|Co681O<x_@T9!8CN-3z+NEoXLVh|Py z+3P?hD@G^peqT12Zg8G%SN+JmKJ`?W`2rL@(>SIyz>x^i?RB5(`X~Q+An(4F_B$!L C97Br$ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b4/de3947675361a7770d29b8982c407b0ec6b2a0 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b4/de3947675361a7770d29b8982c407b0ec6b2a0 deleted file mode 100644 index 6d65f13b4ba310fca2adfb687ac6239597dddfa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~l)NgFqisJODl81=s)p diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b6/14152a335aabd8b5daa2c6abccc9425eb14177 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b6/14152a335aabd8b5daa2c6abccc9425eb14177 deleted file mode 100644 index 7e8fb3f28..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b6/14152a335aabd8b5daa2c6abccc9425eb14177 +++ /dev/null @@ -1,2 +0,0 @@ -x��K -1]��ҝ�D�Yy���A�8��㛅p[T=��?���cє�IE��,L�p��@*��8!���.��jٕ�!6���j�%"�P���g� *��}��r���v�O��SN���Fo C��qN��t����5�/o:` \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b6/a7d89c68e0ca66e96a9a51892cc33db66fb8a3 deleted file mode 100644 index 02dc6889120b0c2a240806b626b6a255b325ac62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~nI#gTM@?6aYQ{1?B(% diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b8/626c4cff2849624fb67f87cd0ad72b163671ad b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/b8/626c4cff2849624fb67f87cd0ad72b163671ad deleted file mode 100644 index 0761b6105a0c6d0e83d26edd1b1dddb94e8d9fdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;2{$O9~YAW05*sO=l}o! diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/cd/c58c0f95a2313ded9185e102bc35253f6a1bed b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/cd/c58c0f95a2313ded9185e102bc35253f6a1bed deleted file mode 100644 index 13147f24bc09a0fcd1cc5fe3258c395be4f1966b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWq6Yu=<<!hV@CGTgrnifp(YNj&z?i& ib1T6rp3QwUd(*{h&feXc>&l~U9D33dJP`oi;~s7KsU%DQ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d0/0491fd7e5bb6fa28c517a0bb32b8b506539d4d deleted file mode 100644 index 8dab6a9eaf1fff6a519dfb7bec1a5bdb56ff845d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb}-;0Y509}AN%05*sO;s5{u diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d2/7a997859219951ecc95c351174c70ea0cf9d37 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d2/7a997859219951ecc95c351174c70ea0cf9d37 deleted file mode 100644 index 1efdcdbe0..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d2/7a997859219951ecc95c351174c70ea0cf9d37 +++ /dev/null @@ -1,3 +0,0 @@ -x��M -�0F]��$��)��1��cK������|��W��p -�~�@,�=JfE�up�ơ��j_rpvb�՞yu`r���ڒ��}!� !ډ8XWcLl�J�~�XV���&����\�֮��c$2pF�Z�uDu�S���F}W�:� \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d3/6e09d97bf2c1527118bde353ad64b157f8b269 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d3/6e09d97bf2c1527118bde353ad64b157f8b269 deleted file mode 100644 index efc598268..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d3/6e09d97bf2c1527118bde353ad64b157f8b269 +++ /dev/null @@ -1 +0,0 @@ -x+)JMU03c040031QH��Ie��2�o]��_G��6ڱ�-x�/T>�����G�7]���ݭ��<�ơ'=�5 \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d4/e982570808a24722649e852a92bda5cf54c9dd b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d4/e982570808a24722649e852a92bda5cf54c9dd deleted file mode 100644 index 262f6ef1f2c9ad1980ac44ab73c1437b962c2c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWpG{cyYzOO1H%Pz#slA%N~G-dU9}%7 ipIZr5@oes+*_$q2bN24mTvr}-<It0y;E4bLeIGWy#Ug_M diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d6/b24041cf04154f8f902651969675021f4d93a5 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d6/b24041cf04154f8f902651969675021f4d93a5 deleted file mode 100644 index 1ece9675cc1bf1b0364aa64b41e4b1e260ab79ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>V9OIG27!4@=>S3-25<lX diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d8/4e0684b1038552d5c8d86e67398d634f77ad3b b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/d8/4e0684b1038552d5c8d86e67398d634f77ad3b deleted file mode 100644 index 4a21451f34ebb4cd371b9e8a936be078ae3c7dee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gaA93c@fDMP26<*$a|MlbHz=5xVLzCg~IfV@rwP@y)^mxPAY9cx9{g z(JUl9wL{gqAdx7m=g66z4+O}BqN`#?jFMPE!)kUp^wp0}fgr1toN(v^OIQjl?AFC6 zC@{q2e9lJR?Y<p$n(a8vH~mQ6pL!`<y;{I901>mdX8`9+r#-6apZd?Y0OkumbULXp CtVjC* diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/da/8dacb2a073ebc2adeddceb3cc2b39b6c95c858 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/da/8dacb2a073ebc2adeddceb3cc2b39b6c95c858 deleted file mode 100644 index 336fa799694e4a7e84711c0ff7f0bebea8087083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWsvJO^h^@*QM>x!DgULpI*ZlYJcXh1 ixs_lQ&*nawz3JjLXYX#!b>&ev4n64!o(KS(;T;4E&m*t^ diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/db/76c03074879025735b647b825786a7b3fcfe7c b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/db/76c03074879025735b647b825786a7b3fcfe7c deleted file mode 100644 index b19f46c3de80eab61abe2182a0f572eb8de61379..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmV-S0JHyi0V^p=O;s>6V=y!@Ff%bxNXyJgWw^G<!SOtcsDJ+iwZLi9N}1$+CohG{ i=T?GMJe&Jy_NI&1oV~j>*Of=zIP|0^cp?C)A{{0Q@gu$f diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/e5/59f83c6e8dd11680de70b487725e37ff2e283f b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/e5/59f83c6e8dd11680de70b487725e37ff2e283f deleted file mode 100644 index 44afe2d13..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/e5/59f83c6e8dd11680de70b487725e37ff2e283f +++ /dev/null @@ -1,3 +0,0 @@ -x��A -�0E]��$3�&)�]�c2����D��f�\����ʺ,�8�C�U�C�� -�!&�>3�x�l��T��m��3���E�*F�F�lX-�X�"#:y����4�y����e{ꩬ���aJ9�w}�QM��>�w_?R:� \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 deleted file mode 100644 index 711223894375fe1186ac5bfffdc48fb1fa1e65cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15 Wcmb<m^geacKgb|~fq`=a;|BmLO$9Rm diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/ec/635144f60048986bc560c5576355344005e6e7 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/ec/635144f60048986bc560c5576355344005e6e7 deleted file mode 100644 index 0207e4b4bda9947f005801b14769db56d4b4e592..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 Ycmb<m^geacKgb|y!xJV3J`pBU06M@0dH?_b diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/f5/99e28b8ab0d8c9c57a486c89c4a5132dcbd3b2 deleted file mode 100644 index 674e37f3f65cd9ec8edc356497f730f3b356e4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Zcmb<m^geacKgb}>z~liFgFp{c8~{DQ1<?Qi diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/ff/231021500c7beb87de0d6d5edc29b6f9c000b1 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/objects/ff/231021500c7beb87de0d6d5edc29b6f9c000b1 deleted file mode 100644 index b02c5baf81af53a5fe205b2e1f6188d6918895c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gaAJ3c@fDKwak)vlk>Y$s`jH5xVLz@)=Puwv-4S-!43W+sAwG>eBmT z046?+O%<BgB*f8*l}tVo1)o%ya-z~Q*BkqqS~F|j^fkZ<c~U0iQXLnk9;IRnEx22= zl+apKw8iB2xGx(_Gn}XSs-N7~r=IH4FMz>2j8O#Ph<jjmx=#)LQ~&uO<_mjkIeE%J BMMnSt diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/bad b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/bad deleted file mode 100644 index df35eff7a..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/bad +++ /dev/null @@ -1 +0,0 @@ -10e171beacb963e4f8a4dc1d80fd291c135902bb diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-38242e5215bc35b3e418c1d6d63fd0291001e10b b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-38242e5215bc35b3e418c1d6d63fd0291001e10b deleted file mode 100644 index 365c8ad45..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-38242e5215bc35b3e418c1d6d63fd0291001e10b +++ /dev/null @@ -1 +0,0 @@ -38242e5215bc35b3e418c1d6d63fd0291001e10b diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-3fbb9e626d4b7d30e58346b3eefaa342b15ab776 b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-3fbb9e626d4b7d30e58346b3eefaa342b15ab776 deleted file mode 100644 index bfb46ec3b..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/bisect/good-3fbb9e626d4b7d30e58346b3eefaa342b15ab776 +++ /dev/null @@ -1 +0,0 @@ -3fbb9e626d4b7d30e58346b3eefaa342b15ab776 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/master b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index bcec15ab4..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -36903784186b1b8b4a150dc656eccd49f94e114e diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/other b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/other deleted file mode 100644 index d6f4abc86..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/other +++ /dev/null @@ -1 +0,0 @@ -e559f83c6e8dd11680de70b487725e37ff2e283f diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/test b/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/test deleted file mode 100644 index bcec15ab4..000000000 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/refs/heads/test +++ /dev/null @@ -1 +0,0 @@ -36903784186b1b8b4a150dc656eccd49f94e114e diff --git a/test/integration/bisectFromOtherBranch/expected/repo/myfile b/test/integration/bisectFromOtherBranch/expected/repo/myfile deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/bisectFromOtherBranch/recording.json b/test/integration/bisectFromOtherBranch/recording.json deleted file mode 100644 index c38fa7758..000000000 --- a/test/integration/bisectFromOtherBranch/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":661,"Mod":0,"Key":259,"Ch":0},{"Timestamp":925,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1238,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1398,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1535,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1677,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1823,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1941,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2261,"Mod":0,"Key":256,"Ch":98},{"Timestamp":2910,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3564,"Mod":0,"Key":256,"Ch":98},{"Timestamp":3949,"Mod":0,"Key":258,"Ch":0},{"Timestamp":4214,"Mod":0,"Key":13,"Ch":13},{"Timestamp":4869,"Mod":0,"Key":256,"Ch":98},{"Timestamp":5229,"Mod":0,"Key":257,"Ch":0},{"Timestamp":5582,"Mod":0,"Key":13,"Ch":13},{"Timestamp":6590,"Mod":0,"Key":256,"Ch":98},{"Timestamp":7325,"Mod":0,"Key":13,"Ch":13},{"Timestamp":9003,"Mod":0,"Key":27,"Ch":0},{"Timestamp":9341,"Mod":0,"Key":260,"Ch":0},{"Timestamp":10141,"Mod":0,"Key":256,"Ch":110},{"Timestamp":10413,"Mod":0,"Key":256,"Ch":116},{"Timestamp":10452,"Mod":0,"Key":256,"Ch":101},{"Timestamp":10629,"Mod":0,"Key":256,"Ch":115},{"Timestamp":10660,"Mod":0,"Key":256,"Ch":116},{"Timestamp":10854,"Mod":0,"Key":13,"Ch":13},{"Timestamp":11637,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/bisectFromOtherBranch/setup.sh b/test/integration/bisectFromOtherBranch/setup.sh deleted file mode 100644 index ef9eb932c..000000000 --- a/test/integration/bisectFromOtherBranch/setup.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -set -e - -cd $1 - -git init - -git config user.email "CI@example.com" -git config user.name "CI" - -touch myfile -git add myfile -git commit -m "first commit" - -git checkout -b other - -for i in {1..20} -do - echo "$i" > file - git add . - git commit -m "commit $i" -done - -git checkout master - -git bisect start other~2 other~13 diff --git a/test/integration/bisectFromOtherBranch/test.json b/test/integration/bisectFromOtherBranch/test.json deleted file mode 100644 index a5503ac83..000000000 --- a/test/integration/bisectFromOtherBranch/test.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "description": "Opening lazygit when bisect has been started from another branch. There's an issue where we don't reselect the current branch if we mark the current branch as bad so this test side-steps that problem", - "speed": 20 -} diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..7444ad06a --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +commit 10 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/FETCH_HEAD similarity index 100% rename from test/integration/bisectFromOtherBranch/expected/repo/.git_keep/FETCH_HEAD rename to test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/FETCH_HEAD diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/HEAD b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..cb089cd89 --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/config b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/config similarity index 87% rename from test/integration/bisectFromOtherBranch/expected/repo/.git_keep/config rename to test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/config index 8ae104545..8a748ce32 100644 --- a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/config +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/config @@ -8,3 +8,5 @@ [user] email = CI@example.com name = CI +[commit] + gpgSign = false diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/description b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/description similarity index 100% rename from test/integration/bisectFromOtherBranch/expected/repo/.git_keep/description rename to test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/description diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/index b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..65d675154f23ffb2d0196e017d44a5e7017550f5 GIT binary patch literal 65 zcmZ?q402{*U|<4bhL9jvS0E+HV4z^Y<=qr}%;|LA&IJiiy?<Pr)babBCri;)`-<AO Tl}3xATFuWrGP@z+w&EiIWCj?s literal 0 HcmV?d00001 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/info/exclude b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/info/exclude similarity index 100% rename from test/integration/bisectFromOtherBranch/expected/repo/.git_keep/info/exclude rename to test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/info/exclude diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/HEAD b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..126602da3 --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,15 @@ +0000000000000000000000000000000000000000 5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d CI <CI@example.com> 1661161824 +1000 commit (initial): only commit on master +5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d 5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d CI <CI@example.com> 1661161824 +1000 checkout: moving from master to other +5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d e739ef9112312917b4fc678e40e2372cc8fda25f CI <CI@example.com> 1661161824 +1000 commit: commit 01 +e739ef9112312917b4fc678e40e2372cc8fda25f 0d4e099996a7c3dc58120cfe1ec34973b309d0e0 CI <CI@example.com> 1661161824 +1000 commit: commit 02 +0d4e099996a7c3dc58120cfe1ec34973b309d0e0 3a899150d167edb02f0ef2ab43bf446d23d90310 CI <CI@example.com> 1661161824 +1000 commit: commit 03 +3a899150d167edb02f0ef2ab43bf446d23d90310 7f8a9a8381ae3fe82a0c43385d3a5bb25cf90699 CI <CI@example.com> 1661161824 +1000 commit: commit 04 +7f8a9a8381ae3fe82a0c43385d3a5bb25cf90699 d4779d400f252d1de4e76ef79e3b4d554fffadb5 CI <CI@example.com> 1661161824 +1000 commit: commit 05 +d4779d400f252d1de4e76ef79e3b4d554fffadb5 41bffcc8f25d268518574e91483a55e66124574c CI <CI@example.com> 1661161824 +1000 commit: commit 06 +41bffcc8f25d268518574e91483a55e66124574c 5c9b8a0a95c49c1674753ad827246ce05965e7fe CI <CI@example.com> 1661161824 +1000 commit: commit 07 +5c9b8a0a95c49c1674753ad827246ce05965e7fe 9cdece2525ed2b34f940b168a2f628984468a8c6 CI <CI@example.com> 1661161824 +1000 commit: commit 08 +9cdece2525ed2b34f940b168a2f628984468a8c6 e4fca3fab85b7a477a2de101e917fe43538e0302 CI <CI@example.com> 1661161824 +1000 commit: commit 09 +e4fca3fab85b7a477a2de101e917fe43538e0302 dff71e43e297a66eb7ec85b7b95ece827751cdbd CI <CI@example.com> 1661161824 +1000 commit: commit 10 +dff71e43e297a66eb7ec85b7b95ece827751cdbd 5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d CI <CI@example.com> 1661161824 +1000 checkout: moving from other to master +5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d 5c9b8a0a95c49c1674753ad827246ce05965e7fe CI <CI@example.com> 1661161824 +1000 checkout: moving from master to 5c9b8a0a95c49c1674753ad827246ce05965e7fe +5c9b8a0a95c49c1674753ad827246ce05965e7fe 5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d CI <CI@example.com> 1661161825 +1000 checkout: moving from 5c9b8a0a95c49c1674753ad827246ce05965e7fe to master diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/master b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/master new file mode 100644 index 000000000..15063339e --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d CI <CI@example.com> 1661161824 +1000 commit (initial): only commit on master diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/other b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/other new file mode 100644 index 000000000..01da9e7bf --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/logs/refs/heads/other @@ -0,0 +1,11 @@ +0000000000000000000000000000000000000000 5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d CI <CI@example.com> 1661161824 +1000 branch: Created from HEAD +5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d e739ef9112312917b4fc678e40e2372cc8fda25f CI <CI@example.com> 1661161824 +1000 commit: commit 01 +e739ef9112312917b4fc678e40e2372cc8fda25f 0d4e099996a7c3dc58120cfe1ec34973b309d0e0 CI <CI@example.com> 1661161824 +1000 commit: commit 02 +0d4e099996a7c3dc58120cfe1ec34973b309d0e0 3a899150d167edb02f0ef2ab43bf446d23d90310 CI <CI@example.com> 1661161824 +1000 commit: commit 03 +3a899150d167edb02f0ef2ab43bf446d23d90310 7f8a9a8381ae3fe82a0c43385d3a5bb25cf90699 CI <CI@example.com> 1661161824 +1000 commit: commit 04 +7f8a9a8381ae3fe82a0c43385d3a5bb25cf90699 d4779d400f252d1de4e76ef79e3b4d554fffadb5 CI <CI@example.com> 1661161824 +1000 commit: commit 05 +d4779d400f252d1de4e76ef79e3b4d554fffadb5 41bffcc8f25d268518574e91483a55e66124574c CI <CI@example.com> 1661161824 +1000 commit: commit 06 +41bffcc8f25d268518574e91483a55e66124574c 5c9b8a0a95c49c1674753ad827246ce05965e7fe CI <CI@example.com> 1661161824 +1000 commit: commit 07 +5c9b8a0a95c49c1674753ad827246ce05965e7fe 9cdece2525ed2b34f940b168a2f628984468a8c6 CI <CI@example.com> 1661161824 +1000 commit: commit 08 +9cdece2525ed2b34f940b168a2f628984468a8c6 e4fca3fab85b7a477a2de101e917fe43538e0302 CI <CI@example.com> 1661161824 +1000 commit: commit 09 +e4fca3fab85b7a477a2de101e917fe43538e0302 dff71e43e297a66eb7ec85b7b95ece827751cdbd CI <CI@example.com> 1661161824 +1000 commit: commit 10 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/06/47fe4b7302efbfb235b8f0681b592cc3389d36 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/06/47fe4b7302efbfb235b8f0681b592cc3389d36 new file mode 100644 index 0000000000000000000000000000000000000000..a8a2b586df771ca14cecde7807a27ce30a6b580c GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8>+k8|g>J<n=0GWZ>5cLD&o#S2XU literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/08/90c7f8fa8d1c157f24c55a6b7783633d3cdc9c new file mode 100644 index 0000000000000000000000000000000000000000..f3e747107bb9d87ddf233fb1249f6677eb244de5 GIT binary patch literal 212 zcmV;_04x7^0V^p=O;s>5Gh;9`FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD z6;HHT*C4Ah1FI76EIoGU>Wa(xlg;1XTcyE}wDElnvMO`1DucBQH9i|=i$@4N$lSPT OgVqKSj&J}0IcDi5lxa!; literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/0d/4e099996a7c3dc58120cfe1ec34973b309d0e0 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/0d/4e099996a7c3dc58120cfe1ec34973b309d0e0 new file mode 100644 index 0000000000000000000000000000000000000000..d3c3d523b38f79c010bcdf4d73b85239a0b01e71 GIT binary patch literal 148 zcmV;F0Biqv0gcW<3c@fDKvCB@#q0&iOwvgLB0^U^#$=qJU~MT8Jic9c0JopF_`1yV zqXQN`^vw*!lg1jja=x|XGvYv$NgIk(m6|F=<5Jx!o4q<%3dLGMq<~Z~)!39%w&;yQ zBGue(LPK-%?)PPbaf0(WUF{?D`m~cS^97I@kug(*BYN-MUiYbPfAXIPPwop`5<0P8 CDoBa| literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/17/8975c6c2d5a8d36f9337efdeaa280062b1ef7c new file mode 100644 index 0000000000000000000000000000000000000000..933e877a004be087db3ad361d41a016285123f23 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?nk8|g>J<n=0GWfk_cLM;qLko5Q literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/30/ad007c4cb09b175810e069b1b2b02ab0140857 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/30/ad007c4cb09b175810e069b1b2b02ab0140857 new file mode 100644 index 0000000000000000000000000000000000000000..9d7077433af455660d7eaba15a6156e4ea83b0cb GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?%k8|g>J<n=0GWdOAcLxBumkWdd literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/31/24e0ff5f45136ff296f998e3c3e207b3d1b6a8 new file mode 100644 index 0000000000000000000000000000000000000000..dc002385b950b9b8a85d84ba3da3955db702074b GIT binary patch literal 186 zcmV;r07d_J0V^p=O;s>5vS2VYFfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD o6;HHT*C4Ah1FI76EIoGU>Wa(xlg;1XTcyE}wDEln0K+a>>qpLC$N&HU literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/35/da65f29bc0b48aa80bd3a02cff623cf4355fd3 new file mode 100644 index 0000000000000000000000000000000000000000..350af2800533c3104a701dce1729c5212dcef1f0 GIT binary patch literal 133 zcmV;00DAv;0V^p=O;s>7HDWL{FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY n3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZZ^CcZiEHDN%H literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a new file mode 100644 index 000000000..e8c48561b --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/37/6048ba8da4b619088a7f4a5df3f528fde41f1a @@ -0,0 +1,2 @@ +x+)JMU0�0`040031QH��I50�+�(ap��u}Q��Ɲ�z������AVeV���ϻ����M�;>dHG���k������G����v�q-�|�m�\-O!�2��t@�C,�#_���뾦�>�<ȪL�������7,q���"�O�Y� �2��,=v��������[�����} �*s�*��5>f�G<�ܸi���pdU`U����j"��6\2�Ҡ�Lo��UY�U\MT�?����f?͏j�9� +I��XU����S��e�3Mج8o��)g�I�� \ No newline at end of file diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/3a/899150d167edb02f0ef2ab43bf446d23d90310 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/3a/899150d167edb02f0ef2ab43bf446d23d90310 new file mode 100644 index 0000000000000000000000000000000000000000..0aa17a3368304e87e7fdf8b6c7cd4324cf4fd7f8 GIT binary patch literal 146 zcmV;D0B!$x0gaAL3c@fH23_YAZ!gGuNtz~5MChu=$j?_4j4dUC$2SWP;4Ft(Ox|jJ zG?L&>?Ena_Bv}WabxH$bvBEY)kJSWW;~3p(fmVAw@M^@xf<wo}F`JSHFPifTK{hsw zCK(Qe!79GneLHAgXquNBKC$jkT=G`0B+iLA@!HZ^m|1n(ryBmue?75LUy#x|-}Yug AtpET3 literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/3b/f868a389d0073e715e848f0ee33d71064539ca b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/3b/f868a389d0073e715e848f0ee33d71064539ca new file mode 100644 index 0000000000000000000000000000000000000000..07b07e91fc3473d2d2b21397ee9c3197bcd0bbe6 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?1k8|g>J<n=0GWcC!cLo5t84Ftg literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/41/bffcc8f25d268518574e91483a55e66124574c b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/41/bffcc8f25d268518574e91483a55e66124574c new file mode 100644 index 0000000000000000000000000000000000000000..dff435fefeb8ee71c1f43b7a84e32efeaf27d201 GIT binary patch literal 148 zcmV;F0Biqv0gcW<3c@fDKvCB@#q0%{NhXs9M1-z9M$*inU~MT8Jic9c0JopF_|r1a zj}DaO&^J{G<XO=y8b=CZ=CfGNgN7-n$5cb3DrInM+4R++aZ0%{qWS0>HDyhrma>M* zEk-u8(rR?&-S5i=;|<Q^?W&(LuTMQq%X|S6Arcxq!;uit?RB5(`X~Q+KyhDiG&>9? CWJcit literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/47/d78ad7a27fc7fe483389512ebf7ea34c5514bc b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/47/d78ad7a27fc7fe483389512ebf7ea34c5514bc new file mode 100644 index 0000000000000000000000000000000000000000..c562d38cc74cf217a96352f3dc336a387371e749 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8>sk8|g>J<n=0GWhLdcLV^q#S29M literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 new file mode 100644 index 0000000000000000000000000000000000000000..adf64119a33d7621aeeaa505d30adb58afaa5559 GIT binary patch literal 15 Wcmb<m)YkO!4K+w$VBpeWVgvvgJ_3UP literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/50/d561270fcfcdc9afc85f6136f937c529accaaa b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/50/d561270fcfcdc9afc85f6136f937c529accaaa new file mode 100644 index 0000000000000000000000000000000000000000..f11f051fc4d081c513a9e04677e32e65caf944af GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPty${9_P+$d!E&1WbkKW_XGgGDGL?= literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/55/3197193920043fb04f3e39e825916990955204 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/55/3197193920043fb04f3e39e825916990955204 new file mode 100644 index 0000000000000000000000000000000000000000..ac90c394afbc05bf205db7dcf331d28a569142fd GIT binary patch literal 55 zcmV-70LcG%0V^p=O;s?qU@$Z=Ff%bxNXyJgH89jGsVHG^zut9yQT_3M9>$%4di(1Z N`-F<@0RUnl5mQh97fApB literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5c/9b8a0a95c49c1674753ad827246ce05965e7fe b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5c/9b8a0a95c49c1674753ad827246ce05965e7fe new file mode 100644 index 000000000..e3947050d --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5c/9b8a0a95c49c1674753ad827246ce05965e7fe @@ -0,0 +1,6 @@ +x��A +1@Q�=E��4m�f@D����) +�� +�.<���[|Y[{t�)�� +�'+�r�\P�RuA�r���>z_���ly�W���ZE�:*.2!S +:a`��4Fta1������y��'���'Y�p(��.���f�1��O��`���9� \ No newline at end of file diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5f/80f6e6bd2410efe5b5f613adc5b4fcf50e930d b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5f/80f6e6bd2410efe5b5f613adc5b4fcf50e930d new file mode 100644 index 000000000..bc33f27d9 --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/5f/80f6e6bd2410efe5b5f613adc5b4fcf50e930d @@ -0,0 +1,3 @@ +x��A +�0E]��d�C"BW=F�NQ�t�F���n��WM���3�.Tb��ja))#�T�8s +1.E��˯v�� ��t�w��*�jz�g�=��]�=��Ϲ�m��O�@��Њ2$ \ No newline at end of file diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/7f/8a9a8381ae3fe82a0c43385d3a5bb25cf90699 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/7f/8a9a8381ae3fe82a0c43385d3a5bb25cf90699 new file mode 100644 index 0000000000000000000000000000000000000000..0ba0a16ee06cbbb6992f073efcf4888e9b163205 GIT binary patch literal 148 zcmV;F0Biqv0gcW<3IZ_<KvCB{MfZXvO<P+K5oR^VNZSMj>kLB$kMArzfZNYo{JQl1 z7#4Fpj7`K+XdHvOTq+cwm=lyn46dq1M^!zAppDGRo4kf4PB~+MhVd+|fKw24Ts#%^ zJ~l@!10fiGkNdLOX||VXzR8FC`jk^$`qg5Lh!K<X_J{yr_PS3E`IG;=1#iBCt2)gm C_e4hk literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/8d/49129429cacbb6694f0290b3219e91a6f364cd b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/8d/49129429cacbb6694f0290b3219e91a6f364cd new file mode 100644 index 0000000000000000000000000000000000000000..8d434f2041605e3a4058a78bd8bb3d5a1ad5f503 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg9csk8|g>J<n=0GWhLhcLV^q%nL>U literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/9c/dece2525ed2b34f940b168a2f628984468a8c6 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/9c/dece2525ed2b34f940b168a2f628984468a8c6 new file mode 100644 index 0000000000000000000000000000000000000000..cde6830222e5d92bbe4235f80dbd3558dee780a8 GIT binary patch literal 148 zcmV;F0Biqv0gcW<3c@fDg<;n@MfQSZ(##|SB0^U^#$=qLU~MT8Jib|Y0Jo3t!LRGG zJemilL)*=K9mEhaMOEa;6*bLN39ZNt5@UjtW-HNcvfHb9RIWvWaEGiwIb|H=R$`8c z)B<w<=GmOQ+kM^rIQjE9UF{>w_Oz3(%f$l`06~e#A0dR``r4zK{mFmchvL2x>N+Ga C9!h=y literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/a0/2c4b36b68df7081152282cf1aabcab7b24e69b b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/a0/2c4b36b68df7081152282cf1aabcab7b24e69b new file mode 100644 index 0000000000000000000000000000000000000000..85866acd897b150150557b0a331c827562ca4fa7 GIT binary patch literal 81 zcmV-X0IvUd0V^p=O;s>AV=y!@Ff%bxNXyJgH89jGsVHG^zut9yQT_3M9>$%4di(1Z n`-F<@K~`l1R>kK2&%2oE{r*j+J3eGcN9r85m}>?A;$I(9i#8>| literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 new file mode 100644 index 000000000..7eacc86e0 --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/b3/ae51762cc5929b5c4f6b65e8ad14954144fe82 @@ -0,0 +1 @@ +x+)JMU060a040031QH��I50�+�(ap��u}Q��Ɲ�z������AVeV���ϻ����M�;>dHG���k������G����v�q-�|�m�\-O!�2��t@�C,�#_���뾦�>�<ȪL�������7,q���"�O�Y� �2��,=v��������[�����} �*s�*��5>f�G<�ܸi���pdU`U����j"��6\2�Ҡ�Lo�4�v5 \ No newline at end of file diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/bf/2b038a7c59d4db31a492793086fafec802ec2f b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/bf/2b038a7c59d4db31a492793086fafec802ec2f new file mode 100644 index 0000000000000000000000000000000000000000..17f75bca502e6b34e2f231b56e520976da3a5221 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPty$n9_P+$d!E&1WbpgT?g0S6(F_Lw literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/c2/55cf4ef7fd5661a9d68b717243a978e42b05ac b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/c2/55cf4ef7fd5661a9d68b717243a978e42b05ac new file mode 100644 index 0000000000000000000000000000000000000000..6ac1f71b1ac5591558972d0ca7dba18052afb32b GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?Xk8|g>J<n=0GWb1WcLe~sLkn&I literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/cf/b438e7991d830d830d58744b99cff451a9d07e b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/cf/b438e7991d830d830d58744b99cff451a9d07e new file mode 100644 index 0000000000000000000000000000000000000000..f184b6b997d3abbf26741a2a27476f2e32ffbe5c GIT binary patch literal 265 zcmV+k0rviQ0V^p=O;s>9F=8+@FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD z6;HHT*C4Ah1FI76EIoGU>Wa(xlg;1XTcyE}wDElnvMO`1DucBQH9i|=i$@4N$lSPT zgVqKSj&NjE7GPETwVAtWBCp&wTr#QBpzYVc6HIUPkyTlORRvs4ROdf`_T>5#@rh<X P&5vrXIkgG^y`zQc0`Y}{ literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/d4/779d400f252d1de4e76ef79e3b4d554fffadb5 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/d4/779d400f252d1de4e76ef79e3b4d554fffadb5 new file mode 100644 index 0000000000000000000000000000000000000000..6034204c0e7b77c6a9bf1b2d1e5fea765e82f76f GIT binary patch literal 148 zcmV;F0Biqv0gcW<3c@fDg<;n@#q0&iB%NdeMTD+;jA=SS!PrtFczm<)0B(Oi9xrdT zJ{n*Or*^1<I!uw3L`w0I+_I`J!BfT%qGn2&mfq0pa_Fl;EG$XbGm846?8N55d#2S( zmyU8tHl$?a-R|1~(+uM@-}EDOf9fS~^$L9&F(A7E&S<SQz4lX0|KvXpmdqE}Q#)p4 Ck4VY@ literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/df/f71e43e297a66eb7ec85b7b95ece827751cdbd b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/df/f71e43e297a66eb7ec85b7b95ece827751cdbd new file mode 100644 index 0000000000000000000000000000000000000000..8397c76a9c37dc131f7a55360fd30eac091b25d9 GIT binary patch literal 148 zcmV;F0Biqv0gcW<3c@fDKvCB@#q0%{NhZk@M1-z9#-y2`U~MT8Jic9c0JopF_|r1a zj}A1XL*L9G<b*6mr7D+11Bz&Ftg*JxqL)^Usgb%>H+yw3Zj*+lMPkXyIjgTmNH$Pz z#vukV4CtM{`+eD9yuo?AUG1au`n1!u%om`Ph!TlsI1(bdz3x-p{^UOogzgK83p(dH Cgh<Z- literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e2/1978e5aaff3752bdeeb635c1667ec59c5bbde1 new file mode 100644 index 0000000000000000000000000000000000000000..37f59fe0fb0228d08de7eb36a278ec52c722aec2 GIT binary patch literal 160 zcmV;R0AK%j0V^p=O;s?oG+;0^FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY z3)x&PPa&%^0jv6SK&nG5(Ia1^&i(7YrinhWJPZcNs!YME4uzig`~Ej9apkq{!XoFD O6;HHT*8l*@%}K*azEJT1 literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e4/fca3fab85b7a477a2de101e917fe43538e0302 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e4/fca3fab85b7a477a2de101e917fe43538e0302 new file mode 100644 index 0000000000000000000000000000000000000000..96986d1b23d2ce708570d8324b14416fcc17af4f GIT binary patch literal 148 zcmV;F0Biqv0gaAL3c@fDMqTF=vlk?jPSP0=5xVLz@-sof*is^Re2aJh7au$xZ}H`& zwR;DYaOj&V<eF$;9YwJ4V88P`5+#vbD|w7k?5Jjqn?5^8E}GSO=e4*rP!+NX14mbb zV_~A5IR_J8{kCi{&2XOPtG;7fA9~75y8woO7?2&o5v{dmxBIECf9Ag)te6ivvpQn1 Cj6&)F literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e6/db1f58c2bb5ead41049a8ef3910360eead21e2 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e6/db1f58c2bb5ead41049a8ef3910360eead21e2 new file mode 100644 index 0000000000000000000000000000000000000000..8bcfafeb644d88961fada612e53598966fbe73ed GIT binary patch literal 108 zcmV-y0F(cC0V^p=O;s>7G+{6_FfcPQQAo?oNi{IkE2$`9aKGMleNp}Ke;&r2fqMJv z7W;&X>_Jv#1Xji7{?EIZ>HYpqraL}lNJr`%wwP;%tjZXy%KAsf;?4`~c7<^*{d|vY O3)x&PPXPdnMJ)ztA2U4w literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e7/39ef9112312917b4fc678e40e2372cc8fda25f b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/e7/39ef9112312917b4fc678e40e2372cc8fda25f new file mode 100644 index 0000000000000000000000000000000000000000..205e4506cd441edd5f1745be772c6d24749a8891 GIT binary patch literal 147 zcmV;E0Brww0gcW<3c@fDKvCB@#q0%{NiwkmB0^U^Mv~5;U~DN7Jic9c0JopF_;qRR z(Sal#`lbrZf#ggQ#3ROF1)~KGqJw9lB!a^1F}gKx`s%<ope0RZ_K{Fcxv(V)d9GZd zRbx~MIJ^Ar_ho}|g3CDF^po5A)KgvB6(}X5M1zlTBt&$3-KV<#$$uV@+!t;DIe1D4 BMZ5q2 literal 0 HcmV?d00001 diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/f2/c01a881661486f147e47f5be82914c5d0c0030 b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/objects/f2/c01a881661486f147e47f5be82914c5d0c0030 new file mode 100644 index 0000000000000000000000000000000000000000..7e30b2e352ac316b3082ec42a9aabada4e057a17 GIT binary patch literal 30 mcmb<m^geacKghr&(c|<PPg8?Hk8|g>J<n=0GWgwOcL4yn?+ai6 literal 0 HcmV?d00001 diff --git a/test/integration/bisectFromOtherBranch/expected/repo/.git_keep/packed-refs b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/packed-refs similarity index 100% rename from test/integration/bisectFromOtherBranch/expected/repo/.git_keep/packed-refs rename to test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/packed-refs diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/master b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/master new file mode 100644 index 000000000..ff1c9baaa --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/master @@ -0,0 +1 @@ +5f80f6e6bd2410efe5b5f613adc5b4fcf50e930d diff --git a/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/other b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/other new file mode 100644 index 000000000..9938cab9e --- /dev/null +++ b/test/integration_new/bisect/from_other_branch/expected/repo/.git_keep/refs/heads/other @@ -0,0 +1 @@ +dff71e43e297a66eb7ec85b7b95ece827751cdbd From 5d5471c01765fac98ff59f71581bcf7c14adbe49 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 19:53:54 +1000 Subject: [PATCH 06/44] remove already migrated test --- .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 - .../expected/repo/.git_keep/FETCH_HEAD | 0 .../expected/repo/.git_keep/HEAD | 1 - .../expected/repo/.git_keep/config | 10 --------- .../expected/repo/.git_keep/description | 1 - .../expected/repo/.git_keep/index | Bin 145 -> 0 bytes .../expected/repo/.git_keep/info/exclude | 7 ------ .../expected/repo/.git_keep/logs/HEAD | 6 ------ .../repo/.git_keep/logs/refs/heads/four | 1 - .../repo/.git_keep/logs/refs/heads/master | 1 - .../repo/.git_keep/logs/refs/heads/one | 1 - .../repo/.git_keep/logs/refs/heads/three | 1 - .../repo/.git_keep/logs/refs/heads/two | 1 - .../b4/9fda1c7a9af6a4f0b6b07a2cb31aecb8c01a6c | Bin 55 -> 0 bytes .../e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 | Bin 15 -> 0 bytes .../f7/53f4dfc98d148a7e685c46c8d148bcac56707d | Bin 122 -> 0 bytes .../expected/repo/.git_keep/refs/heads/four | 1 - .../expected/repo/.git_keep/refs/heads/master | 1 - .../expected/repo/.git_keep/refs/heads/one | 1 - .../expected/repo/.git_keep/refs/heads/three | 1 - .../expected/repo/.git_keep/refs/heads/two | 1 - .../expected/repo/myfile.txt | 0 .../branchAutocomplete/recording.json | 1 - test/integration/branchAutocomplete/setup.sh | 20 ------------------ test/integration/branchAutocomplete/test.json | 1 - 25 files changed, 58 deletions(-) delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/FETCH_HEAD delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/config delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/description delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/index delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/info/exclude delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/four delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/one delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/three delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/two delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/objects/b4/9fda1c7a9af6a4f0b6b07a2cb31aecb8c01a6c delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/objects/f7/53f4dfc98d148a7e685c46c8d148bcac56707d delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/four delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/one delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/three delete mode 100644 test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/two delete mode 100644 test/integration/branchAutocomplete/expected/repo/myfile.txt delete mode 100644 test/integration/branchAutocomplete/recording.json delete mode 100644 test/integration/branchAutocomplete/setup.sh delete mode 100644 test/integration/branchAutocomplete/test.json diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/branchAutocomplete/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index 802607664..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1 +0,0 @@ -initial commit diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/FETCH_HEAD b/test/integration/branchAutocomplete/expected/repo/.git_keep/FETCH_HEAD deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/HEAD b/test/integration/branchAutocomplete/expected/repo/.git_keep/HEAD deleted file mode 100644 index 2e35f3118..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/three diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/config b/test/integration/branchAutocomplete/expected/repo/.git_keep/config deleted file mode 100644 index 8ae104545..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/config +++ /dev/null @@ -1,10 +0,0 @@ -[core] - repositoryformatversion = 0 - filemode = true - bare = false - logallrefupdates = true - ignorecase = true - precomposeunicode = true -[user] - email = CI@example.com - name = CI diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/description b/test/integration/branchAutocomplete/expected/repo/.git_keep/description deleted file mode 100644 index 498b267a8..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/description +++ /dev/null @@ -1 +0,0 @@ -Unnamed repository; edit this file 'description' to name the repository. diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/index b/test/integration/branchAutocomplete/expected/repo/.git_keep/index deleted file mode 100644 index 79e58d4f5c49991fb907b9489777cfc900a6efe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145 zcmZ?q402{*U|<4b#)RxG%b7G1Y+y7a0|N`2F8dk=hQ=j8>90UFB0$XWZ0@7kn=W2+ z_U_hPR~~ia(376vi40u1m1&tdsd^<9B_K5*5EA6-3Zx_%3>6Hxw#>gJQ#I?`k`LQ9 jROxJ%db8tzRL<*tC$?o@nmao@USD+{qnPky*0QGn3rsN` diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/info/exclude b/test/integration/branchAutocomplete/expected/repo/.git_keep/info/exclude deleted file mode 100644 index 8e9f2071f..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/info/exclude +++ /dev/null @@ -1,7 +0,0 @@ -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ -.DS_Store diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/HEAD b/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/HEAD deleted file mode 100644 index 8985b49b4..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/HEAD +++ /dev/null @@ -1,6 +0,0 @@ -0000000000000000000000000000000000000000 f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 commit (initial): initial commit -f753f4dfc98d148a7e685c46c8d148bcac56707d f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 checkout: moving from master to one -f753f4dfc98d148a7e685c46c8d148bcac56707d f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 checkout: moving from one to two -f753f4dfc98d148a7e685c46c8d148bcac56707d f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 checkout: moving from two to three -f753f4dfc98d148a7e685c46c8d148bcac56707d f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 checkout: moving from three to four -f753f4dfc98d148a7e685c46c8d148bcac56707d f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671338 +1000 checkout: moving from four to three diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/four b/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/four deleted file mode 100644 index f3e789f72..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/four +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 branch: Created from HEAD diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 3781b31e4..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 commit (initial): initial commit diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/one b/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/one deleted file mode 100644 index f3e789f72..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/one +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 branch: Created from HEAD diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/three b/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/three deleted file mode 100644 index f3e789f72..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/three +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 branch: Created from HEAD diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/two b/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/two deleted file mode 100644 index f3e789f72..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/logs/refs/heads/two +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 f753f4dfc98d148a7e685c46c8d148bcac56707d CI <CI@example.com> 1617671335 +1000 branch: Created from HEAD diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/objects/b4/9fda1c7a9af6a4f0b6b07a2cb31aecb8c01a6c b/test/integration/branchAutocomplete/expected/repo/.git_keep/objects/b4/9fda1c7a9af6a4f0b6b07a2cb31aecb8c01a6c deleted file mode 100644 index 9a968e4230e734fe1409931830e0b527e826abf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmV-70LcG%0V^p=O;s?qU@$Z=Ff%bx$gNDv%t_TNsVHH1Huur&O&6~@dv|NDE04Ny N=t)oTL;!%W6Q@{R7l;4= diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/test/integration/branchAutocomplete/expected/repo/.git_keep/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 deleted file mode 100644 index 711223894375fe1186ac5bfffdc48fb1fa1e65cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15 Wcmb<m^geacKgb|~fq`=a;|BmLO$9Rm diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/objects/f7/53f4dfc98d148a7e685c46c8d148bcac56707d b/test/integration/branchAutocomplete/expected/repo/.git_keep/objects/f7/53f4dfc98d148a7e685c46c8d148bcac56707d deleted file mode 100644 index a9bfbe5b4d641d656467512acc2b462505d9a29b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmV-=0EPc}0ga783c@fD06pgwdlzKaw21|gLQj3h?z+K1V@iq8=UeatUWXY*Ybm(_ z_5Rd0GmvgbPbQ5#a0=Wdlpq-Ss^W=F<)%m+)bXdi>ITyc_h}w&=dvz#(OMorfntc{ ceGg|sM0e0*((F&&<#%qG7x;DV3-@&}qC*BcYybcN diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/four b/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/four deleted file mode 100644 index 7303bd10b..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/four +++ /dev/null @@ -1 +0,0 @@ -f753f4dfc98d148a7e685c46c8d148bcac56707d diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/master b/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index 7303bd10b..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -f753f4dfc98d148a7e685c46c8d148bcac56707d diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/one b/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/one deleted file mode 100644 index 7303bd10b..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/one +++ /dev/null @@ -1 +0,0 @@ -f753f4dfc98d148a7e685c46c8d148bcac56707d diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/three b/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/three deleted file mode 100644 index 7303bd10b..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/three +++ /dev/null @@ -1 +0,0 @@ -f753f4dfc98d148a7e685c46c8d148bcac56707d diff --git a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/two b/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/two deleted file mode 100644 index 7303bd10b..000000000 --- a/test/integration/branchAutocomplete/expected/repo/.git_keep/refs/heads/two +++ /dev/null @@ -1 +0,0 @@ -f753f4dfc98d148a7e685c46c8d148bcac56707d diff --git a/test/integration/branchAutocomplete/expected/repo/myfile.txt b/test/integration/branchAutocomplete/expected/repo/myfile.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/branchAutocomplete/recording.json b/test/integration/branchAutocomplete/recording.json deleted file mode 100644 index 33c3d8123..000000000 --- a/test/integration/branchAutocomplete/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":933,"Mod":0,"Key":259,"Ch":0},{"Timestamp":1524,"Mod":0,"Key":256,"Ch":99},{"Timestamp":2188,"Mod":0,"Key":256,"Ch":116},{"Timestamp":2364,"Mod":0,"Key":256,"Ch":104},{"Timestamp":2540,"Mod":0,"Key":256,"Ch":114},{"Timestamp":2851,"Mod":0,"Key":9,"Ch":9},{"Timestamp":3148,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3964,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/branchAutocomplete/setup.sh b/test/integration/branchAutocomplete/setup.sh deleted file mode 100644 index 4c53f58a2..000000000 --- a/test/integration/branchAutocomplete/setup.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -set -e - -cd $1 - -git init - -git config user.email "CI@example.com" -git config user.name "CI" - -touch myfile.txt -git add . -git commit -m "initial commit" - -git checkout -b one -git checkout -b two -git checkout -b three -git checkout -b four - diff --git a/test/integration/branchAutocomplete/test.json b/test/integration/branchAutocomplete/test.json deleted file mode 100644 index 3e0d382e0..000000000 --- a/test/integration/branchAutocomplete/test.json +++ /dev/null @@ -1 +0,0 @@ -{ "description": "check out a branch using the autocomplete feature", "speed": 20 } From a9d4ff2aee1ef6f6baf976d90452570afbdba67b Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 20:02:32 +1000 Subject: [PATCH 07/44] cleaning up imports --- pkg/integration/tests/branch/suggestions.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/integration/tests/branch/suggestions.go b/pkg/integration/tests/branch/suggestions.go index 0d8269f1d..95a40b0ac 100644 --- a/pkg/integration/tests/branch/suggestions.go +++ b/pkg/integration/tests/branch/suggestions.go @@ -2,15 +2,15 @@ package branch import ( "github.com/jesseduffield/lazygit/pkg/config" - "github.com/jesseduffield/lazygit/pkg/integration/components" + . "github.com/jesseduffield/lazygit/pkg/integration/components" ) -var Suggestions = components.NewIntegrationTest(components.NewIntegrationTestArgs{ +var Suggestions = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Checking out a branch with name suggestions", ExtraCmdArgs: "", Skip: false, SetupConfig: func(config *config.AppConfig) {}, - SetupRepo: func(shell *components.Shell) { + SetupRepo: func(shell *Shell) { shell. EmptyCommit("my commit message"). NewBranch("new-branch"). @@ -20,7 +20,7 @@ var Suggestions = components.NewIntegrationTest(components.NewIntegrationTestArg NewBranch("other-new-branch-2"). NewBranch("other-new-branch-3") }, - Run: func(shell *components.Shell, input *components.Input, assert *components.Assert, keys config.KeybindingConfig) { + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { input.SwitchToBranchesWindow() assert.CurrentViewName("localBranches") From 843488bff4b128f5227657f0e16dd42299420532 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 20:02:40 +1000 Subject: [PATCH 08/44] add branch delete integration test --- pkg/integration/tests/branch/delete.go | 40 ++++++++++++++++++ pkg/integration/tests/tests.go | 1 + .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 - .../branchDelete/expected/repo/.git_keep/HEAD | 1 - .../expected/repo/.git_keep/index | Bin 137 -> 0 bytes .../expected/repo/.git_keep/logs/HEAD | 7 --- .../repo/.git_keep/logs/refs/heads/master | 1 - .../repo/.git_keep/logs/refs/heads/new-branch | 1 - .../.git_keep/logs/refs/heads/new-branch-2 | 1 - .../.git_keep/logs/refs/heads/new-branch-3 | 1 - .../repo/.git_keep/logs/refs/heads/old-branch | 1 - .../.git_keep/logs/refs/heads/old-branch-3 | 1 - .../1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 | Bin 50 -> 0 bytes .../21/b436d66d2c515ad17285e53d9e6380d599b044 | Bin 118 -> 0 bytes .../38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da | Bin 21 -> 0 bytes .../expected/repo/.git_keep/refs/heads/master | 1 - .../repo/.git_keep/refs/heads/new-branch | 1 - .../repo/.git_keep/refs/heads/new-branch-2 | 1 - .../repo/.git_keep/refs/heads/new-branch-3 | 1 - .../repo/.git_keep/refs/heads/old-branch | 1 - .../repo/.git_keep/refs/heads/old-branch-3 | 1 - .../branchDelete/expected/repo/file0 | 1 - test/integration/branchDelete/recording.json | 1 - test/integration/branchDelete/setup.sh | 21 --------- test/integration/branchDelete/test.json | 1 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../delete/expected/repo/.git_keep/HEAD | 1 + .../delete}/expected/repo/.git_keep/config | 2 + .../expected/repo/.git_keep/description | 0 .../delete/expected/repo/.git_keep/index | Bin 0 -> 65 bytes .../expected/repo/.git_keep/info/exclude | 0 .../delete/expected/repo/.git_keep/logs/HEAD | 3 ++ .../repo/.git_keep/logs/refs/heads/branch-one | 1 + .../repo/.git_keep/logs/refs/heads/branch-two | 1 + .../repo/.git_keep/logs/refs/heads/master | 1 + .../4b/825dc642cb6eb9a060e54bf8d69288fbee4904 | Bin 0 -> 15 bytes .../a7/222d091ed91af493b7173e4b09dd2de085031d | Bin 0 -> 117 bytes .../repo/.git_keep/refs/heads/branch-one | 1 + .../repo/.git_keep/refs/heads/branch-two | 1 + .../expected/repo/.git_keep/refs/heads/master | 1 + 41 files changed, 54 insertions(+), 45 deletions(-) create mode 100644 pkg/integration/tests/branch/delete.go delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/index delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-2 delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-3 delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch-3 delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/objects/21/b436d66d2c515ad17285e53d9e6380d599b044 delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-2 delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-3 delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch delete mode 100644 test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch-3 delete mode 100644 test/integration/branchDelete/expected/repo/file0 delete mode 100644 test/integration/branchDelete/recording.json delete mode 100644 test/integration/branchDelete/setup.sh delete mode 100644 test/integration/branchDelete/test.json create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/COMMIT_EDITMSG rename test/{integration/branchDelete => integration_new/branch/delete}/expected/repo/.git_keep/FETCH_HEAD (100%) create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/HEAD rename test/{integration/branchDelete => integration_new/branch/delete}/expected/repo/.git_keep/config (87%) rename test/{integration/branchDelete => integration_new/branch/delete}/expected/repo/.git_keep/description (100%) create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/index rename test/{integration/branchDelete => integration_new/branch/delete}/expected/repo/.git_keep/info/exclude (100%) create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-one create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-two create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/master create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/objects/a7/222d091ed91af493b7173e4b09dd2de085031d create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-one create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-two create mode 100644 test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/master diff --git a/pkg/integration/tests/branch/delete.go b/pkg/integration/tests/branch/delete.go new file mode 100644 index 000000000..46df9a457 --- /dev/null +++ b/pkg/integration/tests/branch/delete.go @@ -0,0 +1,40 @@ +package branch + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var Delete = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Try to delete the checked out branch first (to no avail), and then delete another branch.", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell. + EmptyCommit("blah"). + NewBranch("branch-one"). + NewBranch("branch-two") + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + input.SwitchToBranchesWindow() + assert.CurrentViewName("localBranches") + + assert.MatchSelectedLine(Contains("branch-two")) + input.PressKeys(keys.Universal.Remove) + assert.InAlert() + assert.MatchCurrentViewContent(Contains("You cannot delete the checked out branch!")) + + input.Confirm() + + input.NextItem() + assert.MatchSelectedLine(Contains("branch-one")) + input.PressKeys(keys.Universal.Remove) + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("Are you sure you want to delete the branch 'branch-one'?")) + input.Confirm() + assert.CurrentViewName("localBranches") + assert.MatchSelectedLine(Contains("master")) + assert.MatchCurrentViewContent(NotContains("branch-one")) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index 6fcd8249f..88f6b40da 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -24,6 +24,7 @@ var tests = []*components.IntegrationTest{ commit.Commit, commit.NewBranch, branch.Suggestions, + branch.Delete, interactive_rebase.One, custom_commands.Basic, custom_commands.MultiplePrompts, diff --git a/test/integration/branchDelete/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/branchDelete/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index dc3ab4abe..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1 +0,0 @@ -file0 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/HEAD b/test/integration/branchDelete/expected/repo/.git_keep/HEAD deleted file mode 100644 index ba0879fe6..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/old-branch-3 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/index b/test/integration/branchDelete/expected/repo/.git_keep/index deleted file mode 100644 index 9743f9410c882fd827218be2a89dee7f1e191b52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137 zcmZ?q402{*U|<4b#)Rw_Cm7fNiG<ON3=Ax6dNpPY42?^G(qDmUM1YvhLd5FIf`3}u z-UT0e-?{YWqrFp2Z!xf@W#*(B0HqliLV{dffs`bJp@IRIoL&0PnYTsD*2+ET{_;Wl fzUGrDPHp=a#`eDB``wjtV_{cq4DaNn-yQ$}?$<Lh diff --git a/test/integration/branchDelete/expected/repo/.git_keep/logs/HEAD b/test/integration/branchDelete/expected/repo/.git_keep/logs/HEAD deleted file mode 100644 index d70cecff2..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/logs/HEAD +++ /dev/null @@ -1,7 +0,0 @@ -0000000000000000000000000000000000000000 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 commit (initial): file0 -21b436d66d2c515ad17285e53d9e6380d599b044 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 checkout: moving from master to new-branch -21b436d66d2c515ad17285e53d9e6380d599b044 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 checkout: moving from new-branch to new-branch-2 -21b436d66d2c515ad17285e53d9e6380d599b044 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 checkout: moving from new-branch-2 to new-branch-3 -21b436d66d2c515ad17285e53d9e6380d599b044 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 checkout: moving from new-branch-3 to old-branch -21b436d66d2c515ad17285e53d9e6380d599b044 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 checkout: moving from old-branch to old-branch-2 -21b436d66d2c515ad17285e53d9e6380d599b044 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 checkout: moving from old-branch-2 to old-branch-3 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 2e2382c42..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 commit (initial): file0 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch b/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch deleted file mode 100644 index 2050baa52..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 branch: Created from HEAD diff --git a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-2 b/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-2 deleted file mode 100644 index 2050baa52..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-2 +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 branch: Created from HEAD diff --git a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-3 b/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-3 deleted file mode 100644 index 2050baa52..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/new-branch-3 +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 branch: Created from HEAD diff --git a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch b/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch deleted file mode 100644 index 2050baa52..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 branch: Created from HEAD diff --git a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch-3 b/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch-3 deleted file mode 100644 index 2050baa52..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/logs/refs/heads/old-branch-3 +++ /dev/null @@ -1 +0,0 @@ -0000000000000000000000000000000000000000 21b436d66d2c515ad17285e53d9e6380d599b044 CI <CI@example.com> 1617684680 +1000 branch: Created from HEAD diff --git a/test/integration/branchDelete/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 b/test/integration/branchDelete/expected/repo/.git_keep/objects/1e/3e67b999db1576ad1ee08bf4f02bdf29e49442 deleted file mode 100644 index 79fcadf67fdecb0f0cffca7ff27b2ae5c031e4d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}k+0V^p=O;s>9W-v4`Ff%bxNXyJgHDIt1vAVM0pVqc_!H3>=F1`6^?^M%U I033l4YT~68jQ{`u diff --git a/test/integration/branchDelete/expected/repo/.git_keep/objects/21/b436d66d2c515ad17285e53d9e6380d599b044 b/test/integration/branchDelete/expected/repo/.git_keep/objects/21/b436d66d2c515ad17285e53d9e6380d599b044 deleted file mode 100644 index db6a55b3b9db8aa6b61463fe6a9c8a50c124a901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmV-+0Ez#20gcT~3c@fDhGEw^#q0%{iDQ01MChu=NSZHLXo!>u9^W3p?aKr2(py^x ziRx+W012*eKF1hKmYa8}2*4p%t!#6tHbSGSHR&^6eWz)r`!qlCP3^tmvh?;KapGN2 Y7nsh%%;u=aWZ+M3>bil=58X~H_!UMxD*ylh diff --git a/test/integration/branchDelete/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da b/test/integration/branchDelete/expected/repo/.git_keep/objects/38/143ad4a0fe2ab6ee53c2ef89a5d9e2bd9535da deleted file mode 100644 index 06c9cb73d7a8ed6841ce407bd6bb15235c8fa15c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb<m^geacKgb|i!&6t!@BtHp>|y2)08mZ`J^%m! diff --git a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/master b/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index cf15cb775..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -21b436d66d2c515ad17285e53d9e6380d599b044 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch b/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch deleted file mode 100644 index cf15cb775..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch +++ /dev/null @@ -1 +0,0 @@ -21b436d66d2c515ad17285e53d9e6380d599b044 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-2 b/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-2 deleted file mode 100644 index cf15cb775..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-2 +++ /dev/null @@ -1 +0,0 @@ -21b436d66d2c515ad17285e53d9e6380d599b044 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-3 b/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-3 deleted file mode 100644 index cf15cb775..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/new-branch-3 +++ /dev/null @@ -1 +0,0 @@ -21b436d66d2c515ad17285e53d9e6380d599b044 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch b/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch deleted file mode 100644 index cf15cb775..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch +++ /dev/null @@ -1 +0,0 @@ -21b436d66d2c515ad17285e53d9e6380d599b044 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch-3 b/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch-3 deleted file mode 100644 index cf15cb775..000000000 --- a/test/integration/branchDelete/expected/repo/.git_keep/refs/heads/old-branch-3 +++ /dev/null @@ -1 +0,0 @@ -21b436d66d2c515ad17285e53d9e6380d599b044 diff --git a/test/integration/branchDelete/expected/repo/file0 b/test/integration/branchDelete/expected/repo/file0 deleted file mode 100644 index 38143ad4a..000000000 --- a/test/integration/branchDelete/expected/repo/file0 +++ /dev/null @@ -1 +0,0 @@ -test0 diff --git a/test/integration/branchDelete/recording.json b/test/integration/branchDelete/recording.json deleted file mode 100644 index e0f28d911..000000000 --- a/test/integration/branchDelete/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":483,"Mod":0,"Key":259,"Ch":0},{"Timestamp":787,"Mod":0,"Key":256,"Ch":100},{"Timestamp":2021,"Mod":0,"Key":27,"Ch":0},{"Timestamp":2436,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2779,"Mod":0,"Key":256,"Ch":100},{"Timestamp":3275,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3971,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/branchDelete/setup.sh b/test/integration/branchDelete/setup.sh deleted file mode 100644 index d67fa9291..000000000 --- a/test/integration/branchDelete/setup.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -set -e - -cd $1 - -git init - -git config user.email "CI@example.com" -git config user.name "CI" - -echo test0 > file0 -git add . -git commit -am file0 - -git checkout -b new-branch -git checkout -b new-branch-2 -git checkout -b new-branch-3 -git checkout -b old-branch -git checkout -b old-branch-2 -git checkout -b old-branch-3 diff --git a/test/integration/branchDelete/test.json b/test/integration/branchDelete/test.json deleted file mode 100644 index fafad1962..000000000 --- a/test/integration/branchDelete/test.json +++ /dev/null @@ -1 +0,0 @@ -{ "description": "Checking out a branch with name suggestions", "speed": 100 } diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/branch/delete/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..907b30816 --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +blah diff --git a/test/integration/branchDelete/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/branch/delete/expected/repo/.git_keep/FETCH_HEAD similarity index 100% rename from test/integration/branchDelete/expected/repo/.git_keep/FETCH_HEAD rename to test/integration_new/branch/delete/expected/repo/.git_keep/FETCH_HEAD diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/HEAD b/test/integration_new/branch/delete/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..62c2c3bd5 --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/branch-two diff --git a/test/integration/branchDelete/expected/repo/.git_keep/config b/test/integration_new/branch/delete/expected/repo/.git_keep/config similarity index 87% rename from test/integration/branchDelete/expected/repo/.git_keep/config rename to test/integration_new/branch/delete/expected/repo/.git_keep/config index 8ae104545..8a748ce32 100644 --- a/test/integration/branchDelete/expected/repo/.git_keep/config +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/config @@ -8,3 +8,5 @@ [user] email = CI@example.com name = CI +[commit] + gpgSign = false diff --git a/test/integration/branchDelete/expected/repo/.git_keep/description b/test/integration_new/branch/delete/expected/repo/.git_keep/description similarity index 100% rename from test/integration/branchDelete/expected/repo/.git_keep/description rename to test/integration_new/branch/delete/expected/repo/.git_keep/description diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/index b/test/integration_new/branch/delete/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..65d675154f23ffb2d0196e017d44a5e7017550f5 GIT binary patch literal 65 zcmZ?q402{*U|<4bhL9jvS0E+HV4z^Y<=qr}%;|LA&IJiiy?<Pr)babBCri;)`-<AO Tl}3xATFuWrGP@z+w&EiIWCj?s literal 0 HcmV?d00001 diff --git a/test/integration/branchDelete/expected/repo/.git_keep/info/exclude b/test/integration_new/branch/delete/expected/repo/.git_keep/info/exclude similarity index 100% rename from test/integration/branchDelete/expected/repo/.git_keep/info/exclude rename to test/integration_new/branch/delete/expected/repo/.git_keep/info/exclude diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/logs/HEAD b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..8cc1747b6 --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 a7222d091ed91af493b7173e4b09dd2de085031d CI <CI@example.com> 1661162427 +1000 commit (initial): blah +a7222d091ed91af493b7173e4b09dd2de085031d a7222d091ed91af493b7173e4b09dd2de085031d CI <CI@example.com> 1661162427 +1000 checkout: moving from master to branch-one +a7222d091ed91af493b7173e4b09dd2de085031d a7222d091ed91af493b7173e4b09dd2de085031d CI <CI@example.com> 1661162427 +1000 checkout: moving from branch-one to branch-two diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-one b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-one new file mode 100644 index 000000000..6de773cbd --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-one @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 a7222d091ed91af493b7173e4b09dd2de085031d CI <CI@example.com> 1661162427 +1000 branch: Created from HEAD diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-two b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-two new file mode 100644 index 000000000..6de773cbd --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/branch-two @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 a7222d091ed91af493b7173e4b09dd2de085031d CI <CI@example.com> 1661162427 +1000 branch: Created from HEAD diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/master b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/master new file mode 100644 index 000000000..608657ff8 --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 a7222d091ed91af493b7173e4b09dd2de085031d CI <CI@example.com> 1661162427 +1000 commit (initial): blah diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/test/integration_new/branch/delete/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 new file mode 100644 index 0000000000000000000000000000000000000000..adf64119a33d7621aeeaa505d30adb58afaa5559 GIT binary patch literal 15 Wcmb<m)YkO!4K+w$VBpeWVgvvgJ_3UP literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/objects/a7/222d091ed91af493b7173e4b09dd2de085031d b/test/integration_new/branch/delete/expected/repo/.git_keep/objects/a7/222d091ed91af493b7173e4b09dd2de085031d new file mode 100644 index 0000000000000000000000000000000000000000..363c8b8582db53d3d5ce032053830fa5aa7ce1a9 GIT binary patch literal 117 zcmV-*0E+*30gcVU3c@f9fML&lirfWBVisEv5q8>RG+oAomCC5#<GV-j`t!kGTCJ}R zB-c~l-9aq!Fc%drrfw;tq7PzAoHcQbi@8fe3Hj64w!=8VeVm^D&Go(crL_70QYBIr XzQLIgF&y=nbpMkF+wvNIt2QgBJdQg8 literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-one b/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-one new file mode 100644 index 000000000..74ab83e50 --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-one @@ -0,0 +1 @@ +a7222d091ed91af493b7173e4b09dd2de085031d diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-two b/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-two new file mode 100644 index 000000000..74ab83e50 --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/branch-two @@ -0,0 +1 @@ +a7222d091ed91af493b7173e4b09dd2de085031d diff --git a/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/master b/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/master new file mode 100644 index 000000000..74ab83e50 --- /dev/null +++ b/test/integration_new/branch/delete/expected/repo/.git_keep/refs/heads/master @@ -0,0 +1 @@ +a7222d091ed91af493b7173e4b09dd2de085031d From 7b757d1cfe88363aa52a660d53838478243eca00 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 22 Aug 2022 20:43:19 +1000 Subject: [PATCH 09/44] add branch rebase integration test --- cmd/integration_test/main.go | 17 +++- pkg/integration/README.md | 6 +- pkg/integration/clients/cli.go | 11 +- pkg/integration/components/shell.go | 16 +++ pkg/integration/tests/branch/rebase.go | 94 ++++++++++++++++++ .../tests/branch/rebase_and_drop.go | 63 ++++++++++++ pkg/integration/tests/tests.go | 2 + .../expected/repo/.git_keep/COMMIT_EDITMSG | 18 ---- .../branchRebase/expected/repo/.git_keep/HEAD | 1 - .../expected/repo/.git_keep/ORIG_HEAD | 1 - .../expected/repo/.git_keep/index | Bin 835 -> 0 bytes .../expected/repo/.git_keep/logs/HEAD | 22 ---- .../repo/.git_keep/logs/refs/heads/develop | 5 - .../repo/.git_keep/logs/refs/heads/master | 6 -- .../09/cbe8c6717c06a61876b7b641a46a62bf3c585d | Bin 112 -> 0 bytes .../18/0cf8328022becee9aaa2577a8f84ea2b9f3827 | Bin 21 -> 0 bytes .../1b/9ae5f5dff631baaa180a30afd9983f83dc27ca | Bin 50 -> 0 bytes .../21/78af7503938665881174069be4d48fa483e4af | Bin 117 -> 0 bytes .../2e/83133d8d6b88c588de66c3ff8405501b5215b4 | Bin 74 -> 0 bytes .../34/c74161eef968fc951cf170a011fa8abfeddbcd | Bin 120 -> 0 bytes .../36/27f93f3cc779dc2f99484fb8ffa49953e43b2f | Bin 121 -> 0 bytes .../3e/1706cdf670f5641be0715178471abfc9ed1748 | 2 - .../42/1b29bba240f23ea39e216bb0873cd4012624b5 | Bin 120 -> 0 bytes .../42/597904331c82f6d5c8c902755c8dfa5767ea95 | Bin 160 -> 0 bytes .../4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 | 1 - .../5d/874a902548f753e50944827e572a7470aa9731 | Bin 107 -> 0 bytes .../5f/3e4598b46a912f0f95a4898743e979343c82f3 | Bin 86 -> 0 bytes .../60/91d709b275e712111d016d9b3a4fb44e63f1f6 | Bin 54 -> 0 bytes .../69/f11ae88c8712fe38ffd0fe9ff9df05371500a6 | Bin 157 -> 0 bytes .../70/95508e3cd0fd40572f8e711170db38ef2342d7 | Bin 160 -> 0 bytes .../7a/45b8933308e43f2597ee5d290862a62a9b46b3 | Bin 111 -> 0 bytes .../88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 | Bin 65 -> 0 bytes .../8c/7a45270a95d66c8e3b843df3f466be5dc19960 | Bin 117 -> 0 bytes .../8d/3bd1cbd5560c759c78a948bc0d24acb9cfae73 | 2 - .../9a/6521a3788b4d9e679b1709130ff8dc3f73ab18 | 3 - .../9d/e8260b738a34a74533df54f2e404276aa96242 | Bin 54 -> 0 bytes .../a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 | Bin 21 -> 0 bytes .../a8/381c9130b03aef530b60b5a4546b93dc59ae12 | 2 - .../cb/289e645aed5251ce74fa2eaf0cd1145b9cb014 | Bin 120 -> 0 bytes .../cc/52f7d833c761b3b11a5fa1ae76ba9aba2edd6f | 6 -- .../dc/d348507ba1da8f6479b9d964daa302b2fb9d9c | 1 - .../df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b | Bin 21 -> 0 bytes .../e3/ae5c6d8407e8307b9bc77923be78c901408f6e | Bin 50 -> 0 bytes .../e4/666ba294866d5c16f9afebcacf8f4adfee7439 | Bin 86 -> 0 bytes .../e9/57aaf2eef0c03a9052b472d4862d9ee684c3e5 | Bin 159 -> 0 bytes .../f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 | Bin 54 -> 0 bytes .../f5/067da83b48f8588edce682fd2715a575f34373 | 4 - .../fe/427b52bbbe9dac81b463a162f37ab979ca772b | Bin 85 -> 0 bytes .../repo/.git_keep/refs/heads/develop | 1 - .../expected/repo/.git_keep/refs/heads/master | 1 - .../branchRebase/expected/repo/directory/file | 1 - .../expected/repo/directory/file2 | 1 - .../branchRebase/expected/repo/file1 | 63 ------------ .../branchRebase/expected/repo/file3 | 1 - .../branchRebase/expected/repo/file4 | 1 - .../branchRebase/expected/repo/file5 | 1 - test/integration/branchRebase/recording.json | 1 - test/integration/branchRebase/setup.sh | 85 ---------------- test/integration/branchRebase/test.json | 1 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../rebase/expected/repo/.git_keep/HEAD | 1 + .../rebase/expected/repo/.git_keep/MERGE_MSG | 4 + .../rebase/expected/repo/.git_keep/ORIG_HEAD | 1 + .../expected/repo/.git_keep/REBASE_HEAD | 1 + .../rebase}/expected/repo/.git_keep/config | 2 + .../expected/repo/.git_keep/description | 0 .../rebase/expected/repo/.git_keep/index | Bin 0 -> 212 bytes .../expected/repo/.git_keep/info/exclude | 0 .../rebase/expected/repo/.git_keep/logs/HEAD | 13 +++ .../logs/refs/heads/first-change-branch | 3 + .../.git_keep/logs/refs/heads/original-branch | 4 + .../logs/refs/heads/second-change-branch | 3 + .../00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 | Bin 0 -> 49 bytes .../02/27353d56e56df9e9f94559f90b86ce7aa1ca5c | 2 + .../11/0d6e0b946c9d9b9b5e44c29d98692e925c368c | Bin 0 -> 48 bytes .../16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 | Bin 0 -> 46 bytes .../1f/332f64cb03c06913491af20cd407158776bd55 | Bin 0 -> 49 bytes .../3a/ac30738b0dda38d964abe6c2386603f9309a65 | Bin 0 -> 43 bytes .../4b/825dc642cb6eb9a060e54bf8d69288fbee4904 | Bin 0 -> 15 bytes .../4c/16472189d1db34cb67b99439725202216e26d9 | Bin 0 -> 41 bytes .../4c/66ef64d685d244db41efda29deffb381c46c3d | Bin 0 -> 148 bytes .../55/13fcfcb56cc5f1de7b6b3ded32a945e94f5e37 | Bin 0 -> 170 bytes .../70/2b646c08ba47b2ac5729deed77188ef1647b4d | 2 + .../ab/1329d5c536f369c741c65fab7cca4ab27dc22e | Bin 0 -> 85 bytes .../b8/27df09781d0648f66cd9a01f0ec0ad5d412e10 | Bin 0 -> 150 bytes .../d7/149d98e6da25303f9a8cdff131da4b0723a412 | Bin 0 -> 147 bytes .../f4/2b6ab94e265acf87a9b3bf8cfa1105fcad57b2 | Bin 0 -> 154 bytes .../.git_keep/refs/heads/first-change-branch | 1 + .../repo/.git_keep/refs/heads/original-branch | 1 + .../.git_keep/refs/heads/second-change-branch | 1 + .../branch/rebase/expected/repo/file | 6 ++ .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../expected/repo/.git_keep/HEAD | 1 + .../expected/repo/.git_keep/ORIG_HEAD | 1 + .../expected/repo/.git_keep/config | 12 +++ .../expected/repo/.git_keep/description | 1 + .../expected/repo/.git_keep/index | Bin 0 -> 212 bytes .../expected/repo/.git_keep/info/exclude | 7 ++ .../expected/repo/.git_keep/logs/HEAD | 16 +++ .../logs/refs/heads/first-change-branch | 5 + .../.git_keep/logs/refs/heads/original-branch | 4 + .../logs/refs/heads/second-change-branch | 3 + .../00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 | Bin 0 -> 49 bytes .../11/0d6e0b946c9d9b9b5e44c29d98692e925c368c | Bin 0 -> 48 bytes .../16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 | Bin 0 -> 46 bytes .../1f/332f64cb03c06913491af20cd407158776bd55 | Bin 0 -> 49 bytes .../32/28c73cfc742264f3101966a81d6a0a70488e36 | Bin 0 -> 167 bytes .../39/129f24587bdc648e1fdb6f0b089c0846f54d45 | 2 + .../3a/ac30738b0dda38d964abe6c2386603f9309a65 | Bin 0 -> 43 bytes .../3f/c37a0e51435e01769aa25e6fe7179add2642a6 | Bin 0 -> 154 bytes .../4b/825dc642cb6eb9a060e54bf8d69288fbee4904 | Bin 0 -> 15 bytes .../4c/16472189d1db34cb67b99439725202216e26d9 | Bin 0 -> 41 bytes .../55/87edfe46cfc076fb9ff4db76d196965838669a | 2 + .../7b/e86fe92edea93469924da2c241943adddd27cc | Bin 0 -> 85 bytes .../7c/0af051757503c84800076fd34851ea8b81e415 | Bin 0 -> 147 bytes .../99/a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 | Bin 0 -> 152 bytes .../9d/068e4adf5b237e3f3abe9ce38cfd996cce75dc | Bin 0 -> 146 bytes .../ab/5816052b05d45683d9fd3aa85203995b66cd65 | Bin 0 -> 117 bytes .../b5/6a14235fe8b10e5cca38d8b8009899d60b6499 | Bin 0 -> 149 bytes .../c0/66f8c513a34cd0c63e54c3b418a50491686cff | Bin 0 -> 151 bytes .../.git_keep/refs/heads/first-change-branch | 1 + .../repo/.git_keep/refs/heads/original-branch | 1 + .../.git_keep/refs/heads/second-change-branch | 1 + .../branch/rebase_and_drop/expected/repo/file | 6 ++ 126 files changed, 309 insertions(+), 241 deletions(-) create mode 100644 pkg/integration/tests/branch/rebase.go create mode 100644 pkg/integration/tests/branch/rebase_and_drop.go delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/ORIG_HEAD delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/index delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/develop delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/2e/83133d8d6b88c588de66c3ff8405501b5215b4 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/36/27f93f3cc779dc2f99484fb8ffa49953e43b2f delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/3e/1706cdf670f5641be0715178471abfc9ed1748 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/42/1b29bba240f23ea39e216bb0873cd4012624b5 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/42/597904331c82f6d5c8c902755c8dfa5767ea95 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/5d/874a902548f753e50944827e572a7470aa9731 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/69/f11ae88c8712fe38ffd0fe9ff9df05371500a6 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/70/95508e3cd0fd40572f8e711170db38ef2342d7 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/7a/45b8933308e43f2597ee5d290862a62a9b46b3 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/8c/7a45270a95d66c8e3b843df3f466be5dc19960 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/8d/3bd1cbd5560c759c78a948bc0d24acb9cfae73 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/9a/6521a3788b4d9e679b1709130ff8dc3f73ab18 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/a8/381c9130b03aef530b60b5a4546b93dc59ae12 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/cb/289e645aed5251ce74fa2eaf0cd1145b9cb014 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/cc/52f7d833c761b3b11a5fa1ae76ba9aba2edd6f delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/e9/57aaf2eef0c03a9052b472d4862d9ee684c3e5 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/f5/067da83b48f8588edce682fd2715a575f34373 delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/objects/fe/427b52bbbe9dac81b463a162f37ab979ca772b delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/refs/heads/develop delete mode 100644 test/integration/branchRebase/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/branchRebase/expected/repo/directory/file delete mode 100644 test/integration/branchRebase/expected/repo/directory/file2 delete mode 100644 test/integration/branchRebase/expected/repo/file1 delete mode 100644 test/integration/branchRebase/expected/repo/file3 delete mode 100644 test/integration/branchRebase/expected/repo/file4 delete mode 100644 test/integration/branchRebase/expected/repo/file5 delete mode 100644 test/integration/branchRebase/recording.json delete mode 100644 test/integration/branchRebase/setup.sh delete mode 100644 test/integration/branchRebase/test.json create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/COMMIT_EDITMSG rename test/{integration/branchRebase => integration_new/branch/rebase}/expected/repo/.git_keep/FETCH_HEAD (100%) create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/HEAD create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/MERGE_MSG create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/ORIG_HEAD create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/REBASE_HEAD rename test/{integration/branchRebase => integration_new/branch/rebase}/expected/repo/.git_keep/config (87%) rename test/{integration/branchRebase => integration_new/branch/rebase}/expected/repo/.git_keep/description (100%) create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/index rename test/{integration/branchRebase => integration_new/branch/rebase}/expected/repo/.git_keep/info/exclude (100%) create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/first-change-branch create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/original-branch create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/second-change-branch create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/02/27353d56e56df9e9f94559f90b86ce7aa1ca5c create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4c/66ef64d685d244db41efda29deffb381c46c3d create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/55/13fcfcb56cc5f1de7b6b3ded32a945e94f5e37 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/70/2b646c08ba47b2ac5729deed77188ef1647b4d create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/ab/1329d5c536f369c741c65fab7cca4ab27dc22e create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/b8/27df09781d0648f66cd9a01f0ec0ad5d412e10 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/d7/149d98e6da25303f9a8cdff131da4b0723a412 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/objects/f4/2b6ab94e265acf87a9b3bf8cfa1105fcad57b2 create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/first-change-branch create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/original-branch create mode 100644 test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/second-change-branch create mode 100644 test/integration_new/branch/rebase/expected/repo/file create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/COMMIT_EDITMSG create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/FETCH_HEAD create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/HEAD create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/ORIG_HEAD create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/config create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/description create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/index create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/info/exclude create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/first-change-branch create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/original-branch create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/second-change-branch create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/32/28c73cfc742264f3101966a81d6a0a70488e36 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/39/129f24587bdc648e1fdb6f0b089c0846f54d45 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/3f/c37a0e51435e01769aa25e6fe7179add2642a6 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/55/87edfe46cfc076fb9ff4db76d196965838669a create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/7b/e86fe92edea93469924da2c241943adddd27cc create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/7c/0af051757503c84800076fd34851ea8b81e415 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/99/a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/9d/068e4adf5b237e3f3abe9ce38cfd996cce75dc create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/ab/5816052b05d45683d9fd3aa85203995b66cd65 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/b5/6a14235fe8b10e5cca38d8b8009899d60b6499 create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/c0/66f8c513a34cd0c63e54c3b418a50491686cff create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/first-change-branch create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/original-branch create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/second-change-branch create mode 100644 test/integration_new/branch/rebase_and_drop/expected/repo/file diff --git a/cmd/integration_test/main.go b/cmd/integration_test/main.go index 83321fc34..dc0cede86 100644 --- a/cmd/integration_test/main.go +++ b/cmd/integration_test/main.go @@ -13,7 +13,7 @@ Usage: See https://github.com/jesseduffield/lazygit/tree/master/pkg/integration/README.md CLI mode: - > go run cmd/integration_test/main.go cli [--slow] <test1> <test2> ... + > go run cmd/integration_test/main.go cli [--slow] [--sandbox] <test1> <test2> ... If you pass no test names, it runs all tests Accepted environment variables: KEY_PRESS_DELAY (e.g. 200): the number of milliseconds to wait between keypresses @@ -42,12 +42,19 @@ func main() { case "cli": testNames := os.Args[2:] slow := false + sandbox := false // get the next arg if it's --slow - if len(os.Args) > 2 && (os.Args[2] == "--slow" || os.Args[2] == "-slow") { - testNames = os.Args[3:] - slow = true + if len(os.Args) > 2 { + if os.Args[2] == "--slow" || os.Args[2] == "-slow" { + testNames = os.Args[3:] + slow = true + } else if os.Args[2] == "--sandbox" || os.Args[2] == "-sandbox" { + testNames = os.Args[3:] + sandbox = true + } } - clients.RunCLI(testNames, slow) + + clients.RunCLI(testNames, slow, sandbox) case "tui": clients.RunTUI() default: diff --git a/pkg/integration/README.md b/pkg/integration/README.md index 916149cea..4b745895a 100644 --- a/pkg/integration/README.md +++ b/pkg/integration/README.md @@ -11,7 +11,7 @@ go run cmd/integration_test/main.go tui or ```sh -go run cmd/integration_test/main.go cli [--slow] [testname or testpath...] +go run cmd/integration_test/main.go cli [--slow or --sandbox] [testname or testpath...] ``` ## Writing tests @@ -49,7 +49,7 @@ If you find yourself doing something frequently in a test, consider making it a There are three ways to invoke a test: -1. go run cmd/integration_test/main.go cli [--slow] [testname or testpath...] +1. go run cmd/integration_test/main.go cli [--slow or --sandbox] [testname or testpath...] 2. go run cmd/integration_test/main.go tui 3. go test pkg/integration/clients/go_test.go @@ -69,7 +69,7 @@ At the moment (this is subject to change) each test has a snapshot repo created Say you want to do a manual test of how lazygit handles merge-conflicts, but you can't be bothered actually finding a way to create merge conflicts in a repo. To make your life easier, you can simply run a merge-conflicts test in sandbox mode, meaning the setup step is run for you, and then instead of the test driving the lazygit session, you're allowed to drive it yourself. -To run a test in sandbox mode you can press 's' on a test in the test TUI or pass the env var MODE=sandbox to the test runner. +To run a test in sandbox mode you can press 's' on a test in the test TUI or in the test runner pass MODE=sandbox or the --sandbox argument. ## Migration process diff --git a/pkg/integration/clients/cli.go b/pkg/integration/clients/cli.go index 17c379c85..0222bd129 100644 --- a/pkg/integration/clients/cli.go +++ b/pkg/integration/clients/cli.go @@ -23,18 +23,25 @@ import ( // If invoked directly, you can specify tests to run by passing their names as positional arguments -func RunCLI(testNames []string, slow bool) { +func RunCLI(testNames []string, slow bool, sandbox bool) { keyPressDelay := tryConvert(os.Getenv("KEY_PRESS_DELAY"), 0) if slow { keyPressDelay = SLOW_KEY_PRESS_DELAY } + var mode components.Mode + if sandbox { + mode = components.SANDBOX + } else { + mode = getModeFromEnv() + } + err := components.RunTests( getTestsToRun(testNames), log.Printf, runCmdInTerminal, runAndPrintFatalError, - getModeFromEnv(), + mode, keyPressDelay, ) if err != nil { diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index 7b7a68543..b49921348 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -40,6 +40,15 @@ func (s *Shell) CreateFile(path string, content string) *Shell { return s } +func (s *Shell) UpdateFile(path string, content string) *Shell { + err := ioutil.WriteFile(path, []byte(content), 0o644) + if err != nil { + panic(fmt.Sprintf("error updating file: %s\n%s", path, err)) + } + + return s +} + func (s *Shell) NewBranch(name string) *Shell { return s.RunCommand("git checkout -b " + name) } @@ -71,6 +80,13 @@ func (s *Shell) CreateFileAndAdd(fileName string, fileContents string) *Shell { GitAdd(fileName) } +// convenience method for updating a file and adding it +func (s *Shell) UpdateFileAndAdd(fileName string, fileContents string) *Shell { + return s. + UpdateFile(fileName, fileContents). + GitAdd(fileName) +} + // creates commits 01, 02, 03, ..., n with a new file in each // The reason for padding with zeroes is so that it's easier to do string // matches on the commit messages when there are many of them diff --git a/pkg/integration/tests/branch/rebase.go b/pkg/integration/tests/branch/rebase.go new file mode 100644 index 000000000..eda7567e7 --- /dev/null +++ b/pkg/integration/tests/branch/rebase.go @@ -0,0 +1,94 @@ +package branch + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var originalFileContent = ` +This +Is +The +Original +File +` + +var firstChangeFileContent = ` +This +Is +The +First Change +File +` + +var secondChangeFileContent = ` +This +Is +The +Second Change +File +` + +// prepares us for a rebase that has conflicts +var commonRebaseSetup = func(shell *Shell) { + shell. + NewBranch("original-branch"). + EmptyCommit("one"). + EmptyCommit("two"). + EmptyCommit("three"). + CreateFileAndAdd("file", originalFileContent). + Commit("original"). + NewBranch("first-change-branch"). + UpdateFileAndAdd("file", firstChangeFileContent). + Commit("first change"). + Checkout("original-branch"). + NewBranch("second-change-branch"). + UpdateFileAndAdd("file", secondChangeFileContent). + Commit("second change"). + EmptyCommit("second-change-branch unrelated change"). + Checkout("first-change-branch") +} + +var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Rebase onto another branch, deal with the conflicts.", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + commonRebaseSetup(shell) + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + input.SwitchToBranchesWindow() + assert.CurrentViewName("localBranches") + + assert.MatchSelectedLine(Contains("first-change-branch")) + input.NextItem() + assert.MatchSelectedLine(Contains("second-change-branch")) + input.PressKeys(keys.Branches.RebaseBranch) + + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("Are you sure you want to rebase 'first-change-branch' onto 'second-change-branch'?")) + input.Confirm() + + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("Conflicts!")) + input.Confirm() + + assert.CurrentViewName("files") + assert.MatchSelectedLine(Contains("file")) + + // not using Confirm() convenience method because I suspect we might change this + // keybinding to something more bespoke + input.PressKeys(keys.Universal.Confirm) + + assert.CurrentViewName("mergeConflicts") + input.PrimaryAction() + + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("all merge conflicts resolved. Continue?")) + input.Confirm() + + // this proves we actually have integrated the changes from second-change-branch + assert.MatchViewContent("commits", Contains("second-change-branch unrelated change")) + }, +}) diff --git a/pkg/integration/tests/branch/rebase_and_drop.go b/pkg/integration/tests/branch/rebase_and_drop.go new file mode 100644 index 000000000..18ffdd820 --- /dev/null +++ b/pkg/integration/tests/branch/rebase_and_drop.go @@ -0,0 +1,63 @@ +package branch + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Rebase onto another branch, deal with the conflicts. Also mark a commit to be dropped before continuing.", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + commonRebaseSetup(shell) + // addin a couple additional commits so that we can drop one + shell.EmptyCommit("to drop") + shell.EmptyCommit("to keep") + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + input.SwitchToBranchesWindow() + assert.CurrentViewName("localBranches") + + assert.MatchSelectedLine(Contains("first-change-branch")) + input.NextItem() + assert.MatchSelectedLine(Contains("second-change-branch")) + input.PressKeys(keys.Branches.RebaseBranch) + + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("Are you sure you want to rebase 'first-change-branch' onto 'second-change-branch'?")) + input.Confirm() + + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("Conflicts!")) + input.Confirm() + + assert.CurrentViewName("files") + assert.MatchSelectedLine(Contains("file")) + + input.SwitchToCommitsWindow() + input.NextItem() + input.PressKeys(keys.Universal.Remove) + assert.MatchSelectedLine(Contains("to drop")) + assert.MatchSelectedLine(Contains("drop")) + + input.SwitchToFilesWindow() + + // not using Confirm() convenience method because I suspect we might change this + // keybinding to something more bespoke + input.PressKeys(keys.Universal.Confirm) + + assert.CurrentViewName("mergeConflicts") + input.PrimaryAction() + + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("all merge conflicts resolved. Continue?")) + input.Confirm() + + // this proves we actually have integrated the changes from second-change-branch + assert.MatchViewContent("commits", Contains("second-change-branch unrelated change")) + assert.MatchViewContent("commits", Contains("to keep")) + assert.MatchViewContent("commits", NotContains("to drop")) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index 88f6b40da..0721fbf17 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -25,6 +25,8 @@ var tests = []*components.IntegrationTest{ commit.NewBranch, branch.Suggestions, branch.Delete, + branch.Rebase, + branch.RebaseAndDrop, interactive_rebase.One, custom_commands.Basic, custom_commands.MultiplePrompts, diff --git a/test/integration/branchRebase/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/branchRebase/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index 42bf03720..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1,18 +0,0 @@ -first commit on master - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# -# interactive rebase in progress; onto e957aaf -# Last command done (1 command done): -# pick 69f11ae first commit on master -# Next commands to do (3 remaining commands): -# drop 8d3bd1c second commit on master -# drop 3e1706c third commit on master -# You are currently rebasing branch 'master' on 'e957aaf'. -# -# Changes to be committed: -# modified: directory/file -# modified: directory/file2 -# modified: file1 -# diff --git a/test/integration/branchRebase/expected/repo/.git_keep/HEAD b/test/integration/branchRebase/expected/repo/.git_keep/HEAD deleted file mode 100644 index cb089cd89..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/master diff --git a/test/integration/branchRebase/expected/repo/.git_keep/ORIG_HEAD b/test/integration/branchRebase/expected/repo/.git_keep/ORIG_HEAD deleted file mode 100644 index 28cab2e49..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/ORIG_HEAD +++ /dev/null @@ -1 +0,0 @@ -69f11ae88c8712fe38ffd0fe9ff9df05371500a6 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/index b/test/integration/branchRebase/expected/repo/.git_keep/index deleted file mode 100644 index 12d7435870d424e61c2a979e02a8af94870c5210..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 835 zcmZ?q402{*U|<4bw#1J@3R3NvD?qfQddfpa1_o9p%^BYr7#f!_Ffe`vsu2OHyPwUg zeWvW$8~#%YhtvhU{55tRk!Ija$t+4uF3B&d)KAOINd>B70GT8G`Gq9d+==d-Q1gBe zWgb7Oc}7t4WHT)<fzAEv!vr<&C#rdjIkD|t6I4CE2S4R>X{rm?Dk)es-H?G5<SIju zv%v0>dpHwJ%N7_egPQXT)f@(8=~+*|-v4H}Yn23-!TOss?3?eXpMscU3^zx?VR<9S zJ#ud@%!iuun|O0f;N~dq5fA{Gqu^ux6>82O;>|Gyn-db`>I!67GngqDaydzB?q1~Z z$!_sH#q163Hdh$cRJOu{l)*^Bfa~-3r1dVE>pFk&uCwKe4&YfRW^g3PH58Z}7$x8; zA(3flU|?oq!hlLG-ShabYU+(I5us5$`A!!Cyjr@iO7Q$JYEasD?&YdQ;Z^-Due9e| zsAEemsOB4?nGCgu5(^-)jp|@1ujBBXJDMk_{&={|=B&r_-PdmB?AYPo@P?<F^WEzR zULMIQCFKXSPxPqXx$F^8z3^6lO6AU*DYq6gZTdZT&Kl8JmpyN1yxpOhq$i;m_}2H> G^c4VB(IfHz diff --git a/test/integration/branchRebase/expected/repo/.git_keep/logs/HEAD b/test/integration/branchRebase/expected/repo/.git_keep/logs/HEAD deleted file mode 100644 index e4a5b4d7a..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/logs/HEAD +++ /dev/null @@ -1,22 +0,0 @@ -0000000000000000000000000000000000000000 3627f93f3cc779dc2f99484fb8ffa49953e43b2f CI <CI@example.com> 1643188754 +1100 commit (initial): first commit -3627f93f3cc779dc2f99484fb8ffa49953e43b2f 3627f93f3cc779dc2f99484fb8ffa49953e43b2f CI <CI@example.com> 1643188754 +1100 checkout: moving from master to develop -3627f93f3cc779dc2f99484fb8ffa49953e43b2f 9a6521a3788b4d9e679b1709130ff8dc3f73ab18 CI <CI@example.com> 1643188754 +1100 commit: first commit on develop -9a6521a3788b4d9e679b1709130ff8dc3f73ab18 3627f93f3cc779dc2f99484fb8ffa49953e43b2f CI <CI@example.com> 1643188754 +1100 checkout: moving from develop to master -3627f93f3cc779dc2f99484fb8ffa49953e43b2f 69f11ae88c8712fe38ffd0fe9ff9df05371500a6 CI <CI@example.com> 1643188754 +1100 commit: first commit on master -69f11ae88c8712fe38ffd0fe9ff9df05371500a6 9a6521a3788b4d9e679b1709130ff8dc3f73ab18 CI <CI@example.com> 1643188754 +1100 checkout: moving from master to develop -9a6521a3788b4d9e679b1709130ff8dc3f73ab18 a8381c9130b03aef530b60b5a4546b93dc59ae12 CI <CI@example.com> 1643188754 +1100 commit: second commit on develop -a8381c9130b03aef530b60b5a4546b93dc59ae12 69f11ae88c8712fe38ffd0fe9ff9df05371500a6 CI <CI@example.com> 1643188754 +1100 checkout: moving from develop to master -69f11ae88c8712fe38ffd0fe9ff9df05371500a6 8d3bd1cbd5560c759c78a948bc0d24acb9cfae73 CI <CI@example.com> 1643188754 +1100 commit: second commit on master -8d3bd1cbd5560c759c78a948bc0d24acb9cfae73 a8381c9130b03aef530b60b5a4546b93dc59ae12 CI <CI@example.com> 1643188754 +1100 checkout: moving from master to develop -a8381c9130b03aef530b60b5a4546b93dc59ae12 7095508e3cd0fd40572f8e711170db38ef2342d7 CI <CI@example.com> 1643188754 +1100 commit: third commit on develop -7095508e3cd0fd40572f8e711170db38ef2342d7 8d3bd1cbd5560c759c78a948bc0d24acb9cfae73 CI <CI@example.com> 1643188754 +1100 checkout: moving from develop to master -8d3bd1cbd5560c759c78a948bc0d24acb9cfae73 3e1706cdf670f5641be0715178471abfc9ed1748 CI <CI@example.com> 1643188754 +1100 commit: third commit on master -3e1706cdf670f5641be0715178471abfc9ed1748 7095508e3cd0fd40572f8e711170db38ef2342d7 CI <CI@example.com> 1643188754 +1100 checkout: moving from master to develop -7095508e3cd0fd40572f8e711170db38ef2342d7 e957aaf2eef0c03a9052b472d4862d9ee684c3e5 CI <CI@example.com> 1643188754 +1100 commit: fourth commit on develop -e957aaf2eef0c03a9052b472d4862d9ee684c3e5 3e1706cdf670f5641be0715178471abfc9ed1748 CI <CI@example.com> 1643188754 +1100 checkout: moving from develop to master -3e1706cdf670f5641be0715178471abfc9ed1748 f5067da83b48f8588edce682fd2715a575f34373 CI <CI@example.com> 1643188754 +1100 commit: fourth commit on master -f5067da83b48f8588edce682fd2715a575f34373 e957aaf2eef0c03a9052b472d4862d9ee684c3e5 CI <CI@example.com> 1643188756 +1100 rebase -i (start): checkout develop -e957aaf2eef0c03a9052b472d4862d9ee684c3e5 f5067da83b48f8588edce682fd2715a575f34373 CI <CI@example.com> 1643188757 +1100 rebase -i (abort): updating HEAD -f5067da83b48f8588edce682fd2715a575f34373 e957aaf2eef0c03a9052b472d4862d9ee684c3e5 CI <CI@example.com> 1643188758 +1100 rebase -i (start): checkout develop -e957aaf2eef0c03a9052b472d4862d9ee684c3e5 42597904331c82f6d5c8c902755c8dfa5767ea95 CI <CI@example.com> 1643188766 +1100 rebase -i (continue): first commit on master -42597904331c82f6d5c8c902755c8dfa5767ea95 42597904331c82f6d5c8c902755c8dfa5767ea95 CI <CI@example.com> 1643188766 +1100 rebase -i (finish): returning to refs/heads/master diff --git a/test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/develop b/test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/develop deleted file mode 100644 index 06dc78ae9..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/develop +++ /dev/null @@ -1,5 +0,0 @@ -0000000000000000000000000000000000000000 3627f93f3cc779dc2f99484fb8ffa49953e43b2f CI <CI@example.com> 1643188754 +1100 branch: Created from HEAD -3627f93f3cc779dc2f99484fb8ffa49953e43b2f 9a6521a3788b4d9e679b1709130ff8dc3f73ab18 CI <CI@example.com> 1643188754 +1100 commit: first commit on develop -9a6521a3788b4d9e679b1709130ff8dc3f73ab18 a8381c9130b03aef530b60b5a4546b93dc59ae12 CI <CI@example.com> 1643188754 +1100 commit: second commit on develop -a8381c9130b03aef530b60b5a4546b93dc59ae12 7095508e3cd0fd40572f8e711170db38ef2342d7 CI <CI@example.com> 1643188754 +1100 commit: third commit on develop -7095508e3cd0fd40572f8e711170db38ef2342d7 e957aaf2eef0c03a9052b472d4862d9ee684c3e5 CI <CI@example.com> 1643188754 +1100 commit: fourth commit on develop diff --git a/test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 1856f13e4..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1,6 +0,0 @@ -0000000000000000000000000000000000000000 3627f93f3cc779dc2f99484fb8ffa49953e43b2f CI <CI@example.com> 1643188754 +1100 commit (initial): first commit -3627f93f3cc779dc2f99484fb8ffa49953e43b2f 69f11ae88c8712fe38ffd0fe9ff9df05371500a6 CI <CI@example.com> 1643188754 +1100 commit: first commit on master -69f11ae88c8712fe38ffd0fe9ff9df05371500a6 8d3bd1cbd5560c759c78a948bc0d24acb9cfae73 CI <CI@example.com> 1643188754 +1100 commit: second commit on master -8d3bd1cbd5560c759c78a948bc0d24acb9cfae73 3e1706cdf670f5641be0715178471abfc9ed1748 CI <CI@example.com> 1643188754 +1100 commit: third commit on master -3e1706cdf670f5641be0715178471abfc9ed1748 f5067da83b48f8588edce682fd2715a575f34373 CI <CI@example.com> 1643188754 +1100 commit: fourth commit on master -f5067da83b48f8588edce682fd2715a575f34373 42597904331c82f6d5c8c902755c8dfa5767ea95 CI <CI@example.com> 1643188766 +1100 rebase -i (finish): refs/heads/master onto e957aaf2eef0c03a9052b472d4862d9ee684c3e5 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d b/test/integration/branchRebase/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d deleted file mode 100644 index 8d42c4c9e2f8c317030a30193aef9945f0c8afa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmV-$0FVE80V^p=O;s>7Fk&z<00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Y4mpuZi7vAbmsoZ%p<<?@RO~2>PK~iAM@OWKJZVUShgX-DG SE0y<EoMd$9&jSDutt>;F6gC_H diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 b/test/integration/branchRebase/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 deleted file mode 100644 index f74bf2335bbc5999ad0faff94fb04165d8ab5c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb<m^geacKgb|i!&6t!@DUS(>~ZE#08nZNMgRZ+ diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca b/test/integration/branchRebase/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca deleted file mode 100644 index 2b02dc3d14b4aef3343737214a03a09457e21e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb<m^geacKghr=^~8B^zfcX`6X%0HLNrdE@eS2D>7nZts^PE0#`Wacbg|_{j0{$> Gd}ROuKoaKw diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af b/test/integration/branchRebase/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af deleted file mode 100644 index 27c11bb26067e0a43b68d14777da3f61ddfcceac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmV-*0E+*30V^p=O;s>7Hf1m|00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Y4mpuZi7vAbmsoZ%p<<?@RO~2>PK~iAM@OWKJZVUShgX-DG XE0y<EoMd$9&qGpRf>i+kh=VyFxv@AV diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/2e/83133d8d6b88c588de66c3ff8405501b5215b4 b/test/integration/branchRebase/expected/repo/.git_keep/objects/2e/83133d8d6b88c588de66c3ff8405501b5215b4 deleted file mode 100644 index 7cc212f4ecbf69faeec76ef317216317aa8802b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74 zcmV-Q0JZ;k0ZYosPf{>9Ww3z&1rJw87p{`j;u0e+TL=L2jJfO}K*7v1&CoD0RZmY( gAuY40xI`g2KQ}kCL?J&<AvdwOB(;bO0HSRdw=dotS^xk5 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd b/test/integration/branchRebase/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd deleted file mode 100644 index e8d63bced5a790cf612ba77d98cf03e888d91233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmV-;0Ehp00V^p=O;s>7vtTeW00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Y4mpuZi7vAbmsoZ%p<<?@RO~2>PK~iAM@OWKJZVUShgX-DG aE0y<EoMd$9&qGpRLP&urRs{g5uSNWs5ju+i diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/36/27f93f3cc779dc2f99484fb8ffa49953e43b2f b/test/integration/branchRebase/expected/repo/.git_keep/objects/36/27f93f3cc779dc2f99484fb8ffa49953e43b2f deleted file mode 100644 index cd608da68f4183b059da2a0b2367c3ab4e469b4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmV-<0EYi~0ga783c@fD06pgwdl#hJZng=C2tD-~+jJKThDc1o=UeatUWXYbm7KQ* z=<(F5Dkw4YB7LO5y!wP}QB0R4$%2urraICPo$T#VDoit6r}?fQ$*-qgQpq<!rU643 bJ;52V>)b()Nz*@dXIp(Y_*L!;cu_CK&0aUq diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/3e/1706cdf670f5641be0715178471abfc9ed1748 b/test/integration/branchRebase/expected/repo/.git_keep/objects/3e/1706cdf670f5641be0715178471abfc9ed1748 deleted file mode 100644 index fcb375444..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/3e/1706cdf670f5641be0715178471abfc9ed1748 +++ /dev/null @@ -1,2 +0,0 @@ -x��A -�0�a�9��I�I2��c�Li��R#x|^������V��a���wL ���6Z��P����HV�g��.�Tl*&���9���R�e@�)�%X�ᄡ� ��t���!��� �Gk��C8��:��T�?su/�SОP�u`�.�?� \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/42/1b29bba240f23ea39e216bb0873cd4012624b5 b/test/integration/branchRebase/expected/repo/.git_keep/objects/42/1b29bba240f23ea39e216bb0873cd4012624b5 deleted file mode 100644 index 6ad1bf9cd75b1cd31f6c5468ced101f2724b08d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmV-;0Ehp00V^p=O;s>7vtTeW00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Z?cCQJl9^ZqXa=J9tg=>`*teS3!q`;U#de+mg_rDqLS|!0{ au>R%@`{q09r;rqw5K>@@RRI9XC`L=mVLLSd diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/42/597904331c82f6d5c8c902755c8dfa5767ea95 b/test/integration/branchRebase/expected/repo/.git_keep/objects/42/597904331c82f6d5c8c902755c8dfa5767ea95 deleted file mode 100644 index 1c62a22417fe7847281aa92803041b707346a5e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK%j0ey}^3c@fD06pgwdlzK0*`x`G2tD-~n{<l>(@Krt^DXGv>o5aT)>`KV zgz3;WRbaB2QqDq*6FC)^lx)ZuW9Q1qXekh9ZyvJg(m<2%L?%+5u%MHKo-%hdatt&k z)eyNj^+sOpwr<c5aPEhzzNJ3ydMazZfDP<yjGbpVT8n6Qx=%IzuZQr{%`|V%2Hy(S O1*$yv*n9v!uRqBo989+W diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 b/test/integration/branchRebase/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 deleted file mode 100644 index e0670d284..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 +++ /dev/null @@ -1 +0,0 @@ -x�� �0C�v�L��\�j�VО�W��=�������M<�i�f.���PU�M�HT�3T�`Q���9�"�^��h�d[�����i+B��;�~�/ Y:/��<P� \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/5d/874a902548f753e50944827e572a7470aa9731 b/test/integration/branchRebase/expected/repo/.git_keep/objects/5d/874a902548f753e50944827e572a7470aa9731 deleted file mode 100644 index 9633a40775d6137b880c8529d1f629282e258ea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmV-x0F?iD0p*a<34kyVL;da)nV>(4Gq}dp9<87~X|IUedoJJteuO~6%SXa40pmOk z3s=V0KxiuUhGtS^Y6#2)Dtol3O3%rhL5Z7_vNHN9#VFklej8i4j3TV0&U^nWeH~Kd NeFssJdjPfiP{E>uGQ<D? diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 b/test/integration/branchRebase/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 deleted file mode 100644 index 27ac61738744e4923b0d928f7521dd5707074712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmV-c0IC0Y0V^p=O;s?nWH2!R0)>>!qSWM){Gv*R&)<{QyJ)WK{KdP@mMc1dXQ7zE s5kmt5GZPbqw9K4TLxww-Jp!s1-s(@O+<7zQ)?%hjzvs>Y05^djO6CqI%>V!Z diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 b/test/integration/branchRebase/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 deleted file mode 100644 index bfb5376c67ba79deb64b9463958ebd99b0ed9f64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlM&0V^p=O;s>6WiT`_Ff%bxNXyJgWmvlB@n6-{8($(qqj>V2E(CbBbYDf1 MH^Qm_0Pdw7o*~;6`~Uy| diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/69/f11ae88c8712fe38ffd0fe9ff9df05371500a6 b/test/integration/branchRebase/expected/repo/.git_keep/objects/69/f11ae88c8712fe38ffd0fe9ff9df05371500a6 deleted file mode 100644 index 71f3f42ac0e10791c292c17373fd390595618d79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmV;O0Al}m0gaA93c@fDMP26<vlk@EOqvXc2wn9UY0O~3v?Yz;@eOzZw~zlmFKwkP z4Xox<t2u)c%;Y%CG(<L5w6Kd5IC#R$o{=yGE2#EZ^V$Fh>xEG;CGYu>tT0m`nS)3q zX4mg<wxZ&@J+}(u1lMu8=T9vAD__!9ZeRvN6M}aHXJfQho%X1f|C}pX>e1k5!L~w) LN0-$X`5ixS{X|NQ diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/70/95508e3cd0fd40572f8e711170db38ef2342d7 b/test/integration/branchRebase/expected/repo/.git_keep/objects/70/95508e3cd0fd40572f8e711170db38ef2342d7 deleted file mode 100644 index 7d14e4e29bf0883a5c0214316b7aab8b139f96da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK%j0gaAH3d1lE1asCa<{k($)?x`l2>9e@Xc=RJWf`G_JU@bbAh)KeE;^Q+ zw*~{@rB!CIar8<LBYLNkG10ONR>`!;MHv%Vr%28j6sNCzH1JkhijE`(l%5yegTbJ? zM48}ZirRUmLHJi&OND8M`!qlK<MX-mEtdQMGD?!QqgHSwLKMC2ryBo>i?(hx!EXiS OfW&X!%PGEZbwB(FR!gJ+ diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/7a/45b8933308e43f2597ee5d290862a62a9b46b3 b/test/integration/branchRebase/expected/repo/.git_keep/objects/7a/45b8933308e43f2597ee5d290862a62a9b46b3 deleted file mode 100644 index f6a9427bc10feda765a6bce02de0a2d2eb0977d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 111 zcmV-#0FeK90V^p=O;s>7Fk&z<00M=S%%arflKi4dhPf})xQn|?mb)6?5Bc<jMLla} zl9Qo<ftiVkLRw}{sv(1a!yBGz&UddPczGnJl$0OPKGCC!q`;U#de+mg_rDqLS|!0{ Ru>R%@`{q09rvP{yDhp2XHkSYZ diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 b/test/integration/branchRebase/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 deleted file mode 100644 index ea7fa53039077c16fa43ab0244a322d4d24fe9f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmb<m^geacKghr|>4S%^SLg|yFpm%oy_5Q@LNrc#=mehd019~do(<MGdES$eOZ4gV Vv?a_hLt2k~xss&Ekdh(N4**9y8ax01 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/8c/7a45270a95d66c8e3b843df3f466be5dc19960 b/test/integration/branchRebase/expected/repo/.git_keep/objects/8c/7a45270a95d66c8e3b843df3f466be5dc19960 deleted file mode 100644 index f502f942fc9df60df6dc206fe1d997c69219efbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmV-*0E+*30V^p=O;s>7Hf1m|00M=S%%arflKi4dhPf})xQn|?mb)6?5Bc<jMLla} zl9Qo<ftiVkLRw}{sv(1a!yBGz&UddPczGnJl$0OPKGCC!q`;U#de+mg_rDqLS|!0{ Xu>R%@`{q09r;rqwU{wGBvMe|*sF*nn diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/8d/3bd1cbd5560c759c78a948bc0d24acb9cfae73 b/test/integration/branchRebase/expected/repo/.git_keep/objects/8d/3bd1cbd5560c759c78a948bc0d24acb9cfae73 deleted file mode 100644 index 5083d8258..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/8d/3bd1cbd5560c759c78a948bc0d24acb9cfae73 +++ /dev/null @@ -1,2 +0,0 @@ -x��M -�0F]��d���D��z�$�A�4����-x���=�r-�٠#<�Mp�I8�@!���8����1��}v�f��M�~P�(̙u*=�Ψ2����9��M|�G�`��:Nw�IJ��k�y�sp�D��ǩ&�f�\�~�J�|�B@t \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/9a/6521a3788b4d9e679b1709130ff8dc3f73ab18 b/test/integration/branchRebase/expected/repo/.git_keep/objects/9a/6521a3788b4d9e679b1709130ff8dc3f73ab18 deleted file mode 100644 index 051e4ce43..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/9a/6521a3788b4d9e679b1709130ff8dc3f73ab18 +++ /dev/null @@ -1,3 +0,0 @@ -x��K -�0@]��������#��`�mJ���-x�����,Sg�S�E@%8��1�Иr�:�l��cbB� ѱ��.k�9T��sF�1;% -1(G��Z/��S�^�Qv����]>i�f����v��� p��i�A��*�F��Y�WAYa���e3_-MA" \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 b/test/integration/branchRebase/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 deleted file mode 100644 index ffc277c86c56c088175e46f1590082f30deb89cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlM&0V^p=O;s>6WiT`_Ff%bxNXyJgWsu<cVbq|s@7&8(i^8k=TV83;w@^ot MH^Qm_0H#zMoMT`Zd;kCd diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 b/test/integration/branchRebase/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 deleted file mode 100644 index 285df3e5fbab12262e28d85e78af8a31cd0024c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb<m^geacKgb|i!&6t!@Cg%x>`~^A08nuUMF0Q* diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/a8/381c9130b03aef530b60b5a4546b93dc59ae12 b/test/integration/branchRebase/expected/repo/.git_keep/objects/a8/381c9130b03aef530b60b5a4546b93dc59ae12 deleted file mode 100644 index 8ed23d6aa..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/a8/381c9130b03aef530b60b5a4546b93dc59ae12 +++ /dev/null @@ -1,2 +0,0 @@ -x��� -�0E]�+f/H&��D���yLQ�M�Q�|��pW�s��6����7ɺ̑�4��ɸD\5Q�7i_��gRk�d��w�lkbƠ#��&���@)#��귶�0�y��I���Si��[B��,�V;�Ou�SWO)m��ˠ-P�-���/8|?� \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/cb/289e645aed5251ce74fa2eaf0cd1145b9cb014 b/test/integration/branchRebase/expected/repo/.git_keep/objects/cb/289e645aed5251ce74fa2eaf0cd1145b9cb014 deleted file mode 100644 index 8f0889223b53c6c44867d32f0da7bd7277bd4121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmV-;0Ehp00V^p=O;s>7vtTeW00M=S%%arflKi4dhPf})xQn|?mb)6?5Bc<jMLla} zl9Qo<ftiVkLRw}{sv(1a!yBGz&UddPczGnJl$0OPKGCC!q`;U#de+mg_rDqLS|!0{ au>R%@`{q09r;rqw5K>@@RRI9MxkgfqqB}hR diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/cc/52f7d833c761b3b11a5fa1ae76ba9aba2edd6f b/test/integration/branchRebase/expected/repo/.git_keep/objects/cc/52f7d833c761b3b11a5fa1ae76ba9aba2edd6f deleted file mode 100644 index 0e775a5f8..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/cc/52f7d833c761b3b11a5fa1ae76ba9aba2edd6f +++ /dev/null @@ -1,6 +0,0 @@ -x�Q -�@D��S� -,* -�Fڦ�Bw#�)��M��R��d���L��P�w5'�� d�)�a�P�:;%���6��� -��zs[���h�/6�|Z����W}7��� -ձ/K�(������V(+'g������,�7c�����0�1 \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c b/test/integration/branchRebase/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c deleted file mode 100644 index 74c919681..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c +++ /dev/null @@ -1 +0,0 @@ -x�� �0C����?�3�ƵV�=iO��=������,�8tW��@h*��&R$j�*y��ʑs-ܜ��8v)��u㧱��V�H�����"�� ��P� \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b b/test/integration/branchRebase/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b deleted file mode 100644 index 9b771fc2f6f41f91b00976b4ff3f8f9935f7931e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb<m^geacKgb|i!&6t!@EH?>>`CU&08otwO#lD@ diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e b/test/integration/branchRebase/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e deleted file mode 100644 index 3a7ee91eab601eb205b04a6e1e62c58599193222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb<m^geacKghr=^~8B^zfcX`6X%0HLNrdE@eS2D>7nZts^PE0#+C9!Ty%L6BZHMO GUmgJUj1jT` diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 b/test/integration/branchRebase/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 deleted file mode 100644 index 83998943a5a68dad92fe592c8b50a4121bd04c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmV-c0IC0Y0V^p=O;s?nWH2!R0)>>!qSWM){Gv*Rgo)QVH<dmY5|m}koo(g6#V`5e sH$wvhGZPbqw9K4TLxzsSbM9!KociP8GMlp=&v#$DnX_XD052LKjex`_i2wiq diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/e9/57aaf2eef0c03a9052b472d4862d9ee684c3e5 b/test/integration/branchRebase/expected/repo/.git_keep/objects/e9/57aaf2eef0c03a9052b472d4862d9ee684c3e5 deleted file mode 100644 index 52090e26c86965c4bebf949b9a67fee458f54d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmV;Q0AT-k0gaAJ3c@fH0A1%4Z!gGu`7|kr2wn9U`Mgk}X-Y`N<6H0oZig9|SW9_z zkVKc>m>~w~Mjo{BoQyOS+3M^i`;0LWX%og6khIu+<E?|m(HL~BV#1s>8Y{D7OGFk^ zP>!=yS|%&}(U;m_n&CdpPyYC_uY8NOJb(tR$T@2?T!|3HNzbXyf9fLFqxA)T8Pp9D Nzj>{@_yPcVK+76MOnm?V diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 b/test/integration/branchRebase/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 deleted file mode 100644 index e9f9f0881a1460f9b019818b1cbd6e4f67fe70aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlM&0V^p=O;s>6WiT`_Ff%bxNXyJgWw@Wst9_>I*&F^-3WwAMy!<tG9g#+o MH^Qm_0E{vk5H*e!i2wiq diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/f5/067da83b48f8588edce682fd2715a575f34373 b/test/integration/branchRebase/expected/repo/.git_keep/objects/f5/067da83b48f8588edce682fd2715a575f34373 deleted file mode 100644 index 47681b580..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/objects/f5/067da83b48f8588edce682fd2715a575f34373 +++ /dev/null @@ -1,4 +0,0 @@ -x��A -�0E]��$c�L -"BW=F��P�4%��� x���?��� ��O�2�`"t�,��G�Q�tЈ|X�SZbR{��5�C�8�b���5�E��q�d� -G[K�i��4?����K,��̀ޓ5pF�Z���j�������ˠl�û��1A \ No newline at end of file diff --git a/test/integration/branchRebase/expected/repo/.git_keep/objects/fe/427b52bbbe9dac81b463a162f37ab979ca772b b/test/integration/branchRebase/expected/repo/.git_keep/objects/fe/427b52bbbe9dac81b463a162f37ab979ca772b deleted file mode 100644 index 276be8d532a98293042fe687e2977c5b42c41743..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmV-b0IL6Z0V^p=O;s?nWH2!R0)>>!qSWM){Gv*Rxi8eXi@QvgyBgmQ`SgTEJ!@r> rlc9lunTd%)T4qkFA%lOz8=h*;cdsLOc_gQllpoMO(W43g2J9QllRGE5 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/refs/heads/develop b/test/integration/branchRebase/expected/repo/.git_keep/refs/heads/develop deleted file mode 100644 index d77f4721f..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/refs/heads/develop +++ /dev/null @@ -1 +0,0 @@ -e957aaf2eef0c03a9052b472d4862d9ee684c3e5 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/refs/heads/master b/test/integration/branchRebase/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index 567f6507a..000000000 --- a/test/integration/branchRebase/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -42597904331c82f6d5c8c902755c8dfa5767ea95 diff --git a/test/integration/branchRebase/expected/repo/directory/file b/test/integration/branchRebase/expected/repo/directory/file deleted file mode 100644 index df6b0d2bc..000000000 --- a/test/integration/branchRebase/expected/repo/directory/file +++ /dev/null @@ -1 +0,0 @@ -test3 diff --git a/test/integration/branchRebase/expected/repo/directory/file2 b/test/integration/branchRebase/expected/repo/directory/file2 deleted file mode 100644 index df6b0d2bc..000000000 --- a/test/integration/branchRebase/expected/repo/directory/file2 +++ /dev/null @@ -1 +0,0 @@ -test3 diff --git a/test/integration/branchRebase/expected/repo/file1 b/test/integration/branchRebase/expected/repo/file1 deleted file mode 100644 index 5d874a902..000000000 --- a/test/integration/branchRebase/expected/repo/file1 +++ /dev/null @@ -1,63 +0,0 @@ -Here is a story that has been told throuhg the ages -once upon a time there was a cat -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -once upon a time there was another dog diff --git a/test/integration/branchRebase/expected/repo/file3 b/test/integration/branchRebase/expected/repo/file3 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/branchRebase/expected/repo/file3 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/branchRebase/expected/repo/file4 b/test/integration/branchRebase/expected/repo/file4 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/branchRebase/expected/repo/file4 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/branchRebase/expected/repo/file5 b/test/integration/branchRebase/expected/repo/file5 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/branchRebase/expected/repo/file5 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/branchRebase/recording.json b/test/integration/branchRebase/recording.json deleted file mode 100644 index c0da4c16a..000000000 --- a/test/integration/branchRebase/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":617,"Mod":0,"Key":259,"Ch":0},{"Timestamp":922,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1176,"Mod":0,"Key":256,"Ch":114},{"Timestamp":1512,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2797,"Mod":0,"Key":27,"Ch":0},{"Timestamp":3632,"Mod":0,"Key":256,"Ch":114},{"Timestamp":4032,"Mod":0,"Key":13,"Ch":13},{"Timestamp":4760,"Mod":0,"Key":13,"Ch":13},{"Timestamp":5105,"Mod":0,"Key":259,"Ch":0},{"Timestamp":5376,"Mod":0,"Key":259,"Ch":0},{"Timestamp":5721,"Mod":0,"Key":256,"Ch":100},{"Timestamp":5992,"Mod":0,"Key":258,"Ch":0},{"Timestamp":6186,"Mod":0,"Key":256,"Ch":100},{"Timestamp":6401,"Mod":0,"Key":258,"Ch":0},{"Timestamp":6592,"Mod":0,"Key":256,"Ch":100},{"Timestamp":6840,"Mod":0,"Key":260,"Ch":0},{"Timestamp":7105,"Mod":0,"Key":260,"Ch":0},{"Timestamp":7612,"Mod":0,"Key":256,"Ch":32},{"Timestamp":7922,"Mod":0,"Key":258,"Ch":0},{"Timestamp":8160,"Mod":0,"Key":256,"Ch":32},{"Timestamp":8680,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9080,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9464,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9808,"Mod":0,"Key":256,"Ch":32},{"Timestamp":10040,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10372,"Mod":0,"Key":256,"Ch":32},{"Timestamp":11249,"Mod":0,"Key":13,"Ch":13},{"Timestamp":12088,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/branchRebase/setup.sh b/test/integration/branchRebase/setup.sh deleted file mode 100644 index a1f14b455..000000000 --- a/test/integration/branchRebase/setup.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/bin/sh - -set -e - -cd $1 - -git init -git config user.email "CI@example.com" -git config user.name "CI" - - -function add_spacing { - for i in {1..60} - do - echo "..." >> $1 - done -} - -mkdir directory -echo "test1" > directory/file -echo "test1" > directory/file2 - - -echo "Here is a story that has been told throuhg the ages" >> file1 - -git add file1 -git add directory -git commit -m "first commit" - -git checkout -b develop -echo "once upon a time there was a dog" >> file1 -add_spacing file1 -echo "once upon a time there was another dog" >> file1 -git add file1 -echo "test2" > directory/file -echo "test2" > directory/file2 -git add directory -git commit -m "first commit on develop" - - -git checkout master -echo "once upon a time there was a cat" >> file1 -add_spacing file1 -echo "once upon a time there was another cat" >> file1 -git add file1 -echo "test3" > directory/file -echo "test3" > directory/file2 -git add directory -git commit -m "first commit on master" - - -git checkout develop -echo "once upon a time there was a mouse" >> file3 -git add file3 -git commit -m "second commit on develop" - - -git checkout master -echo "once upon a time there was a horse" >> file3 -git add file3 -git commit -m "second commit on master" - - -git checkout develop -echo "once upon a time there was a mouse" >> file4 -git add file4 -git commit -m "third commit on develop" - - -git checkout master -echo "once upon a time there was a horse" >> file4 -git add file4 -git commit -m "third commit on master" - - -git checkout develop -echo "once upon a time there was a mouse" >> file5 -git add file5 -git commit -m "fourth commit on develop" - - -git checkout master -echo "once upon a time there was a horse" >> file5 -git add file5 -git commit -m "fourth commit on master" diff --git a/test/integration/branchRebase/test.json b/test/integration/branchRebase/test.json deleted file mode 100644 index 1082379ed..000000000 --- a/test/integration/branchRebase/test.json +++ /dev/null @@ -1 +0,0 @@ -{ "description": "In this test we fix some merge conflicts, ensuring that in the flat tree structure the conflicts are bubbled to the top, and that after resolving the conflicts your cursor stays on the same line, able to select the next conflicted file. We also switch to tree mode and ensure that works too.", "speed": 10 } diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/branch/rebase/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..14bc77d37 --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +second-change-branch unrelated change diff --git a/test/integration/branchRebase/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/branch/rebase/expected/repo/.git_keep/FETCH_HEAD similarity index 100% rename from test/integration/branchRebase/expected/repo/.git_keep/FETCH_HEAD rename to test/integration_new/branch/rebase/expected/repo/.git_keep/FETCH_HEAD diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/HEAD b/test/integration_new/branch/rebase/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..e1c7bf8c5 --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/first-change-branch diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/MERGE_MSG b/test/integration_new/branch/rebase/expected/repo/.git_keep/MERGE_MSG new file mode 100644 index 000000000..803d9a2dd --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/MERGE_MSG @@ -0,0 +1,4 @@ +first change + +# Conflicts: +# file diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/ORIG_HEAD b/test/integration_new/branch/rebase/expected/repo/.git_keep/ORIG_HEAD new file mode 100644 index 000000000..51a54aa1d --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/ORIG_HEAD @@ -0,0 +1 @@ +f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/REBASE_HEAD b/test/integration_new/branch/rebase/expected/repo/.git_keep/REBASE_HEAD new file mode 100644 index 000000000..51a54aa1d --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/REBASE_HEAD @@ -0,0 +1 @@ +f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/config b/test/integration_new/branch/rebase/expected/repo/.git_keep/config similarity index 87% rename from test/integration/branchRebase/expected/repo/.git_keep/config rename to test/integration_new/branch/rebase/expected/repo/.git_keep/config index 8ae104545..8a748ce32 100644 --- a/test/integration/branchRebase/expected/repo/.git_keep/config +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/config @@ -8,3 +8,5 @@ [user] email = CI@example.com name = CI +[commit] + gpgSign = false diff --git a/test/integration/branchRebase/expected/repo/.git_keep/description b/test/integration_new/branch/rebase/expected/repo/.git_keep/description similarity index 100% rename from test/integration/branchRebase/expected/repo/.git_keep/description rename to test/integration_new/branch/rebase/expected/repo/.git_keep/description diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/index b/test/integration_new/branch/rebase/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..b5c896cfb9e2b5709039111b82079c3e8b8cfe65 GIT binary patch literal 212 zcmZ?q402{*U|<4b#$@K$P6hT8VlbMKfq|9zQ&s~5L*o*l^jDx75g=9&^I~5w`r=>o zgQF*t?(X3JbE^La3j<49W=<+l76?LuTwQ?_8-uQ)f&o{MYbeNuFtEI#fq|Kc2?HwS zBj&EydGWT%>GYjbEQ^Ae6!X+>Vza|)jX`lY?=6d)DXX6yvPfh8X)r65;Zo7s#M))= R7QK?vbbWOFMuGNp2LK+~MxOux literal 0 HcmV?d00001 diff --git a/test/integration/branchRebase/expected/repo/.git_keep/info/exclude b/test/integration_new/branch/rebase/expected/repo/.git_keep/info/exclude similarity index 100% rename from test/integration/branchRebase/expected/repo/.git_keep/info/exclude rename to test/integration_new/branch/rebase/expected/repo/.git_keep/info/exclude diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/HEAD b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..be5fa6486 --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,13 @@ +0000000000000000000000000000000000000000 0227353d56e56df9e9f94559f90b86ce7aa1ca5c CI <CI@example.com> 1661164934 +1000 commit (initial): one +0227353d56e56df9e9f94559f90b86ce7aa1ca5c d7149d98e6da25303f9a8cdff131da4b0723a412 CI <CI@example.com> 1661164934 +1000 commit: two +d7149d98e6da25303f9a8cdff131da4b0723a412 4c66ef64d685d244db41efda29deffb381c46c3d CI <CI@example.com> 1661164934 +1000 commit: three +4c66ef64d685d244db41efda29deffb381c46c3d b827df09781d0648f66cd9a01f0ec0ad5d412e10 CI <CI@example.com> 1661164934 +1000 commit: original +b827df09781d0648f66cd9a01f0ec0ad5d412e10 b827df09781d0648f66cd9a01f0ec0ad5d412e10 CI <CI@example.com> 1661164934 +1000 checkout: moving from original-branch to first-change-branch +b827df09781d0648f66cd9a01f0ec0ad5d412e10 f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 CI <CI@example.com> 1661164934 +1000 commit: first change +f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 b827df09781d0648f66cd9a01f0ec0ad5d412e10 CI <CI@example.com> 1661164934 +1000 checkout: moving from first-change-branch to original-branch +b827df09781d0648f66cd9a01f0ec0ad5d412e10 b827df09781d0648f66cd9a01f0ec0ad5d412e10 CI <CI@example.com> 1661164934 +1000 checkout: moving from original-branch to second-change-branch +b827df09781d0648f66cd9a01f0ec0ad5d412e10 702b646c08ba47b2ac5729deed77188ef1647b4d CI <CI@example.com> 1661164934 +1000 commit: second change +702b646c08ba47b2ac5729deed77188ef1647b4d 5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 CI <CI@example.com> 1661164934 +1000 commit: second-change-branch unrelated change +5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 CI <CI@example.com> 1661164934 +1000 checkout: moving from second-change-branch to first-change-branch +f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 CI <CI@example.com> 1661164936 +1000 rebase (start): checkout second-change-branch +5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 CI <CI@example.com> 1661164938 +1000 rebase (continue) (finish): returning to refs/heads/first-change-branch diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/first-change-branch b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/first-change-branch new file mode 100644 index 000000000..994f744ef --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/first-change-branch @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 b827df09781d0648f66cd9a01f0ec0ad5d412e10 CI <CI@example.com> 1661164934 +1000 branch: Created from HEAD +b827df09781d0648f66cd9a01f0ec0ad5d412e10 f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 CI <CI@example.com> 1661164934 +1000 commit: first change +f42b6ab94e265acf87a9b3bf8cfa1105fcad57b2 5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 CI <CI@example.com> 1661164938 +1000 rebase (continue) (finish): refs/heads/first-change-branch onto 5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/original-branch b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/original-branch new file mode 100644 index 000000000..0de43eaeb --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/original-branch @@ -0,0 +1,4 @@ +0000000000000000000000000000000000000000 0227353d56e56df9e9f94559f90b86ce7aa1ca5c CI <CI@example.com> 1661164934 +1000 commit (initial): one +0227353d56e56df9e9f94559f90b86ce7aa1ca5c d7149d98e6da25303f9a8cdff131da4b0723a412 CI <CI@example.com> 1661164934 +1000 commit: two +d7149d98e6da25303f9a8cdff131da4b0723a412 4c66ef64d685d244db41efda29deffb381c46c3d CI <CI@example.com> 1661164934 +1000 commit: three +4c66ef64d685d244db41efda29deffb381c46c3d b827df09781d0648f66cd9a01f0ec0ad5d412e10 CI <CI@example.com> 1661164934 +1000 commit: original diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/second-change-branch b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/second-change-branch new file mode 100644 index 000000000..b20bc5041 --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/logs/refs/heads/second-change-branch @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 b827df09781d0648f66cd9a01f0ec0ad5d412e10 CI <CI@example.com> 1661164934 +1000 branch: Created from HEAD +b827df09781d0648f66cd9a01f0ec0ad5d412e10 702b646c08ba47b2ac5729deed77188ef1647b4d CI <CI@example.com> 1661164934 +1000 commit: second change +702b646c08ba47b2ac5729deed77188ef1647b4d 5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 CI <CI@example.com> 1661164934 +1000 commit: second-change-branch unrelated change diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 new file mode 100644 index 0000000000000000000000000000000000000000..bd9b135ac92b2dd8c84e8ee930f3abbad446dcdc GIT binary patch literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5Rp4_{y#B98@n4!3t51IS?!mv}RsY$z8MvYa Fi~z+L6c_*i literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/02/27353d56e56df9e9f94559f90b86ce7aa1ca5c b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/02/27353d56e56df9e9f94559f90b86ce7aa1ca5c new file mode 100644 index 000000000..d9ada22e6 --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/02/27353d56e56df9e9f94559f90b86ce7aa1ca5c @@ -0,0 +1,2 @@ +x��A +�0Fa�9�����!��#I��`���=B��^i��:��S_��0S_�!���4/a��CX2��ե_��Ɖn���?������L�4^����n���� w���q+\ \ No newline at end of file diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c new file mode 100644 index 0000000000000000000000000000000000000000..a893c25632075cb033b35ab97b00bb966d383053 GIT binary patch literal 48 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5^@Ct>_?tZyx1W^!I;T0!)zPP`GRvIt8v}0& E0IOXS3jhEB literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 new file mode 100644 index 0000000000000000000000000000000000000000..3f0746de578045d05bc0ab70eedb0910b69841be GIT binary patch literal 46 zcmV+}0MY+=0ZYosPf{>8V&DqN$SmgaEC$l4T*0Zy`FSY{&KZe$>8V_9nK`Lk0P)uh E7zjcZDF6Tf literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 new file mode 100644 index 0000000000000000000000000000000000000000..8cded6c81b47e88b26c954bb22ad356788258752 GIT binary patch literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5bwgBgz@4+zryr%AdX?U;b7@As)EO^U2F6~# FjR3)m6SV*U literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 new file mode 100644 index 0000000000000000000000000000000000000000..1f72f9aeea32636014d2a1fd48203d51ca973040 GIT binary patch literal 43 zcmV+`0M!3@0ZYosPf{>8WZ(+P$SmgaEC$l4TyB{~#U%>P8Hsu6AWlvy7Xam63&W%1 B5^Dee literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 new file mode 100644 index 0000000000000000000000000000000000000000..adf64119a33d7621aeeaa505d30adb58afaa5559 GIT binary patch literal 15 Wcmb<m)YkO!4K+w$VBpeWVgvvgJ_3UP literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 new file mode 100644 index 0000000000000000000000000000000000000000..9d9452bdd10687443ef9d15b5a5b6f535d97c7c6 GIT binary patch literal 41 zcmV+^0M`F_0ZYosPf{>4XW$CS$SmgaEC$l4T>eFw>6v+nIb3d;IjLL#xmpU3me3P0 literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4c/66ef64d685d244db41efda29deffb381c46c3d b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/4c/66ef64d685d244db41efda29deffb381c46c3d new file mode 100644 index 0000000000000000000000000000000000000000..b78879b105579bddbbb0f5a433b0ee5297e903f6 GIT binary patch literal 148 zcmV;F0Biqv0gcW<3c@fDKvCB@MfQTsB-1eiB0^U^#w3|g!P-(Hczk;Vx1YawWnGqM z_bB1icQa2pg`pOvP%>K<1qK@^w^Ug|N-dj_0J%+fdv{;2NKz#kR}Dji*hEvQtzpEf zl;Ikp5(cNAKCinUCx08KhkbR~UUn(#a`(uL$Rv^c83Di@^+0v|b9a3{=<WxI_c_)0 CB|&ch literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/55/13fcfcb56cc5f1de7b6b3ded32a945e94f5e37 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/55/13fcfcb56cc5f1de7b6b3ded32a945e94f5e37 new file mode 100644 index 0000000000000000000000000000000000000000..7179605be92b02bcb11efa8ec3354308454d2080 GIT binary patch literal 170 zcmV;b09F5Z0gcW<YQr!PK+&vqirI&hks@m(2qlnJjxi&R>VPd9Re>JAhF+lC$6x%s zt?O%mbN)2CDj<@&La{Otic2-csv#B(B2%m+a%HrX%+6ig0756hhm29!lQ_;3xl~jO zk&RKS4F~&T_&w&W!{Z6J$Mdc~yzYyB<Zb-~8-hKuboFqyh-eNyriT7AH{Y7KRxWww Y_N5o;-0}?X)^*{b1^(Rp0&CDkvczUpSO5S3 literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/70/2b646c08ba47b2ac5729deed77188ef1647b4d b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/70/2b646c08ba47b2ac5729deed77188ef1647b4d new file mode 100644 index 000000000..3c54ea1fe --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/70/2b646c08ba47b2ac5729deed77188ef1647b4d @@ -0,0 +1,2 @@ +x��M +�0@a�9���I�L"BW=F~&V0M�<�=��Ƿx����O}D�ٕ��Q��]�2�GW8�! �W[�e���\г��W�M���$y̆����K�a��:�w�����Z�YKd�� �Q��.r����i �C�9`<� \ No newline at end of file diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/ab/1329d5c536f369c741c65fab7cca4ab27dc22e b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/ab/1329d5c536f369c741c65fab7cca4ab27dc22e new file mode 100644 index 0000000000000000000000000000000000000000..4c6a50757631adb4b31ccf2f7e6dd74d47d3314d GIT binary patch literal 85 zcmV-b0IL6Z0ZYosPg1ZnXW$CS$SmgaEC$l4Ts9D(;Nj}%!WEpFoS&DX;GB_|m!8UH r3jthinMK7VFhM&AP)IW|N-|4KQqV{P%O-=hXad#dq;dfO9G4za^jRh) literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/b8/27df09781d0648f66cd9a01f0ec0ad5d412e10 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/b8/27df09781d0648f66cd9a01f0ec0ad5d412e10 new file mode 100644 index 0000000000000000000000000000000000000000..b59c8608a6216f262c4fc1ce2223f966758b68a5 GIT binary patch literal 150 zcmV;H0BQet0gaAJ3Iib!M6>o3?gPQrwowQnFsnI+pEem7$3YC_`0)tY6~(JZrB>@U zBzSunomm2?Ost|uN<RDOqh-XTXLjT@du@{;m&6%5A46gy;zF3o*{l(BMBtLc9B?Vo zI7riEvIw8?Ze1>`yf5pMzoDKx-%_g&2}A&d-k`jKQcBEro*MioE?VDS+Yxs0146Sq EW|(wDi2wiq literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/d7/149d98e6da25303f9a8cdff131da4b0723a412 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/d7/149d98e6da25303f9a8cdff131da4b0723a412 new file mode 100644 index 0000000000000000000000000000000000000000..9fcee8fcd7e1571c6bf065db0ba746bb5a1e1c72 GIT binary patch literal 147 zcmV;E0Brww0gaA33IZ_@K&^9%^ny&XGh+rsgst`%`AkqSW?3S7eD?@8uXw!T<=)z3 zSSN58o2tbWJeADob7D;rfk6pV4TZ&rP?IVOpjqRluVKOa^F&i2R^n1cr3w=5gcLaI zIYyTwWfR}y-Zwih_A)Ow{l>OF^^|+NTF2}hqfBUz4gkz<_o<<O=4O1l`2i4wIW**7 BL)-uW literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/f4/2b6ab94e265acf87a9b3bf8cfa1105fcad57b2 b/test/integration_new/branch/rebase/expected/repo/.git_keep/objects/f4/2b6ab94e265acf87a9b3bf8cfa1105fcad57b2 new file mode 100644 index 0000000000000000000000000000000000000000..b625df309a1c523b3994d58dd61d789579c4e0b0 GIT binary patch literal 154 zcmV;L0A>Gp0gcW}3c@fDfMM4;MfQTs<S|J=MChu=NGB63*atC!$G1mt`|~Y+-j?Or zHKugxO+;h0)>Lvlfn}hC)+Nl<02c=VeGGx7;=S5)leOz9nougF5U~KcSc$l#3|K)J za`DBX5d@V#ecqZLMtvQ|yL|JqzvRN(a??nJNG@5Y&j<kOsK->7Ke?*U_U@YJygo$z I0CvSYX@NRS+yDRo literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/first-change-branch b/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/first-change-branch new file mode 100644 index 000000000..4867226ea --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/first-change-branch @@ -0,0 +1 @@ +5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/original-branch b/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/original-branch new file mode 100644 index 000000000..8b9bdc87a --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/original-branch @@ -0,0 +1 @@ +b827df09781d0648f66cd9a01f0ec0ad5d412e10 diff --git a/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/second-change-branch b/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/second-change-branch new file mode 100644 index 000000000..4867226ea --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/.git_keep/refs/heads/second-change-branch @@ -0,0 +1 @@ +5513fcfcb56cc5f1de7b6b3ded32a945e94f5e37 diff --git a/test/integration_new/branch/rebase/expected/repo/file b/test/integration_new/branch/rebase/expected/repo/file new file mode 100644 index 000000000..164a07af1 --- /dev/null +++ b/test/integration_new/branch/rebase/expected/repo/file @@ -0,0 +1,6 @@ + +This +Is +The +Second Change +File diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..e2e92c427 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +to keep diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/FETCH_HEAD new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/HEAD b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..e1c7bf8c5 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/first-change-branch diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/ORIG_HEAD b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/ORIG_HEAD new file mode 100644 index 000000000..27e5d1433 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/ORIG_HEAD @@ -0,0 +1 @@ +39129f24587bdc648e1fdb6f0b089c0846f54d45 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/config b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/config new file mode 100644 index 000000000..8a748ce32 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/config @@ -0,0 +1,12 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true +[user] + email = CI@example.com + name = CI +[commit] + gpgSign = false diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/description b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/index b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..44eb0c68b991165858fd0e4ca52e5785721eaa11 GIT binary patch literal 212 zcmZ?q402{*U|<4b#$@Ki5S}*EH!zx!fq|9zQ&AKHL*o*l^jDx75g=9&^I~5w`r=>o zgQF*t?(X3JbE^La3j<49W=<+l76?LuTwQ?_8-uQ)f&o{MYbeNuFtEI#fq|Kc2?HwS zBj&EydGWT%>GYjbEQ^Ae6!X+>Vza|)jX`lY?=6d)DXX6yvPfh8X)r5w`VK`CQ_e(_ RQ>-ssKEK>M^X)eo0RXP^MzjC` literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/info/exclude b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/info/exclude new file mode 100644 index 000000000..8e9f2071f --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/info/exclude @@ -0,0 +1,7 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ +.DS_Store diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/HEAD b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..a0a6f7fe5 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,16 @@ +0000000000000000000000000000000000000000 ab5816052b05d45683d9fd3aa85203995b66cd65 CI <CI@example.com> 1661165903 +1000 commit (initial): one +ab5816052b05d45683d9fd3aa85203995b66cd65 9d068e4adf5b237e3f3abe9ce38cfd996cce75dc CI <CI@example.com> 1661165903 +1000 commit: two +9d068e4adf5b237e3f3abe9ce38cfd996cce75dc 7c0af051757503c84800076fd34851ea8b81e415 CI <CI@example.com> 1661165903 +1000 commit: three +7c0af051757503c84800076fd34851ea8b81e415 c066f8c513a34cd0c63e54c3b418a50491686cff CI <CI@example.com> 1661165904 +1000 commit: original +c066f8c513a34cd0c63e54c3b418a50491686cff c066f8c513a34cd0c63e54c3b418a50491686cff CI <CI@example.com> 1661165904 +1000 checkout: moving from original-branch to first-change-branch +c066f8c513a34cd0c63e54c3b418a50491686cff 5587edfe46cfc076fb9ff4db76d196965838669a CI <CI@example.com> 1661165904 +1000 commit: first change +5587edfe46cfc076fb9ff4db76d196965838669a c066f8c513a34cd0c63e54c3b418a50491686cff CI <CI@example.com> 1661165904 +1000 checkout: moving from first-change-branch to original-branch +c066f8c513a34cd0c63e54c3b418a50491686cff c066f8c513a34cd0c63e54c3b418a50491686cff CI <CI@example.com> 1661165904 +1000 checkout: moving from original-branch to second-change-branch +c066f8c513a34cd0c63e54c3b418a50491686cff 3fc37a0e51435e01769aa25e6fe7179add2642a6 CI <CI@example.com> 1661165904 +1000 commit: second change +3fc37a0e51435e01769aa25e6fe7179add2642a6 3228c73cfc742264f3101966a81d6a0a70488e36 CI <CI@example.com> 1661165904 +1000 commit: second-change-branch unrelated change +3228c73cfc742264f3101966a81d6a0a70488e36 5587edfe46cfc076fb9ff4db76d196965838669a CI <CI@example.com> 1661165904 +1000 checkout: moving from second-change-branch to first-change-branch +5587edfe46cfc076fb9ff4db76d196965838669a b56a14235fe8b10e5cca38d8b8009899d60b6499 CI <CI@example.com> 1661165904 +1000 commit: to drop +b56a14235fe8b10e5cca38d8b8009899d60b6499 39129f24587bdc648e1fdb6f0b089c0846f54d45 CI <CI@example.com> 1661165904 +1000 commit: to keep +39129f24587bdc648e1fdb6f0b089c0846f54d45 3228c73cfc742264f3101966a81d6a0a70488e36 CI <CI@example.com> 1661165905 +1000 rebase (start): checkout second-change-branch +3228c73cfc742264f3101966a81d6a0a70488e36 99a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 CI <CI@example.com> 1661165908 +1000 rebase (continue) (pick): to keep +99a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 99a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 CI <CI@example.com> 1661165908 +1000 rebase (continue) (finish): returning to refs/heads/first-change-branch diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/first-change-branch b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/first-change-branch new file mode 100644 index 000000000..46db32f0e --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/first-change-branch @@ -0,0 +1,5 @@ +0000000000000000000000000000000000000000 c066f8c513a34cd0c63e54c3b418a50491686cff CI <CI@example.com> 1661165904 +1000 branch: Created from HEAD +c066f8c513a34cd0c63e54c3b418a50491686cff 5587edfe46cfc076fb9ff4db76d196965838669a CI <CI@example.com> 1661165904 +1000 commit: first change +5587edfe46cfc076fb9ff4db76d196965838669a b56a14235fe8b10e5cca38d8b8009899d60b6499 CI <CI@example.com> 1661165904 +1000 commit: to drop +b56a14235fe8b10e5cca38d8b8009899d60b6499 39129f24587bdc648e1fdb6f0b089c0846f54d45 CI <CI@example.com> 1661165904 +1000 commit: to keep +39129f24587bdc648e1fdb6f0b089c0846f54d45 99a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 CI <CI@example.com> 1661165908 +1000 rebase (continue) (finish): refs/heads/first-change-branch onto 3228c73cfc742264f3101966a81d6a0a70488e36 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/original-branch b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/original-branch new file mode 100644 index 000000000..5999618a9 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/original-branch @@ -0,0 +1,4 @@ +0000000000000000000000000000000000000000 ab5816052b05d45683d9fd3aa85203995b66cd65 CI <CI@example.com> 1661165903 +1000 commit (initial): one +ab5816052b05d45683d9fd3aa85203995b66cd65 9d068e4adf5b237e3f3abe9ce38cfd996cce75dc CI <CI@example.com> 1661165903 +1000 commit: two +9d068e4adf5b237e3f3abe9ce38cfd996cce75dc 7c0af051757503c84800076fd34851ea8b81e415 CI <CI@example.com> 1661165903 +1000 commit: three +7c0af051757503c84800076fd34851ea8b81e415 c066f8c513a34cd0c63e54c3b418a50491686cff CI <CI@example.com> 1661165904 +1000 commit: original diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/second-change-branch b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/second-change-branch new file mode 100644 index 000000000..e0b0742a8 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/logs/refs/heads/second-change-branch @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 c066f8c513a34cd0c63e54c3b418a50491686cff CI <CI@example.com> 1661165904 +1000 branch: Created from HEAD +c066f8c513a34cd0c63e54c3b418a50491686cff 3fc37a0e51435e01769aa25e6fe7179add2642a6 CI <CI@example.com> 1661165904 +1000 commit: second change +3fc37a0e51435e01769aa25e6fe7179add2642a6 3228c73cfc742264f3101966a81d6a0a70488e36 CI <CI@example.com> 1661165904 +1000 commit: second-change-branch unrelated change diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 new file mode 100644 index 0000000000000000000000000000000000000000..bd9b135ac92b2dd8c84e8ee930f3abbad446dcdc GIT binary patch literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5Rp4_{y#B98@n4!3t51IS?!mv}RsY$z8MvYa Fi~z+L6c_*i literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c new file mode 100644 index 0000000000000000000000000000000000000000..a893c25632075cb033b35ab97b00bb966d383053 GIT binary patch literal 48 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5^@Ct>_?tZyx1W^!I;T0!)zPP`GRvIt8v}0& E0IOXS3jhEB literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 new file mode 100644 index 0000000000000000000000000000000000000000..3f0746de578045d05bc0ab70eedb0910b69841be GIT binary patch literal 46 zcmV+}0MY+=0ZYosPf{>8V&DqN$SmgaEC$l4T*0Zy`FSY{&KZe$>8V_9nK`Lk0P)uh E7zjcZDF6Tf literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 new file mode 100644 index 0000000000000000000000000000000000000000..8cded6c81b47e88b26c954bb22ad356788258752 GIT binary patch literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5bwgBgz@4+zryr%AdX?U;b7@As)EO^U2F6~# FjR3)m6SV*U literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/32/28c73cfc742264f3101966a81d6a0a70488e36 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/32/28c73cfc742264f3101966a81d6a0a70488e36 new file mode 100644 index 0000000000000000000000000000000000000000..04f11b074c531a79b34bf2078d7422fe8bf142bb GIT binary patch literal 167 zcmV;Y09gNc0gaA93c@fD06pgwdzZ>4Z8i;v2%h?kO|r3qO-qd6^DX!RuQPL)xGu}1 zfic6ORS`gRVv-v(JBPve?8huLCZrJTm|X}xqjp|xT%|PVbL<_XSUvPsc0-=oSfMO# z&p0JRgJDwqZu45<Ho^HeUFE~e_LNgxmkVejt;u>E;HVK%?R1}N@@KAI64#QtICHs6 V7b=%H!@E>@a+3r<uD(jzMRFPKPW}J@ literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/39/129f24587bdc648e1fdb6f0b089c0846f54d45 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/39/129f24587bdc648e1fdb6f0b089c0846f54d45 new file mode 100644 index 000000000..9b16182c2 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/39/129f24587bdc648e1fdb6f0b089c0846f54d45 @@ -0,0 +1,2 @@ +x��M +1@a�=E��$�6Ӏ��j�џEk����w����-^�=����T���Se�ڌ,d�P���p&�S�ެq����9�������� %��(A�0&v"&~ƽop[�|[���m}�)�vb&b/��H�h��O ����᩺�.|9 \ No newline at end of file diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 new file mode 100644 index 0000000000000000000000000000000000000000..1f72f9aeea32636014d2a1fd48203d51ca973040 GIT binary patch literal 43 zcmV+`0M!3@0ZYosPf{>8WZ(+P$SmgaEC$l4TyB{~#U%>P8Hsu6AWlvy7Xam63&W%1 B5^Dee literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/3f/c37a0e51435e01769aa25e6fe7179add2642a6 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/3f/c37a0e51435e01769aa25e6fe7179add2642a6 new file mode 100644 index 0000000000000000000000000000000000000000..91a3f59305cb4fec0824d5d4afbef89b41f1630f GIT binary patch literal 154 zcmV;L0A>Gp0gcW<3c@fDKvCB@MfQTsG|40Z5uvLdBbiLBV4G4Sczk;Vx1YE8+?M6p z^#E|{yNCwxG87+b@*eUKYYbH=6rh}4s6J<t0DV+j+GXvUfv5&{Xp*s9fXRrnY_i3W z9N35yh-+2p)91G9anjduy302$+e<FomYYT*L~;?VJ|h6AqaIUT{^aT{+}5IbPU}O| I4<tK0S+cZAlK=n! literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 new file mode 100644 index 0000000000000000000000000000000000000000..adf64119a33d7621aeeaa505d30adb58afaa5559 GIT binary patch literal 15 Wcmb<m)YkO!4K+w$VBpeWVgvvgJ_3UP literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 new file mode 100644 index 0000000000000000000000000000000000000000..9d9452bdd10687443ef9d15b5a5b6f535d97c7c6 GIT binary patch literal 41 zcmV+^0M`F_0ZYosPf{>4XW$CS$SmgaEC$l4T>eFw>6v+nIb3d;IjLL#xmpU3me3P0 literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/55/87edfe46cfc076fb9ff4db76d196965838669a b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/55/87edfe46cfc076fb9ff4db76d196965838669a new file mode 100644 index 000000000..b4c454a68 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/55/87edfe46cfc076fb9ff4db76d196965838669a @@ -0,0 +1,2 @@ +x��K +�0@]��2�I� �]��tb�!F���n���}]��b��ZT-f�.�� H�#���r2;�ч��i����Vms8�H��� L���0$-����I�������]�i=^z�}�YdFd��3�i�MU�S7�Y�meI�C�a�;: \ No newline at end of file diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/7b/e86fe92edea93469924da2c241943adddd27cc b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/7b/e86fe92edea93469924da2c241943adddd27cc new file mode 100644 index 0000000000000000000000000000000000000000..125e024fab9dc20ad4b148addfcb48a014ce8fda GIT binary patch literal 85 zcmV-b0IL6Z0ZYosPg1ZnXW$CS$SmgaEC$l4Ts9D(;Nj}%!WEpFoS&DX;GB_|m!8UH r3jthinMK7VFhM&AP%t&MFi%ZMQ_x5Q%O-=hXad#dq;dfO7{nek|7|9q literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/7c/0af051757503c84800076fd34851ea8b81e415 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/7c/0af051757503c84800076fd34851ea8b81e415 new file mode 100644 index 0000000000000000000000000000000000000000..4b6d35f7f04de784048a4a7d1a464ac90e09f1f8 GIT binary patch literal 147 zcmV;E0Brww0gaAJ3c@fDKwak)*$XoHO*2qL=&Hv^CKD<cTS^3vZ;s&h@pwGmTYGkG z$X@y>qJ54w6h?13qhv~eAi?Jv3zChoW)V-|)saqlcTEK_ich76Y~3WTx|D@jT;y7a zkXfb?RO!>V{nX2<=Vg7!H?`v>H{RP_8$@F;5IB7`0H6jPQ(gYlRo}+C`T-MdI}hc- BLni<L literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/99/a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/99/a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 new file mode 100644 index 0000000000000000000000000000000000000000..a95baa6264684c6ed32b8a896f8c89cddc90d383 GIT binary patch literal 152 zcmV;J0B8Sr0fo-73c@fDfMMr6MRq~%lJxEZB0{G=Mv`7ow5F5@KE55?U4OpeFKt=w z-C_)fzNuOORyVWM#0=TR8l@`943zUAm2>t9kfT}Crmt?jb5husS~xgIp?U<2L`iU_ z1c@Pts3()&{nj=+PWC)bSN)`Aed?*S<zkTtk%kDt9uWY{UiYc4f4Ka(>CHY=SMvpI G&pA=4j7m@d literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/9d/068e4adf5b237e3f3abe9ce38cfd996cce75dc b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/9d/068e4adf5b237e3f3abe9ce38cfd996cce75dc new file mode 100644 index 0000000000000000000000000000000000000000..1e6785cfe1fcb7890e27f7088bf73579ccb823b4 GIT binary patch literal 146 zcmV;D0B!$x0gcX03c@fDKw;N8MfQSBerCvk6rrmgBa=)~Fs77<9^W3p?c-a#(p!5B z>ljXBSG7@+$66@*BBa6@2o$5NsS^8?R#A-%(QJ9w*RWYIIRf+oSR+yjmDd__PUs;p zqY#x!X!3j9`)=pOUgzbe-`uvRUP^D1bwth)G6Z{e0AP-KObz{$oAK%92hyuJjWU=; Ai~s-t literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/ab/5816052b05d45683d9fd3aa85203995b66cd65 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/ab/5816052b05d45683d9fd3aa85203995b66cd65 new file mode 100644 index 0000000000000000000000000000000000000000..00050c536340577500754ddf7c70a70f7f15d348 GIT binary patch literal 117 zcmV-*0E+*30gcT;3c@fDMq$@E#q0%{iIX7#5uvLdBT4_FV2qRq9^W3p?c;-2duxwD zqW&;8fV4y(mTKy2F_e_q7(vS#7fU|IwE&t}UH*)F-)NfYGR-%9b9+B=s=ZxF%tS0C XKGRW{+3j_o4E)Jmf5H6#f0ip&BqcW9 literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/b5/6a14235fe8b10e5cca38d8b8009899d60b6499 b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/b5/6a14235fe8b10e5cca38d8b8009899d60b6499 new file mode 100644 index 0000000000000000000000000000000000000000..11da58d508b854e3f76fefb8c9b78a82cc71636c GIT binary patch literal 149 zcmV;G0BZku0gcX03c@fDKw;N8MfQTsG|8j`B0^U^Mt){cu%?6v9^W3p?Z;cZ(zfk6 zEV4h1E@Dxgo0NRX;0h3<^NdL+DAhy6Fvm!_hG6#8<vnaTM5>CXq6H#pW>sHvq>4;T zVRkbSCzC$o(Yjq$dtKJMeABkS<Wkypvq*$Ufx+7|0)RR6m>TkDZbq}Ux83{za%?%K DRE9_t literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/c0/66f8c513a34cd0c63e54c3b418a50491686cff b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/objects/c0/66f8c513a34cd0c63e54c3b418a50491686cff new file mode 100644 index 0000000000000000000000000000000000000000..750122d3f3fb61a249aaabf5e223b3af4e52cdbd GIT binary patch literal 151 zcmV;I0BHYs0gaA93d0}}MZ5MC?h9omanylQ3R&eCY9?(U#vm4Y{Cb4$K9Bd{r;_v5 zG%{UU714;WSb@mKCSEvlBrzrpeS6D;@IYy_KB+TQIhu9}!U}|r9Ko2p@c`iLx{SsX zO7PL67$g-w?Om##W__RLr+h;`ce$mK9~!Miw8UWa6??8a?WdajsjE`A*LH+m{Qz%E FIiiIdNQeLc literal 0 HcmV?d00001 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/first-change-branch b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/first-change-branch new file mode 100644 index 000000000..c61dc9511 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/first-change-branch @@ -0,0 +1 @@ +99a7ae4f26f9e76d96e97a8acd47bf9f22dcea12 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/original-branch b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/original-branch new file mode 100644 index 000000000..383cec079 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/original-branch @@ -0,0 +1 @@ +c066f8c513a34cd0c63e54c3b418a50491686cff diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/second-change-branch b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/second-change-branch new file mode 100644 index 000000000..de415434a --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/.git_keep/refs/heads/second-change-branch @@ -0,0 +1 @@ +3228c73cfc742264f3101966a81d6a0a70488e36 diff --git a/test/integration_new/branch/rebase_and_drop/expected/repo/file b/test/integration_new/branch/rebase_and_drop/expected/repo/file new file mode 100644 index 000000000..164a07af1 --- /dev/null +++ b/test/integration_new/branch/rebase_and_drop/expected/repo/file @@ -0,0 +1,6 @@ + +This +Is +The +Second Change +File From 3232f46a8bbaa5dde12ceea55fabaddff4054172 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= <luka.markusic@microblink.com> Date: Mon, 12 Sep 2022 17:18:42 +0200 Subject: [PATCH 10/44] Validate --path argument when starting lazygit --- pkg/app/entry_point.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/app/entry_point.go b/pkg/app/entry_point.go index 5a767bb94..b355ebcca 100644 --- a/pkg/app/entry_point.go +++ b/pkg/app/entry_point.go @@ -57,6 +57,11 @@ func Start(buildInfo *BuildInfo, integrationTest integrationTypes.IntegrationTes if err != nil { log.Fatal(err) } + + if isRepo, err := isDirectoryAGitRepository(absRepoPath); err != nil || !isRepo { + log.Fatal(absRepoPath + " is not a valid git repository.") + } + cliArgs.WorkTree = absRepoPath cliArgs.GitDir = filepath.Join(absRepoPath, ".git") } From fecf2ab810b1cb02f69b77adf0924fb29add6c5a Mon Sep 17 00:00:00 2001 From: Takao <k.takao@neogenia.co.jp> Date: Thu, 15 Sep 2022 00:15:50 +0900 Subject: [PATCH 11/44] fix: how to change the config dir for MacOS --- docs/Config.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Config.md b/docs/Config.md index 666e465ec..87ed70eed 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -12,6 +12,10 @@ For old installations (slightly embarrassing: I didn't realise at the time that - MacOS: `~/Library/Application Support/jesseduffield/lazygit/config.yml` - Windows: `%APPDATA%\jesseduffield\lazygit\config.yml` +If you want to change the config directory: + +- MacOS: `export XDG_CONFIG_HOME="$HOME/.config"` + ## Default ```yaml From 7af7af27c6252b862989d11f930787e5b370b119 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Fri, 9 Sep 2022 21:11:05 -0700 Subject: [PATCH 12/44] various changes to improve integration tests --- go.mod | 8 +- go.sum | 16 +- pkg/gui/gui.go | 4 +- pkg/integration/clients/go_test.go | 19 +- pkg/integration/components/assert.go | 9 +- pkg/integration/components/input.go | 76 +- pkg/integration/components/runner.go | 23 +- pkg/integration/components/shell.go | 21 +- pkg/integration/components/snapshot.go | 2 +- pkg/integration/components/test.go | 2 +- pkg/integration/components/test_test.go | 4 + pkg/integration/deprecated/go_test.go | 18 +- pkg/integration/deprecated/integration.go | 2 +- pkg/integration/tests/branch/rebase.go | 2 + .../tests/branch/rebase_and_drop.go | 11 +- vendor/github.com/gdamore/tcell/v2/README.md | 9 +- vendor/github.com/jesseduffield/gocui/gui.go | 19 +- .../jesseduffield/gocui/tcell_driver.go | 4 + vendor/github.com/jesseduffield/gocui/view.go | 3 + vendor/github.com/rivo/uniseg/README.md | 16 +- vendor/github.com/rivo/uniseg/doc.go | 77 +- .../github.com/rivo/uniseg/eastasianwidth.go | 5 +- .../rivo/uniseg/emojipresentation.go | 285 +++++++ .../github.com/rivo/uniseg/gen_properties.go | 122 +-- vendor/github.com/rivo/uniseg/grapheme.go | 136 ++- .../rivo/uniseg/graphemeproperties.go | 2 +- .../github.com/rivo/uniseg/graphemerules.go | 37 +- vendor/github.com/rivo/uniseg/line.go | 8 +- .../github.com/rivo/uniseg/lineproperties.go | 5 +- vendor/github.com/rivo/uniseg/properties.go | 13 +- .../rivo/uniseg/sentenceproperties.go | 5 +- vendor/github.com/rivo/uniseg/step.go | 112 ++- vendor/github.com/rivo/uniseg/width.go | 54 ++ .../github.com/rivo/uniseg/wordproperties.go | 4 +- vendor/golang.org/x/sys/cpu/cpu_arm64.go | 5 +- vendor/golang.org/x/sys/plan9/syscall.go | 10 +- vendor/golang.org/x/sys/unix/ioctl_linux.go | 20 +- vendor/golang.org/x/sys/unix/mkall.sh | 9 +- vendor/golang.org/x/sys/unix/str.go | 27 - vendor/golang.org/x/sys/unix/syscall.go | 10 +- .../x/sys/unix/syscall_darwin.1_12.go | 32 - .../x/sys/unix/syscall_darwin.1_13.go | 108 --- .../golang.org/x/sys/unix/syscall_darwin.go | 90 ++ .../x/sys/unix/syscall_freebsd_386.go | 2 +- .../x/sys/unix/syscall_freebsd_amd64.go | 2 +- .../x/sys/unix/syscall_freebsd_arm.go | 2 +- .../x/sys/unix/syscall_freebsd_arm64.go | 2 +- .../x/sys/unix/syscall_freebsd_riscv64.go | 2 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 30 +- .../x/sys/unix/syscall_linux_386.go | 4 - .../x/sys/unix/syscall_linux_amd64.go | 4 - .../x/sys/unix/syscall_linux_arm.go | 4 - .../x/sys/unix/syscall_linux_arm64.go | 4 - .../x/sys/unix/syscall_linux_loong64.go | 4 - .../x/sys/unix/syscall_linux_mips64x.go | 4 - .../x/sys/unix/syscall_linux_mipsx.go | 4 - .../x/sys/unix/syscall_linux_ppc.go | 4 - .../x/sys/unix/syscall_linux_ppc64x.go | 4 - .../x/sys/unix/syscall_linux_riscv64.go | 4 - .../x/sys/unix/syscall_linux_s390x.go | 4 - .../x/sys/unix/syscall_linux_sparc64.go | 4 - .../x/sys/unix/syscall_openbsd_libc.go | 4 +- .../golang.org/x/sys/unix/syscall_solaris.go | 111 ++- vendor/golang.org/x/sys/unix/syscall_unix.go | 8 +- vendor/golang.org/x/sys/unix/sysvshm_unix.go | 13 +- vendor/golang.org/x/sys/unix/xattr_bsd.go | 95 ++- .../x/sys/unix/zsyscall_darwin_amd64.1_13.go | 40 - .../x/sys/unix/zsyscall_darwin_amd64.1_13.s | 25 - .../x/sys/unix/zsyscall_darwin_amd64.go | 32 +- .../x/sys/unix/zsyscall_darwin_amd64.s | 21 +- .../x/sys/unix/zsyscall_darwin_arm64.1_13.go | 40 - .../x/sys/unix/zsyscall_darwin_arm64.1_13.s | 25 - .../x/sys/unix/zsyscall_darwin_arm64.go | 32 +- .../x/sys/unix/zsyscall_darwin_arm64.s | 21 +- .../x/sys/unix/zsyscall_linux_386.go | 40 - .../x/sys/unix/zsyscall_linux_amd64.go | 40 - .../x/sys/unix/zsyscall_linux_arm.go | 40 - .../x/sys/unix/zsyscall_linux_arm64.go | 40 - .../x/sys/unix/zsyscall_linux_loong64.go | 40 - .../x/sys/unix/zsyscall_linux_mips.go | 40 - .../x/sys/unix/zsyscall_linux_mips64.go | 40 - .../x/sys/unix/zsyscall_linux_mips64le.go | 40 - .../x/sys/unix/zsyscall_linux_mipsle.go | 40 - .../x/sys/unix/zsyscall_linux_ppc.go | 40 - .../x/sys/unix/zsyscall_linux_ppc64.go | 40 - .../x/sys/unix/zsyscall_linux_ppc64le.go | 40 - .../x/sys/unix/zsyscall_linux_riscv64.go | 40 - .../x/sys/unix/zsyscall_linux_s390x.go | 40 - .../x/sys/unix/zsyscall_linux_sparc64.go | 40 - .../x/sys/unix/zsyscall_openbsd_arm.go | 798 +++++++++++++++--- .../x/sys/unix/zsyscall_openbsd_arm.s | 796 +++++++++++++++++ .../x/sys/unix/zsysnum_openbsd_arm.go | 1 + .../x/sys/unix/ztypes_freebsd_386.go | 17 +- .../x/sys/unix/ztypes_freebsd_amd64.go | 18 +- .../x/sys/unix/ztypes_freebsd_arm.go | 18 +- .../x/sys/unix/ztypes_freebsd_arm64.go | 18 +- .../x/sys/unix/ztypes_freebsd_riscv64.go | 18 +- .../x/sys/windows/setupapi_windows.go | 2 +- vendor/golang.org/x/sys/windows/syscall.go | 10 +- .../x/sys/windows/syscall_windows.go | 17 +- .../golang.org/x/sys/windows/types_windows.go | 19 + .../x/sys/windows/zsyscall_windows.go | 69 ++ vendor/modules.txt | 8 +- 103 files changed, 2883 insertions(+), 1525 deletions(-) create mode 100644 vendor/github.com/rivo/uniseg/emojipresentation.go create mode 100644 vendor/github.com/rivo/uniseg/width.go delete mode 100644 vendor/golang.org/x/sys/unix/str.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s diff --git a/go.mod b/go.mod index 56210e80b..976225865 100644 --- a/go.mod +++ b/go.mod @@ -11,14 +11,14 @@ require ( github.com/creack/pty v1.1.11 github.com/fsmiamoto/git-todo-parser v0.0.2 github.com/fsnotify/fsnotify v1.4.7 - github.com/gdamore/tcell/v2 v2.5.2 + github.com/gdamore/tcell/v2 v2.5.3 github.com/go-errors/errors v1.4.2 github.com/gookit/color v1.4.2 github.com/imdario/mergo v0.3.11 github.com/integrii/flaggy v1.4.0 github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 - github.com/jesseduffield/gocui v0.3.1-0.20220815095708-156fda5e0419 + github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6 github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e github.com/jesseduffield/yaml v2.1.0+incompatible @@ -61,13 +61,13 @@ require ( github.com/onsi/ginkgo v1.10.3 // indirect github.com/onsi/gomega v1.7.1 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect - github.com/rivo/uniseg v0.3.4 // indirect + github.com/rivo/uniseg v0.4.2 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/xanzy/ssh-agent v0.2.1 // indirect golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 // indirect golang.org/x/exp v0.0.0-20220318154914-8dddf5d87bd8 // indirect golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c // indirect - golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect + golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 // indirect golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect golang.org/x/text v0.3.7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index e2084d6a9..ebb3b202b 100644 --- a/go.sum +++ b/go.sum @@ -35,8 +35,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell/v2 v2.4.0/go.mod h1:cTTuF84Dlj/RqmaCIV5p4w8uG1zWdk0SF6oBpwHp4fU= -github.com/gdamore/tcell/v2 v2.5.2 h1:tKzG29kO9p2V++3oBY2W9zUjYu7IK1MENFeY/BzJSVY= -github.com/gdamore/tcell/v2 v2.5.2/go.mod h1:wSkrPaXoiIWZqW/g7Px4xc79di6FTcpB8tvaKJ6uGBo= +github.com/gdamore/tcell/v2 v2.5.3 h1:b9XQrT6QGbgI7JvZOJXFNczOQeIYbo8BfeSMzt2sAV0= +github.com/gdamore/tcell/v2 v2.5.3/go.mod h1:wSkrPaXoiIWZqW/g7Px4xc79di6FTcpB8tvaKJ6uGBo= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.2/go.mod h1:psDX2osz5VnTOnFWbDeWwS7yejl+uV3FEWEp4lssFEs= @@ -72,8 +72,8 @@ github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8T github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 h1:GOQrmaE8i+KEdB8NzAegKYd4tPn/inM0I1uo0NXFerg= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o= -github.com/jesseduffield/gocui v0.3.1-0.20220815095708-156fda5e0419 h1:p3Ix7RUcy4X16Lk5jTSfTxecJT7ryqYHclfRbo/Svzs= -github.com/jesseduffield/gocui v0.3.1-0.20220815095708-156fda5e0419/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= +github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6 h1:FgxhH7++BaLcDwldyNtxkeVUC2z7ur2QYtJ8Msgkgc0= +github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10/go.mod h1:aA97kHeNA+sj2Hbki0pvLslmE4CbDyhBeSSTUUnOuVo= github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e h1:uw/oo+kg7t/oeMs6sqlAwr85ND/9cpO3up3VxphxY0U= @@ -134,8 +134,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.3.4 h1:3Z3Eu6FGHZWSfNKJTOUiPatWwfc7DzJRU04jFUqJODw= -github.com/rivo/uniseg v0.3.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.2 h1:YwD0ulJSJytLpiaWua0sBDusfsCZohxjxzVTYjwxfV8= +github.com/rivo/uniseg v0.4.2/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/sahilm/fuzzy v0.1.0 h1:FzWGaw2Opqyu+794ZQ9SYifWv2EIXpwP4q8dY1kDAwI= github.com/sahilm/fuzzy v0.1.0/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y= github.com/samber/lo v1.10.1 h1:0D3h7i0U3hRAbaCeQ82DLe67n0A7Bbl0/cEoWqFGp+U= @@ -194,8 +194,8 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 h1:ohgcoMbSofXygzo6AD2I1kz3BFmW1QArPYTtwEM3UXc= +golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 h1:Q5284mrmYTpACcm+eAKjKJH48BBwSyfJqmmGDTtT8Vc= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 8be5a4a4d..5420ac9fa 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -494,8 +494,6 @@ func (gui *Gui) Run(startArgs appTypes.StartArgs) error { }) deadlock.Opts.Disable = !gui.Debug - gui.handleTestMode(startArgs.IntegrationTest) - gui.g.OnSearchEscape = gui.onSearchEscape if err := gui.Config.ReloadUserConfig(); err != nil { return nil @@ -552,6 +550,8 @@ func (gui *Gui) Run(startArgs appTypes.StartArgs) error { gui.c.Log.Info("starting main loop") + gui.handleTestMode(startArgs.IntegrationTest) + return gui.g.MainLoop() } diff --git a/pkg/integration/clients/go_test.go b/pkg/integration/clients/go_test.go index 9fceecd40..a14b1f254 100644 --- a/pkg/integration/clients/go_test.go +++ b/pkg/integration/clients/go_test.go @@ -7,6 +7,8 @@ package clients // for an example import ( + "bytes" + "errors" "io" "io/ioutil" "os" @@ -39,6 +41,7 @@ func TestIntegration(t *testing.T) { } t.Run(test.Name(), func(t *testing.T) { + t.Parallel() err := f() assert.NoError(t, err) }) @@ -57,12 +60,26 @@ func runCmdHeadless(cmd *exec.Cmd) error { "TERM=xterm", ) - f, err := pty.StartWithSize(cmd, &pty.Winsize{Rows: 100, Cols: 100}) + // not writing stderr to the pty because we want to capture a panic if + // there is one. But some commands will not be in tty mode if stderr is + // not a terminal. We'll need to keep an eye out for that. + stderr := new(bytes.Buffer) + cmd.Stderr = stderr + + // these rows and columns are ignored because internally we use tcell's + // simulation screen. However we still need the pty for the sake of + // running other commands in a pty. + f, err := pty.StartWithSize(cmd, &pty.Winsize{Rows: 300, Cols: 300}) if err != nil { return err } _, _ = io.Copy(ioutil.Discard, f) + if cmd.Wait() != nil { + // return an error with the stderr output + return errors.New(stderr.String()) + } + return f.Close() } diff --git a/pkg/integration/components/assert.go b/pkg/integration/components/assert.go index 4b56a76e7..28be134a6 100644 --- a/pkg/integration/components/assert.go +++ b/pkg/integration/components/assert.go @@ -111,6 +111,13 @@ func (self *Assert) CurrentViewName(expectedViewName string) { }) } +func (self *Assert) CurrentWindowName(expectedWindowName string) { + self.assertWithRetries(func() (bool, string) { + actual := self.gui.CurrentContext().GetView().Name() + return actual == expectedWindowName, fmt.Sprintf("Expected current window name to be '%s', but got '%s'", expectedWindowName, actual) + }) +} + func (self *Assert) CurrentBranchName(expectedViewName string) { self.assertWithRetries(func() (bool, string) { actual := self.gui.CheckedOutRef().Name @@ -210,7 +217,7 @@ func (self *Assert) matchString(matcher *matcher, context string, getValue func( } func (self *Assert) assertWithRetries(test func() (bool, string)) { - waitTimes := []int{0, 1, 5, 10, 200, 500, 1000} + waitTimes := []int{0, 1, 5, 10, 200, 500, 1000, 2000} var message string for _, waitTime := range waitTimes { diff --git a/pkg/integration/components/input.go b/pkg/integration/components/input.go index 2f0666ebc..45ffdfc5d 100644 --- a/pkg/integration/components/input.go +++ b/pkg/integration/components/input.go @@ -42,22 +42,27 @@ func (self *Input) pressKey(keyStr string) { func (self *Input) SwitchToStatusWindow() { self.pressKey(self.keys.Universal.JumpToBlock[0]) + self.assert.CurrentWindowName("status") } func (self *Input) SwitchToFilesWindow() { self.pressKey(self.keys.Universal.JumpToBlock[1]) + self.assert.CurrentWindowName("files") } func (self *Input) SwitchToBranchesWindow() { self.pressKey(self.keys.Universal.JumpToBlock[2]) + self.assert.CurrentWindowName("localBranches") } func (self *Input) SwitchToCommitsWindow() { self.pressKey(self.keys.Universal.JumpToBlock[3]) + self.assert.CurrentWindowName("commits") } func (self *Input) SwitchToStashWindow() { self.pressKey(self.keys.Universal.JumpToBlock[4]) + self.assert.CurrentWindowName("stash") } func (self *Input) Type(content string) { @@ -132,38 +137,43 @@ func (self *Input) NavigateToListItemContainingText(text string) { view := currentContext.GetView() - // first we look for a duplicate on the current screen. We won't bother looking beyond that though. - matchCount := 0 - matchIndex := -1 - for i, line := range view.ViewBufferLines() { - if strings.Contains(line, text) { - matchCount++ - matchIndex = i - } - } - if matchCount > 1 { - self.assert.Fail(fmt.Sprintf("Found %d matches for %s, expected only a single match", matchCount, text)) - } - if matchCount == 1 { - selectedLineIdx := view.SelectedLineIdx() - if selectedLineIdx == matchIndex { - self.assert.MatchSelectedLine(Contains(text)) - return - } - if selectedLineIdx < matchIndex { - for i := selectedLineIdx; i < matchIndex; i++ { - self.NextItem() - } - self.assert.MatchSelectedLine(Contains(text)) - return - } else { - for i := selectedLineIdx; i > matchIndex; i-- { - self.PreviousItem() - } - self.assert.MatchSelectedLine(Contains(text)) - return - } - } + var matchIndex int - self.assert.Fail(fmt.Sprintf("Could not find item containing text: %s", text)) + self.assert.assertWithRetries(func() (bool, string) { + matchCount := 0 + matchIndex = -1 + // first we look for a duplicate on the current screen. We won't bother looking beyond that though. + for i, line := range view.ViewBufferLines() { + if strings.Contains(line, text) { + matchCount++ + matchIndex = i + } + } + if matchCount > 1 { + return false, fmt.Sprintf("Found %d matches for %s, expected only a single match", matchCount, text) + } else if matchCount == 0 { + return false, fmt.Sprintf("Could not find item containing text: %s", text) + } else { + return true, "" + } + }) + + selectedLineIdx := view.SelectedLineIdx() + if selectedLineIdx == matchIndex { + self.assert.MatchSelectedLine(Contains(text)) + return + } + if selectedLineIdx < matchIndex { + for i := selectedLineIdx; i < matchIndex; i++ { + self.NextItem() + } + self.assert.MatchSelectedLine(Contains(text)) + return + } else { + for i := selectedLineIdx; i > matchIndex; i-- { + self.PreviousItem() + } + self.assert.MatchSelectedLine(Contains(text)) + return + } } diff --git a/pkg/integration/components/runner.go b/pkg/integration/components/runner.go index d2b31aed6..54b42de17 100644 --- a/pkg/integration/components/runner.go +++ b/pkg/integration/components/runner.go @@ -58,11 +58,11 @@ func RunTests( for _, test := range tests { test := test - paths := NewPaths( - filepath.Join(testDir, test.Name()), - ) - testWrapper(test, func() error { //nolint: thelper + paths := NewPaths( + filepath.Join(testDir, test.Name()), + ) + return runTest(test, paths, projectRootDir, logf, runCmd, mode, keyPressDelay) }) } @@ -126,16 +126,7 @@ func buildLazygit() error { } func createFixture(test *IntegrationTest, paths Paths) error { - originalDir, err := os.Getwd() - if err != nil { - return err - } - - if err := os.Chdir(paths.ActualRepo()); err != nil { - panic(err) - } - - shell := NewShell() + shell := NewShell(paths.ActualRepo()) shell.RunCommand("git init -b master") shell.RunCommand(`git config user.email "CI@example.com"`) shell.RunCommand(`git config user.name "CI"`) @@ -143,10 +134,6 @@ func createFixture(test *IntegrationTest, paths Paths) error { test.SetupRepo(shell) - if err := os.Chdir(originalDir); err != nil { - panic(err) - } - return nil } diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index b49921348..880e270d3 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -4,6 +4,7 @@ import ( "fmt" "io/ioutil" "os" + "path/filepath" "github.com/jesseduffield/lazygit/pkg/secureexec" "github.com/mgutz/str" @@ -12,16 +13,20 @@ import ( // this is for running shell commands, mostly for the sake of setting up the repo // but you can also run the commands from within lazygit to emulate things happening // in the background. -type Shell struct{} +type Shell struct { + // working directory the shell is invoked in + dir string +} -func NewShell() *Shell { - return &Shell{} +func NewShell(dir string) *Shell { + return &Shell{dir: dir} } func (s *Shell) RunCommand(cmdStr string) *Shell { args := str.ToArgv(cmdStr) cmd := secureexec.Command(args[0], args[1:]...) cmd.Env = os.Environ() + cmd.Dir = s.dir output, err := cmd.CombinedOutput() if err != nil { @@ -32,18 +37,20 @@ func (s *Shell) RunCommand(cmdStr string) *Shell { } func (s *Shell) CreateFile(path string, content string) *Shell { - err := ioutil.WriteFile(path, []byte(content), 0o644) + fullPath := filepath.Join(s.dir, path) + err := ioutil.WriteFile(fullPath, []byte(content), 0o644) if err != nil { - panic(fmt.Sprintf("error creating file: %s\n%s", path, err)) + panic(fmt.Sprintf("error creating file: %s\n%s", fullPath, err)) } return s } func (s *Shell) UpdateFile(path string, content string) *Shell { - err := ioutil.WriteFile(path, []byte(content), 0o644) + fullPath := filepath.Join(s.dir, path) + err := ioutil.WriteFile(fullPath, []byte(content), 0o644) if err != nil { - panic(fmt.Sprintf("error updating file: %s\n%s", path, err)) + panic(fmt.Sprintf("error updating file: %s\n%s", fullPath, err)) } return s diff --git a/pkg/integration/components/snapshot.go b/pkg/integration/components/snapshot.go index b7efa0fb0..a75faf8e6 100644 --- a/pkg/integration/components/snapshot.go +++ b/pkg/integration/components/snapshot.go @@ -174,7 +174,7 @@ func (self *Snapshotter) compareSnapshots() error { } self.logf("%s", string(bytes)) - return errors.New(getDiff(f.Name(), actualRepo, expectedRepo)) + return errors.New(getDiff(f.Name(), expectedRepo, actualRepo)) } } diff --git a/pkg/integration/components/test.go b/pkg/integration/components/test.go index 3cc6a7641..46c0d4055 100644 --- a/pkg/integration/components/test.go +++ b/pkg/integration/components/test.go @@ -93,7 +93,7 @@ func (self *IntegrationTest) SetupRepo(shell *Shell) { // I want access to all contexts, the model, the ability to press a key, the ability to log, func (self *IntegrationTest) Run(gui integrationTypes.GuiDriver) { - shell := NewShell() + shell := NewShell("/tmp/lazygit-test") assert := NewAssert(gui) keys := gui.Keys() input := NewInput(gui, keys, assert, KeyPressDelay()) diff --git a/pkg/integration/components/test_test.go b/pkg/integration/components/test_test.go index e180bfccb..61466e2b4 100644 --- a/pkg/integration/components/test_test.go +++ b/pkg/integration/components/test_test.go @@ -56,6 +56,10 @@ func (self *fakeGuiDriver) SecondaryView() *gocui.View { return nil } +func (self *fakeGuiDriver) View(viewName string) *gocui.View { + return nil +} + func TestAssertionFailure(t *testing.T) { test := NewIntegrationTest(NewIntegrationTestArgs{ Description: unitTestDescription, diff --git a/pkg/integration/deprecated/go_test.go b/pkg/integration/deprecated/go_test.go index fbec34bd9..9b8c92a3b 100644 --- a/pkg/integration/deprecated/go_test.go +++ b/pkg/integration/deprecated/go_test.go @@ -4,6 +4,8 @@ package deprecated import ( + "bytes" + "errors" "fmt" "io" "io/ioutil" @@ -95,12 +97,26 @@ func runCmdHeadless(cmd *exec.Cmd) error { "TERM=xterm", ) - f, err := pty.StartWithSize(cmd, &pty.Winsize{Rows: 100, Cols: 100}) + // not writing stderr to the pty because we want to capture a panic if + // there is one. But some commands will not be in tty mode if stderr is + // not a terminal. We'll need to keep an eye out for that. + stderr := new(bytes.Buffer) + cmd.Stderr = stderr + + // these rows and columns are ignored because internally we use tcell's + // simulation screen. However we still need the pty for the sake of + // running other commands in a pty. + f, err := pty.StartWithSize(cmd, &pty.Winsize{Rows: 300, Cols: 300}) if err != nil { return err } _, _ = io.Copy(ioutil.Discard, f) + if cmd.Wait() != nil { + // return an error with the stderr output + return errors.New(stderr.String()) + } + return f.Close() } diff --git a/pkg/integration/deprecated/integration.go b/pkg/integration/deprecated/integration.go index b44fdb1b2..9527d1a45 100644 --- a/pkg/integration/deprecated/integration.go +++ b/pkg/integration/deprecated/integration.go @@ -310,7 +310,7 @@ func getTestSpeeds(testStartSpeed float64, mode Mode, speedStr string) []float64 if startSpeed > 5 { speeds = append(speeds, 5) } - speeds = append(speeds, 1, 1) + speeds = append(speeds, 1, 0.5) return speeds } diff --git a/pkg/integration/tests/branch/rebase.go b/pkg/integration/tests/branch/rebase.go index eda7567e7..8b414b794 100644 --- a/pkg/integration/tests/branch/rebase.go +++ b/pkg/integration/tests/branch/rebase.go @@ -84,9 +84,11 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ assert.CurrentViewName("mergeConflicts") input.PrimaryAction() + assert.MatchViewContent("information", Contains("rebasing")) assert.InConfirm() assert.MatchCurrentViewContent(Contains("all merge conflicts resolved. Continue?")) input.Confirm() + assert.MatchViewContent("information", NotContains("rebasing")) // this proves we actually have integrated the changes from second-change-branch assert.MatchViewContent("commits", Contains("second-change-branch unrelated change")) diff --git a/pkg/integration/tests/branch/rebase_and_drop.go b/pkg/integration/tests/branch/rebase_and_drop.go index 18ffdd820..d87919a0a 100644 --- a/pkg/integration/tests/branch/rebase_and_drop.go +++ b/pkg/integration/tests/branch/rebase_and_drop.go @@ -13,7 +13,7 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ SetupRepo: func(shell *Shell) { commonRebaseSetup(shell) // addin a couple additional commits so that we can drop one - shell.EmptyCommit("to drop") + shell.EmptyCommit("to remove") shell.EmptyCommit("to keep") }, Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { @@ -29,6 +29,8 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ assert.MatchCurrentViewContent(Contains("Are you sure you want to rebase 'first-change-branch' onto 'second-change-branch'?")) input.Confirm() + assert.MatchViewContent("information", Contains("rebasing")) + assert.InConfirm() assert.MatchCurrentViewContent(Contains("Conflicts!")) input.Confirm() @@ -37,9 +39,10 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ assert.MatchSelectedLine(Contains("file")) input.SwitchToCommitsWindow() + assert.MatchSelectedLine(Contains("pick")) // this means it's a rebasing commit input.NextItem() input.PressKeys(keys.Universal.Remove) - assert.MatchSelectedLine(Contains("to drop")) + assert.MatchSelectedLine(Contains("to remove")) assert.MatchSelectedLine(Contains("drop")) input.SwitchToFilesWindow() @@ -55,9 +58,11 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ assert.MatchCurrentViewContent(Contains("all merge conflicts resolved. Continue?")) input.Confirm() + assert.MatchViewContent("information", NotContains("rebasing")) + // this proves we actually have integrated the changes from second-change-branch assert.MatchViewContent("commits", Contains("second-change-branch unrelated change")) assert.MatchViewContent("commits", Contains("to keep")) - assert.MatchViewContent("commits", NotContains("to drop")) + assert.MatchViewContent("commits", NotContains("to remove")) }, }) diff --git a/vendor/github.com/gdamore/tcell/v2/README.md b/vendor/github.com/gdamore/tcell/v2/README.md index e5efb98d2..78c76b6ad 100644 --- a/vendor/github.com/gdamore/tcell/v2/README.md +++ b/vendor/github.com/gdamore/tcell/v2/README.md @@ -1,16 +1,11 @@ -<a href="https://stand-with-ukraine.pp.ua"> -<img src="https://upload.wikimedia.org/wikipedia/commons/d/d2/Flag_of_Ukraine.png" height="20px" width="100%"/> -</a> - <img src="logos/tcell.png" style="float: right"/> -Please see [here](UKRAINE.md) for an important message for the people of Russia. - # Tcell _Tcell_ is a _Go_ package that provides a cell based view for text terminals, like _XTerm_. It was inspired by _termbox_, but includes many additional improvements. +[](https://stand-with-ukraine.pp.ua) [](https://github.com/gdamore/tcell/actions/workflows/linux.yml) [](https://github.com/gdamore/tcell/actions/workflows/windows.yml) [](https://github.com/gdamore/tcell/blob/master/LICENSE) @@ -18,6 +13,8 @@ It was inspired by _termbox_, but includes many additional improvements. [](https://discord.gg/urTTxDN) [](https://codecov.io/gh/gdamore/tcell) +Please see [here](UKRAINE.md) for an important message for the people of Russia. + NOTE: This is version 2 of _Tcell_. There are breaking changes relative to version 1. Version 1.x remains available using the import `github.com/gdamore/tcell`. diff --git a/vendor/github.com/jesseduffield/gocui/gui.go b/vendor/github.com/jesseduffield/gocui/gui.go index 0c76bfee7..f02f1a93a 100644 --- a/vendor/github.com/jesseduffield/gocui/gui.go +++ b/vendor/github.com/jesseduffield/gocui/gui.go @@ -206,6 +206,16 @@ func NewGui(mode OutputMode, supportOverlaps bool, playMode PlayMode, headless b return nil, err } + if headless || runtime.GOOS == "windows" { + g.maxX, g.maxY = g.screen.Size() + } else { + // TODO: find out if we actually need this bespoke logic for linux + g.maxX, g.maxY, err = g.getTermWindowSize() + if err != nil { + return nil, err + } + } + g.outputMode = mode g.stop = make(chan struct{}) @@ -225,15 +235,6 @@ func NewGui(mode OutputMode, supportOverlaps bool, playMode PlayMode, headless b } } - if runtime.GOOS != "windows" { - g.maxX, g.maxY, err = g.getTermWindowSize() - if err != nil { - return nil, err - } - } else { - g.maxX, g.maxY = Screen.Size() - } - g.BgColor, g.FgColor, g.FrameColor = ColorDefault, ColorDefault, ColorDefault g.SelBgColor, g.SelFgColor, g.SelFrameColor = ColorDefault, ColorDefault, ColorDefault diff --git a/vendor/github.com/jesseduffield/gocui/tcell_driver.go b/vendor/github.com/jesseduffield/gocui/tcell_driver.go index 81d30fe91..ebb291f7c 100644 --- a/vendor/github.com/jesseduffield/gocui/tcell_driver.go +++ b/vendor/github.com/jesseduffield/gocui/tcell_driver.go @@ -84,6 +84,10 @@ func (g *Gui) tcellInitSimulation() error { } else { g.screen = s Screen = s + // setting to a larger value than the typical terminal size + // so that during a test we're more likely to see an item to select in a view. + s.SetSize(100, 100) + s.Sync() return nil } } diff --git a/vendor/github.com/jesseduffield/gocui/view.go b/vendor/github.com/jesseduffield/gocui/view.go index 95c7ef4b1..ce0aa3c48 100644 --- a/vendor/github.com/jesseduffield/gocui/view.go +++ b/vendor/github.com/jesseduffield/gocui/view.go @@ -1245,6 +1245,9 @@ func (v *View) SelectedLineIdx() int { // expected to only be used in tests func (v *View) SelectedLine() string { + if len(v.lines) == 0 { + return "" + } line := v.lines[v.SelectedLineIdx()] str := lineType(line).String() return strings.Replace(str, "\x00", " ", -1) diff --git a/vendor/github.com/rivo/uniseg/README.md b/vendor/github.com/rivo/uniseg/README.md index 89fc21a3d..7e3d12e79 100644 --- a/vendor/github.com/rivo/uniseg/README.md +++ b/vendor/github.com/rivo/uniseg/README.md @@ -3,13 +3,13 @@ [](https://pkg.go.dev/github.com/rivo/uniseg) [](https://goreportcard.com/report/github.com/rivo/uniseg) -This Go package implements Unicode Text Segmentation according to [Unicode Standard Annex #29](https://unicode.org/reports/tr29/) and Unicode Line Breaking according to [Unicode Standard Annex #14](https://unicode.org/reports/tr14/) (Unicode version 14.0.0). +This Go package implements Unicode Text Segmentation according to [Unicode Standard Annex #29](https://unicode.org/reports/tr29/), Unicode Line Breaking according to [Unicode Standard Annex #14](https://unicode.org/reports/tr14/) (Unicode version 14.0.0), and monospace font string width calculation similar to [wcwidth](https://man7.org/linux/man-pages/man3/wcwidth.3.html). ## Background ### Grapheme Clusters -In Go, [strings are read-only slices of bytes](https://blog.golang.org/strings). They can be turned into Unicode code points using the `for` loop or by casting: `[]rune(str)`. However, multiple code points may be combined into one user-perceived character or what the Unicode specification calls "grapheme cluster". Here are some examples: +In Go, [strings are read-only slices of bytes](https://go.dev/blog/strings). They can be turned into Unicode code points using the `for` loop or by casting: `[]rune(str)`. However, multiple code points may be combined into one user-perceived character or what the Unicode specification calls "grapheme cluster". Here are some examples: |String|Bytes (UTF-8)|Code points (runes)|Grapheme clusters| |-|-|-|-| @@ -31,6 +31,10 @@ Sentence boundaries are often used for triple-click or some other method of sele Line breaking, also known as word wrapping, is the process of breaking a section of text into lines such that it will fit in the available width of a page, window or other display area. This package provides tools to determine where a string may or may not be broken and where it must be broken (for example after newline characters). +### Monospace Width + +Most terminals or text displays / text editors using a monospace font (for example source code editors) use a fixed width for each character. Some characters such as emojis or characters found in Asian and other languages may take up more than one character cell. This package provides tools to determine the number of cells a string will take up when displayed in a monospace font. See [here](https://pkg.go.dev/github.com/rivo/uniseg#hdr-Monospace_Width) for more information. + ## Installation ```bash @@ -47,6 +51,14 @@ fmt.Println(n) // 2 ``` +### Calculating the Monospace String Width + +```go +width := uniseg.StringWidth("🇩🇪🏳️🌈!") +fmt.Println(width) +// 5 +``` + ### Using the [`Graphemes`](https://pkg.go.dev/github.com/rivo/uniseg#Graphemes) Class This is the most convenient method of iterating over grapheme clusters: diff --git a/vendor/github.com/rivo/uniseg/doc.go b/vendor/github.com/rivo/uniseg/doc.go index 6c498ede1..0fc2d8b43 100644 --- a/vendor/github.com/rivo/uniseg/doc.go +++ b/vendor/github.com/rivo/uniseg/doc.go @@ -1,8 +1,9 @@ /* -Package uniseg implements Unicode Text Segmentation and Unicode Line Breaking. -Unicode Text Segmentation conforms to Unicode Standard Annex #29 -(https://unicode.org/reports/tr29/) and Unicode Line Breaking conforms to -Unicode Standard Annex #14 (https://unicode.org/reports/tr14/). +Package uniseg implements Unicode Text Segmentation, Unicode Line Breaking, and +string width calculation for monospace fonts. Unicode Text Segmentation conforms +to Unicode Standard Annex #29 (https://unicode.org/reports/tr29/) and Unicode +Line Breaking conforms to Unicode Standard Annex #14 +(https://unicode.org/reports/tr14/). In short, using this package, you can split a string into grapheme clusters (what people would usually refer to as a "character"), into words, and into @@ -12,8 +13,23 @@ as emojis, combining characters, or characters from Asian, Arabic, Hebrew, or other languages. Additionally, you can use it to implement line breaking (or "word wrapping"), that is, to determine where text can be broken over to the next line when the width of the line is not big enough to fit the entire text. +Finally, you can use it to calculate the display width of a string for monospace +fonts. -Grapheme Clusters +# Getting Started + +If you just want to count the number of characters in a string, you can use +[GraphemeClusterCount]. If you want to determine the display width of a string, +you can use [StringWidth]. If you want to iterate over a string, you can use +[Step], [StepString], or the [Graphemes] class (more convenient but less +performant). This will provide you with all information: grapheme clusters, +word boundaries, sentence boundaries, line breaks, and monospace character +widths. The specialized functions [FirstGraphemeCluster], +[FirstGraphemeClusterInString], [FirstWord], [FirstWordInString], +[FirstSentence], and [FirstSentenceInString] can be used if only one type of +information is needed. + +# Grapheme Clusters Consider the rainbow flag emoji: 🏳️🌈. On most modern systems, it appears as one character. But its string representation actually has 14 bytes, so counting @@ -21,11 +37,11 @@ bytes (or using len("🏳️🌈")) will not work as expected. Counting runes either: The flag has 4 Unicode code points, thus 4 runes. The stdlib function utf8.RuneCountInString("🏳️🌈") and len([]rune("🏳️🌈")) will both return 4. -The uniseg.GraphemeClusterCount(str) function will return 1 for the rainbow flag -emoji. The Graphemes class and a variety of functions in this package will allow -you to split strings into its grapheme clusters. +The [GraphemeClusterCount] function will return 1 for the rainbow flag emoji. +The Graphemes class and a variety of functions in this package will allow you to +split strings into its grapheme clusters. -Word Boundaries +# Word Boundaries Word boundaries are used in a number of different contexts. The most familiar ones are selection (double-click mouse selection), cursor movement ("move to @@ -33,7 +49,7 @@ next word" control-arrow keys), and the dialog option "Whole Word Search" for search and replace. This package provides methods for determining word boundaries. -Sentence Boundaries +# Sentence Boundaries Sentence boundaries are often used for triple-click or some other method of selecting or iterating through blocks of text that are larger than single words. @@ -41,7 +57,7 @@ They are also used to determine whether words occur within the same sentence in database queries. This package provides methods for determining sentence boundaries. -Line Breaking +# Line Breaking Line breaking, also known as word wrapping, is the process of breaking a section of text into lines such that it will fit in the available width of a page, @@ -49,5 +65,44 @@ window or other display area. This package provides methods to determine the positions in a string where a line must be broken, may be broken, or must not be broken. +# Monospace Width + +Monospace width, as referred to in this package, is the width of a string in a +monospace font. This is commonly used in terminal user interfaces or text +displays or editors that don't support proportional fonts. A width of 1 +corresponds to a single character cell. The C function [wcwidth()] and its +implementation in other programming languages is in widespread use for the same +purpose. However, there is no standard for the calculation of such widths, and +this package differs from wcwidth() in a number of ways, presumably to generate +more visually pleasing results. + +To start, we assume that every code point has a width of 1, with the following +exceptions: + + - Code points with grapheme cluster break properties Control, CR, LF, Extend, + and ZWJ have a width of 0. + - U+2E3A, Two-Em Dash, has a width of 3. + - U+2E3B, Three-Em Dash, has a width of 4. + - Characters with the East-Asian Width properties "Fullwidth" (F) and "Wide" + (W) have a width of 2. (Properties "Ambiguous" (A) and "Neutral" (N) both + have a width of 1.) + - Code points with grapheme cluster break property Regional Indicator have a + width of 2. + - Code points with grapheme cluster break property Extended Pictographic have + a width of 2, unless their Emoji Presentation flag is "No", in which case + the width is 1. + +For Hangul grapheme clusters composed of conjoining Jamo and for Regional +Indicators (flags), all code points except the first one have a width of 0. For +grapheme clusters starting with an Extended Pictographic, any additional code +point will force a total width of 2, except if the Variation Selector-15 +(U+FE0E) is included, in which case the total width is always 1. Grapheme +clusters ending with Variation Selector-16 (U+FE0F) have a width of 2. + +Note that whether these widths appear correct depends on your application's +render engine, to which extent it conforms to the Unicode Standard, and its +choice of font. + +[wcwidth()]: https://man7.org/linux/man-pages/man3/wcwidth.3.html */ package uniseg diff --git a/vendor/github.com/rivo/uniseg/eastasianwidth.go b/vendor/github.com/rivo/uniseg/eastasianwidth.go index 456c1cac5..661934ac2 100644 --- a/vendor/github.com/rivo/uniseg/eastasianwidth.go +++ b/vendor/github.com/rivo/uniseg/eastasianwidth.go @@ -4,7 +4,10 @@ package uniseg // eastAsianWidth are taken from // https://www.unicode.org/Public/14.0.0/ucd/EastAsianWidth.txt -// on July 25, 2022. See https://www.unicode.org/license.html for the Unicode +// and +// https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 10, 2022. See https://www.unicode.org/license.html for the Unicode // license agreement. var eastAsianWidth = [][3]int{ {0x0000, 0x001F, prN}, // Cc [32] <control-0000>..<control-001F> diff --git a/vendor/github.com/rivo/uniseg/emojipresentation.go b/vendor/github.com/rivo/uniseg/emojipresentation.go new file mode 100644 index 000000000..fd0f7451a --- /dev/null +++ b/vendor/github.com/rivo/uniseg/emojipresentation.go @@ -0,0 +1,285 @@ +package uniseg + +// Code generated via go generate from gen_properties.go. DO NOT EDIT. + +// emojiPresentation are taken from +// +// and +// https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 10, 2022. See https://www.unicode.org/license.html for the Unicode +// license agreement. +var emojiPresentation = [][3]int{ + {0x231A, 0x231B, prEmojiPresentation}, // E0.6 [2] (⌚..⌛) watch..hourglass done + {0x23E9, 0x23EC, prEmojiPresentation}, // E0.6 [4] (⏩..⏬) fast-forward button..fast down button + {0x23F0, 0x23F0, prEmojiPresentation}, // E0.6 [1] (⏰) alarm clock + {0x23F3, 0x23F3, prEmojiPresentation}, // E0.6 [1] (⏳) hourglass not done + {0x25FD, 0x25FE, prEmojiPresentation}, // E0.6 [2] (◽..◾) white medium-small square..black medium-small square + {0x2614, 0x2615, prEmojiPresentation}, // E0.6 [2] (☔..☕) umbrella with rain drops..hot beverage + {0x2648, 0x2653, prEmojiPresentation}, // E0.6 [12] (♈..♓) Aries..Pisces + {0x267F, 0x267F, prEmojiPresentation}, // E0.6 [1] (♿) wheelchair symbol + {0x2693, 0x2693, prEmojiPresentation}, // E0.6 [1] (⚓) anchor + {0x26A1, 0x26A1, prEmojiPresentation}, // E0.6 [1] (⚡) high voltage + {0x26AA, 0x26AB, prEmojiPresentation}, // E0.6 [2] (⚪..⚫) white circle..black circle + {0x26BD, 0x26BE, prEmojiPresentation}, // E0.6 [2] (⚽..⚾) soccer ball..baseball + {0x26C4, 0x26C5, prEmojiPresentation}, // E0.6 [2] (⛄..⛅) snowman without snow..sun behind cloud + {0x26CE, 0x26CE, prEmojiPresentation}, // E0.6 [1] (⛎) Ophiuchus + {0x26D4, 0x26D4, prEmojiPresentation}, // E0.6 [1] (⛔) no entry + {0x26EA, 0x26EA, prEmojiPresentation}, // E0.6 [1] (⛪) church + {0x26F2, 0x26F3, prEmojiPresentation}, // E0.6 [2] (⛲..⛳) fountain..flag in hole + {0x26F5, 0x26F5, prEmojiPresentation}, // E0.6 [1] (⛵) sailboat + {0x26FA, 0x26FA, prEmojiPresentation}, // E0.6 [1] (⛺) tent + {0x26FD, 0x26FD, prEmojiPresentation}, // E0.6 [1] (⛽) fuel pump + {0x2705, 0x2705, prEmojiPresentation}, // E0.6 [1] (✅) check mark button + {0x270A, 0x270B, prEmojiPresentation}, // E0.6 [2] (✊..✋) raised fist..raised hand + {0x2728, 0x2728, prEmojiPresentation}, // E0.6 [1] (✨) sparkles + {0x274C, 0x274C, prEmojiPresentation}, // E0.6 [1] (❌) cross mark + {0x274E, 0x274E, prEmojiPresentation}, // E0.6 [1] (❎) cross mark button + {0x2753, 0x2755, prEmojiPresentation}, // E0.6 [3] (❓..❕) red question mark..white exclamation mark + {0x2757, 0x2757, prEmojiPresentation}, // E0.6 [1] (❗) red exclamation mark + {0x2795, 0x2797, prEmojiPresentation}, // E0.6 [3] (➕..➗) plus..divide + {0x27B0, 0x27B0, prEmojiPresentation}, // E0.6 [1] (➰) curly loop + {0x27BF, 0x27BF, prEmojiPresentation}, // E1.0 [1] (➿) double curly loop + {0x2B1B, 0x2B1C, prEmojiPresentation}, // E0.6 [2] (⬛..⬜) black large square..white large square + {0x2B50, 0x2B50, prEmojiPresentation}, // E0.6 [1] (⭐) star + {0x2B55, 0x2B55, prEmojiPresentation}, // E0.6 [1] (⭕) hollow red circle + {0x1F004, 0x1F004, prEmojiPresentation}, // E0.6 [1] (🀄) mahjong red dragon + {0x1F0CF, 0x1F0CF, prEmojiPresentation}, // E0.6 [1] (🃏) joker + {0x1F18E, 0x1F18E, prEmojiPresentation}, // E0.6 [1] (🆎) AB button (blood type) + {0x1F191, 0x1F19A, prEmojiPresentation}, // E0.6 [10] (🆑..🆚) CL button..VS button + {0x1F1E6, 0x1F1FF, prEmojiPresentation}, // E0.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z + {0x1F201, 0x1F201, prEmojiPresentation}, // E0.6 [1] (🈁) Japanese “here” button + {0x1F21A, 0x1F21A, prEmojiPresentation}, // E0.6 [1] (🈚) Japanese “free of charge” button + {0x1F22F, 0x1F22F, prEmojiPresentation}, // E0.6 [1] (🈯) Japanese “reserved” button + {0x1F232, 0x1F236, prEmojiPresentation}, // E0.6 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button + {0x1F238, 0x1F23A, prEmojiPresentation}, // E0.6 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button + {0x1F250, 0x1F251, prEmojiPresentation}, // E0.6 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button + {0x1F300, 0x1F30C, prEmojiPresentation}, // E0.6 [13] (🌀..🌌) cyclone..milky way + {0x1F30D, 0x1F30E, prEmojiPresentation}, // E0.7 [2] (🌍..🌎) globe showing Europe-Africa..globe showing Americas + {0x1F30F, 0x1F30F, prEmojiPresentation}, // E0.6 [1] (🌏) globe showing Asia-Australia + {0x1F310, 0x1F310, prEmojiPresentation}, // E1.0 [1] (🌐) globe with meridians + {0x1F311, 0x1F311, prEmojiPresentation}, // E0.6 [1] (🌑) new moon + {0x1F312, 0x1F312, prEmojiPresentation}, // E1.0 [1] (🌒) waxing crescent moon + {0x1F313, 0x1F315, prEmojiPresentation}, // E0.6 [3] (🌓..🌕) first quarter moon..full moon + {0x1F316, 0x1F318, prEmojiPresentation}, // E1.0 [3] (🌖..🌘) waning gibbous moon..waning crescent moon + {0x1F319, 0x1F319, prEmojiPresentation}, // E0.6 [1] (🌙) crescent moon + {0x1F31A, 0x1F31A, prEmojiPresentation}, // E1.0 [1] (🌚) new moon face + {0x1F31B, 0x1F31B, prEmojiPresentation}, // E0.6 [1] (🌛) first quarter moon face + {0x1F31C, 0x1F31C, prEmojiPresentation}, // E0.7 [1] (🌜) last quarter moon face + {0x1F31D, 0x1F31E, prEmojiPresentation}, // E1.0 [2] (🌝..🌞) full moon face..sun with face + {0x1F31F, 0x1F320, prEmojiPresentation}, // E0.6 [2] (🌟..🌠) glowing star..shooting star + {0x1F32D, 0x1F32F, prEmojiPresentation}, // E1.0 [3] (🌭..🌯) hot dog..burrito + {0x1F330, 0x1F331, prEmojiPresentation}, // E0.6 [2] (🌰..🌱) chestnut..seedling + {0x1F332, 0x1F333, prEmojiPresentation}, // E1.0 [2] (🌲..🌳) evergreen tree..deciduous tree + {0x1F334, 0x1F335, prEmojiPresentation}, // E0.6 [2] (🌴..🌵) palm tree..cactus + {0x1F337, 0x1F34A, prEmojiPresentation}, // E0.6 [20] (🌷..🍊) tulip..tangerine + {0x1F34B, 0x1F34B, prEmojiPresentation}, // E1.0 [1] (🍋) lemon + {0x1F34C, 0x1F34F, prEmojiPresentation}, // E0.6 [4] (🍌..🍏) banana..green apple + {0x1F350, 0x1F350, prEmojiPresentation}, // E1.0 [1] (🍐) pear + {0x1F351, 0x1F37B, prEmojiPresentation}, // E0.6 [43] (🍑..🍻) peach..clinking beer mugs + {0x1F37C, 0x1F37C, prEmojiPresentation}, // E1.0 [1] (🍼) baby bottle + {0x1F37E, 0x1F37F, prEmojiPresentation}, // E1.0 [2] (🍾..🍿) bottle with popping cork..popcorn + {0x1F380, 0x1F393, prEmojiPresentation}, // E0.6 [20] (🎀..🎓) ribbon..graduation cap + {0x1F3A0, 0x1F3C4, prEmojiPresentation}, // E0.6 [37] (🎠..🏄) carousel horse..person surfing + {0x1F3C5, 0x1F3C5, prEmojiPresentation}, // E1.0 [1] (🏅) sports medal + {0x1F3C6, 0x1F3C6, prEmojiPresentation}, // E0.6 [1] (🏆) trophy + {0x1F3C7, 0x1F3C7, prEmojiPresentation}, // E1.0 [1] (🏇) horse racing + {0x1F3C8, 0x1F3C8, prEmojiPresentation}, // E0.6 [1] (🏈) american football + {0x1F3C9, 0x1F3C9, prEmojiPresentation}, // E1.0 [1] (🏉) rugby football + {0x1F3CA, 0x1F3CA, prEmojiPresentation}, // E0.6 [1] (🏊) person swimming + {0x1F3CF, 0x1F3D3, prEmojiPresentation}, // E1.0 [5] (🏏..🏓) cricket game..ping pong + {0x1F3E0, 0x1F3E3, prEmojiPresentation}, // E0.6 [4] (🏠..🏣) house..Japanese post office + {0x1F3E4, 0x1F3E4, prEmojiPresentation}, // E1.0 [1] (🏤) post office + {0x1F3E5, 0x1F3F0, prEmojiPresentation}, // E0.6 [12] (🏥..🏰) hospital..castle + {0x1F3F4, 0x1F3F4, prEmojiPresentation}, // E1.0 [1] (🏴) black flag + {0x1F3F8, 0x1F407, prEmojiPresentation}, // E1.0 [16] (🏸..🐇) badminton..rabbit + {0x1F408, 0x1F408, prEmojiPresentation}, // E0.7 [1] (🐈) cat + {0x1F409, 0x1F40B, prEmojiPresentation}, // E1.0 [3] (🐉..🐋) dragon..whale + {0x1F40C, 0x1F40E, prEmojiPresentation}, // E0.6 [3] (🐌..🐎) snail..horse + {0x1F40F, 0x1F410, prEmojiPresentation}, // E1.0 [2] (🐏..🐐) ram..goat + {0x1F411, 0x1F412, prEmojiPresentation}, // E0.6 [2] (🐑..🐒) ewe..monkey + {0x1F413, 0x1F413, prEmojiPresentation}, // E1.0 [1] (🐓) rooster + {0x1F414, 0x1F414, prEmojiPresentation}, // E0.6 [1] (🐔) chicken + {0x1F415, 0x1F415, prEmojiPresentation}, // E0.7 [1] (🐕) dog + {0x1F416, 0x1F416, prEmojiPresentation}, // E1.0 [1] (🐖) pig + {0x1F417, 0x1F429, prEmojiPresentation}, // E0.6 [19] (🐗..🐩) boar..poodle + {0x1F42A, 0x1F42A, prEmojiPresentation}, // E1.0 [1] (🐪) camel + {0x1F42B, 0x1F43E, prEmojiPresentation}, // E0.6 [20] (🐫..🐾) two-hump camel..paw prints + {0x1F440, 0x1F440, prEmojiPresentation}, // E0.6 [1] (👀) eyes + {0x1F442, 0x1F464, prEmojiPresentation}, // E0.6 [35] (👂..👤) ear..bust in silhouette + {0x1F465, 0x1F465, prEmojiPresentation}, // E1.0 [1] (👥) busts in silhouette + {0x1F466, 0x1F46B, prEmojiPresentation}, // E0.6 [6] (👦..👫) boy..woman and man holding hands + {0x1F46C, 0x1F46D, prEmojiPresentation}, // E1.0 [2] (👬..👭) men holding hands..women holding hands + {0x1F46E, 0x1F4AC, prEmojiPresentation}, // E0.6 [63] (👮..💬) police officer..speech balloon + {0x1F4AD, 0x1F4AD, prEmojiPresentation}, // E1.0 [1] (💭) thought balloon + {0x1F4AE, 0x1F4B5, prEmojiPresentation}, // E0.6 [8] (💮..💵) white flower..dollar banknote + {0x1F4B6, 0x1F4B7, prEmojiPresentation}, // E1.0 [2] (💶..💷) euro banknote..pound banknote + {0x1F4B8, 0x1F4EB, prEmojiPresentation}, // E0.6 [52] (💸..📫) money with wings..closed mailbox with raised flag + {0x1F4EC, 0x1F4ED, prEmojiPresentation}, // E0.7 [2] (📬..📭) open mailbox with raised flag..open mailbox with lowered flag + {0x1F4EE, 0x1F4EE, prEmojiPresentation}, // E0.6 [1] (📮) postbox + {0x1F4EF, 0x1F4EF, prEmojiPresentation}, // E1.0 [1] (📯) postal horn + {0x1F4F0, 0x1F4F4, prEmojiPresentation}, // E0.6 [5] (📰..📴) newspaper..mobile phone off + {0x1F4F5, 0x1F4F5, prEmojiPresentation}, // E1.0 [1] (📵) no mobile phones + {0x1F4F6, 0x1F4F7, prEmojiPresentation}, // E0.6 [2] (📶..📷) antenna bars..camera + {0x1F4F8, 0x1F4F8, prEmojiPresentation}, // E1.0 [1] (📸) camera with flash + {0x1F4F9, 0x1F4FC, prEmojiPresentation}, // E0.6 [4] (📹..📼) video camera..videocassette + {0x1F4FF, 0x1F502, prEmojiPresentation}, // E1.0 [4] (📿..🔂) prayer beads..repeat single button + {0x1F503, 0x1F503, prEmojiPresentation}, // E0.6 [1] (🔃) clockwise vertical arrows + {0x1F504, 0x1F507, prEmojiPresentation}, // E1.0 [4] (🔄..🔇) counterclockwise arrows button..muted speaker + {0x1F508, 0x1F508, prEmojiPresentation}, // E0.7 [1] (🔈) speaker low volume + {0x1F509, 0x1F509, prEmojiPresentation}, // E1.0 [1] (🔉) speaker medium volume + {0x1F50A, 0x1F514, prEmojiPresentation}, // E0.6 [11] (🔊..🔔) speaker high volume..bell + {0x1F515, 0x1F515, prEmojiPresentation}, // E1.0 [1] (🔕) bell with slash + {0x1F516, 0x1F52B, prEmojiPresentation}, // E0.6 [22] (🔖..🔫) bookmark..water pistol + {0x1F52C, 0x1F52D, prEmojiPresentation}, // E1.0 [2] (🔬..🔭) microscope..telescope + {0x1F52E, 0x1F53D, prEmojiPresentation}, // E0.6 [16] (🔮..🔽) crystal ball..downwards button + {0x1F54B, 0x1F54E, prEmojiPresentation}, // E1.0 [4] (🕋..🕎) kaaba..menorah + {0x1F550, 0x1F55B, prEmojiPresentation}, // E0.6 [12] (🕐..🕛) one o’clock..twelve o’clock + {0x1F55C, 0x1F567, prEmojiPresentation}, // E0.7 [12] (🕜..🕧) one-thirty..twelve-thirty + {0x1F57A, 0x1F57A, prEmojiPresentation}, // E3.0 [1] (🕺) man dancing + {0x1F595, 0x1F596, prEmojiPresentation}, // E1.0 [2] (🖕..🖖) middle finger..vulcan salute + {0x1F5A4, 0x1F5A4, prEmojiPresentation}, // E3.0 [1] (🖤) black heart + {0x1F5FB, 0x1F5FF, prEmojiPresentation}, // E0.6 [5] (🗻..🗿) mount fuji..moai + {0x1F600, 0x1F600, prEmojiPresentation}, // E1.0 [1] (😀) grinning face + {0x1F601, 0x1F606, prEmojiPresentation}, // E0.6 [6] (😁..😆) beaming face with smiling eyes..grinning squinting face + {0x1F607, 0x1F608, prEmojiPresentation}, // E1.0 [2] (😇..😈) smiling face with halo..smiling face with horns + {0x1F609, 0x1F60D, prEmojiPresentation}, // E0.6 [5] (😉..😍) winking face..smiling face with heart-eyes + {0x1F60E, 0x1F60E, prEmojiPresentation}, // E1.0 [1] (😎) smiling face with sunglasses + {0x1F60F, 0x1F60F, prEmojiPresentation}, // E0.6 [1] (😏) smirking face + {0x1F610, 0x1F610, prEmojiPresentation}, // E0.7 [1] (😐) neutral face + {0x1F611, 0x1F611, prEmojiPresentation}, // E1.0 [1] (😑) expressionless face + {0x1F612, 0x1F614, prEmojiPresentation}, // E0.6 [3] (😒..😔) unamused face..pensive face + {0x1F615, 0x1F615, prEmojiPresentation}, // E1.0 [1] (😕) confused face + {0x1F616, 0x1F616, prEmojiPresentation}, // E0.6 [1] (😖) confounded face + {0x1F617, 0x1F617, prEmojiPresentation}, // E1.0 [1] (😗) kissing face + {0x1F618, 0x1F618, prEmojiPresentation}, // E0.6 [1] (😘) face blowing a kiss + {0x1F619, 0x1F619, prEmojiPresentation}, // E1.0 [1] (😙) kissing face with smiling eyes + {0x1F61A, 0x1F61A, prEmojiPresentation}, // E0.6 [1] (😚) kissing face with closed eyes + {0x1F61B, 0x1F61B, prEmojiPresentation}, // E1.0 [1] (😛) face with tongue + {0x1F61C, 0x1F61E, prEmojiPresentation}, // E0.6 [3] (😜..😞) winking face with tongue..disappointed face + {0x1F61F, 0x1F61F, prEmojiPresentation}, // E1.0 [1] (😟) worried face + {0x1F620, 0x1F625, prEmojiPresentation}, // E0.6 [6] (😠..😥) angry face..sad but relieved face + {0x1F626, 0x1F627, prEmojiPresentation}, // E1.0 [2] (😦..😧) frowning face with open mouth..anguished face + {0x1F628, 0x1F62B, prEmojiPresentation}, // E0.6 [4] (😨..😫) fearful face..tired face + {0x1F62C, 0x1F62C, prEmojiPresentation}, // E1.0 [1] (😬) grimacing face + {0x1F62D, 0x1F62D, prEmojiPresentation}, // E0.6 [1] (😭) loudly crying face + {0x1F62E, 0x1F62F, prEmojiPresentation}, // E1.0 [2] (😮..😯) face with open mouth..hushed face + {0x1F630, 0x1F633, prEmojiPresentation}, // E0.6 [4] (😰..😳) anxious face with sweat..flushed face + {0x1F634, 0x1F634, prEmojiPresentation}, // E1.0 [1] (😴) sleeping face + {0x1F635, 0x1F635, prEmojiPresentation}, // E0.6 [1] (😵) face with crossed-out eyes + {0x1F636, 0x1F636, prEmojiPresentation}, // E1.0 [1] (😶) face without mouth + {0x1F637, 0x1F640, prEmojiPresentation}, // E0.6 [10] (😷..🙀) face with medical mask..weary cat + {0x1F641, 0x1F644, prEmojiPresentation}, // E1.0 [4] (🙁..🙄) slightly frowning face..face with rolling eyes + {0x1F645, 0x1F64F, prEmojiPresentation}, // E0.6 [11] (🙅..🙏) person gesturing NO..folded hands + {0x1F680, 0x1F680, prEmojiPresentation}, // E0.6 [1] (🚀) rocket + {0x1F681, 0x1F682, prEmojiPresentation}, // E1.0 [2] (🚁..🚂) helicopter..locomotive + {0x1F683, 0x1F685, prEmojiPresentation}, // E0.6 [3] (🚃..🚅) railway car..bullet train + {0x1F686, 0x1F686, prEmojiPresentation}, // E1.0 [1] (🚆) train + {0x1F687, 0x1F687, prEmojiPresentation}, // E0.6 [1] (🚇) metro + {0x1F688, 0x1F688, prEmojiPresentation}, // E1.0 [1] (🚈) light rail + {0x1F689, 0x1F689, prEmojiPresentation}, // E0.6 [1] (🚉) station + {0x1F68A, 0x1F68B, prEmojiPresentation}, // E1.0 [2] (🚊..🚋) tram..tram car + {0x1F68C, 0x1F68C, prEmojiPresentation}, // E0.6 [1] (🚌) bus + {0x1F68D, 0x1F68D, prEmojiPresentation}, // E0.7 [1] (🚍) oncoming bus + {0x1F68E, 0x1F68E, prEmojiPresentation}, // E1.0 [1] (🚎) trolleybus + {0x1F68F, 0x1F68F, prEmojiPresentation}, // E0.6 [1] (🚏) bus stop + {0x1F690, 0x1F690, prEmojiPresentation}, // E1.0 [1] (🚐) minibus + {0x1F691, 0x1F693, prEmojiPresentation}, // E0.6 [3] (🚑..🚓) ambulance..police car + {0x1F694, 0x1F694, prEmojiPresentation}, // E0.7 [1] (🚔) oncoming police car + {0x1F695, 0x1F695, prEmojiPresentation}, // E0.6 [1] (🚕) taxi + {0x1F696, 0x1F696, prEmojiPresentation}, // E1.0 [1] (🚖) oncoming taxi + {0x1F697, 0x1F697, prEmojiPresentation}, // E0.6 [1] (🚗) automobile + {0x1F698, 0x1F698, prEmojiPresentation}, // E0.7 [1] (🚘) oncoming automobile + {0x1F699, 0x1F69A, prEmojiPresentation}, // E0.6 [2] (🚙..🚚) sport utility vehicle..delivery truck + {0x1F69B, 0x1F6A1, prEmojiPresentation}, // E1.0 [7] (🚛..🚡) articulated lorry..aerial tramway + {0x1F6A2, 0x1F6A2, prEmojiPresentation}, // E0.6 [1] (🚢) ship + {0x1F6A3, 0x1F6A3, prEmojiPresentation}, // E1.0 [1] (🚣) person rowing boat + {0x1F6A4, 0x1F6A5, prEmojiPresentation}, // E0.6 [2] (🚤..🚥) speedboat..horizontal traffic light + {0x1F6A6, 0x1F6A6, prEmojiPresentation}, // E1.0 [1] (🚦) vertical traffic light + {0x1F6A7, 0x1F6AD, prEmojiPresentation}, // E0.6 [7] (🚧..🚭) construction..no smoking + {0x1F6AE, 0x1F6B1, prEmojiPresentation}, // E1.0 [4] (🚮..🚱) litter in bin sign..non-potable water + {0x1F6B2, 0x1F6B2, prEmojiPresentation}, // E0.6 [1] (🚲) bicycle + {0x1F6B3, 0x1F6B5, prEmojiPresentation}, // E1.0 [3] (🚳..🚵) no bicycles..person mountain biking + {0x1F6B6, 0x1F6B6, prEmojiPresentation}, // E0.6 [1] (🚶) person walking + {0x1F6B7, 0x1F6B8, prEmojiPresentation}, // E1.0 [2] (🚷..🚸) no pedestrians..children crossing + {0x1F6B9, 0x1F6BE, prEmojiPresentation}, // E0.6 [6] (🚹..🚾) men’s room..water closet + {0x1F6BF, 0x1F6BF, prEmojiPresentation}, // E1.0 [1] (🚿) shower + {0x1F6C0, 0x1F6C0, prEmojiPresentation}, // E0.6 [1] (🛀) person taking bath + {0x1F6C1, 0x1F6C5, prEmojiPresentation}, // E1.0 [5] (🛁..🛅) bathtub..left luggage + {0x1F6CC, 0x1F6CC, prEmojiPresentation}, // E1.0 [1] (🛌) person in bed + {0x1F6D0, 0x1F6D0, prEmojiPresentation}, // E1.0 [1] (🛐) place of worship + {0x1F6D1, 0x1F6D2, prEmojiPresentation}, // E3.0 [2] (🛑..🛒) stop sign..shopping cart + {0x1F6D5, 0x1F6D5, prEmojiPresentation}, // E12.0 [1] (🛕) hindu temple + {0x1F6D6, 0x1F6D7, prEmojiPresentation}, // E13.0 [2] (🛖..🛗) hut..elevator + {0x1F6DD, 0x1F6DF, prEmojiPresentation}, // E14.0 [3] (🛝..🛟) playground slide..ring buoy + {0x1F6EB, 0x1F6EC, prEmojiPresentation}, // E1.0 [2] (🛫..🛬) airplane departure..airplane arrival + {0x1F6F4, 0x1F6F6, prEmojiPresentation}, // E3.0 [3] (🛴..🛶) kick scooter..canoe + {0x1F6F7, 0x1F6F8, prEmojiPresentation}, // E5.0 [2] (🛷..🛸) sled..flying saucer + {0x1F6F9, 0x1F6F9, prEmojiPresentation}, // E11.0 [1] (🛹) skateboard + {0x1F6FA, 0x1F6FA, prEmojiPresentation}, // E12.0 [1] (🛺) auto rickshaw + {0x1F6FB, 0x1F6FC, prEmojiPresentation}, // E13.0 [2] (🛻..🛼) pickup truck..roller skate + {0x1F7E0, 0x1F7EB, prEmojiPresentation}, // E12.0 [12] (🟠..🟫) orange circle..brown square + {0x1F7F0, 0x1F7F0, prEmojiPresentation}, // E14.0 [1] (🟰) heavy equals sign + {0x1F90C, 0x1F90C, prEmojiPresentation}, // E13.0 [1] (🤌) pinched fingers + {0x1F90D, 0x1F90F, prEmojiPresentation}, // E12.0 [3] (🤍..🤏) white heart..pinching hand + {0x1F910, 0x1F918, prEmojiPresentation}, // E1.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns + {0x1F919, 0x1F91E, prEmojiPresentation}, // E3.0 [6] (🤙..🤞) call me hand..crossed fingers + {0x1F91F, 0x1F91F, prEmojiPresentation}, // E5.0 [1] (🤟) love-you gesture + {0x1F920, 0x1F927, prEmojiPresentation}, // E3.0 [8] (🤠..🤧) cowboy hat face..sneezing face + {0x1F928, 0x1F92F, prEmojiPresentation}, // E5.0 [8] (🤨..🤯) face with raised eyebrow..exploding head + {0x1F930, 0x1F930, prEmojiPresentation}, // E3.0 [1] (🤰) pregnant woman + {0x1F931, 0x1F932, prEmojiPresentation}, // E5.0 [2] (🤱..🤲) breast-feeding..palms up together + {0x1F933, 0x1F93A, prEmojiPresentation}, // E3.0 [8] (🤳..🤺) selfie..person fencing + {0x1F93C, 0x1F93E, prEmojiPresentation}, // E3.0 [3] (🤼..🤾) people wrestling..person playing handball + {0x1F93F, 0x1F93F, prEmojiPresentation}, // E12.0 [1] (🤿) diving mask + {0x1F940, 0x1F945, prEmojiPresentation}, // E3.0 [6] (🥀..🥅) wilted flower..goal net + {0x1F947, 0x1F94B, prEmojiPresentation}, // E3.0 [5] (🥇..🥋) 1st place medal..martial arts uniform + {0x1F94C, 0x1F94C, prEmojiPresentation}, // E5.0 [1] (🥌) curling stone + {0x1F94D, 0x1F94F, prEmojiPresentation}, // E11.0 [3] (🥍..🥏) lacrosse..flying disc + {0x1F950, 0x1F95E, prEmojiPresentation}, // E3.0 [15] (🥐..🥞) croissant..pancakes + {0x1F95F, 0x1F96B, prEmojiPresentation}, // E5.0 [13] (🥟..🥫) dumpling..canned food + {0x1F96C, 0x1F970, prEmojiPresentation}, // E11.0 [5] (🥬..🥰) leafy green..smiling face with hearts + {0x1F971, 0x1F971, prEmojiPresentation}, // E12.0 [1] (🥱) yawning face + {0x1F972, 0x1F972, prEmojiPresentation}, // E13.0 [1] (🥲) smiling face with tear + {0x1F973, 0x1F976, prEmojiPresentation}, // E11.0 [4] (🥳..🥶) partying face..cold face + {0x1F977, 0x1F978, prEmojiPresentation}, // E13.0 [2] (🥷..🥸) ninja..disguised face + {0x1F979, 0x1F979, prEmojiPresentation}, // E14.0 [1] (🥹) face holding back tears + {0x1F97A, 0x1F97A, prEmojiPresentation}, // E11.0 [1] (🥺) pleading face + {0x1F97B, 0x1F97B, prEmojiPresentation}, // E12.0 [1] (🥻) sari + {0x1F97C, 0x1F97F, prEmojiPresentation}, // E11.0 [4] (🥼..🥿) lab coat..flat shoe + {0x1F980, 0x1F984, prEmojiPresentation}, // E1.0 [5] (🦀..🦄) crab..unicorn + {0x1F985, 0x1F991, prEmojiPresentation}, // E3.0 [13] (🦅..🦑) eagle..squid + {0x1F992, 0x1F997, prEmojiPresentation}, // E5.0 [6] (🦒..🦗) giraffe..cricket + {0x1F998, 0x1F9A2, prEmojiPresentation}, // E11.0 [11] (🦘..🦢) kangaroo..swan + {0x1F9A3, 0x1F9A4, prEmojiPresentation}, // E13.0 [2] (🦣..🦤) mammoth..dodo + {0x1F9A5, 0x1F9AA, prEmojiPresentation}, // E12.0 [6] (🦥..🦪) sloth..oyster + {0x1F9AB, 0x1F9AD, prEmojiPresentation}, // E13.0 [3] (🦫..🦭) beaver..seal + {0x1F9AE, 0x1F9AF, prEmojiPresentation}, // E12.0 [2] (🦮..🦯) guide dog..white cane + {0x1F9B0, 0x1F9B9, prEmojiPresentation}, // E11.0 [10] (🦰..🦹) red hair..supervillain + {0x1F9BA, 0x1F9BF, prEmojiPresentation}, // E12.0 [6] (🦺..🦿) safety vest..mechanical leg + {0x1F9C0, 0x1F9C0, prEmojiPresentation}, // E1.0 [1] (🧀) cheese wedge + {0x1F9C1, 0x1F9C2, prEmojiPresentation}, // E11.0 [2] (🧁..🧂) cupcake..salt + {0x1F9C3, 0x1F9CA, prEmojiPresentation}, // E12.0 [8] (🧃..🧊) beverage box..ice + {0x1F9CB, 0x1F9CB, prEmojiPresentation}, // E13.0 [1] (🧋) bubble tea + {0x1F9CC, 0x1F9CC, prEmojiPresentation}, // E14.0 [1] (🧌) troll + {0x1F9CD, 0x1F9CF, prEmojiPresentation}, // E12.0 [3] (🧍..🧏) person standing..deaf person + {0x1F9D0, 0x1F9E6, prEmojiPresentation}, // E5.0 [23] (🧐..🧦) face with monocle..socks + {0x1F9E7, 0x1F9FF, prEmojiPresentation}, // E11.0 [25] (🧧..🧿) red envelope..nazar amulet + {0x1FA70, 0x1FA73, prEmojiPresentation}, // E12.0 [4] (🩰..🩳) ballet shoes..shorts + {0x1FA74, 0x1FA74, prEmojiPresentation}, // E13.0 [1] (🩴) thong sandal + {0x1FA78, 0x1FA7A, prEmojiPresentation}, // E12.0 [3] (🩸..🩺) drop of blood..stethoscope + {0x1FA7B, 0x1FA7C, prEmojiPresentation}, // E14.0 [2] (🩻..🩼) x-ray..crutch + {0x1FA80, 0x1FA82, prEmojiPresentation}, // E12.0 [3] (🪀..🪂) yo-yo..parachute + {0x1FA83, 0x1FA86, prEmojiPresentation}, // E13.0 [4] (🪃..🪆) boomerang..nesting dolls + {0x1FA90, 0x1FA95, prEmojiPresentation}, // E12.0 [6] (🪐..🪕) ringed planet..banjo + {0x1FA96, 0x1FAA8, prEmojiPresentation}, // E13.0 [19] (🪖..🪨) military helmet..rock + {0x1FAA9, 0x1FAAC, prEmojiPresentation}, // E14.0 [4] (🪩..🪬) mirror ball..hamsa + {0x1FAB0, 0x1FAB6, prEmojiPresentation}, // E13.0 [7] (🪰..🪶) fly..feather + {0x1FAB7, 0x1FABA, prEmojiPresentation}, // E14.0 [4] (🪷..🪺) lotus..nest with eggs + {0x1FAC0, 0x1FAC2, prEmojiPresentation}, // E13.0 [3] (🫀..🫂) anatomical heart..people hugging + {0x1FAC3, 0x1FAC5, prEmojiPresentation}, // E14.0 [3] (🫃..🫅) pregnant man..person with crown + {0x1FAD0, 0x1FAD6, prEmojiPresentation}, // E13.0 [7] (🫐..🫖) blueberries..teapot + {0x1FAD7, 0x1FAD9, prEmojiPresentation}, // E14.0 [3] (🫗..🫙) pouring liquid..jar + {0x1FAE0, 0x1FAE7, prEmojiPresentation}, // E14.0 [8] (🫠..🫧) melting face..bubbles + {0x1FAF0, 0x1FAF6, prEmojiPresentation}, // E14.0 [7] (🫰..🫶) hand with index finger and thumb crossed..heart hands +} diff --git a/vendor/github.com/rivo/uniseg/gen_properties.go b/vendor/github.com/rivo/uniseg/gen_properties.go index 64512709e..999d5efdd 100644 --- a/vendor/github.com/rivo/uniseg/gen_properties.go +++ b/vendor/github.com/rivo/uniseg/gen_properties.go @@ -3,19 +3,22 @@ // This program generates a property file in Go file from Unicode Character // Database auxiliary data files. The command line arguments are as follows: // -// 1. The name of the Unicode data file (just the filename, without extension). -// 2. The name of the locally generated Go file. -// 3. The name of the slice mapping code points to properties. -// 4. The name of the generator, for logging purposes. -// 5. (Optional) Flags, comma-separated. The following flags are available: -// - "emojis": include emoji properties (Extended Pictographic only). -// - "gencat": include general category properties. +// 1. The name of the Unicode data file (just the filename, without extension). +// Can be "-" (to skip) if the emoji flag is included. +// 2. The name of the locally generated Go file. +// 3. The name of the slice mapping code points to properties. +// 4. The name of the generator, for logging purposes. +// 5. (Optional) Flags, comma-separated. The following flags are available: +// - "emojis=<property>": include the specified emoji properties (e.g. +// "Extended_Pictographic"). +// - "gencat": include general category properties. // -//go:generate go run gen_properties.go auxiliary/GraphemeBreakProperty graphemeproperties.go graphemeCodePoints graphemes emojis -//go:generate go run gen_properties.go auxiliary/WordBreakProperty wordproperties.go workBreakCodePoints words emojis +//go:generate go run gen_properties.go auxiliary/GraphemeBreakProperty graphemeproperties.go graphemeCodePoints graphemes emojis=Extended_Pictographic +//go:generate go run gen_properties.go auxiliary/WordBreakProperty wordproperties.go workBreakCodePoints words emojis=Extended_Pictographic //go:generate go run gen_properties.go auxiliary/SentenceBreakProperty sentenceproperties.go sentenceBreakCodePoints sentences //go:generate go run gen_properties.go LineBreak lineproperties.go lineBreakCodePoints lines gencat //go:generate go run gen_properties.go EastAsianWidth eastasianwidth.go eastAsianWidth eastasianwidth +//go:generate go run gen_properties.go - emojipresentation.go emojiPresentation emojipresentation emojis=Emoji_Presentation package main import ( @@ -38,8 +41,8 @@ import ( // We want to test against a specific version rather than the latest. When the // package is upgraded to a new version, change these to generate new tests. const ( - gbpURL = `https://www.unicode.org/Public/14.0.0/ucd/%s.txt` - emojiURL = `https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt` + propertyURL = `https://www.unicode.org/Public/14.0.0/ucd/%s.txt` + emojiURL = `https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt` ) // The regular expression for a line containing a code point range property. @@ -55,20 +58,25 @@ func main() { log.SetFlags(0) // Parse flags. - flags := make(map[string]struct{}) + flags := make(map[string]string) if len(os.Args) >= 6 { for _, flag := range strings.Split(os.Args[5], ",") { - flags[flag] = struct{}{} + flagFields := strings.Split(flag, "=") + if len(flagFields) == 1 { + flags[flagFields[0]] = "yes" + } else { + flags[flagFields[0]] = flagFields[1] + } } } // Parse the text file and generate Go source code from it. - var emojis string - if _, ok := flags["emojis"]; ok { - emojis = emojiURL - } _, includeGeneralCategory := flags["gencat"] - src, err := parse(fmt.Sprintf(gbpURL, os.Args[1]), emojis, includeGeneralCategory) + var mainURL string + if os.Args[1] != "-" { + mainURL = fmt.Sprintf(propertyURL, os.Args[1]) + } + src, err := parse(mainURL, flags["emojis"], includeGeneralCategory) if err != nil { log.Fatal(err) } @@ -88,49 +96,57 @@ func main() { // parse parses the Unicode Properties text files located at the given URLs and // returns their equivalent Go source code to be used in the uniseg package. If -// "emojiURL" is an empty string, no emoji code points will be included. If +// "emojiProperty" is not an empty string, emoji code points for that emoji +// property (e.g. "Extended_Pictographic") will be included. In those cases, you +// may pass an empty "propertyURL" to skip parsing the main properties file. If // "includeGeneralCategory" is true, the Unicode General Category property will // be extracted from the comments and included in the output. -func parse(gbpURL, emojiURL string, includeGeneralCategory bool) (string, error) { +func parse(propertyURL, emojiProperty string, includeGeneralCategory bool) (string, error) { + if propertyURL == "" && emojiProperty == "" { + return "", errors.New("no properties to parse") + } + // Temporary buffer to hold properties. var properties [][4]string // Open the first URL. - log.Printf("Parsing %s", gbpURL) - res, err := http.Get(gbpURL) - if err != nil { - return "", err - } - in1 := res.Body - defer in1.Close() - - // Parse it. - scanner := bufio.NewScanner(in1) - num := 0 - for scanner.Scan() { - num++ - line := strings.TrimSpace(scanner.Text()) - - // Skip comments and empty lines. - if strings.HasPrefix(line, "#") || line == "" { - continue - } - - // Everything else must be a code point range, a property and a comment. - from, to, property, comment, err := parseProperty(line) + if propertyURL != "" { + log.Printf("Parsing %s", propertyURL) + res, err := http.Get(propertyURL) if err != nil { - return "", fmt.Errorf("%s line %d: %v", os.Args[4], num, err) + return "", err + } + in1 := res.Body + defer in1.Close() + + // Parse it. + scanner := bufio.NewScanner(in1) + num := 0 + for scanner.Scan() { + num++ + line := strings.TrimSpace(scanner.Text()) + + // Skip comments and empty lines. + if strings.HasPrefix(line, "#") || line == "" { + continue + } + + // Everything else must be a code point range, a property and a comment. + from, to, property, comment, err := parseProperty(line) + if err != nil { + return "", fmt.Errorf("%s line %d: %v", os.Args[4], num, err) + } + properties = append(properties, [4]string{from, to, property, comment}) + } + if err := scanner.Err(); err != nil { + return "", err } - properties = append(properties, [4]string{from, to, property, comment}) - } - if err := scanner.Err(); err != nil { - return "", err } // Open the second URL. - if emojiURL != "" { + if emojiProperty != "" { log.Printf("Parsing %s", emojiURL) - res, err = http.Get(emojiURL) + res, err := http.Get(emojiURL) if err != nil { return "", err } @@ -138,15 +154,15 @@ func parse(gbpURL, emojiURL string, includeGeneralCategory bool) (string, error) defer in2.Close() // Parse it. - scanner = bufio.NewScanner(in2) - num = 0 + scanner := bufio.NewScanner(in2) + num := 0 for scanner.Scan() { num++ line := scanner.Text() // Skip comments, empty lines, and everything not containing // "Extended_Pictographic". - if strings.HasPrefix(line, "#") || line == "" || !strings.Contains(line, "Extended_Pictographic") { + if strings.HasPrefix(line, "#") || line == "" || !strings.Contains(line, emojiProperty) { continue } @@ -189,7 +205,7 @@ func parse(gbpURL, emojiURL string, includeGeneralCategory bool) (string, error) // Code generated via go generate from gen_properties.go. DO NOT EDIT. // ` + os.Args[3] + ` are taken from -// ` + gbpURL + emojiComment + ` +// ` + propertyURL + emojiComment + ` // on ` + time.Now().Format("January 2, 2006") + `. See https://www.unicode.org/license.html for the Unicode // license agreement. var ` + os.Args[3] + ` = [][` + strconv.Itoa(columns) + `]int{ diff --git a/vendor/github.com/rivo/uniseg/grapheme.go b/vendor/github.com/rivo/uniseg/grapheme.go index 9aec08685..997abbefd 100644 --- a/vendor/github.com/rivo/uniseg/grapheme.go +++ b/vendor/github.com/rivo/uniseg/grapheme.go @@ -4,12 +4,14 @@ import "unicode/utf8" // Graphemes implements an iterator over Unicode grapheme clusters, or // user-perceived characters. While iterating, it also provides information -// about word boundaries, sentence boundaries, and line breaks. +// about word boundaries, sentence boundaries, line breaks, and monospace +// character widths. // // After constructing the class via [NewGraphemes] for a given string "str", -// [Next] is called for every grapheme cluster in a loop until it returns false. -// Inside the loop, information about the grapheme cluster as well as boundary -// information is available via the various methods (see examples below). +// [Graphemes.Next] is called for every grapheme cluster in a loop until it +// returns false. Inside the loop, information about the grapheme cluster as +// well as boundary information and character width is available via the various +// methods (see examples below). // // Using this class to iterate over a string is convenient but it is much slower // than using this package's [Step] or [StepString] functions or any of the @@ -28,18 +30,18 @@ type Graphemes struct { // string. offset int - // The current boundary information of the Step() parser. + // The current boundary information of the [Step] parser. boundaries int - // The current state of the Step() parser. + // The current state of the [Step] parser. state int } // NewGraphemes returns a new grapheme cluster iterator. -func NewGraphemes(s string) *Graphemes { +func NewGraphemes(str string) *Graphemes { return &Graphemes{ - original: s, - remaining: s, + original: str, + remaining: str, state: -1, } } @@ -60,8 +62,8 @@ func (g *Graphemes) Next() bool { } // Runes returns a slice of runes (code points) which corresponds to the current -// grapheme cluster. If the iterator is already past the end or [Next] has not -// yet been called, nil is returned. +// grapheme cluster. If the iterator is already past the end or [Graphemes.Next] +// has not yet been called, nil is returned. func (g *Graphemes) Runes() []rune { if g.state < 0 { return nil @@ -70,15 +72,15 @@ func (g *Graphemes) Runes() []rune { } // Str returns a substring of the original string which corresponds to the -// current grapheme cluster. If the iterator is already past the end or [Next] -// has not yet been called, an empty string is returned. +// current grapheme cluster. If the iterator is already past the end or +// [Graphemes.Next] has not yet been called, an empty string is returned. func (g *Graphemes) Str() string { return g.cluster } // Bytes returns a byte slice which corresponds to the current grapheme cluster. -// If the iterator is already past the end or [Next] has not yet been called, -// nil is returned. +// If the iterator is already past the end or [Graphemes.Next] has not yet been +// called, nil is returned. func (g *Graphemes) Bytes() []byte { if g.state < 0 { return nil @@ -90,8 +92,8 @@ func (g *Graphemes) Bytes() []byte { // positions into the original string. The first returned value "from" indexes // the first byte and the second returned value "to" indexes the first byte that // is not included anymore, i.e. str[from:to] is the current grapheme cluster of -// the original string "str". If [Next] has not yet been called, both values are -// 0. If the iterator is already past the end, both values are 1. +// the original string "str". If [Graphemes.Next] has not yet been called, both +// values are 0. If the iterator is already past the end, both values are 1. func (g *Graphemes) Positions() (int, int) { if g.state == -1 { return 0, 0 @@ -133,8 +135,16 @@ func (g *Graphemes) LineBreak() int { return g.boundaries & MaskLine } +// Width returns the monospace width of the current grapheme cluster. +func (g *Graphemes) Width() int { + if g.state < 0 { + return 0 + } + return g.boundaries >> ShiftWidth +} + // Reset puts the iterator into its initial state such that the next call to -// [Next] sets it to the first grapheme cluster again. +// [Graphemes.Next] sets it to the first grapheme cluster again. func (g *Graphemes) Reset() { g.state = -1 g.offset = 0 @@ -153,6 +163,10 @@ func GraphemeClusterCount(s string) (n int) { return } +// The number of bits the grapheme property must be shifted to make place for +// grapheme states. +const shiftGraphemePropState = 4 + // FirstGraphemeCluster returns the first grapheme cluster found in the given // byte slice according to the rules of Unicode Standard Annex #29, Grapheme // Cluster Boundaries. This function can be called continuously to extract all @@ -168,15 +182,15 @@ func GraphemeClusterCount(s string) (n int) { // "cluster" byte slice is the sub-slice of the input slice containing the // identified grapheme cluster. // +// The returned width is the width of the grapheme cluster for most monospace +// fonts where a value of 1 represents one character cell. +// // Given an empty byte slice "b", the function returns nil values. // // While slightly less convenient than using the Graphemes class, this function // has much better performance and makes no allocations. It lends itself well to // large byte slices. -// -// The "reserved" return value is a placeholder for future functionality and may -// be ignored for the time being. -func FirstGraphemeCluster(b []byte, state int) (cluster, rest []byte, reserved, newState int) { +func FirstGraphemeCluster(b []byte, state int) (cluster, rest []byte, width, newState int) { // An empty byte slice returns nothing. if len(b) == 0 { return @@ -185,34 +199,60 @@ func FirstGraphemeCluster(b []byte, state int) (cluster, rest []byte, reserved, // Extract the first rune. r, length := utf8.DecodeRune(b) if len(b) <= length { // If we're already past the end, there is nothing else to parse. - return b, nil, 0, grAny + var prop int + if state < 0 { + prop = property(graphemeCodePoints, r) + } else { + prop = state >> shiftGraphemePropState + } + return b, nil, runeWidth(r, prop), grAny | (prop << shiftGraphemePropState) } // If we don't know the state, determine it now. + var firstProp int if state < 0 { - state, _ = transitionGraphemeState(state, r) + state, firstProp, _ = transitionGraphemeState(state, r) + } else { + firstProp = state >> shiftGraphemePropState } + width += runeWidth(r, firstProp) // Transition until we find a boundary. - var boundary bool for { + var ( + prop int + boundary bool + ) + r, l := utf8.DecodeRune(b[length:]) - state, boundary = transitionGraphemeState(state, r) + state, prop, boundary = transitionGraphemeState(state&maskGraphemeState, r) if boundary { - return b[:length], b[length:], 0, state + return b[:length], b[length:], width, state | (prop << shiftGraphemePropState) + } + + if r == vs16 { + width = 2 + } else if firstProp != prExtendedPictographic && firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } else if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else { + width = 2 + } } length += l if len(b) <= length { - return b, nil, 0, grAny + return b, nil, width, grAny | (prop << shiftGraphemePropState) } } } // FirstGraphemeClusterInString is like [FirstGraphemeCluster] but its input and // outputs are strings. -func FirstGraphemeClusterInString(str string, state int) (cluster, rest string, reserved, newState int) { +func FirstGraphemeClusterInString(str string, state int) (cluster, rest string, width, newState int) { // An empty string returns nothing. if len(str) == 0 { return @@ -221,27 +261,53 @@ func FirstGraphemeClusterInString(str string, state int) (cluster, rest string, // Extract the first rune. r, length := utf8.DecodeRuneInString(str) if len(str) <= length { // If we're already past the end, there is nothing else to parse. - return str, "", 0, grAny + var prop int + if state < 0 { + prop = property(graphemeCodePoints, r) + } else { + prop = state >> shiftGraphemePropState + } + return str, "", runeWidth(r, prop), grAny | (prop << shiftGraphemePropState) } // If we don't know the state, determine it now. + var firstProp int if state < 0 { - state, _ = transitionGraphemeState(state, r) + state, firstProp, _ = transitionGraphemeState(state, r) + } else { + firstProp = state >> shiftGraphemePropState } + width += runeWidth(r, firstProp) // Transition until we find a boundary. - var boundary bool for { + var ( + prop int + boundary bool + ) + r, l := utf8.DecodeRuneInString(str[length:]) - state, boundary = transitionGraphemeState(state, r) + state, prop, boundary = transitionGraphemeState(state&maskGraphemeState, r) if boundary { - return str[:length], str[length:], 0, state + return str[:length], str[length:], width, state | (prop << shiftGraphemePropState) + } + + if r == vs16 { + width = 2 + } else if firstProp != prExtendedPictographic && firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } else if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else { + width = 2 + } } length += l if len(str) <= length { - return str, "", 0, grAny + return str, "", width, grAny | (prop << shiftGraphemePropState) } } } diff --git a/vendor/github.com/rivo/uniseg/graphemeproperties.go b/vendor/github.com/rivo/uniseg/graphemeproperties.go index a0c001689..a87d140bf 100644 --- a/vendor/github.com/rivo/uniseg/graphemeproperties.go +++ b/vendor/github.com/rivo/uniseg/graphemeproperties.go @@ -7,7 +7,7 @@ package uniseg // and // https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt // ("Extended_Pictographic" only) -// on July 25, 2022. See https://www.unicode.org/license.html for the Unicode +// on September 10, 2022. See https://www.unicode.org/license.html for the Unicode // license agreement. var graphemeCodePoints = [][3]int{ {0x0000, 0x0009, prControl}, // Cc [10] <control-0000>..<control-0009> diff --git a/vendor/github.com/rivo/uniseg/graphemerules.go b/vendor/github.com/rivo/uniseg/graphemerules.go index c8e07111c..907b30bd0 100644 --- a/vendor/github.com/rivo/uniseg/graphemerules.go +++ b/vendor/github.com/rivo/uniseg/graphemerules.go @@ -27,14 +27,14 @@ const ( // // This map is queried as follows: // -// 1. Find specific state + specific property. Stop if found. -// 2. Find specific state + any property. -// 3. Find any state + specific property. -// 4. If only (2) or (3) (but not both) was found, stop. -// 5. If both (2) and (3) were found, use state from (3) and breaking instruction -// from the transition with the lower rule number, prefer (3) if rule numbers -// are equal. Stop. -// 6. Assume grAny and grBoundary. +// 1. Find specific state + specific property. Stop if found. +// 2. Find specific state + any property. +// 3. Find any state + specific property. +// 4. If only (2) or (3) (but not both) was found, stop. +// 5. If both (2) and (3) were found, use state from (3) and breaking instruction +// from the transition with the lower rule number, prefer (3) if rule numbers +// are equal. Stop. +// 6. Assume grAny and grBoundary. // // Unicode version 14.0.0. var grTransitions = map[[2]int][3]int{ @@ -92,22 +92,23 @@ var grTransitions = map[[2]int][3]int{ } // transitionGraphemeState determines the new state of the grapheme cluster -// parser given the current state and the next code point. It also returns -// whether a cluster boundary was detected. -func transitionGraphemeState(state int, r rune) (newState int, boundary bool) { +// parser given the current state and the next code point. It also returns the +// code point's grapheme property (the value mapped by the [graphemeCodePoints] +// table) and whether a cluster boundary was detected. +func transitionGraphemeState(state int, r rune) (newState, prop int, boundary bool) { // Determine the property of the next character. - nextProperty := property(graphemeCodePoints, r) + prop = property(graphemeCodePoints, r) // Find the applicable transition. - transition, ok := grTransitions[[2]int{state, nextProperty}] + transition, ok := grTransitions[[2]int{state, prop}] if ok { // We have a specific transition. We'll use it. - return transition[0], transition[1] == grBoundary + return transition[0], prop, transition[1] == grBoundary } // No specific transition found. Try the less specific ones. transAnyProp, okAnyProp := grTransitions[[2]int{state, prAny}] - transAnyState, okAnyState := grTransitions[[2]int{grAny, nextProperty}] + transAnyState, okAnyState := grTransitions[[2]int{grAny, prop}] if okAnyProp && okAnyState { // Both apply. We'll use a mix (see comments for grTransitions). newState = transAnyState[0] @@ -120,7 +121,7 @@ func transitionGraphemeState(state int, r rune) (newState int, boundary bool) { if okAnyProp { // We only have a specific state. - return transAnyProp[0], transAnyProp[1] == grBoundary + return transAnyProp[0], prop, transAnyProp[1] == grBoundary // This branch will probably never be reached because okAnyState will // always be true given the current transition map. But we keep it here // for future modifications to the transition map where this may not be @@ -129,9 +130,9 @@ func transitionGraphemeState(state int, r rune) (newState int, boundary bool) { if okAnyState { // We only have a specific property. - return transAnyState[0], transAnyState[1] == grBoundary + return transAnyState[0], prop, transAnyState[1] == grBoundary } // No known transition. GB999: Any ÷ Any. - return grAny, true + return grAny, prop, true } diff --git a/vendor/github.com/rivo/uniseg/line.go b/vendor/github.com/rivo/uniseg/line.go index 03d1928c0..c0398cacf 100644 --- a/vendor/github.com/rivo/uniseg/line.go +++ b/vendor/github.com/rivo/uniseg/line.go @@ -13,7 +13,7 @@ import "unicode/utf8" // // The returned "segment" may not be broken into smaller parts, unless no other // breaking opportunities present themselves, in which case you may break by -// grapheme clusters (using the FirstGraphemeCluster() function to determine the +// grapheme clusters (using the [FirstGraphemeCluster] function to determine the // grapheme clusters). // // The "mustBreak" flag indicates whether you MUST break the line after the @@ -42,7 +42,7 @@ import "unicode/utf8" // // Note also that this algorithm may break within grapheme clusters. This is // addressed in Section 8.2 Example 6 of UAX #14. To avoid this, you can use -// the Step() function instead. +// the [Step] function instead. func FirstLineSegment(b []byte, state int) (segment, rest []byte, mustBreak bool, newState int) { // An empty byte slice returns nothing. if len(b) == 0 { @@ -114,7 +114,9 @@ func FirstLineSegmentInString(str string, state int) (segment, rest string, must } // HasTrailingLineBreak returns true if the last rune in the given byte slice is -// one of the hard line break code points as defined in LB4 and LB5 of UAX #14. +// one of the hard line break code points defined in LB4 and LB5 of [UAX #14]. +// +// [UAX #14]: https://www.unicode.org/reports/tr14/#Algorithm func HasTrailingLineBreak(b []byte) bool { r, _ := utf8.DecodeLastRune(b) property, _ := propertyWithGenCat(lineBreakCodePoints, r) diff --git a/vendor/github.com/rivo/uniseg/lineproperties.go b/vendor/github.com/rivo/uniseg/lineproperties.go index 98948adf8..32169306e 100644 --- a/vendor/github.com/rivo/uniseg/lineproperties.go +++ b/vendor/github.com/rivo/uniseg/lineproperties.go @@ -4,7 +4,10 @@ package uniseg // lineBreakCodePoints are taken from // https://www.unicode.org/Public/14.0.0/ucd/LineBreak.txt -// on July 25, 2022. See https://www.unicode.org/license.html for the Unicode +// and +// https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 10, 2022. See https://www.unicode.org/license.html for the Unicode // license agreement. var lineBreakCodePoints = [][4]int{ {0x0000, 0x0008, prCM, gcCc}, // [9] <control-0000>..<control-0008> diff --git a/vendor/github.com/rivo/uniseg/properties.go b/vendor/github.com/rivo/uniseg/properties.go index 0bb3db62e..bc3c7bcf3 100644 --- a/vendor/github.com/rivo/uniseg/properties.go +++ b/vendor/github.com/rivo/uniseg/properties.go @@ -3,9 +3,9 @@ package uniseg // The Unicode properties as used in the various parsers. Only the ones needed // in the context of this package are included. const ( - prXX = 0 // Same as prAny. - prAny = iota // prAny must be 0. - prPrepend + prXX = 0 // Same as prAny. + prAny = iota // prAny must be 0. + prPrepend // Grapheme properties must come first, to reduce the number of bits stored in the state vector. prCR prLF prControl @@ -86,6 +86,7 @@ const ( prW prH prF + prEmojiPresentation ) // Unicode General Categories. Only the ones needed in the context of this @@ -124,6 +125,12 @@ const ( gcCo ) +// Special code points. +const ( + vs15 = 0xfe0e // Variation Selector-15 (text presentation) + vs16 = 0xfe0f // Variation Selector-16 (emoji presentation) +) + // propertySearch performs a binary search on a property slice and returns the // entry whose range (start = first array element, end = second array element) // includes r, or an array of 0's if no such entry was found. diff --git a/vendor/github.com/rivo/uniseg/sentenceproperties.go b/vendor/github.com/rivo/uniseg/sentenceproperties.go index e6fe7254c..ba0cf2de1 100644 --- a/vendor/github.com/rivo/uniseg/sentenceproperties.go +++ b/vendor/github.com/rivo/uniseg/sentenceproperties.go @@ -4,7 +4,10 @@ package uniseg // sentenceBreakCodePoints are taken from // https://www.unicode.org/Public/14.0.0/ucd/auxiliary/SentenceBreakProperty.txt -// on July 25, 2022. See https://www.unicode.org/license.html for the Unicode +// and +// https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt +// ("Extended_Pictographic" only) +// on September 10, 2022. See https://www.unicode.org/license.html for the Unicode // license agreement. var sentenceBreakCodePoints = [][3]int{ {0x0009, 0x0009, prSp}, // Cc <control-0009> diff --git a/vendor/github.com/rivo/uniseg/step.go b/vendor/github.com/rivo/uniseg/step.go index 8c515a966..55e7f1219 100644 --- a/vendor/github.com/rivo/uniseg/step.go +++ b/vendor/github.com/rivo/uniseg/step.go @@ -2,31 +2,37 @@ package uniseg import "unicode/utf8" -// The bit masks used to extract boundary information returned by the Step() -// function. +// The bit masks used to extract boundary information returned by [Step]. const ( MaskLine = 3 MaskWord = 4 MaskSentence = 8 ) -// The bit positions by which boundary flags are shifted by the Step() function. -// This must correspond to the Mask constants. +// The number of bits to shift the boundary information returned by [Step] to +// obtain the monospace width of the grapheme cluster. +const ShiftWidth = 4 + +// The bit positions by which boundary flags are shifted by the [Step] function. +// These must correspond to the Mask constants. const ( shiftWord = 2 shiftSentence = 3 + // shiftwWidth is ShiftWidth above. No mask as these are always the remaining bits. ) -// The bit positions by which states are shifted by the Step() function. These +// The bit positions by which states are shifted by the [Step] function. These // values must ensure state values defined for each of the boundary algorithms -// don't overlap (and that they all still fit in a single int). +// don't overlap (and that they all still fit in a single int). These must +// correspond to the Mask constants. const ( shiftWordState = 4 shiftSentenceState = 9 shiftLineState = 13 + shiftPropState = 21 // No mask as these are always the remaining bits. ) -// The bit mask used to extract the state returned by the Step() function, after +// The bit mask used to extract the state returned by the [Step] function, after // shifting. These values must correspond to the shift constants. const ( maskGraphemeState = 0xf @@ -37,10 +43,11 @@ const ( // Step returns the first grapheme cluster (user-perceived character) found in // the given byte slice. It also returns information about the boundary between -// that grapheme cluster and the one following it. There are three types of -// boundary information: word boundaries, sentence boundaries, and line breaks. -// This function is therefore a combination of FirstGraphemeCluster(), -// FirstWord(), FirstSentence(), and FirstLineSegment(). +// that grapheme cluster and the one following it as well as the monospace width +// of the grapheme cluster. There are three types of boundary information: word +// boundaries, sentence boundaries, and line breaks. This function is therefore +// a combination of [FirstGraphemeCluster], [FirstWord], [FirstSentence], and +// [FirstLineSegment]. // // The "boundaries" return value can be evaluated as follows: // @@ -54,6 +61,8 @@ const ( // boundary. // - boundaries&MaskLine == LineCanBreak: You may or may not break the line at // the boundary. +// - boundaries >> ShiftWidth: The width of the grapheme cluster for most +// monospace fonts where a value of 1 represents one character cell. // // This function can be called continuously to extract all grapheme clusters // from a byte slice, as illustrated in the examples below. @@ -87,14 +96,20 @@ func Step(b []byte, state int) (cluster, rest []byte, boundaries int, newState i // Extract the first rune. r, length := utf8.DecodeRune(b) if len(b) <= length { // If we're already past the end, there is nothing else to parse. - return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) + var prop int + if state < 0 { + prop = property(graphemeCodePoints, r) + } else { + prop = state >> shiftPropState + } + return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (runeWidth(r, prop) << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) } // If we don't know the state, determine it now. - var graphemeState, wordState, sentenceState, lineState int + var graphemeState, wordState, sentenceState, lineState, firstProp int remainder := b[length:] if state < 0 { - graphemeState, _ = transitionGraphemeState(state, r) + graphemeState, firstProp, _ = transitionGraphemeState(state, r) wordState, _ = transitionWordBreakState(state, r, remainder, "") sentenceState, _ = transitionSentenceBreakState(state, r, remainder, "") lineState, _ = transitionLineBreakState(state, r, remainder, "") @@ -103,36 +118,51 @@ func Step(b []byte, state int) (cluster, rest []byte, boundaries int, newState i wordState = (state >> shiftWordState) & maskWordState sentenceState = (state >> shiftSentenceState) & maskSentenceState lineState = (state >> shiftLineState) & maskLineState + firstProp = state >> shiftPropState } // Transition until we find a grapheme cluster boundary. - var ( - graphemeBoundary, wordBoundary, sentenceBoundary bool - lineBreak int - ) + width := runeWidth(r, firstProp) for { + var ( + graphemeBoundary, wordBoundary, sentenceBoundary bool + lineBreak, prop int + ) + r, l := utf8.DecodeRune(remainder) remainder = b[length+l:] - graphemeState, graphemeBoundary = transitionGraphemeState(graphemeState, r) + graphemeState, prop, graphemeBoundary = transitionGraphemeState(graphemeState, r) wordState, wordBoundary = transitionWordBreakState(wordState, r, remainder, "") sentenceState, sentenceBoundary = transitionSentenceBreakState(sentenceState, r, remainder, "") lineState, lineBreak = transitionLineBreakState(lineState, r, remainder, "") if graphemeBoundary { - boundary := lineBreak + boundary := lineBreak | (width << ShiftWidth) if wordBoundary { boundary |= 1 << shiftWord } if sentenceBoundary { boundary |= 1 << shiftSentence } - return b[:length], b[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) + return b[:length], b[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) | (prop << shiftPropState) + } + + if r == vs16 { + width = 2 + } else if firstProp != prExtendedPictographic && firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } else if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else { + width = 2 + } } length += l if len(b) <= length { - return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) + return b, nil, LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (width << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) } } } @@ -147,14 +177,15 @@ func StepString(str string, state int) (cluster, rest string, boundaries int, ne // Extract the first rune. r, length := utf8.DecodeRuneInString(str) if len(str) <= length { // If we're already past the end, there is nothing else to parse. - return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) + prop := property(graphemeCodePoints, r) + return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (runeWidth(r, prop) << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) } // If we don't know the state, determine it now. - var graphemeState, wordState, sentenceState, lineState int + var graphemeState, wordState, sentenceState, lineState, firstProp int remainder := str[length:] if state < 0 { - graphemeState, _ = transitionGraphemeState(state, r) + graphemeState, firstProp, _ = transitionGraphemeState(state, r) wordState, _ = transitionWordBreakState(state, r, nil, remainder) sentenceState, _ = transitionSentenceBreakState(state, r, nil, remainder) lineState, _ = transitionLineBreakState(state, r, nil, remainder) @@ -163,36 +194,51 @@ func StepString(str string, state int) (cluster, rest string, boundaries int, ne wordState = (state >> shiftWordState) & maskWordState sentenceState = (state >> shiftSentenceState) & maskSentenceState lineState = (state >> shiftLineState) & maskLineState + firstProp = state >> shiftPropState } // Transition until we find a grapheme cluster boundary. - var ( - graphemeBoundary, wordBoundary, sentenceBoundary bool - lineBreak int - ) + width := runeWidth(r, firstProp) for { + var ( + graphemeBoundary, wordBoundary, sentenceBoundary bool + lineBreak, prop int + ) + r, l := utf8.DecodeRuneInString(remainder) remainder = str[length+l:] - graphemeState, graphemeBoundary = transitionGraphemeState(graphemeState, r) + graphemeState, prop, graphemeBoundary = transitionGraphemeState(graphemeState, r) wordState, wordBoundary = transitionWordBreakState(wordState, r, nil, remainder) sentenceState, sentenceBoundary = transitionSentenceBreakState(sentenceState, r, nil, remainder) lineState, lineBreak = transitionLineBreakState(lineState, r, nil, remainder) if graphemeBoundary { - boundary := lineBreak + boundary := lineBreak | (width << ShiftWidth) if wordBoundary { boundary |= 1 << shiftWord } if sentenceBoundary { boundary |= 1 << shiftSentence } - return str[:length], str[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) + return str[:length], str[length:], boundary, graphemeState | (wordState << shiftWordState) | (sentenceState << shiftSentenceState) | (lineState << shiftLineState) | (prop << shiftPropState) + } + + if r == vs16 { + width = 2 + } else if firstProp != prExtendedPictographic && firstProp != prRegionalIndicator && firstProp != prL { + width += runeWidth(r, prop) + } else if firstProp == prExtendedPictographic { + if r == vs15 { + width = 1 + } else { + width = 2 + } } length += l if len(str) <= length { - return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) + return str, "", LineMustBreak | (1 << shiftWord) | (1 << shiftSentence) | (width << ShiftWidth), grAny | (wbAny << shiftWordState) | (sbAny << shiftSentenceState) | (lbAny << shiftLineState) | (prop << shiftPropState) } } } diff --git a/vendor/github.com/rivo/uniseg/width.go b/vendor/github.com/rivo/uniseg/width.go new file mode 100644 index 000000000..12a57cc2e --- /dev/null +++ b/vendor/github.com/rivo/uniseg/width.go @@ -0,0 +1,54 @@ +package uniseg + +// runeWidth returns the monospace width for the given rune. The provided +// grapheme property is a value mapped by the [graphemeCodePoints] table. +// +// Every rune has a width of 1, except for runes with the following properties +// (evaluated in this order): +// +// - Control, CR, LF, Extend, ZWJ: Width of 0 +// - \u2e3a, TWO-EM DASH: Width of 3 +// - \u2e3b, THREE-EM DASH: Width of 4 +// - East-Asian width Fullwidth and Wide: Width of 2 (Ambiguous and Neutral +// have a width of 1) +// - Regional Indicator: Width of 2 +// - Extended Pictographic: Width of 2, unless Emoji Presentation is "No". +func runeWidth(r rune, graphemeProperty int) int { + switch graphemeProperty { + case prControl, prCR, prLF, prExtend, prZWJ: + return 0 + case prRegionalIndicator: + return 2 + case prExtendedPictographic: + if property(emojiPresentation, r) == prEmojiPresentation { + return 2 + } + return 1 + } + + switch r { + case 0x2e3a: + return 3 + case 0x2e3b: + return 4 + } + + switch property(eastAsianWidth, r) { + case prW, prF: + return 2 + } + + return 1 +} + +// StringWidth returns the monospace width for the given string, that is, the +// number of same-size cells to be occupied by the string. +func StringWidth(s string) (width int) { + state := -1 + for len(s) > 0 { + var w int + _, s, w, state = FirstGraphemeClusterInString(s, state) + width += w + } + return +} diff --git a/vendor/github.com/rivo/uniseg/wordproperties.go b/vendor/github.com/rivo/uniseg/wordproperties.go index 48697a433..805cc536c 100644 --- a/vendor/github.com/rivo/uniseg/wordproperties.go +++ b/vendor/github.com/rivo/uniseg/wordproperties.go @@ -7,7 +7,7 @@ package uniseg // and // https://unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt // ("Extended_Pictographic" only) -// on July 25, 2022. See https://www.unicode.org/license.html for the Unicode +// on September 10, 2022. See https://www.unicode.org/license.html for the Unicode // license agreement. var workBreakCodePoints = [][3]int{ {0x000A, 0x000A, prLF}, // Cc <control-000A> @@ -624,8 +624,8 @@ var workBreakCodePoints = [][3]int{ {0x212A, 0x212D, prALetter}, // L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C {0x212F, 0x2134, prALetter}, // L& [6] SCRIPT SMALL E..SCRIPT SMALL O {0x2135, 0x2138, prALetter}, // Lo [4] ALEF SYMBOL..DALET SYMBOL - {0x2139, 0x2139, prALetter}, // L& INFORMATION SOURCE {0x2139, 0x2139, prExtendedPictographic}, // E0.6 [1] (ℹ️) information + {0x2139, 0x2139, prALetter}, // L& INFORMATION SOURCE {0x213C, 0x213F, prALetter}, // L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI {0x2145, 0x2149, prALetter}, // L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J {0x214E, 0x214E, prALetter}, // L& TURNED SMALL F diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_arm64.go index bbaba18bc..f3eb993bf 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_arm64.go @@ -6,7 +6,10 @@ package cpu import "runtime" -const cacheLineSize = 64 +// cacheLineSize is used to prevent false sharing of cache lines. +// We choose 128 because Apple Silicon, a.k.a. M1, has 128-byte cache line size. +// It doesn't cost much and is much more future-proof. +const cacheLineSize = 128 func initOptions() { options = []option{ diff --git a/vendor/golang.org/x/sys/plan9/syscall.go b/vendor/golang.org/x/sys/plan9/syscall.go index a25223b8f..67e5b0115 100644 --- a/vendor/golang.org/x/sys/plan9/syscall.go +++ b/vendor/golang.org/x/sys/plan9/syscall.go @@ -29,8 +29,6 @@ import ( "bytes" "strings" "unsafe" - - "golang.org/x/sys/internal/unsafeheader" ) // ByteSliceFromString returns a NUL-terminated slice of bytes @@ -82,13 +80,7 @@ func BytePtrToString(p *byte) string { ptr = unsafe.Pointer(uintptr(ptr) + 1) } - var s []byte - h := (*unsafeheader.Slice)(unsafe.Pointer(&s)) - h.Data = unsafe.Pointer(p) - h.Len = n - h.Cap = n - - return string(s) + return string(unsafe.Slice(p, n)) } // Single-word zero for use when we need a valid pointer to 0 bytes. diff --git a/vendor/golang.org/x/sys/unix/ioctl_linux.go b/vendor/golang.org/x/sys/unix/ioctl_linux.go index 884430b81..0d12c0851 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_linux.go +++ b/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -4,9 +4,7 @@ package unix -import ( - "unsafe" -) +import "unsafe" // IoctlRetInt performs an ioctl operation specified by req on a device // associated with opened file descriptor fd, and returns a non-negative @@ -217,3 +215,19 @@ func IoctlKCMAttach(fd int, info KCMAttach) error { func IoctlKCMUnattach(fd int, info KCMUnattach) error { return ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info)) } + +// IoctlLoopGetStatus64 gets the status of the loop device associated with the +// file descriptor fd using the LOOP_GET_STATUS64 operation. +func IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) { + var value LoopInfo64 + if err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil { + return nil, err + } + return &value, nil +} + +// IoctlLoopSetStatus64 sets the status of the loop device associated with the +// file descriptor fd using the LOOP_SET_STATUS64 operation. +func IoctlLoopSetStatus64(fd int, value *LoopInfo64) error { + return ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value)) +} diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index 6fc18353d..1b2b424a7 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -156,10 +156,10 @@ openbsd_amd64) mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_arm) + mkasm="go run mkasm.go" mkerrors="$mkerrors" - mksyscall="go run mksyscall.go -l32 -openbsd -arm" + mksyscall="go run mksyscall.go -l32 -openbsd -arm -libc" mksysctl="go run mksysctl_openbsd.go" - mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" @@ -214,11 +214,6 @@ esac if [ "$GOOSARCH" == "aix_ppc64" ]; then # aix/ppc64 script generates files instead of writing to stdin. echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ; - elif [ "$GOOS" == "darwin" ]; then - # 1.12 and later, syscalls via libSystem - echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; - # 1.13 and later, syscalls via libSystem (including syscallPtr) - echo "$mksyscall -tags $GOOS,$GOARCH,go1.13 syscall_darwin.1_13.go |gofmt >zsyscall_$GOOSARCH.1_13.go"; elif [ "$GOOS" == "illumos" ]; then # illumos code generation requires a --illumos switch echo "$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go"; diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go deleted file mode 100644 index 8ba89ed86..000000000 --- a/vendor/golang.org/x/sys/unix/str.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package unix - -func itoa(val int) string { // do it here rather than with fmt to avoid dependency - if val < 0 { - return "-" + uitoa(uint(-val)) - } - return uitoa(uint(val)) -} - -func uitoa(val uint) string { - var buf [32]byte // big enough for int64 - i := len(buf) - 1 - for val >= 10 { - buf[i] = byte(val%10 + '0') - i-- - val /= 10 - } - buf[i] = byte(val + '0') - return string(buf[i:]) -} diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go index 649fa8740..63e8c8383 100644 --- a/vendor/golang.org/x/sys/unix/syscall.go +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -29,8 +29,6 @@ import ( "bytes" "strings" "unsafe" - - "golang.org/x/sys/internal/unsafeheader" ) // ByteSliceFromString returns a NUL-terminated slice of bytes @@ -82,13 +80,7 @@ func BytePtrToString(p *byte) string { ptr = unsafe.Pointer(uintptr(ptr) + 1) } - var s []byte - h := (*unsafeheader.Slice)(unsafe.Pointer(&s)) - h.Data = unsafe.Pointer(p) - h.Len = n - h.Cap = n - - return string(s) + return string(unsafe.Slice(p, n)) } // Single-word zero for use when we need a valid pointer to 0 bytes. diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go deleted file mode 100644 index b0098607c..000000000 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build darwin && go1.12 && !go1.13 -// +build darwin,go1.12,!go1.13 - -package unix - -import ( - "unsafe" -) - -const _SYS_GETDIRENTRIES64 = 344 - -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - // To implement this using libSystem we'd need syscall_syscallPtr for - // fdopendir. However, syscallPtr was only added in Go 1.13, so we fall - // back to raw syscalls for this func on Go 1.12. - var p unsafe.Pointer - if len(buf) > 0 { - p = unsafe.Pointer(&buf[0]) - } else { - p = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(_SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - return n, errnoErr(e1) - } - return n, nil -} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go deleted file mode 100644 index 1596426b1..000000000 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build darwin && go1.13 -// +build darwin,go1.13 - -package unix - -import ( - "unsafe" - - "golang.org/x/sys/internal/unsafeheader" -) - -//sys closedir(dir uintptr) (err error) -//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) - -func fdopendir(fd int) (dir uintptr, err error) { - r0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0) - dir = uintptr(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -var libc_fdopendir_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" - -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - // Simulate Getdirentries using fdopendir/readdir_r/closedir. - // We store the number of entries to skip in the seek - // offset of fd. See issue #31368. - // It's not the full required semantics, but should handle the case - // of calling Getdirentries or ReadDirent repeatedly. - // It won't handle assigning the results of lseek to *basep, or handle - // the directory being edited underfoot. - skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) - if err != nil { - return 0, err - } - - // We need to duplicate the incoming file descriptor - // because the caller expects to retain control of it, but - // fdopendir expects to take control of its argument. - // Just Dup'ing the file descriptor is not enough, as the - // result shares underlying state. Use Openat to make a really - // new file descriptor referring to the same directory. - fd2, err := Openat(fd, ".", O_RDONLY, 0) - if err != nil { - return 0, err - } - d, err := fdopendir(fd2) - if err != nil { - Close(fd2) - return 0, err - } - defer closedir(d) - - var cnt int64 - for { - var entry Dirent - var entryp *Dirent - e := readdir_r(d, &entry, &entryp) - if e != 0 { - return n, errnoErr(e) - } - if entryp == nil { - break - } - if skip > 0 { - skip-- - cnt++ - continue - } - - reclen := int(entry.Reclen) - if reclen > len(buf) { - // Not enough room. Return for now. - // The counter will let us know where we should start up again. - // Note: this strategy for suspending in the middle and - // restarting is O(n^2) in the length of the directory. Oh well. - break - } - - // Copy entry into return buffer. - var s []byte - hdr := (*unsafeheader.Slice)(unsafe.Pointer(&s)) - hdr.Data = unsafe.Pointer(&entry) - hdr.Cap = reclen - hdr.Len = reclen - copy(buf, s) - - buf = buf[reclen:] - n += reclen - cnt++ - } - // Set the seek offset of the input fd to record - // how many files we've already returned. - _, err = Seek(fd, cnt, 0 /* SEEK_SET */) - if err != nil { - return n, err - } - - return n, nil -} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 4f87f16ea..1f6338218 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -19,6 +19,96 @@ import ( "unsafe" ) +//sys closedir(dir uintptr) (err error) +//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) + +func fdopendir(fd int) (dir uintptr, err error) { + r0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0) + dir = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_fdopendir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // Simulate Getdirentries using fdopendir/readdir_r/closedir. + // We store the number of entries to skip in the seek + // offset of fd. See issue #31368. + // It's not the full required semantics, but should handle the case + // of calling Getdirentries or ReadDirent repeatedly. + // It won't handle assigning the results of lseek to *basep, or handle + // the directory being edited underfoot. + skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + return 0, err + } + + // We need to duplicate the incoming file descriptor + // because the caller expects to retain control of it, but + // fdopendir expects to take control of its argument. + // Just Dup'ing the file descriptor is not enough, as the + // result shares underlying state. Use Openat to make a really + // new file descriptor referring to the same directory. + fd2, err := Openat(fd, ".", O_RDONLY, 0) + if err != nil { + return 0, err + } + d, err := fdopendir(fd2) + if err != nil { + Close(fd2) + return 0, err + } + defer closedir(d) + + var cnt int64 + for { + var entry Dirent + var entryp *Dirent + e := readdir_r(d, &entry, &entryp) + if e != 0 { + return n, errnoErr(e) + } + if entryp == nil { + break + } + if skip > 0 { + skip-- + cnt++ + continue + } + + reclen := int(entry.Reclen) + if reclen > len(buf) { + // Not enough room. Return for now. + // The counter will let us know where we should start up again. + // Note: this strategy for suspending in the middle and + // restarting is O(n^2) in the length of the directory. Oh well. + break + } + + // Copy entry into return buffer. + s := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen) + copy(buf, s) + + buf = buf[reclen:] + n += reclen + cnt++ + } + // Set the seek offset of the input fd to record + // how many files we've already returned. + _, err = Seek(fd, cnt, 0 /* SEEK_SET */) + if err != nil { + return n, err + } + + return n, nil +} + // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. type SockaddrDatalink struct { Len uint8 diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index c3c4c698e..b11ede89a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -61,7 +61,7 @@ func PtraceGetFsBase(pid int, fsbase *int64) (err error) { } func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { - ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)} + ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)} err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index 82be61a2f..9ed8eec6c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -61,7 +61,7 @@ func PtraceGetFsBase(pid int, fsbase *int64) (err error) { } func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { - ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} + ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index cd58f1026..f8ac98247 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -57,7 +57,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { - ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)} + ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint32(countin)} err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index d6f538f9e..8e932036e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -57,7 +57,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { - ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} + ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go index 8ea6e9610..cbe122278 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go @@ -57,7 +57,7 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { - ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} + ioDesc := PtraceIoDesc{Op: int32(req), Offs: uintptr(unsafe.Pointer(addr)), Addr: uintptr(unsafe.Pointer(&out[0])), Len: uint64(countin)} err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index ecb0f27fb..47146911f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -13,6 +13,7 @@ package unix import ( "encoding/binary" + "strconv" "syscall" "time" "unsafe" @@ -233,7 +234,7 @@ func Futimesat(dirfd int, path string, tv []Timeval) error { func Futimes(fd int, tv []Timeval) (err error) { // Believe it or not, this is the best we can do on Linux // (and is what glibc does). - return Utimes("/proc/self/fd/"+itoa(fd), tv) + return Utimes("/proc/self/fd/"+strconv.Itoa(fd), tv) } const ImplementsGetwd = true @@ -1891,17 +1892,28 @@ func PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uint return int(ret), nil } -// issue 1435. -// On linux Setuid and Setgid only affects the current thread, not the process. -// This does not match what most callers expect so we must return an error -// here rather than letting the caller think that the call succeeded. - func Setuid(uid int) (err error) { - return EOPNOTSUPP + return syscall.Setuid(uid) } -func Setgid(uid int) (err error) { - return EOPNOTSUPP +func Setgid(gid int) (err error) { + return syscall.Setgid(gid) +} + +func Setreuid(ruid, euid int) (err error) { + return syscall.Setreuid(ruid, euid) +} + +func Setregid(rgid, egid int) (err error) { + return syscall.Setregid(rgid, egid) +} + +func Setresuid(ruid, euid, suid int) (err error) { + return syscall.Setresuid(ruid, euid, suid) +} + +func Setresgid(rgid, egid, sgid int) (err error) { + return syscall.Setresgid(rgid, egid, sgid) } // SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set. diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index 518e476e6..ff5b5899d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -41,10 +41,6 @@ func setTimeval(sec, usec int64) Timeval { //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 //sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32 //sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32 -//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 -//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 -//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index f5e9d6bef..9b2703532 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -46,11 +46,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index c1a7778f1..856ad1d63 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -62,10 +62,6 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT //sys setfsgid(gid int) (prev int, err error) = SYS_SETFSGID32 //sys setfsuid(uid int) (prev int, err error) = SYS_SETFSUID32 -//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 -//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 -//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index d83e2c657..6422704bc 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -39,11 +39,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) //sysnb setrlimit(resource int, rlim *Rlimit) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go index 0b69c3eff..59dab510e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -34,10 +34,6 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index 98a2660b9..bfef09a39 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -37,11 +37,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) //sys Statfs(path string, buf *Statfs_t) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index b8a18c0ad..ab3025096 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -32,10 +32,6 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go index 4ed9e67c6..eac1cf1ac 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go @@ -34,10 +34,6 @@ import ( //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index db63d384c..4df56616b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -34,11 +34,7 @@ package unix //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) //sys Stat(path string, stat *Stat_t) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 925a748a3..5f4243dea 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -38,11 +38,7 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index 6fcf277b0..d0a7d4066 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -34,11 +34,7 @@ import ( //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, buf *Statfs_t) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index 02a45d9cc..f5c793be2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -31,11 +31,7 @@ package unix //sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) //sys setfsgid(gid int) (prev int, err error) //sys setfsuid(uid int) (prev int, err error) -//sysnb Setregid(rgid int, egid int) (err error) -//sysnb Setresgid(rgid int, egid int, sgid int) (err error) -//sysnb Setresuid(ruid int, euid int, suid int) (err error) //sysnb Setrlimit(resource int, rlim *Rlimit) (err error) -//sysnb Setreuid(ruid int, euid int) (err error) //sys Shutdown(fd int, how int) (err error) //sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) //sys Stat(path string, stat *Stat_t) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go index e23c33de6..5930a8972 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (openbsd && 386) || (openbsd && amd64) || (openbsd && arm64) -// +build openbsd,386 openbsd,amd64 openbsd,arm64 +//go:build (openbsd && 386) || (openbsd && amd64) || (openbsd && arm) || (openbsd && arm64) +// +build openbsd,386 openbsd,amd64 openbsd,arm openbsd,arm64 package unix diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index b5ec457cd..8c6f4092a 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -750,8 +750,8 @@ type EventPort struct { // we should handle things gracefully. To do so, we need to keep an extra // reference to the cookie around until the event is processed // thus the otherwise seemingly extraneous "cookies" map - // The key of this map is a pointer to the corresponding &fCookie.cookie - cookies map[*interface{}]*fileObjCookie + // The key of this map is a pointer to the corresponding fCookie + cookies map[*fileObjCookie]struct{} } // PortEvent is an abstraction of the port_event C struct. @@ -778,7 +778,7 @@ func NewEventPort() (*EventPort, error) { port: port, fds: make(map[uintptr]*fileObjCookie), paths: make(map[string]*fileObjCookie), - cookies: make(map[*interface{}]*fileObjCookie), + cookies: make(map[*fileObjCookie]struct{}), } return e, nil } @@ -799,6 +799,7 @@ func (e *EventPort) Close() error { } e.fds = nil e.paths = nil + e.cookies = nil return nil } @@ -826,17 +827,16 @@ func (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, coo if _, found := e.paths[path]; found { return fmt.Errorf("%v is already associated with this Event Port", path) } - fobj, err := createFileObj(path, stat) + fCookie, err := createFileObjCookie(path, stat, cookie) if err != nil { return err } - fCookie := &fileObjCookie{fobj, cookie} - _, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fobj)), events, (*byte)(unsafe.Pointer(&fCookie.cookie))) + _, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie))) if err != nil { return err } e.paths[path] = fCookie - e.cookies[&fCookie.cookie] = fCookie + e.cookies[fCookie] = struct{}{} return nil } @@ -858,7 +858,7 @@ func (e *EventPort) DissociatePath(path string) error { if err == nil { // dissociate was successful, safe to delete the cookie fCookie := e.paths[path] - delete(e.cookies, &fCookie.cookie) + delete(e.cookies, fCookie) } delete(e.paths, path) return err @@ -871,13 +871,16 @@ func (e *EventPort) AssociateFd(fd uintptr, events int, cookie interface{}) erro if _, found := e.fds[fd]; found { return fmt.Errorf("%v is already associated with this Event Port", fd) } - fCookie := &fileObjCookie{nil, cookie} - _, err := port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(&fCookie.cookie))) + fCookie, err := createFileObjCookie("", nil, cookie) + if err != nil { + return err + } + _, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie))) if err != nil { return err } e.fds[fd] = fCookie - e.cookies[&fCookie.cookie] = fCookie + e.cookies[fCookie] = struct{}{} return nil } @@ -896,27 +899,31 @@ func (e *EventPort) DissociateFd(fd uintptr) error { if err == nil { // dissociate was successful, safe to delete the cookie fCookie := e.fds[fd] - delete(e.cookies, &fCookie.cookie) + delete(e.cookies, fCookie) } delete(e.fds, fd) return err } -func createFileObj(name string, stat os.FileInfo) (*fileObj, error) { - fobj := new(fileObj) - bs, err := ByteSliceFromString(name) - if err != nil { - return nil, err +func createFileObjCookie(name string, stat os.FileInfo, cookie interface{}) (*fileObjCookie, error) { + fCookie := new(fileObjCookie) + fCookie.cookie = cookie + if name != "" && stat != nil { + fCookie.fobj = new(fileObj) + bs, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + fCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0])) + s := stat.Sys().(*syscall.Stat_t) + fCookie.fobj.Atim.Sec = s.Atim.Sec + fCookie.fobj.Atim.Nsec = s.Atim.Nsec + fCookie.fobj.Mtim.Sec = s.Mtim.Sec + fCookie.fobj.Mtim.Nsec = s.Mtim.Nsec + fCookie.fobj.Ctim.Sec = s.Ctim.Sec + fCookie.fobj.Ctim.Nsec = s.Ctim.Nsec } - fobj.Name = (*int8)(unsafe.Pointer(&bs[0])) - s := stat.Sys().(*syscall.Stat_t) - fobj.Atim.Sec = s.Atim.Sec - fobj.Atim.Nsec = s.Atim.Nsec - fobj.Mtim.Sec = s.Mtim.Sec - fobj.Mtim.Nsec = s.Mtim.Nsec - fobj.Ctim.Sec = s.Ctim.Sec - fobj.Ctim.Nsec = s.Ctim.Nsec - return fobj, nil + return fCookie, nil } // GetOne wraps port_get(3c) and returns a single PortEvent. @@ -929,44 +936,50 @@ func (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) { p := new(PortEvent) e.mu.Lock() defer e.mu.Unlock() - e.peIntToExt(pe, p) + err = e.peIntToExt(pe, p) + if err != nil { + return nil, err + } return p, nil } // peIntToExt converts a cgo portEvent struct into the friendlier PortEvent // NOTE: Always call this function while holding the e.mu mutex -func (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) { +func (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error { + if e.cookies == nil { + return fmt.Errorf("this EventPort is already closed") + } peExt.Events = peInt.Events peExt.Source = peInt.Source - cookie := (*interface{})(unsafe.Pointer(peInt.User)) - peExt.Cookie = *cookie + fCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User)) + _, found := e.cookies[fCookie] + + if !found { + panic("unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254") + } + peExt.Cookie = fCookie.cookie + delete(e.cookies, fCookie) + switch peInt.Source { case PORT_SOURCE_FD: - delete(e.cookies, cookie) peExt.Fd = uintptr(peInt.Object) // Only remove the fds entry if it exists and this cookie matches if fobj, ok := e.fds[peExt.Fd]; ok { - if &fobj.cookie == cookie { + if fobj == fCookie { delete(e.fds, peExt.Fd) } } case PORT_SOURCE_FILE: - if fCookie, ok := e.cookies[cookie]; ok && uintptr(unsafe.Pointer(fCookie.fobj)) == uintptr(peInt.Object) { - // Use our stashed reference rather than using unsafe on what we got back - // the unsafe version would be (*fileObj)(unsafe.Pointer(uintptr(peInt.Object))) - peExt.fobj = fCookie.fobj - } else { - panic("mismanaged memory") - } - delete(e.cookies, cookie) + peExt.fobj = fCookie.fobj peExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name))) // Only remove the paths entry if it exists and this cookie matches if fobj, ok := e.paths[peExt.Path]; ok { - if &fobj.cookie == cookie { + if fobj == fCookie { delete(e.paths, peExt.Path) } } } + return nil } // Pending wraps port_getn(3c) and returns how many events are pending. @@ -990,7 +1003,7 @@ func (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) got := uint32(min) max := uint32(len(s)) var err error - ps := make([]portEvent, max, max) + ps := make([]portEvent, max) _, err = port_getn(e.port, &ps[0], max, &got, timeout) // got will be trustworthy with ETIME, but not any other error. if err != nil && err != ETIME { @@ -998,8 +1011,18 @@ func (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) } e.mu.Lock() defer e.mu.Unlock() + valid := 0 for i := 0; i < int(got); i++ { - e.peIntToExt(&ps[i], &s[i]) + err2 := e.peIntToExt(&ps[i], &s[i]) + if err2 != nil { + if valid == 0 && err == nil { + // If err2 is the only error and there are no valid events + // to return, return it to the caller. + err = err2 + } + break + } + valid = i + 1 } - return int(got), err + return valid, err } diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index 1ff5060b5..9f7535607 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -13,8 +13,6 @@ import ( "sync" "syscall" "unsafe" - - "golang.org/x/sys/internal/unsafeheader" ) var ( @@ -117,11 +115,7 @@ func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (d } // Use unsafe to convert addr into a []byte. - var b []byte - hdr := (*unsafeheader.Slice)(unsafe.Pointer(&b)) - hdr.Data = unsafe.Pointer(addr) - hdr.Cap = length - hdr.Len = length + b := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length) // Register mapping in m and return it. p := &b[cap(b)-1] diff --git a/vendor/golang.org/x/sys/unix/sysvshm_unix.go b/vendor/golang.org/x/sys/unix/sysvshm_unix.go index 0bb4c8de5..5bb41d17b 100644 --- a/vendor/golang.org/x/sys/unix/sysvshm_unix.go +++ b/vendor/golang.org/x/sys/unix/sysvshm_unix.go @@ -7,11 +7,7 @@ package unix -import ( - "unsafe" - - "golang.org/x/sys/internal/unsafeheader" -) +import "unsafe" // SysvShmAttach attaches the Sysv shared memory segment associated with the // shared memory identifier id. @@ -34,12 +30,7 @@ func SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) { } // Use unsafe to convert addr into a []byte. - // TODO: convert to unsafe.Slice once we can assume Go 1.17 - var b []byte - hdr := (*unsafeheader.Slice)(unsafe.Pointer(&b)) - hdr.Data = unsafe.Pointer(addr) - hdr.Cap = int(info.Segsz) - hdr.Len = int(info.Segsz) + b := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz)) return b, nil } diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go index 25df1e378..663b3779d 100644 --- a/vendor/golang.org/x/sys/unix/xattr_bsd.go +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -160,13 +160,12 @@ func Lremovexattr(link string, attr string) (err error) { } func Listxattr(file string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) destsiz := len(dest) // FreeBSD won't allow you to list xattrs from multiple namespaces - s := 0 + s, pos := 0, 0 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + stmp, e := ListxattrNS(file, nsid, dest[pos:]) /* Errors accessing system attrs are ignored so that * we can implement the Linux-like behavior of omitting errors that @@ -175,66 +174,102 @@ func Listxattr(file string, dest []byte) (sz int, err error) { * Linux will still error if we ask for user attributes on a file that * we don't have read permissions on, so don't ignore those errors */ - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } return s, e } s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 + pos = s + if pos > destsiz { + pos = destsiz } - d = initxattrdest(dest, s) + } + + return s, nil +} + +func ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err } return s, nil } func Flistxattr(fd int, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) destsiz := len(dest) - s := 0 + s, pos := 0, 0 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { + stmp, e := FlistxattrNS(fd, nsid, dest[pos:]) + + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } return s, e } s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 + pos = s + if pos > destsiz { + pos = destsiz } - d = initxattrdest(dest, s) + } + + return s, nil +} + +func FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err } return s, nil } func Llistxattr(link string, dest []byte) (sz int, err error) { - d := initxattrdest(dest, 0) destsiz := len(dest) - s := 0 + s, pos := 0, 0 for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { - stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) - if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { - continue - } else if e != nil { + stmp, e := LlistxattrNS(link, nsid, dest[pos:]) + + if e != nil { + if e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } return s, e } s += stmp - destsiz -= s - if destsiz < 0 { - destsiz = 0 + pos = s + if pos > destsiz { + pos = destsiz } - d = initxattrdest(dest, s) + } + + return s, nil +} + +func LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil { + return 0, err } return s, nil diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go deleted file mode 100644 index a06eb0932..000000000 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go +++ /dev/null @@ -1,40 +0,0 @@ -// go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build darwin && amd64 && go1.13 -// +build darwin,amd64,go1.13 - -package unix - -import ( - "syscall" - "unsafe" -) - -var _ syscall.Errno - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func closedir(dir uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -var libc_closedir_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { - r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) - res = Errno(r0) - return -} - -var libc_readdir_r_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s deleted file mode 100644 index f5bb40eda..000000000 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s +++ /dev/null @@ -1,25 +0,0 @@ -// go run mkasm.go darwin amd64 -// Code generated by the command above; DO NOT EDIT. - -//go:build go1.13 -// +build go1.13 - -#include "textflag.h" - -TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fdopendir(SB) - -GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 -DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) - -TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_closedir(SB) - -GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 -DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) - -TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readdir_r(SB) - -GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 -DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 467deed76..c2461c496 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -1,8 +1,8 @@ -// go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. -//go:build darwin && amd64 && go1.12 -// +build darwin,amd64,go1.12 +//go:build darwin && amd64 +// +build darwin,amd64 package unix @@ -463,6 +463,32 @@ var libc_munlockall_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_closedir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +var libc_readdir_r_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]int32) (err error) { _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index b41467a0e..95fe4c0eb 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -1,11 +1,14 @@ // go run mkasm.go darwin amd64 // Code generated by the command above; DO NOT EDIT. -//go:build go1.12 -// +build go1.12 - #include "textflag.h" +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) + +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgroups(SB) @@ -174,6 +177,18 @@ TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) + +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) + +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) + TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pipe(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go deleted file mode 100644 index cec595d55..000000000 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go +++ /dev/null @@ -1,40 +0,0 @@ -// go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go -// Code generated by the command above; see README.md. DO NOT EDIT. - -//go:build darwin && arm64 && go1.13 -// +build darwin,arm64,go1.13 - -package unix - -import ( - "syscall" - "unsafe" -) - -var _ syscall.Errno - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func closedir(dir uintptr) (err error) { - _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -var libc_closedir_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { - r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) - res = Errno(r0) - return -} - -var libc_readdir_r_trampoline_addr uintptr - -//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s deleted file mode 100644 index 0c3f76bc2..000000000 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s +++ /dev/null @@ -1,25 +0,0 @@ -// go run mkasm.go darwin arm64 -// Code generated by the command above; DO NOT EDIT. - -//go:build go1.13 -// +build go1.13 - -#include "textflag.h" - -TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_fdopendir(SB) - -GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 -DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) - -TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_closedir(SB) - -GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 -DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) - -TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 - JMP libc_readdir_r(SB) - -GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 -DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 35938d34f..26a0fdc50 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -1,8 +1,8 @@ -// go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. -//go:build darwin && arm64 && go1.12 -// +build darwin,arm64,go1.12 +//go:build darwin && arm64 +// +build darwin,arm64 package unix @@ -463,6 +463,32 @@ var libc_munlockall_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_closedir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +var libc_readdir_r_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]int32) (err error) { _, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index e1f9204a2..efa5b4c98 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -1,11 +1,14 @@ // go run mkasm.go darwin arm64 // Code generated by the command above; DO NOT EDIT. -//go:build go1.12 -// +build go1.12 - #include "textflag.h" +TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) + +GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB) + TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_getgroups(SB) @@ -174,6 +177,18 @@ TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8 DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB) +TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) + +GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8 +DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB) + +TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) + +GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8 +DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB) + TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_pipe(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 88af526b7..c81b0ad47 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -287,46 +287,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 2a0c4aa6a..2206bce7f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -334,36 +334,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -374,16 +344,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index 4882bde3a..edf6b39f1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -412,46 +412,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index 9f8c24e43..190609f21 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -289,36 +289,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -329,16 +299,6 @@ func setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go index 523f2ba03..806ffd1e1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go @@ -223,46 +223,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index d7d6f4244..5f984cbb1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -248,46 +248,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index 7f1f8e653..46fc380a4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -278,36 +278,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -318,16 +288,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index f933d0f51..cbd0d4dad 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -278,36 +278,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -318,16 +288,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index 297d0a998..0c13d15f0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -248,46 +248,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go index 2e32e7a44..e01432aed 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go @@ -308,46 +308,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 3c5317046..13c7ee7ba 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -349,36 +349,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -389,16 +359,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index a00c6744e..02d0c0fd6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -349,36 +349,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -389,16 +359,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index 1239cc2de..9fee3b1d2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -269,36 +269,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -309,16 +279,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index e0dabc602..647bbfecd 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -319,36 +319,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -359,16 +329,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) n = int64(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index 368623c0f..ada057f89 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -329,36 +329,6 @@ func setfsuid(uid int) (prev int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Setrlimit(resource int, rlim *Rlimit) (err error) { _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) if e1 != 0 { @@ -369,16 +339,6 @@ func Setrlimit(resource int, rlim *Rlimit) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Shutdown(fd int, how int) (err error) { _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index 69f803006..8da6791d1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build openbsd && arm @@ -16,7 +16,7 @@ var _ syscall.Errno // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getgroups(ngid int, gid *_Gid_t) (n int, err error) { - r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + r0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -24,20 +24,28 @@ func getgroups(ngid int, gid *_Gid_t) (n int, err error) { return } +var libc_getgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func setgroups(ngid int, gid *_Gid_t) (err error) { - _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + _, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgroups_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { - r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + r0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) wpid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -45,10 +53,14 @@ func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err return } +var libc_wait4_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { - r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + r0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -56,30 +68,42 @@ func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { return } +var libc_accept_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_accept accept "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + _, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_bind_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_bind bind "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { - _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + _, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_connect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connect connect "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func socket(domain int, typ int, proto int) (fd int, err error) { - r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + r0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -87,66 +111,94 @@ func socket(domain int, typ int, proto int) (fd int, err error) { return } +var libc_socket_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socket socket "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { - _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + _, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { - _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + _, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setsockopt_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { - _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + _, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getpeername_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpeername getpeername "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { - _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + _, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getsockname_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsockname getsockname "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Shutdown(s int, how int) (err error) { - _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + _, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_shutdown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_shutdown shutdown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { - _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + _, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_socketpair_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_socketpair socketpair "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { @@ -156,7 +208,7 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + r0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -164,6 +216,10 @@ func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Sockl return } +var libc_recvfrom_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { @@ -173,17 +229,21 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + _, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sendto_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendto sendto "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + r0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -191,10 +251,14 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_recvmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + r0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -202,10 +266,14 @@ func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { return } +var libc_sendmsg_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { - r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + r0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -213,6 +281,10 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne return } +var libc_kevent_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kevent kevent "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func utimes(path string, timeval *[2]Timeval) (err error) { @@ -221,27 +293,35 @@ func utimes(path string, timeval *[2]Timeval) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_utimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimes utimes "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func futimes(fd int, timeval *[2]Timeval) (err error) { - _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + _, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_futimes_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_futimes futimes "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { - r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + r0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -249,6 +329,10 @@ func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { return } +var libc_poll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_poll poll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Madvise(b []byte, behav int) (err error) { @@ -258,13 +342,17 @@ func Madvise(b []byte, behav int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + _, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_madvise_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_madvise madvise "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mlock(b []byte) (err error) { @@ -274,23 +362,31 @@ func Mlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlock mlock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mlockall(flags int) (err error) { - _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mprotect(b []byte, prot int) (err error) { @@ -300,13 +396,17 @@ func Mprotect(b []byte, prot int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + _, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mprotect_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Msync(b []byte, flags int) (err error) { @@ -316,13 +416,17 @@ func Msync(b []byte, flags int) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_msync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_msync msync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlock(b []byte) (err error) { @@ -332,33 +436,45 @@ func Munlock(b []byte) (err error) { } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + _, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlock munlock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Munlockall() (err error) { - _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munlockall_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func pipe2(p *[2]_C_int, flags int) (err error) { - _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + _, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_pipe2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pipe2 pipe2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getdents(fd int, buf []byte) (n int, err error) { @@ -368,7 +484,7 @@ func Getdents(fd int, buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -376,6 +492,10 @@ func Getdents(fd int, buf []byte) (n int, err error) { return } +var libc_getdents_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getdents getdents "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getcwd(buf []byte) (n int, err error) { @@ -385,7 +505,7 @@ func Getcwd(buf []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + r0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -393,16 +513,24 @@ func Getcwd(buf []byte) (n int, err error) { return } +var libc_getcwd_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func ioctl(fd int, req uint, arg uintptr) (err error) { - _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + _, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ioctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { @@ -412,17 +540,21 @@ func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) } else { _p0 = unsafe.Pointer(&_zero) } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + _, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sysctl_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sysctl sysctl "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { - r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + r0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -430,6 +562,10 @@ func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, return } +var libc_ppoll_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ppoll ppoll "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Access(path string, mode uint32) (err error) { @@ -438,23 +574,31 @@ func Access(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_access_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_access access "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { - _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + _, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_adjtime_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chdir(path string) (err error) { @@ -463,13 +607,17 @@ func Chdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chdir chdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chflags(path string, flags int) (err error) { @@ -478,13 +626,17 @@ func Chflags(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chflags chflags "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chmod(path string, mode uint32) (err error) { @@ -493,13 +645,17 @@ func Chmod(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chmod chmod "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chown(path string, uid int, gid int) (err error) { @@ -508,13 +664,17 @@ func Chown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chown chown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Chroot(path string) (err error) { @@ -523,27 +683,35 @@ func Chroot(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_chroot_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_chroot chroot "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Close(fd int) (err error) { - _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + _, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_close_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_close close "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup(fd int) (nfd int, err error) { - r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + r0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0) nfd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -551,33 +719,49 @@ func Dup(fd int) (nfd int, err error) { return } +var libc_dup_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup dup "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup2(from int, to int) (err error) { - _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + _, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup2_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Dup3(from int, to int, flags int) (err error) { - _, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_dup3_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_dup3 dup3 "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Exit(code int) { - Syscall(SYS_EXIT, uintptr(code), 0, 0) + syscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0) return } +var libc_exit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_exit exit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { @@ -586,43 +770,59 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_faccessat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchdir(fd int) (err error) { - _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + _, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchflags(fd int, flags int) (err error) { - _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchflags_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchflags fchflags "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchmod(fd int, mode uint32) (err error) { - _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { @@ -631,23 +831,31 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchmodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchown(fd int, uid int, gid int) (err error) { - _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchown fchown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { @@ -656,27 +864,35 @@ func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fchownat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Flock(fd int, how int) (err error) { - _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + _, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_flock_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_flock flock "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fpathconf(fd int, name int) (val int, err error) { - r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -684,16 +900,24 @@ func Fpathconf(fd int, name int) (val int, err error) { return } +var libc_fpathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fstat(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstat fstat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { @@ -702,71 +926,99 @@ func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fstatfs(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fstatfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Fsync(fd int) (err error) { - _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + _, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_fsync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_fsync fsync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Ftruncate(fd int, length int64) (err error) { - _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + _, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_ftruncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getegid() (egid int) { - r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0) egid = int(r0) return } +var libc_getegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getegid getegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Geteuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_geteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getgid() (gid int) { - r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0) gid = int(r0) return } +var libc_getgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getgid getgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpgid(pid int) (pgid int, err error) { - r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + r0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0) pgid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -774,34 +1026,50 @@ func Getpgid(pid int) (pgid int, err error) { return } +var libc_getpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpgrp() (pgrp int) { - r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0) pgrp = int(r0) return } +var libc_getpgrp_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpid() (pid int) { - r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0) pid = int(r0) return } +var libc_getpid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpid getpid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getppid() (ppid int) { - r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0) ppid = int(r0) return } +var libc_getppid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getppid getppid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getpriority(which int, who int) (prio int, err error) { - r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + r0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0) prio = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -809,20 +1077,28 @@ func Getpriority(which int, who int) (prio int, err error) { return } +var libc_getpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrtable() (rtable int, err error) { - r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + r0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0) rtable = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -830,20 +1106,28 @@ func Getrtable() (rtable int, err error) { return } +var libc_getrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrtable getrtable "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getrusage(who int, rusage *Rusage) (err error) { - _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + _, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_getrusage_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getsid(pid int) (sid int, err error) { - r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + r0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0) sid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -851,46 +1135,66 @@ func Getsid(pid int) (sid int, err error) { return } +var libc_getsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getsid getsid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Gettimeofday(tv *Timeval) (err error) { - _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_gettimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Getuid() (uid int) { - r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + r0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0) uid = int(r0) return } +var libc_getuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_getuid getuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Issetugid() (tainted bool) { - r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + r0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0) tainted = bool(r0 != 0) return } +var libc_issetugid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_issetugid issetugid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kill(pid int, signum syscall.Signal) (err error) { - _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + _, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_kill_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kill kill "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Kqueue() (fd int, err error) { - r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + r0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -898,6 +1202,10 @@ func Kqueue() (fd int, err error) { return } +var libc_kqueue_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_kqueue kqueue "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lchown(path string, uid int, gid int) (err error) { @@ -906,13 +1214,17 @@ func Lchown(path string, uid int, gid int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + _, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lchown_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lchown lchown "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Link(path string, link string) (err error) { @@ -926,13 +1238,17 @@ func Link(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_link_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_link link "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { @@ -946,23 +1262,31 @@ func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err er if err != nil { return } - _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + _, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_linkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_linkat linkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Listen(s int, backlog int) (err error) { - _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + _, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_listen_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_listen listen "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Lstat(path string, stat *Stat_t) (err error) { @@ -971,13 +1295,17 @@ func Lstat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_lstat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lstat lstat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdir(path string, mode uint32) (err error) { @@ -986,13 +1314,17 @@ func Mkdir(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkdirat(dirfd int, path string, mode uint32) (err error) { @@ -1001,13 +1333,17 @@ func Mkdirat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkdirat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifo(path string, mode uint32) (err error) { @@ -1016,13 +1352,17 @@ func Mkfifo(path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + _, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifo_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mkfifoat(dirfd int, path string, mode uint32) (err error) { @@ -1031,13 +1371,17 @@ func Mkfifoat(dirfd int, path string, mode uint32) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + _, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mkfifoat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mknod(path string, mode uint32, dev int) (err error) { @@ -1046,13 +1390,17 @@ func Mknod(path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + _, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknod_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknod mknod "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { @@ -1061,23 +1409,31 @@ func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + _, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_mknodat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Nanosleep(time *Timespec, leftover *Timespec) (err error) { - _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_nanosleep_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Open(path string, mode int, perm uint32) (fd int, err error) { @@ -1086,7 +1442,7 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + r0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1094,6 +1450,10 @@ func Open(path string, mode int, perm uint32) (fd int, err error) { return } +var libc_open_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_open open "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { @@ -1102,7 +1462,7 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { if err != nil { return } - r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + r0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) fd = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1110,6 +1470,10 @@ func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { return } +var libc_openat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_openat openat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Pathconf(path string, name int) (val int, err error) { @@ -1118,7 +1482,7 @@ func Pathconf(path string, name int) (val int, err error) { if err != nil { return } - r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + r0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) val = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1126,6 +1490,10 @@ func Pathconf(path string, name int) (val int, err error) { return } +var libc_pathconf_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func pread(fd int, p []byte, offset int64) (n int, err error) { @@ -1135,7 +1503,7 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + r0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1143,6 +1511,10 @@ func pread(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pread_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pread pread "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func pwrite(fd int, p []byte, offset int64) (n int, err error) { @@ -1152,7 +1524,7 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + r0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1160,6 +1532,10 @@ func pwrite(fd int, p []byte, offset int64) (n int, err error) { return } +var libc_pwrite_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func read(fd int, p []byte) (n int, err error) { @@ -1169,7 +1545,7 @@ func read(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1177,6 +1553,10 @@ func read(fd int, p []byte) (n int, err error) { return } +var libc_read_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_read read "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Readlink(path string, buf []byte) (n int, err error) { @@ -1191,7 +1571,7 @@ func Readlink(path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + r0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1199,6 +1579,10 @@ func Readlink(path string, buf []byte) (n int, err error) { return } +var libc_readlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlink readlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { @@ -1213,7 +1597,7 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { } else { _p1 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + r0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1221,6 +1605,10 @@ func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { return } +var libc_readlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_readlinkat readlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rename(from string, to string) (err error) { @@ -1234,13 +1622,17 @@ func Rename(from string, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rename_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rename rename "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Renameat(fromfd int, from string, tofd int, to string) (err error) { @@ -1254,13 +1646,17 @@ func Renameat(fromfd int, from string, tofd int, to string) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + _, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_renameat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameat renameat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Revoke(path string) (err error) { @@ -1269,13 +1665,17 @@ func Revoke(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_revoke_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_revoke revoke "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Rmdir(path string) (err error) { @@ -1284,17 +1684,21 @@ func Rmdir(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_rmdir_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { - r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + r0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) newoffset = int64(int64(r1)<<32 | int64(r0)) if e1 != 0 { err = errnoErr(e1) @@ -1302,10 +1706,14 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { return } +var libc_lseek_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_lseek lseek "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { - r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + r0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1313,36 +1721,52 @@ func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err return } +var libc_select_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_select select "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setegid(egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setegid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setegid setegid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Seteuid(euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_seteuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setgid(gid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setgid setgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setlogin(name string) (err error) { @@ -1351,97 +1775,133 @@ func Setlogin(name string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setlogin_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setlogin setlogin "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setpgid(pid int, pgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + _, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setpriority(which int, who int, prio int) (err error) { - _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + _, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setpriority_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setregid(rgid int, egid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + _, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setregid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setregid setregid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setreuid(ruid int, euid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + _, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setreuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setresgid(rgid int, egid int, sgid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + _, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresgid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresgid setresgid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setresuid(ruid int, euid int, suid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + _, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setresuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setresuid setresuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrlimit(which int, lim *Rlimit) (err error) { - _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + _, _, e1 := syscall_rawSyscall(libc_setrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrlimit_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setrtable(rtable int) (err error) { - _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setrtable_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setrtable setrtable "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setsid() (pid int, err error) { - r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + r0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0) pid = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1449,26 +1909,38 @@ func Setsid() (pid int, err error) { return } +var libc_setsid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setsid setsid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Settimeofday(tp *Timeval) (err error) { - _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_settimeofday_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Setuid(uid int) (err error) { - _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + _, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_setuid_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_setuid setuid "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Stat(path string, stat *Stat_t) (err error) { @@ -1477,13 +1949,17 @@ func Stat(path string, stat *Stat_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_stat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_stat stat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Statfs(path string, stat *Statfs_t) (err error) { @@ -1492,13 +1968,17 @@ func Statfs(path string, stat *Statfs_t) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + _, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_statfs_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_statfs statfs "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlink(path string, link string) (err error) { @@ -1512,13 +1992,17 @@ func Symlink(path string, link string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + _, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlink symlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { @@ -1532,23 +2016,31 @@ func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + _, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) if e1 != 0 { err = errnoErr(e1) } return } +var libc_symlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_symlinkat symlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Sync() (err error) { - _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + _, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_sync_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_sync sync "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Truncate(path string, length int64) (err error) { @@ -1557,21 +2049,29 @@ func Truncate(path string, length int64) (err error) { if err != nil { return } - _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + _, _, e1 := syscall_syscall6(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_truncate_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_truncate truncate "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Umask(newmask int) (oldmask int) { - r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + r0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0) oldmask = int(r0) return } +var libc_umask_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_umask umask "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlink(path string) (err error) { @@ -1580,13 +2080,17 @@ func Unlink(path string) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + _, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlink_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlink unlink "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unlinkat(dirfd int, path string, flags int) (err error) { @@ -1595,13 +2099,17 @@ func Unlinkat(dirfd int, path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + _, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unlinkat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func Unmount(path string, flags int) (err error) { @@ -1610,13 +2118,17 @@ func Unmount(path string, flags int) (err error) { if err != nil { return } - _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + _, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_unmount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_unmount unmount "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func write(fd int, p []byte) (n int, err error) { @@ -1626,7 +2138,7 @@ func write(fd int, p []byte) (n int, err error) { } else { _p0 = unsafe.Pointer(&_zero) } - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p))) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1634,10 +2146,14 @@ func write(fd int, p []byte) (n int, err error) { return } +var libc_write_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_write write "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { - r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + r0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) ret = uintptr(r0) if e1 != 0 { err = errnoErr(e1) @@ -1645,20 +2161,28 @@ func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) ( return } +var libc_mmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mmap mmap "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func munmap(addr uintptr, length uintptr) (err error) { - _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + _, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0) if e1 != 0 { err = errnoErr(e1) } return } +var libc_munmap_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_munmap munmap "libc.so" + // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func readlen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1669,7 +2193,7 @@ func readlen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func writelen(fd int, buf *byte, nbuf int) (n int, err error) { - r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1685,9 +2209,13 @@ func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error if err != nil { return } - _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + _, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) if e1 != 0 { err = errnoErr(e1) } return } + +var libc_utimensat_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s new file mode 100644 index 000000000..9ad116d9f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s @@ -0,0 +1,796 @@ +// go run mkasm.go openbsd arm +// Code generated by the command above; DO NOT EDIT. + +#include "textflag.h" + +TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) + +GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB) + +TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) + +GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB) + +TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) + +GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $4 +DATA ·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB) + +TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) + +GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $4 +DATA ·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB) + +TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) + +GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $4 +DATA ·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB) + +TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) + +GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB) + +TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) + +GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB) + +TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) + +GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB) + +TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) + +GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB) + +TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) + +GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB) + +TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) + +GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB) + +TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) + +GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB) + +TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) + +GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $4 +DATA ·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB) + +TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) + +GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB) + +TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) + +GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB) + +TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) + +GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB) + +TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) + +GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB) + +TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) + +GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB) + +TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) + +GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB) + +TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) + +GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $4 +DATA ·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB) + +TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB) + +TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) + +GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $4 +DATA ·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB) + +TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) + +GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB) + +TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) + +GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB) + +TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) + +GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB) + +TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) + +GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB) + +TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) + +GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB) + +TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) + +GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB) + +TEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pipe2(SB) + +GLOBL ·libc_pipe2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB) + +TEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getdents(SB) + +GLOBL ·libc_getdents_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB) + +TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getcwd(SB) + +GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB) + +TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) + +GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB) + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) + +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB) + +TEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ppoll(SB) + +GLOBL ·libc_ppoll_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB) + +TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_access(SB) + +GLOBL ·libc_access_trampoline_addr(SB), RODATA, $4 +DATA ·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB) + +TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) + +GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $4 +DATA ·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB) + +TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) + +GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB) + +TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) + +GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB) + +TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) + +GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB) + +TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) + +GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB) + +TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) + +GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $4 +DATA ·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB) + +TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_close(SB) + +GLOBL ·libc_close_trampoline_addr(SB), RODATA, $4 +DATA ·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB) + +TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) + +GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB) + +TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) + +GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB) + +TEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_dup3(SB) + +GLOBL ·libc_dup3_trampoline_addr(SB), RODATA, $4 +DATA ·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB) + +TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) + +GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB) + +TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) + +GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB) + +TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) + +GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB) + +TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) + +GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB) + +TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) + +GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB) + +TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) + +GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB) + +TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) + +GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB) + +TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) + +GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB) + +TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) + +GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $4 +DATA ·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB) + +TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) + +GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB) + +TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) + +GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB) + +TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) + +GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB) + +TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) + +GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB) + +TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) + +GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB) + +TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) + +GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB) + +TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) + +GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB) + +TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) + +GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB) + +TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) + +GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB) + +TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) + +GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB) + +TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) + +GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB) + +TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) + +GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB) + +TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) + +GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB) + +TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) + +GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB) + +TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) + +GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB) + +TEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrtable(SB) + +GLOBL ·libc_getrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB) + +TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) + +GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB) + +TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) + +GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB) + +TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) + +GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB) + +TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) + +GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB) + +TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) + +GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB) + +TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) + +GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB) + +TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) + +GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $4 +DATA ·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB) + +TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) + +GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB) + +TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_link(SB) + +GLOBL ·libc_link_trampoline_addr(SB), RODATA, $4 +DATA ·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB) + +TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) + +GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB) + +TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) + +GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $4 +DATA ·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB) + +TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) + +GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB) + +TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) + +GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB) + +TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) + +GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB) + +TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) + +GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB) + +TEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mkfifoat(SB) + +GLOBL ·libc_mkfifoat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB) + +TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) + +GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB) + +TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mknodat(SB) + +GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) + +TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_nanosleep(SB) + +GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 +DATA ·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB) + +TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_open(SB) + +GLOBL ·libc_open_trampoline_addr(SB), RODATA, $4 +DATA ·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB) + +TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) + +GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB) + +TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) + +GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB) + +TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) + +GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB) + +TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) + +GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $4 +DATA ·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB) + +TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_read(SB) + +GLOBL ·libc_read_trampoline_addr(SB), RODATA, $4 +DATA ·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB) + +TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) + +GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB) + +TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) + +GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB) + +TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) + +GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB) + +TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) + +GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB) + +TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) + +GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $4 +DATA ·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB) + +TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) + +GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $4 +DATA ·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB) + +TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) + +GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $4 +DATA ·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB) + +TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_select(SB) + +GLOBL ·libc_select_trampoline_addr(SB), RODATA, $4 +DATA ·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB) + +TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) + +GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB) + +TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) + +GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB) + +TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) + +GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB) + +TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) + +GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB) + +TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) + +GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB) + +TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) + +GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB) + +TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) + +GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB) + +TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) + +GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB) + +TEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresgid(SB) + +GLOBL ·libc_setresgid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB) + +TEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setresuid(SB) + +GLOBL ·libc_setresuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB) + +TEXT libc_setrlimit_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) + +GLOBL ·libc_setrlimit_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrlimit_trampoline_addr(SB)/4, $libc_setrlimit_trampoline<>(SB) + +TEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setrtable(SB) + +GLOBL ·libc_setrtable_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB) + +TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) + +GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB) + +TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) + +GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $4 +DATA ·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB) + +TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) + +GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $4 +DATA ·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB) + +TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) + +GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB) + +TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) + +GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $4 +DATA ·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB) + +TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) + +GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB) + +TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) + +GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB) + +TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) + +GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $4 +DATA ·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB) + +TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) + +GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $4 +DATA ·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB) + +TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) + +GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $4 +DATA ·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB) + +TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) + +GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB) + +TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) + +GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB) + +TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) + +GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB) + +TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_write(SB) + +GLOBL ·libc_write_trampoline_addr(SB), RODATA, $4 +DATA ·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB) + +TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) + +GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB) + +TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) + +GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $4 +DATA ·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB) + +TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_utimensat(SB) + +GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $4 +DATA ·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go index 467971eed..f59b18a97 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -6,6 +6,7 @@ package unix +// Deprecated: Use libc wrappers instead of direct syscalls. const ( SYS_EXIT = 1 // { void sys_exit(int rval); } SYS_FORK = 2 // { int sys_fork(void); } diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index dea0c9a60..d9c78cdcb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -294,7 +294,7 @@ type PtraceLwpInfoStruct struct { Flags int32 Sigmask Sigset_t Siglist Sigset_t - Siginfo __Siginfo + Siginfo __PtraceSiginfo Tdname [20]int8 Child_pid int32 Syscall_code uint32 @@ -312,6 +312,17 @@ type __Siginfo struct { Value [4]byte _ [32]byte } +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [4]byte + _ [32]byte +} type Sigset_t struct { Val [4]uint32 @@ -350,8 +361,8 @@ type FpExtendedPrecision struct{} type PtraceIoDesc struct { Op int32 - Offs *byte - Addr *byte + Offs uintptr + Addr uintptr Len uint32 } diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index da0ea0d60..26991b165 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -291,7 +291,7 @@ type PtraceLwpInfoStruct struct { Flags int32 Sigmask Sigset_t Siglist Sigset_t - Siginfo __Siginfo + Siginfo __PtraceSiginfo Tdname [20]int8 Child_pid int32 Syscall_code uint32 @@ -310,6 +310,18 @@ type __Siginfo struct { _ [40]byte } +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + type Sigset_t struct { Val [4]uint32 } @@ -354,8 +366,8 @@ type FpExtendedPrecision struct{} type PtraceIoDesc struct { Op int32 - Offs *byte - Addr *byte + Offs uintptr + Addr uintptr Len uint64 } diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index da8f74045..f8324e7e7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -293,7 +293,7 @@ type PtraceLwpInfoStruct struct { Flags int32 Sigmask Sigset_t Siglist Sigset_t - Siginfo __Siginfo + Siginfo __PtraceSiginfo Tdname [20]int8 Child_pid int32 Syscall_code uint32 @@ -312,6 +312,18 @@ type __Siginfo struct { _ [32]byte } +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [4]byte + _ [32]byte +} + type Sigset_t struct { Val [4]uint32 } @@ -337,8 +349,8 @@ type FpExtendedPrecision struct { type PtraceIoDesc struct { Op int32 - Offs *byte - Addr *byte + Offs uintptr + Addr uintptr Len uint32 } diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index d69988e5e..4220411f3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -291,7 +291,7 @@ type PtraceLwpInfoStruct struct { Flags int32 Sigmask Sigset_t Siglist Sigset_t - Siginfo __Siginfo + Siginfo __PtraceSiginfo Tdname [20]int8 Child_pid int32 Syscall_code uint32 @@ -310,6 +310,18 @@ type __Siginfo struct { _ [40]byte } +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + type Sigset_t struct { Val [4]uint32 } @@ -334,8 +346,8 @@ type FpExtendedPrecision struct{} type PtraceIoDesc struct { Op int32 - Offs *byte - Addr *byte + Offs uintptr + Addr uintptr Len uint64 } diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go index d6fd9e883..0660fd45c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -291,7 +291,7 @@ type PtraceLwpInfoStruct struct { Flags int32 Sigmask Sigset_t Siglist Sigset_t - Siginfo __Siginfo + Siginfo __PtraceSiginfo Tdname [20]int8 Child_pid int32 Syscall_code uint32 @@ -310,6 +310,18 @@ type __Siginfo struct { _ [40]byte } +type __PtraceSiginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr uintptr + Value [8]byte + _ [40]byte +} + type Sigset_t struct { Val [4]uint32 } @@ -335,8 +347,8 @@ type FpExtendedPrecision struct{} type PtraceIoDesc struct { Op int32 - Offs *byte - Addr *byte + Offs uintptr + Addr uintptr Len uint64 } diff --git a/vendor/golang.org/x/sys/windows/setupapi_windows.go b/vendor/golang.org/x/sys/windows/setupapi_windows.go index 14027da3f..f8126482f 100644 --- a/vendor/golang.org/x/sys/windows/setupapi_windows.go +++ b/vendor/golang.org/x/sys/windows/setupapi_windows.go @@ -296,7 +296,7 @@ const ( // Flag to indicate that the sorting from the INF file should be used. DI_INF_IS_SORTED DI_FLAGS = 0x00008000 - // Flag to indicate that only the the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched. + // Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched. DI_ENUMSINGLEINF DI_FLAGS = 0x00010000 // Flag that prevents ConfigMgr from removing/re-enumerating devices during device diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go index 72074d582..8732cdb95 100644 --- a/vendor/golang.org/x/sys/windows/syscall.go +++ b/vendor/golang.org/x/sys/windows/syscall.go @@ -30,8 +30,6 @@ import ( "strings" "syscall" "unsafe" - - "golang.org/x/sys/internal/unsafeheader" ) // ByteSliceFromString returns a NUL-terminated slice of bytes @@ -83,13 +81,7 @@ func BytePtrToString(p *byte) string { ptr = unsafe.Pointer(uintptr(ptr) + 1) } - var s []byte - h := (*unsafeheader.Slice)(unsafe.Pointer(&s)) - h.Data = unsafe.Pointer(p) - h.Len = n - h.Cap = n - - return string(s) + return string(unsafe.Slice(p, n)) } // Single-word zero for use when we need a valid pointer to 0 bytes. diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index e27913817..29737b200 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -138,13 +138,7 @@ func UTF16PtrToString(p *uint16) string { ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p)) } - var s []uint16 - h := (*unsafeheader.Slice)(unsafe.Pointer(&s)) - h.Data = unsafe.Pointer(p) - h.Len = n - h.Cap = n - - return string(utf16.Decode(s)) + return string(utf16.Decode(unsafe.Slice(p, n))) } func Getpagesize() int { return 4096 } @@ -364,6 +358,15 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) //sys GetActiveProcessorCount(groupNumber uint16) (ret uint32) //sys GetMaximumProcessorCount(groupNumber uint16) (ret uint32) +//sys EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows +//sys EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows +//sys GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW +//sys GetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow +//sys GetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow +//sys IsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow +//sys IsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode +//sys IsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible +//sys GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo // Volume Management Functions //sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index f9eaca528..ef489f546 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -3213,3 +3213,22 @@ type ModuleInfo struct { } const ALL_PROCESSOR_GROUPS = 0xFFFF + +type Rect struct { + Left int32 + Top int32 + Right int32 + Bottom int32 +} + +type GUIThreadInfo struct { + Size uint32 + Flags uint32 + Active HWND + Focus HWND + Capture HWND + MenuOwner HWND + MoveSize HWND + CaretHandle HWND + CaretRect Rect +} diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 52d4742cb..6c6f27ba5 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -444,9 +444,18 @@ var ( procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath") procShellExecuteW = modshell32.NewProc("ShellExecuteW") + procEnumChildWindows = moduser32.NewProc("EnumChildWindows") + procEnumWindows = moduser32.NewProc("EnumWindows") procExitWindowsEx = moduser32.NewProc("ExitWindowsEx") + procGetClassNameW = moduser32.NewProc("GetClassNameW") + procGetDesktopWindow = moduser32.NewProc("GetDesktopWindow") + procGetForegroundWindow = moduser32.NewProc("GetForegroundWindow") + procGetGUIThreadInfo = moduser32.NewProc("GetGUIThreadInfo") procGetShellWindow = moduser32.NewProc("GetShellWindow") procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") + procIsWindow = moduser32.NewProc("IsWindow") + procIsWindowUnicode = moduser32.NewProc("IsWindowUnicode") + procIsWindowVisible = moduser32.NewProc("IsWindowVisible") procMessageBoxW = moduser32.NewProc("MessageBoxW") procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") @@ -3802,6 +3811,19 @@ func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *ui return } +func EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) { + syscall.Syscall(procEnumChildWindows.Addr(), 3, uintptr(hwnd), uintptr(enumFunc), uintptr(param)) + return +} + +func EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) { + r1, _, e1 := syscall.Syscall(procEnumWindows.Addr(), 2, uintptr(enumFunc), uintptr(param), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func ExitWindowsEx(flags uint32, reason uint32) (err error) { r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0) if r1 == 0 { @@ -3810,6 +3832,35 @@ func ExitWindowsEx(flags uint32, reason uint32) (err error) { return } +func GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) { + r0, _, e1 := syscall.Syscall(procGetClassNameW.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount)) + copied = int32(r0) + if copied == 0 { + err = errnoErr(e1) + } + return +} + +func GetDesktopWindow() (hwnd HWND) { + r0, _, _ := syscall.Syscall(procGetDesktopWindow.Addr(), 0, 0, 0, 0) + hwnd = HWND(r0) + return +} + +func GetForegroundWindow() (hwnd HWND) { + r0, _, _ := syscall.Syscall(procGetForegroundWindow.Addr(), 0, 0, 0, 0) + hwnd = HWND(r0) + return +} + +func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetGUIThreadInfo.Addr(), 2, uintptr(thread), uintptr(unsafe.Pointer(info)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetShellWindow() (shellWindow HWND) { r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0) shellWindow = HWND(r0) @@ -3825,6 +3876,24 @@ func GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) { return } +func IsWindow(hwnd HWND) (isWindow bool) { + r0, _, _ := syscall.Syscall(procIsWindow.Addr(), 1, uintptr(hwnd), 0, 0) + isWindow = r0 != 0 + return +} + +func IsWindowUnicode(hwnd HWND) (isUnicode bool) { + r0, _, _ := syscall.Syscall(procIsWindowUnicode.Addr(), 1, uintptr(hwnd), 0, 0) + isUnicode = r0 != 0 + return +} + +func IsWindowVisible(hwnd HWND) (isVisible bool) { + r0, _, _ := syscall.Syscall(procIsWindowVisible.Addr(), 1, uintptr(hwnd), 0, 0) + isVisible = r0 != 0 + return +} + func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) ret = int32(r0) diff --git a/vendor/modules.txt b/vendor/modules.txt index e7ae53317..aa1d34c6c 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -39,7 +39,7 @@ github.com/fsnotify/fsnotify # github.com/gdamore/encoding v1.0.0 ## explicit; go 1.9 github.com/gdamore/encoding -# github.com/gdamore/tcell/v2 v2.5.2 +# github.com/gdamore/tcell/v2 v2.5.3 ## explicit; go 1.12 github.com/gdamore/tcell/v2 github.com/gdamore/tcell/v2/terminfo @@ -172,7 +172,7 @@ github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem github.com/jesseduffield/go-git/v5/utils/merkletrie/index github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame github.com/jesseduffield/go-git/v5/utils/merkletrie/noder -# github.com/jesseduffield/gocui v0.3.1-0.20220815095708-156fda5e0419 +# github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6 ## explicit; go 1.12 github.com/jesseduffield/gocui # github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 @@ -229,7 +229,7 @@ github.com/petermattis/goid # github.com/pmezard/go-difflib v1.0.0 ## explicit github.com/pmezard/go-difflib/difflib -# github.com/rivo/uniseg v0.3.4 +# github.com/rivo/uniseg v0.4.2 ## explicit; go 1.18 github.com/rivo/uniseg # github.com/sahilm/fuzzy v0.1.0 @@ -291,7 +291,7 @@ golang.org/x/exp/slices golang.org/x/net/context golang.org/x/net/internal/socks golang.org/x/net/proxy -# golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab +# golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 ## explicit; go 1.17 golang.org/x/sys/cpu golang.org/x/sys/internal/unsafeheader From 9351af382933d456de65acab1451b17677ddb171 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Fri, 16 Sep 2022 08:55:16 -0700 Subject: [PATCH 13/44] yet another retry to reduce flakiness --- pkg/integration/deprecated/integration.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/integration/deprecated/integration.go b/pkg/integration/deprecated/integration.go index 9527d1a45..2f9b2ab8c 100644 --- a/pkg/integration/deprecated/integration.go +++ b/pkg/integration/deprecated/integration.go @@ -310,7 +310,7 @@ func getTestSpeeds(testStartSpeed float64, mode Mode, speedStr string) []float64 if startSpeed > 5 { speeds = append(speeds, 5) } - speeds = append(speeds, 1, 0.5) + speeds = append(speeds, 1, 0.5, 0.5) return speeds } From 74acb3e86a3b171c79c06e3d5d02abcfe5c8cdd0 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Fri, 16 Sep 2022 22:15:02 -0700 Subject: [PATCH 14/44] add integration tests for cherry picking --- pkg/gui/modes.go | 11 +- pkg/i18n/english.go | 4 + pkg/integration/components/assert.go | 2 +- pkg/integration/components/input.go | 5 + pkg/integration/tests/branch/rebase.go | 47 +----- .../tests/branch/rebase_and_drop.go | 3 +- .../tests/cherry_pick/cherry_pick.go | 66 ++++++++ .../cherry_pick/cherry_pick_conflicts.go | 87 ++++++++++ pkg/integration/tests/shared/README.md | 1 + pkg/integration/tests/shared/conflicts.go | 49 ++++++ pkg/integration/tests/tests.go | 8 + .../expected/repo/.git_keep/COMMIT_EDITMSG | 15 -- .../expected/repo/.git_keep/HEAD | 1 - .../expected/repo/.git_keep/ORIG_HEAD | 1 - .../expected/repo/.git_keep/REBASE_HEAD | 1 - .../expected/repo/.git_keep/index | Bin 1356 -> 0 bytes .../expected/repo/.git_keep/logs/HEAD | 40 ----- .../.git_keep/logs/refs/heads/base_branch | 3 - .../repo/.git_keep/logs/refs/heads/develop | 5 - .../logs/refs/heads/feature/cherry-picking | 9 - .../repo/.git_keep/logs/refs/heads/master | 5 - .../.git_keep/logs/refs/heads/other_branch | 3 - .../05/56e5da1cda4e150d6cc1182be6efdb061f59fe | Bin 158 -> 0 bytes .../09/cbe8c6717c06a61876b7b641a46a62bf3c585d | Bin 112 -> 0 bytes .../16/f2bcca6ce7bcc17277103a5555072a6c3322a2 | 4 - .../17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 | Bin 34 -> 0 bytes .../17/4a8c9444cfa700682d74059d9fa9be5749242c | Bin 177 -> 0 bytes .../18/0cf8328022becee9aaa2577a8f84ea2b9f3827 | Bin 21 -> 0 bytes .../18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 | Bin 66 -> 0 bytes .../19/079c78db18112c5a2720896a040014a2d05f6d | Bin 153 -> 0 bytes .../1b/9ae5f5dff631baaa180a30afd9983f83dc27ca | Bin 50 -> 0 bytes .../20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 | Bin 144 -> 0 bytes .../21/28c3c3def18d6e2a389957252fdb69ba85fce0 | Bin 208 -> 0 bytes .../21/78af7503938665881174069be4d48fa483e4af | Bin 117 -> 0 bytes .../22/b0fd807dd5e428c2d818aef6a2311d7c11e885 | Bin 66 -> 0 bytes .../23/4e2fa9a01b8d7e849b0c2a1bbd550e788ea18d | 2 - .../24/6f7487e08e6330ccbec4053e701145d53f64d4 | Bin 327 -> 0 bytes .../24/93c87610e0a9b8edfca592cb01a027f60ce587 | 3 - .../2c/f63d6da8c52131dd79622f8572b44a1267e420 | Bin 121 -> 0 bytes .../2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 | Bin 150 -> 0 bytes .../33/9e2d062760be9ecdb4bb90f97bdb0e634e7831 | 2 - .../34/c74161eef968fc951cf170a011fa8abfeddbcd | Bin 120 -> 0 bytes .../36/e0ef3e52c6e29e64980c71defbab6064d2da8c | Bin 252 -> 0 bytes .../3e/0d4389ab458a8643281e494e3ebae7ce307eec | 1 - .../45/20f99d650662a3f597a200fea5f2599f528180 | 3 - .../4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 | 1 - .../5d/2484f3cb6ce658e296526c48e1a376b2790dfc | Bin 147 -> 0 bytes .../5d/a4d9200457542d875fe4def54ac98c16332db0 | Bin 33 -> 0 bytes .../5f/3e4598b46a912f0f95a4898743e979343c82f3 | Bin 86 -> 0 bytes .../60/91d709b275e712111d016d9b3a4fb44e63f1f6 | Bin 54 -> 0 bytes .../61/01e935461d4cd862ae4a720846e87880d198b9 | Bin 66 -> 0 bytes .../65/c0438e428cd1aa94588eaa52eb7ebad7ec62fd | Bin 168 -> 0 bytes .../68/728b56ed31d03ca94496b9e2a45c62ba0f4e8f | 2 - .../69/6a8fd43c580b3bed203977faab4566b052a4e4 | Bin 156 -> 0 bytes .../6b/6092c6840d05583489cc32a1260db0d5390a98 | Bin 233 -> 0 bytes .../73/17cf7580efd92f974c8dfb3cde84eded8dafec | 2 - .../78/3666de4acbb22a9efc205197667f5136118c54 | Bin 328 -> 0 bytes .../78/a5ec82970200538b70f5ac61c18acb45ccb8ee | 2 - .../79/23e4a952f4b169373b0389be6a9db3cd929547 | 3 - .../88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d | Bin 66 -> 0 bytes .../88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 | Bin 65 -> 0 bytes .../90/a84fd62f8033027fab3e567a81d5ed2a6a71cd | Bin 66 -> 0 bytes .../95/9d7a10da71acf97b17300b40a3b4f30903e09c | Bin 358 -> 0 bytes .../9b/b8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 | Bin 154 -> 0 bytes .../9d/e8260b738a34a74533df54f2e404276aa96242 | Bin 54 -> 0 bytes .../a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 | Bin 21 -> 0 bytes .../af/a76754c933269d7cd45630a7184a20849dbe9c | Bin 66 -> 0 bytes .../b4/121e2d6aa156227b6541431ddfb8594904b520 | Bin 66 -> 0 bytes .../b8/ab98a9ab0599193a3f41a9cc5cb988283e6722 | Bin 162 -> 0 bytes .../bd/6f34089ba29cbae102003bd973e9f37a235c2e | Bin 254 -> 0 bytes .../bf/cc5725cd2ef871ff804996f4e02beef3e4dec2 | 2 - .../c1/dd146476a4a37fff75b88612a718281ea83b58 | Bin 277 -> 0 bytes .../ce/ecbe69460104e09eb2cd7c865df520c5679a68 | Bin 183 -> 0 bytes .../d0/60f7226715ca55b04e91fad2b8aca01badd993 | Bin 303 -> 0 bytes .../d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 | Bin 201 -> 0 bytes .../d8/e5ca46d2bbd7c115e5849e637efe2361203368 | 2 - .../da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 | Bin 227 -> 0 bytes .../dc/d348507ba1da8f6479b9d964daa302b2fb9d9c | 1 - .../df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b | Bin 21 -> 0 bytes .../e3/ae5c6d8407e8307b9bc77923be78c901408f6e | Bin 50 -> 0 bytes .../e4/48ae5bf6371d80ebee24a22b6df341797a6511 | Bin 66 -> 0 bytes .../e4/666ba294866d5c16f9afebcacf8f4adfee7439 | Bin 86 -> 0 bytes .../e4/aa98b835d0a871d9ea02e6d286f0fbb2204cdc | 2 - .../ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d | Bin 361 -> 0 bytes .../eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 | Bin 66 -> 0 bytes .../ef/029771f117b5f31c972dfa546037662e243ca7 | Bin 162 -> 0 bytes .../f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 | Bin 144 -> 0 bytes .../f3/7d8713ef1390c277b45a084a08c0c142ff7ed9 | 2 - .../f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 | Bin 54 -> 0 bytes .../f4/ffac820a371104fe611d81bc13a45b70a3ebb3 | Bin 158 -> 0 bytes .../fa/cb56c48e4718f71c08116153c93d87bc699671 | 2 - .../fd/31cea7e0b6e8d334280be34db8dd86cdda3007 | Bin 352 -> 0 bytes .../repo/.git_keep/refs/heads/base_branch | 1 - .../repo/.git_keep/refs/heads/develop | 1 - .../refs/heads/feature/cherry-picking | 1 - .../expected/repo/.git_keep/refs/heads/master | 1 - .../repo/.git_keep/refs/heads/other_branch | 1 - .../expected/repo/cherrypicking3 | 1 - .../expected/repo/cherrypicking4 | 1 - .../expected/repo/cherrypicking5 | 1 - .../expected/repo/directory/file | 1 - .../expected/repo/directory/file2 | 1 - .../cherryPicking/expected/repo/file | 1 - .../cherryPicking/expected/repo/file1 | 63 ------- .../cherryPicking/expected/repo/file3 | 1 - .../cherryPicking/expected/repo/file4 | 1 - .../cherryPicking/expected/repo/file5 | 1 - test/integration/cherryPicking/recording.json | 1 - test/integration/cherryPicking/setup.sh | 157 ------------------ test/integration/cherryPicking/test.json | 1 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../cherry_pick/expected/repo/.git_keep/HEAD | 1 + .../expected/repo/.git_keep/ORIG_HEAD | 1 + .../expected/repo/.git_keep/config | 2 + .../expected/repo/.git_keep/description | 0 .../cherry_pick/expected/repo/.git_keep/index | Bin 0 -> 65 bytes .../expected/repo/.git_keep/info/exclude | 0 .../expected/repo/.git_keep/logs/HEAD | 14 ++ .../.git_keep/logs/refs/heads/first-branch | 4 + .../repo/.git_keep/logs/refs/heads/master | 1 + .../.git_keep/logs/refs/heads/second-branch | 3 + .../19/7a799a14b2ca7478cfe339e7c83f7cdea4918b | Bin 0 -> 147 bytes .../19/8998809e08270eebeb746d6aed45df9faee6a2 | 2 + .../2b/10745f8823e1d49edc446ea1440d7730a6625b | Bin 0 -> 146 bytes .../4b/825dc642cb6eb9a060e54bf8d69288fbee4904 | Bin 0 -> 15 bytes .../5b/06c6c8d51ba89367991cc7b40dda5d827bb95a | 2 + .../5d/9c4c2ff245b2b0112cfa90a529baa3f3e12c6f | Bin 0 -> 151 bytes .../9c/f3d6426fc20e3ccf1a9b0e3fa593f136fee92e | Bin 0 -> 150 bytes .../c3/7c09bdd6f969542d7e94829662c5ac19f5fb7e | Bin 0 -> 145 bytes .../repo/.git_keep/refs/heads/first-branch | 1 + .../expected/repo/.git_keep/refs/heads/master | 1 + .../repo/.git_keep/refs/heads/second-branch | 1 + .../expected/repo/.git_keep/COMMIT_EDITMSG | 15 ++ .../expected/repo/.git_keep/FETCH_HEAD | 0 .../expected/repo/.git_keep/HEAD | 1 + .../expected/repo/.git_keep/ORIG_HEAD | 1 + .../expected/repo/.git_keep/config | 12 ++ .../expected/repo/.git_keep/description | 1 + .../expected/repo/.git_keep/index | Bin 0 -> 231 bytes .../expected/repo/.git_keep/info/exclude | 7 + .../expected/repo/.git_keep/logs/HEAD | 15 ++ .../logs/refs/heads/first-change-branch | 3 + .../.git_keep/logs/refs/heads/original-branch | 4 + .../logs/refs/heads/second-change-branch | 3 + .../00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 | Bin 0 -> 49 bytes .../10/91767dde559ffdc97b64f1536955253b931e50 | 3 + .../11/0d6e0b946c9d9b9b5e44c29d98692e925c368c | Bin 0 -> 48 bytes .../16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 | Bin 0 -> 46 bytes .../1f/332f64cb03c06913491af20cd407158776bd55 | Bin 0 -> 49 bytes .../1f/9963859d30c1bfe620e9121f3d689a07a35519 | Bin 0 -> 147 bytes .../2a/ccf5d0d5f4c2501627da4aebeda580cd86f0eb | Bin 0 -> 85 bytes .../3a/ac30738b0dda38d964abe6c2386603f9309a65 | Bin 0 -> 43 bytes .../4b/825dc642cb6eb9a060e54bf8d69288fbee4904 | Bin 0 -> 15 bytes .../4c/16472189d1db34cb67b99439725202216e26d9 | Bin 0 -> 41 bytes .../94/8965327ab8404a12fb80d9490ded95969431d1 | Bin 0 -> 169 bytes .../97/7cb37e46b9a00e19e6f99c5c179a30b990ca3d | Bin 0 -> 151 bytes .../ad/9b1c669fdc039038e54fc497f3e888cc4654e0 | Bin 0 -> 145 bytes .../cc/c8b929484ac23c527c54d1a109f20b16f5a006 | 2 + .../da/e6bc03641275886fa12a2a00c01edd6e975d99 | 3 + .../dd/df38b00920854961ad30512b3b174141e877b4 | 2 + .../e0/10d664020f79e46ef7f8bf2a1508fe0864109c | 2 + .../.git_keep/refs/heads/first-change-branch | 1 + .../repo/.git_keep/refs/heads/original-branch | 1 + .../.git_keep/refs/heads/second-change-branch | 1 + .../cherry_pick_conflicts/expected/repo/file | 6 + 166 files changed, 351 insertions(+), 404 deletions(-) create mode 100644 pkg/integration/tests/cherry_pick/cherry_pick.go create mode 100644 pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go create mode 100644 pkg/integration/tests/shared/README.md create mode 100644 pkg/integration/tests/shared/conflicts.go delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/ORIG_HEAD delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/REBASE_HEAD delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/index delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/base_branch delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/develop delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/other_branch delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/05/56e5da1cda4e150d6cc1182be6efdb061f59fe delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/16/f2bcca6ce7bcc17277103a5555072a6c3322a2 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/17/4a8c9444cfa700682d74059d9fa9be5749242c delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/19/079c78db18112c5a2720896a040014a2d05f6d delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/21/28c3c3def18d6e2a389957252fdb69ba85fce0 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/22/b0fd807dd5e428c2d818aef6a2311d7c11e885 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/23/4e2fa9a01b8d7e849b0c2a1bbd550e788ea18d delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/24/6f7487e08e6330ccbec4053e701145d53f64d4 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/24/93c87610e0a9b8edfca592cb01a027f60ce587 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/2c/f63d6da8c52131dd79622f8572b44a1267e420 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/33/9e2d062760be9ecdb4bb90f97bdb0e634e7831 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/36/e0ef3e52c6e29e64980c71defbab6064d2da8c delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/3e/0d4389ab458a8643281e494e3ebae7ce307eec delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/45/20f99d650662a3f597a200fea5f2599f528180 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/5d/2484f3cb6ce658e296526c48e1a376b2790dfc delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/5d/a4d9200457542d875fe4def54ac98c16332db0 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/61/01e935461d4cd862ae4a720846e87880d198b9 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/65/c0438e428cd1aa94588eaa52eb7ebad7ec62fd delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/68/728b56ed31d03ca94496b9e2a45c62ba0f4e8f delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/69/6a8fd43c580b3bed203977faab4566b052a4e4 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/6b/6092c6840d05583489cc32a1260db0d5390a98 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/73/17cf7580efd92f974c8dfb3cde84eded8dafec delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/78/3666de4acbb22a9efc205197667f5136118c54 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/78/a5ec82970200538b70f5ac61c18acb45ccb8ee delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/79/23e4a952f4b169373b0389be6a9db3cd929547 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/90/a84fd62f8033027fab3e567a81d5ed2a6a71cd delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/95/9d7a10da71acf97b17300b40a3b4f30903e09c delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/9b/b8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/af/a76754c933269d7cd45630a7184a20849dbe9c delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/b4/121e2d6aa156227b6541431ddfb8594904b520 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/b8/ab98a9ab0599193a3f41a9cc5cb988283e6722 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/bd/6f34089ba29cbae102003bd973e9f37a235c2e delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/bf/cc5725cd2ef871ff804996f4e02beef3e4dec2 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/c1/dd146476a4a37fff75b88612a718281ea83b58 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/ce/ecbe69460104e09eb2cd7c865df520c5679a68 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/d0/60f7226715ca55b04e91fad2b8aca01badd993 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/d8/e5ca46d2bbd7c115e5849e637efe2361203368 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/48ae5bf6371d80ebee24a22b6df341797a6511 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/aa98b835d0a871d9ea02e6d286f0fbb2204cdc delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/ef/029771f117b5f31c972dfa546037662e243ca7 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/f3/7d8713ef1390c277b45a084a08c0c142ff7ed9 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/f4/ffac820a371104fe611d81bc13a45b70a3ebb3 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/fa/cb56c48e4718f71c08116153c93d87bc699671 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/objects/fd/31cea7e0b6e8d334280be34db8dd86cdda3007 delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/base_branch delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/develop delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/feature/cherry-picking delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/other_branch delete mode 100644 test/integration/cherryPicking/expected/repo/cherrypicking3 delete mode 100644 test/integration/cherryPicking/expected/repo/cherrypicking4 delete mode 100644 test/integration/cherryPicking/expected/repo/cherrypicking5 delete mode 100644 test/integration/cherryPicking/expected/repo/directory/file delete mode 100644 test/integration/cherryPicking/expected/repo/directory/file2 delete mode 100644 test/integration/cherryPicking/expected/repo/file delete mode 100644 test/integration/cherryPicking/expected/repo/file1 delete mode 100644 test/integration/cherryPicking/expected/repo/file3 delete mode 100644 test/integration/cherryPicking/expected/repo/file4 delete mode 100644 test/integration/cherryPicking/expected/repo/file5 delete mode 100644 test/integration/cherryPicking/recording.json delete mode 100644 test/integration/cherryPicking/setup.sh delete mode 100644 test/integration/cherryPicking/test.json create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/COMMIT_EDITMSG rename test/{integration/cherryPicking => integration_new/cherry_pick/cherry_pick}/expected/repo/.git_keep/FETCH_HEAD (100%) create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/HEAD create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/ORIG_HEAD rename test/{integration/cherryPicking => integration_new/cherry_pick/cherry_pick}/expected/repo/.git_keep/config (87%) rename test/{integration/cherryPicking => integration_new/cherry_pick/cherry_pick}/expected/repo/.git_keep/description (100%) create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/index rename test/{integration/cherryPicking => integration_new/cherry_pick/cherry_pick}/expected/repo/.git_keep/info/exclude (100%) create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/first-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/master create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/second-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/19/7a799a14b2ca7478cfe339e7c83f7cdea4918b create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/19/8998809e08270eebeb746d6aed45df9faee6a2 create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/2b/10745f8823e1d49edc446ea1440d7730a6625b create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/5b/06c6c8d51ba89367991cc7b40dda5d827bb95a create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/5d/9c4c2ff245b2b0112cfa90a529baa3f3e12c6f create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/9c/f3d6426fc20e3ccf1a9b0e3fa593f136fee92e create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/c3/7c09bdd6f969542d7e94829662c5ac19f5fb7e create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/first-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/master create mode 100644 test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/second-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/COMMIT_EDITMSG create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/FETCH_HEAD create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/HEAD create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/ORIG_HEAD create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/config create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/description create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/index create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/info/exclude create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/first-change-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/original-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/second-change-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/10/91767dde559ffdc97b64f1536955253b931e50 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/1f/9963859d30c1bfe620e9121f3d689a07a35519 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/2a/ccf5d0d5f4c2501627da4aebeda580cd86f0eb create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/94/8965327ab8404a12fb80d9490ded95969431d1 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/97/7cb37e46b9a00e19e6f99c5c179a30b990ca3d create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/ad/9b1c669fdc039038e54fc497f3e888cc4654e0 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/cc/c8b929484ac23c527c54d1a109f20b16f5a006 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/da/e6bc03641275886fa12a2a00c01edd6e975d99 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/dd/df38b00920854961ad30512b3b174141e877b4 create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/e0/10d664020f79e46ef7f8bf2a1508fe0864109c create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/first-change-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/original-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/second-change-branch create mode 100644 test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/file diff --git a/pkg/gui/modes.go b/pkg/gui/modes.go index 3a3bc51a6..70d403db2 100644 --- a/pkg/gui/modes.go +++ b/pkg/gui/modes.go @@ -53,10 +53,17 @@ func (gui *Gui) modeStatuses() []modeStatus { { isActive: gui.State.Modes.CherryPicking.Active, description: func() string { + copiedCount := len(gui.State.Modes.CherryPicking.CherryPickedCommits) + text := gui.c.Tr.LcCommitsCopied + if copiedCount == 1 { + text = gui.c.Tr.LcCommitCopied + } + return gui.withResetButton( fmt.Sprintf( - "%d commits copied", - len(gui.State.Modes.CherryPicking.CherryPickedCommits), + "%d %s", + copiedCount, + text, ), style.FgCyan, ) diff --git a/pkg/i18n/english.go b/pkg/i18n/english.go index 608ad2f45..08f737a51 100644 --- a/pkg/i18n/english.go +++ b/pkg/i18n/english.go @@ -507,6 +507,8 @@ type TranslationSet struct { EmptyOutput string Patch string CustomPatch string + LcCommitsCopied string + LcCommitCopied string Actions Actions Bisect Bisect } @@ -1147,6 +1149,8 @@ func EnglishTranslationSet() TranslationSet { EmptyOutput: "<empty output>", Patch: "Patch", CustomPatch: "Custom patch", + LcCommitsCopied: "commits copied", + LcCommitCopied: "commit copied", Actions: Actions{ // TODO: combine this with the original keybinding descriptions (those are all in lowercase atm) CheckoutCommit: "Checkout commit", diff --git a/pkg/integration/components/assert.go b/pkg/integration/components/assert.go index 28be134a6..daa376c66 100644 --- a/pkg/integration/components/assert.go +++ b/pkg/integration/components/assert.go @@ -217,7 +217,7 @@ func (self *Assert) matchString(matcher *matcher, context string, getValue func( } func (self *Assert) assertWithRetries(test func() (bool, string)) { - waitTimes := []int{0, 1, 5, 10, 200, 500, 1000, 2000} + waitTimes := []int{0, 1, 5, 10, 200, 500, 1000, 2000, 4000} var message string for _, waitTime := range waitTimes { diff --git a/pkg/integration/components/input.go b/pkg/integration/components/input.go index 45ffdfc5d..61c78e9eb 100644 --- a/pkg/integration/components/input.go +++ b/pkg/integration/components/input.go @@ -76,6 +76,11 @@ func (self *Input) Confirm() { self.pressKey(self.keys.Universal.Confirm) } +// i.e. same as Confirm +func (self *Input) Enter() { + self.pressKey(self.keys.Universal.Confirm) +} + // i.e. pressing escape func (self *Input) Cancel() { self.pressKey(self.keys.Universal.Return) diff --git a/pkg/integration/tests/branch/rebase.go b/pkg/integration/tests/branch/rebase.go index 8b414b794..efaa07c88 100644 --- a/pkg/integration/tests/branch/rebase.go +++ b/pkg/integration/tests/branch/rebase.go @@ -3,59 +3,16 @@ package branch import ( "github.com/jesseduffield/lazygit/pkg/config" . "github.com/jesseduffield/lazygit/pkg/integration/components" + "github.com/jesseduffield/lazygit/pkg/integration/tests/shared" ) -var originalFileContent = ` -This -Is -The -Original -File -` - -var firstChangeFileContent = ` -This -Is -The -First Change -File -` - -var secondChangeFileContent = ` -This -Is -The -Second Change -File -` - -// prepares us for a rebase that has conflicts -var commonRebaseSetup = func(shell *Shell) { - shell. - NewBranch("original-branch"). - EmptyCommit("one"). - EmptyCommit("two"). - EmptyCommit("three"). - CreateFileAndAdd("file", originalFileContent). - Commit("original"). - NewBranch("first-change-branch"). - UpdateFileAndAdd("file", firstChangeFileContent). - Commit("first change"). - Checkout("original-branch"). - NewBranch("second-change-branch"). - UpdateFileAndAdd("file", secondChangeFileContent). - Commit("second change"). - EmptyCommit("second-change-branch unrelated change"). - Checkout("first-change-branch") -} - var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Rebase onto another branch, deal with the conflicts.", ExtraCmdArgs: "", Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { - commonRebaseSetup(shell) + shared.MergeConflictsSetup(shell) }, Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { input.SwitchToBranchesWindow() diff --git a/pkg/integration/tests/branch/rebase_and_drop.go b/pkg/integration/tests/branch/rebase_and_drop.go index d87919a0a..853ed692d 100644 --- a/pkg/integration/tests/branch/rebase_and_drop.go +++ b/pkg/integration/tests/branch/rebase_and_drop.go @@ -3,6 +3,7 @@ package branch import ( "github.com/jesseduffield/lazygit/pkg/config" . "github.com/jesseduffield/lazygit/pkg/integration/components" + "github.com/jesseduffield/lazygit/pkg/integration/tests/shared" ) var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ @@ -11,7 +12,7 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ Skip: false, SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { - commonRebaseSetup(shell) + shared.MergeConflictsSetup(shell) // addin a couple additional commits so that we can drop one shell.EmptyCommit("to remove") shell.EmptyCommit("to keep") diff --git a/pkg/integration/tests/cherry_pick/cherry_pick.go b/pkg/integration/tests/cherry_pick/cherry_pick.go new file mode 100644 index 000000000..0f5715434 --- /dev/null +++ b/pkg/integration/tests/cherry_pick/cherry_pick.go @@ -0,0 +1,66 @@ +package cherry_pick + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var CherryPick = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Cherry pick commits from the subcommits view, without conflicts", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell. + EmptyCommit("base"). + NewBranch("first-branch"). + NewBranch("second-branch"). + Checkout("first-branch"). + EmptyCommit("one"). + EmptyCommit("two"). + Checkout("second-branch"). + EmptyCommit("three"). + EmptyCommit("four"). + Checkout("first-branch") + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + input.SwitchToBranchesWindow() + assert.CurrentViewName("localBranches") + + assert.MatchSelectedLine(Contains("first-branch")) + input.NextItem() + assert.MatchSelectedLine(Contains("second-branch")) + + input.Enter() + + assert.CurrentViewName("subCommits") + assert.MatchSelectedLine(Contains("four")) + input.PressKeys(keys.Commits.CherryPickCopy) + assert.MatchViewContent("information", Contains("1 commit copied")) + + input.NextItem() + assert.MatchSelectedLine(Contains("three")) + input.PressKeys(keys.Commits.CherryPickCopy) + assert.MatchViewContent("information", Contains("2 commits copied")) + + input.SwitchToCommitsWindow() + assert.CurrentViewName("commits") + + assert.MatchSelectedLine(Contains("two")) + input.PressKeys(keys.Commits.PasteCommits) + assert.InAlert() + assert.MatchCurrentViewContent(Contains("Are you sure you want to cherry-pick the copied commits onto this branch?")) + + input.Confirm() + assert.CurrentViewName("commits") + assert.MatchSelectedLine(Contains("four")) + input.NextItem() + assert.MatchSelectedLine(Contains("three")) + input.NextItem() + assert.MatchSelectedLine(Contains("two")) + + assert.MatchViewContent("information", Contains("2 commits copied")) + input.PressKeys(keys.Universal.Return) + assert.MatchViewContent("information", NotContains("commits copied")) + }, +}) diff --git a/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go b/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go new file mode 100644 index 000000000..e747d8e4d --- /dev/null +++ b/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go @@ -0,0 +1,87 @@ +package cherry_pick + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" + "github.com/jesseduffield/lazygit/pkg/integration/tests/shared" +) + +var CherryPickConflicts = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Cherry pick commits from the subcommits view, with conflicts", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shared.MergeConflictsSetup(shell) + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + input.SwitchToBranchesWindow() + assert.CurrentViewName("localBranches") + + assert.MatchSelectedLine(Contains("first-change-branch")) + input.NextItem() + assert.MatchSelectedLine(Contains("second-change-branch")) + + input.Enter() + + assert.CurrentViewName("subCommits") + assert.MatchSelectedLine(Contains("second-change-branch unrelated change")) + input.PressKeys(keys.Commits.CherryPickCopy) + assert.MatchViewContent("information", Contains("1 commit copied")) + + input.NextItem() + assert.MatchSelectedLine(Contains("second change")) + input.PressKeys(keys.Commits.CherryPickCopy) + assert.MatchViewContent("information", Contains("2 commits copied")) + + input.SwitchToCommitsWindow() + assert.CurrentViewName("commits") + + assert.MatchSelectedLine(Contains("first change")) + input.PressKeys(keys.Commits.PasteCommits) + assert.InAlert() + assert.MatchCurrentViewContent(Contains("Are you sure you want to cherry-pick the copied commits onto this branch?")) + + input.Confirm() + + assert.MatchCurrentViewContent(Contains("Conflicts!")) + input.Confirm() + + assert.CurrentViewName("files") + assert.MatchSelectedLine(Contains("file")) + + // not using Confirm() convenience method because I suspect we might change this + // keybinding to something more bespoke + input.PressKeys(keys.Universal.Confirm) + + assert.CurrentViewName("mergeConflicts") + // picking 'Second change' + input.NextItem() + input.PrimaryAction() + + assert.InConfirm() + assert.MatchCurrentViewContent(Contains("all merge conflicts resolved. Continue?")) + input.Confirm() + + assert.CurrentViewName("files") + assert.WorkingTreeFileCount(0) + + input.SwitchToCommitsWindow() + assert.CurrentViewName("commits") + + assert.MatchSelectedLine(Contains("second-change-branch unrelated change")) + input.NextItem() + assert.MatchSelectedLine(Contains("second change")) + // because we picked 'Second change' when resolving the conflict, + // we now see this commit as having replaced First Change with Second Change, + // as opposed to replacing 'Original' with 'Second change' + assert.MatchMainViewContent(Contains("-First Change")) + assert.MatchMainViewContent(Contains("+Second Change")) + input.NextItem() + assert.MatchSelectedLine(Contains("first change")) + + assert.MatchViewContent("information", Contains("2 commits copied")) + input.PressKeys(keys.Universal.Return) + assert.MatchViewContent("information", NotContains("commits copied")) + }, +}) diff --git a/pkg/integration/tests/shared/README.md b/pkg/integration/tests/shared/README.md new file mode 100644 index 000000000..2dc27a428 --- /dev/null +++ b/pkg/integration/tests/shared/README.md @@ -0,0 +1 @@ +This package contains shared helper functions for tests. It is not intended to contain any actual tests itself. diff --git a/pkg/integration/tests/shared/conflicts.go b/pkg/integration/tests/shared/conflicts.go new file mode 100644 index 000000000..f01125c91 --- /dev/null +++ b/pkg/integration/tests/shared/conflicts.go @@ -0,0 +1,49 @@ +package shared + +import ( + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var OriginalFileContent = ` +This +Is +The +Original +File +` + +var FirstChangeFileContent = ` +This +Is +The +First Change +File +` + +var SecondChangeFileContent = ` +This +Is +The +Second Change +File +` + +// prepares us for a rebase/merge that has conflicts +var MergeConflictsSetup = func(shell *Shell) { + shell. + NewBranch("original-branch"). + EmptyCommit("one"). + EmptyCommit("two"). + EmptyCommit("three"). + CreateFileAndAdd("file", OriginalFileContent). + Commit("original"). + NewBranch("first-change-branch"). + UpdateFileAndAdd("file", FirstChangeFileContent). + Commit("first change"). + Checkout("original-branch"). + NewBranch("second-change-branch"). + UpdateFileAndAdd("file", SecondChangeFileContent). + Commit("second change"). + EmptyCommit("second-change-branch unrelated change"). + Checkout("first-change-branch") +} diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index 0721fbf17..9280347be 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -11,6 +11,7 @@ import ( "github.com/jesseduffield/lazygit/pkg/integration/components" "github.com/jesseduffield/lazygit/pkg/integration/tests/bisect" "github.com/jesseduffield/lazygit/pkg/integration/tests/branch" + "github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick" "github.com/jesseduffield/lazygit/pkg/integration/tests/commit" "github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands" "github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase" @@ -33,6 +34,8 @@ var tests = []*components.IntegrationTest{ custom_commands.MenuFromCommand, bisect.Basic, bisect.FromOtherBranch, + cherry_pick.CherryPick, + cherry_pick.CherryPickConflicts, } func GetTests() []*components.IntegrationTest { @@ -55,6 +58,11 @@ func GetTests() []*components.IntegrationTest { return nil } + // the shared directory won't itself contain tests: only shared helper functions + if filepath.Base(filepath.Dir(path)) == "shared" { + return nil + } + nameFromPath := components.TestNameFromFilePath(path) if !testNamesSet.Includes(nameFromPath) { missingTestNames = append(missingTestNames, nameFromPath) diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/cherryPicking/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index e4df020f1..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1,15 +0,0 @@ -fourth commit on develop - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# -# interactive rebase in progress; onto 696a8fd -# Last commands done (2 commands done): -# pick 234e2fa third commit on develop -# pick 0556e5d fourth commit on develop -# No commands remaining. -# You are currently rebasing branch 'other_branch' on '696a8fd'. -# -# Changes to be committed: -# modified: file5 -# diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/HEAD b/test/integration/cherryPicking/expected/repo/.git_keep/HEAD deleted file mode 100644 index 904a2e296..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/other_branch diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/ORIG_HEAD b/test/integration/cherryPicking/expected/repo/.git_keep/ORIG_HEAD deleted file mode 100644 index 343995424..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/ORIG_HEAD +++ /dev/null @@ -1 +0,0 @@ -696a8fd43c580b3bed203977faab4566b052a4e4 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/REBASE_HEAD b/test/integration/cherryPicking/expected/repo/.git_keep/REBASE_HEAD deleted file mode 100644 index 40c059dd4..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/REBASE_HEAD +++ /dev/null @@ -1 +0,0 @@ -0556e5da1cda4e150d6cc1182be6efdb061f59fe diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/index b/test/integration/cherryPicking/expected/repo/.git_keep/index deleted file mode 100644 index f68534e4edc11c99a7b9d7b1f5359499aab97f70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmZ?q402{*U|<4bu7vE}WlS{(#bGof0|N`2Zr*AJhQ=if42)laYD9q8<n@FX*EgCk zyfLNW<R<+KhBI%KpFGaMmz<GWR8(1znVg-Omu?JH#{f3x{<%^Z4K;5sx_MiK<aDzZ zhACC2Iy%eV-x2A_vQ+`iJQJ9C%tk_2LFR#IsCj46&0D`bJ>;aZ+T5BeVFt@3ycAmI z?wf;Vo+;G40wvYt13>e@G}OF6H1pW*XY*>GDSP&Y|CGWZbpbDbja^5i8Te8%i&B$I z@{20<(=u~X;pS;7Hi69p(opk)h%%2K)jT6e_!X#InN0_o2cn_o^`V)k5WD220!w&^ zZhQQbdtbdy_J|qlZeU=6xe6Q)1xh;WLcs0<(ol1PQO#k@xpUbgpnBo0{*=m{H&bpc zX4>?7?i>bIkU54R?}6g8KuQ1SLl_M;Cj`|T2Ia@=Vscy9Ul>%+K3=K3ui_-5Lw_E` z9B{G#nN!EM>5CeShMMz_cyqwX0c1|S^^E8FFdAY`z970e(zBj^z5mT{*D47vgY`FO z*f-x%KLv3QI2ka61i88by=TK<XrN%owKv~{WA>ssyB;zzSl=vu`MF9tMh_l03`PnD zT%W%ut#{E}*ZGTgoh?^%0M9}(gCjw%p}>5^_yQ#t7y?Z+Ff%b>Fn}=<8DE;Z$@<(# zTIW^7;r61U;o^*)*u+qbF@oua8`CkH|NhfY>uhU3v*lYKeAxJ_P^TB07>Y4w7{*9^ z$=p+1pQ9BqiS^Ol_vbci)f`@qO$@~ta|~mic&v;5W-i<C`kl%m?cC3fl~t*N*u+qb zvA{59!V3Ru`VGcR^{ef|sv57p)ygV7i%ks07)uOels5crsJ;3`<IoL>b>9{l%GL<J rXvHQ5O4p`{n1RL=wzP{a{iGb`T3)p4;x3~%Z?B))To&-UXX8`=X^`Mf diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/logs/HEAD b/test/integration/cherryPicking/expected/repo/.git_keep/logs/HEAD deleted file mode 100644 index d580b5c16..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/logs/HEAD +++ /dev/null @@ -1,40 +0,0 @@ -0000000000000000000000000000000000000000 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 commit (initial): first commit -2cf63d6da8c52131dd79622f8572b44a1267e420 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 checkout: moving from master to feature/cherry-picking -2cf63d6da8c52131dd79622f8572b44a1267e420 e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc CI <CI@example.com> 1617673072 +1000 commit: first commit freshman year -e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc ef029771f117b5f31c972dfa546037662e243ca7 CI <CI@example.com> 1617673072 +1000 commit: second commit subway eat fresh -ef029771f117b5f31c972dfa546037662e243ca7 2493c87610e0a9b8edfca592cb01a027f60ce587 CI <CI@example.com> 1617673072 +1000 commit: third commit fresh -2493c87610e0a9b8edfca592cb01a027f60ce587 d8e5ca46d2bbd7c115e5849e637efe2361203368 CI <CI@example.com> 1617673072 +1000 commit: fourth commit cool -d8e5ca46d2bbd7c115e5849e637efe2361203368 78a5ec82970200538b70f5ac61c18acb45ccb8ee CI <CI@example.com> 1617673072 +1000 commit: fifth commit nice -78a5ec82970200538b70f5ac61c18acb45ccb8ee 19079c78db18112c5a2720896a040014a2d05f6d CI <CI@example.com> 1617673072 +1000 commit: sixth commit haha -19079c78db18112c5a2720896a040014a2d05f6d 4520f99d650662a3f597a200fea5f2599f528180 CI <CI@example.com> 1617673072 +1000 commit: seventh commit yeah -4520f99d650662a3f597a200fea5f2599f528180 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 commit: eighth commit woo -9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 checkout: moving from feature/cherry-picking to develop -9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 7923e4a952f4b169373b0389be6a9db3cd929547 CI <CI@example.com> 1617673072 +1000 commit: first commit on develop -7923e4a952f4b169373b0389be6a9db3cd929547 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master -2cf63d6da8c52131dd79622f8572b44a1267e420 bfcc5725cd2ef871ff804996f4e02beef3e4dec2 CI <CI@example.com> 1617673072 +1000 commit: first commit on master -bfcc5725cd2ef871ff804996f4e02beef3e4dec2 7923e4a952f4b169373b0389be6a9db3cd929547 CI <CI@example.com> 1617673072 +1000 checkout: moving from master to develop -7923e4a952f4b169373b0389be6a9db3cd929547 7317cf7580efd92f974c8dfb3cde84eded8dafec CI <CI@example.com> 1617673072 +1000 commit: second commit on develop -7317cf7580efd92f974c8dfb3cde84eded8dafec bfcc5725cd2ef871ff804996f4e02beef3e4dec2 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master -bfcc5725cd2ef871ff804996f4e02beef3e4dec2 f4ffac820a371104fe611d81bc13a45b70a3ebb3 CI <CI@example.com> 1617673072 +1000 commit: second commit on master -f4ffac820a371104fe611d81bc13a45b70a3ebb3 7317cf7580efd92f974c8dfb3cde84eded8dafec CI <CI@example.com> 1617673072 +1000 checkout: moving from master to develop -7317cf7580efd92f974c8dfb3cde84eded8dafec 234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d CI <CI@example.com> 1617673072 +1000 commit: third commit on develop -234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d f4ffac820a371104fe611d81bc13a45b70a3ebb3 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master -f4ffac820a371104fe611d81bc13a45b70a3ebb3 facb56c48e4718f71c08116153c93d87bc699671 CI <CI@example.com> 1617673072 +1000 commit: third commit on master -facb56c48e4718f71c08116153c93d87bc699671 234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d CI <CI@example.com> 1617673072 +1000 checkout: moving from master to develop -234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d 0556e5da1cda4e150d6cc1182be6efdb061f59fe CI <CI@example.com> 1617673072 +1000 commit: fourth commit on develop -0556e5da1cda4e150d6cc1182be6efdb061f59fe facb56c48e4718f71c08116153c93d87bc699671 CI <CI@example.com> 1617673072 +1000 checkout: moving from develop to master -facb56c48e4718f71c08116153c93d87bc699671 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 commit: fourth commit on master -339e2d062760be9ecdb4bb90f97bdb0e634e7831 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 checkout: moving from master to base_branch -339e2d062760be9ecdb4bb90f97bdb0e634e7831 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 commit: file -5d2484f3cb6ce658e296526c48e1a376b2790dfc 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 checkout: moving from base_branch to other_branch -5d2484f3cb6ce658e296526c48e1a376b2790dfc 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 checkout: moving from other_branch to base_branch -5d2484f3cb6ce658e296526c48e1a376b2790dfc 68728b56ed31d03ca94496b9e2a45c62ba0f4e8f CI <CI@example.com> 1617673072 +1000 commit: file changed -68728b56ed31d03ca94496b9e2a45c62ba0f4e8f 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 checkout: moving from base_branch to other_branch -5d2484f3cb6ce658e296526c48e1a376b2790dfc 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673078 +1000 rebase -i (start): checkout HEAD -5d2484f3cb6ce658e296526c48e1a376b2790dfc 65c0438e428cd1aa94588eaa52eb7ebad7ec62fd CI <CI@example.com> 1617673078 +1000 rebase -i (pick): second commit subway eat fresh -65c0438e428cd1aa94588eaa52eb7ebad7ec62fd 16f2bcca6ce7bcc17277103a5555072a6c3322a2 CI <CI@example.com> 1617673078 +1000 rebase -i (pick): third commit fresh -16f2bcca6ce7bcc17277103a5555072a6c3322a2 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673078 +1000 rebase -i (pick): fourth commit cool -696a8fd43c580b3bed203977faab4566b052a4e4 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673078 +1000 rebase -i (finish): returning to refs/heads/other_branch -696a8fd43c580b3bed203977faab4566b052a4e4 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673084 +1000 rebase -i (start): checkout HEAD -696a8fd43c580b3bed203977faab4566b052a4e4 b8ab98a9ab0599193a3f41a9cc5cb988283e6722 CI <CI@example.com> 1617673088 +1000 rebase -i (continue): fourth commit on develop -b8ab98a9ab0599193a3f41a9cc5cb988283e6722 b8ab98a9ab0599193a3f41a9cc5cb988283e6722 CI <CI@example.com> 1617673088 +1000 rebase -i (finish): returning to refs/heads/other_branch diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/base_branch b/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/base_branch deleted file mode 100644 index fbcf4b8c5..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/base_branch +++ /dev/null @@ -1,3 +0,0 @@ -0000000000000000000000000000000000000000 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD -339e2d062760be9ecdb4bb90f97bdb0e634e7831 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 commit: file -5d2484f3cb6ce658e296526c48e1a376b2790dfc 68728b56ed31d03ca94496b9e2a45c62ba0f4e8f CI <CI@example.com> 1617673072 +1000 commit: file changed diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/develop b/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/develop deleted file mode 100644 index 3a497aff3..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/develop +++ /dev/null @@ -1,5 +0,0 @@ -0000000000000000000000000000000000000000 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD -9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 7923e4a952f4b169373b0389be6a9db3cd929547 CI <CI@example.com> 1617673072 +1000 commit: first commit on develop -7923e4a952f4b169373b0389be6a9db3cd929547 7317cf7580efd92f974c8dfb3cde84eded8dafec CI <CI@example.com> 1617673072 +1000 commit: second commit on develop -7317cf7580efd92f974c8dfb3cde84eded8dafec 234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d CI <CI@example.com> 1617673072 +1000 commit: third commit on develop -234e2fa9a01b8d7e849b0c2a1bbd550e788ea18d 0556e5da1cda4e150d6cc1182be6efdb061f59fe CI <CI@example.com> 1617673072 +1000 commit: fourth commit on develop diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking b/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking deleted file mode 100644 index 73326cc0a..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking +++ /dev/null @@ -1,9 +0,0 @@ -0000000000000000000000000000000000000000 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD -2cf63d6da8c52131dd79622f8572b44a1267e420 e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc CI <CI@example.com> 1617673072 +1000 commit: first commit freshman year -e4aa98b835d0a871d9ea02e6d286f0fbb2204cdc ef029771f117b5f31c972dfa546037662e243ca7 CI <CI@example.com> 1617673072 +1000 commit: second commit subway eat fresh -ef029771f117b5f31c972dfa546037662e243ca7 2493c87610e0a9b8edfca592cb01a027f60ce587 CI <CI@example.com> 1617673072 +1000 commit: third commit fresh -2493c87610e0a9b8edfca592cb01a027f60ce587 d8e5ca46d2bbd7c115e5849e637efe2361203368 CI <CI@example.com> 1617673072 +1000 commit: fourth commit cool -d8e5ca46d2bbd7c115e5849e637efe2361203368 78a5ec82970200538b70f5ac61c18acb45ccb8ee CI <CI@example.com> 1617673072 +1000 commit: fifth commit nice -78a5ec82970200538b70f5ac61c18acb45ccb8ee 19079c78db18112c5a2720896a040014a2d05f6d CI <CI@example.com> 1617673072 +1000 commit: sixth commit haha -19079c78db18112c5a2720896a040014a2d05f6d 4520f99d650662a3f597a200fea5f2599f528180 CI <CI@example.com> 1617673072 +1000 commit: seventh commit yeah -4520f99d650662a3f597a200fea5f2599f528180 9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 CI <CI@example.com> 1617673072 +1000 commit: eighth commit woo diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 5222ab232..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1,5 +0,0 @@ -0000000000000000000000000000000000000000 2cf63d6da8c52131dd79622f8572b44a1267e420 CI <CI@example.com> 1617673072 +1000 commit (initial): first commit -2cf63d6da8c52131dd79622f8572b44a1267e420 bfcc5725cd2ef871ff804996f4e02beef3e4dec2 CI <CI@example.com> 1617673072 +1000 commit: first commit on master -bfcc5725cd2ef871ff804996f4e02beef3e4dec2 f4ffac820a371104fe611d81bc13a45b70a3ebb3 CI <CI@example.com> 1617673072 +1000 commit: second commit on master -f4ffac820a371104fe611d81bc13a45b70a3ebb3 facb56c48e4718f71c08116153c93d87bc699671 CI <CI@example.com> 1617673072 +1000 commit: third commit on master -facb56c48e4718f71c08116153c93d87bc699671 339e2d062760be9ecdb4bb90f97bdb0e634e7831 CI <CI@example.com> 1617673072 +1000 commit: fourth commit on master diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/other_branch b/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/other_branch deleted file mode 100644 index eaa61b313..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/logs/refs/heads/other_branch +++ /dev/null @@ -1,3 +0,0 @@ -0000000000000000000000000000000000000000 5d2484f3cb6ce658e296526c48e1a376b2790dfc CI <CI@example.com> 1617673072 +1000 branch: Created from HEAD -5d2484f3cb6ce658e296526c48e1a376b2790dfc 696a8fd43c580b3bed203977faab4566b052a4e4 CI <CI@example.com> 1617673078 +1000 rebase -i (finish): refs/heads/other_branch onto 5d2484f3cb6ce658e296526c48e1a376b2790dfc -696a8fd43c580b3bed203977faab4566b052a4e4 b8ab98a9ab0599193a3f41a9cc5cb988283e6722 CI <CI@example.com> 1617673088 +1000 rebase -i (finish): refs/heads/other_branch onto 696a8fd43c580b3bed203977faab4566b052a4e4 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/05/56e5da1cda4e150d6cc1182be6efdb061f59fe b/test/integration/cherryPicking/expected/repo/.git_keep/objects/05/56e5da1cda4e150d6cc1182be6efdb061f59fe deleted file mode 100644 index 5b38a6350a26839446fc86d6214dd213ea9a85a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmV;P0Ac@l0gaA93d0}}0DJZodoL7MO;jkQkW-$q>V_0z3}Q;3U!fo9b(n#PCFfTI zg?MR|8JNhp7?5=`mNB^C(qe2#Q5nbHqmnj8oy0+v_a17)Y9UXuyUDUMKFFvDLrB9Q z**eFBE(to@S}II4+^6};AIitZw^;H6a6~&=Ev<qpN-0IBeX8-Fx>(9t+X}x7$_|O& Myp=<I0k0iF<&G*yT>t<8 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d b/test/integration/cherryPicking/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d deleted file mode 100644 index 8d42c4c9e2f8c317030a30193aef9945f0c8afa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112 zcmV-$0FVE80V^p=O;s>7Fk&z<00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Y4mpuZi7vAbmsoZ%p<<?@RO~2>PK~iAM@OWKJZVUShgX-DG SE0y<EoMd$9&jSDutt>;F6gC_H diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/16/f2bcca6ce7bcc17277103a5555072a6c3322a2 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/16/f2bcca6ce7bcc17277103a5555072a6c3322a2 deleted file mode 100644 index ad4358bf6..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/16/f2bcca6ce7bcc17277103a5555072a6c3322a2 +++ /dev/null @@ -1,4 +0,0 @@ -x��� -�0�a�y���L��]�1&Ʉ -Ɩ��7�{������ZoP�Cò -}�Ig.�g�Hڇ`,9�ɛ�X��?:X��=O�eE&�=��8Rv�젂^}������o���Oi�PV9�tG%�c�:���/}��_��s��?� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 deleted file mode 100644 index 25389c9d662fa3c7c7b5b9b2c4a41240d70f394f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34 qcmb<m^geacKghr+{e-u!dC$qy`lo!(pYc9p=w#5lli^l7PapsTKMwZ* diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/17/4a8c9444cfa700682d74059d9fa9be5749242c b/test/integration/cherryPicking/expected/repo/.git_keep/objects/17/4a8c9444cfa700682d74059d9fa9be5749242c deleted file mode 100644 index fd879a5f36e2b2568af78c7df87f1bc95fc0b6d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmV;i08amS0V^p=O;s?oG-WU}FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkxQPJ}D5PW-r6!l;7gaJOOuWvysr0#!pe$qVY%BjQe#sxdK}}1`%t<w5 f=r}y*j^@d!KOQc#IqUI!_qCfjJ9Yp79nMzA8M#!i diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 deleted file mode 100644 index f74bf2335bbc5999ad0faff94fb04165d8ab5c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb<m^geacKgb|i!&6t!@DUS(>~ZE#08nZNMgRZ+ diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 deleted file mode 100644 index 9b8af5fe783f2a13adddbc268c1af837ab15412a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>Gli0j#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?09}X_Dl{Y^6951J diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/19/079c78db18112c5a2720896a040014a2d05f6d b/test/integration/cherryPicking/expected/repo/.git_keep/objects/19/079c78db18112c5a2720896a040014a2d05f6d deleted file mode 100644 index 6bca3706389c51d187a52e5df9074d4aadef8c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmV;K0A~Mq0gaA93c^4P06p(3au+1o?rtK82%h?kY)q+OZK*5xd<%ZS>o5aj^EBNX zL`=K3x`WZ}MyVt&nzZ9#7&upvLQ$C{3b{&GvxG%ge>Pyz>?ZNZ7!h+Pm2t>wg^Wb4 zrfgQlJ?OiQ^9t7<PS^h8ADxzmA8ek^K!vz)ha6!~h!{4yO*Q{h53l>Djqs~r)KSA1 H03<!&<~T>i diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca b/test/integration/cherryPicking/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca deleted file mode 100644 index 2b02dc3d14b4aef3343737214a03a09457e21e38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb<m^geacKghr=^~8B^zfcX`6X%0HLNrdE@eS2D>7nZts^PE0#`Wacbg|_{j0{$> Gd}ROuKoaKw diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 deleted file mode 100644 index 1cafb95f9172da116f05816fbf223f92099aebbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmV;B0B`?z0V^p=O;s>5Fkmn-00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^REF3kHx*dILv-8YpWOTEb+SjySa$=GydlG#%N_yM3vczORPMZ) ya%(Zurr&etASp0rc)Ttqw}t(MLG|q8mCE}nPBJ?5=OHODA*8?*s{#O;Tv8UZnMM@= diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/21/28c3c3def18d6e2a389957252fdb69ba85fce0 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/21/28c3c3def18d6e2a389957252fdb69ba85fce0 deleted file mode 100644 index 117d85d235f0e5b1a3cbf8de625568836c7c8b39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmV;>05AV|0V^p=O;s?mFkvt>FfcPQQAo~6Eh?%k$V|@8%u6?Bcs=38^^N8WZ%k=8 zxk>+m;mlj*Cy!%OX~M8YNKQ9vVVF{Ns-v^){T-2>EL#;!41ho(C9^0sxg@`+lHv3B zr1dVE>pFk&uCwKe4&YfRW^e>*T3TjKDnsm&n+h!9A-e7HPwsv7I@u#;th)h8-jLzW zWsiXBg}3@sDtF#YxwV*S)9<-+kQ5j*JYE-*+rs|BpnCT4O67eOCm9|3^N<vn5K>@@ KRRI91qI3pn2V^n; diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af b/test/integration/cherryPicking/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af deleted file mode 100644 index 27c11bb26067e0a43b68d14777da3f61ddfcceac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117 zcmV-*0E+*30V^p=O;s>7Hf1m|00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Y4mpuZi7vAbmsoZ%p<<?@RO~2>PK~iAM@OWKJZVUShgX-DG XE0y<EoMd$9&qGpRf>i+kh=VyFxv@AV diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/22/b0fd807dd5e428c2d818aef6a2311d7c11e885 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/22/b0fd807dd5e428c2d818aef6a2311d7c11e885 deleted file mode 100644 index 99177464395aa927a36557643ce3e4e536679578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>ONEk*#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?0A1)5EjYg+jsO4v diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/23/4e2fa9a01b8d7e849b0c2a1bbd550e788ea18d b/test/integration/cherryPicking/expected/repo/.git_keep/objects/23/4e2fa9a01b8d7e849b0c2a1bbd550e788ea18d deleted file mode 100644 index d3b98775c..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/23/4e2fa9a01b8d7e849b0c2a1bbd550e788ea18d +++ /dev/null @@ -1,2 +0,0 @@ -x��A -�0E��)f_(3&:J)��13AA�HZz�z�n��_�۶h/�T�z�@(�)��y"����`'�,z��>�#��`K�=j�T��^�d�h�TTz I� �2������O؎Uo1o����/����TZ���97e^N��yѷ��0_-Ax \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/24/6f7487e08e6330ccbec4053e701145d53f64d4 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/24/6f7487e08e6330ccbec4053e701145d53f64d4 deleted file mode 100644 index 864410e1ec99041ddc8d8eac524028f2dea2a2bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmV-N0l5Bn0V^p=O;s>4F=sF|FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHj!mUG!xN8n(cjEv8(zOtS)`r& z*|D-JRS=s>3x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6<CN7i!$aT_($2jqitidcvZfwKB;GYFb)mPO2e;f5RJ| ZYR-4BBY1fvr<9Z*&_2<l3IGQPwRo7roJs%y diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/24/93c87610e0a9b8edfca592cb01a027f60ce587 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/24/93c87610e0a9b8edfca592cb01a027f60ce587 deleted file mode 100644 index 2279fe5fe..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/24/93c87610e0a9b8edfca592cb01a027f60ce587 +++ /dev/null @@ -1,3 +0,0 @@ -x��K -�0@]��d2����#�L�`m�<�/���<Y��ށ0zS�rN,���)S��A����F���s�fKM��" ̶Z�9Tge`*5�q�s�N�����`��2N7��e{�I�� -6Z�� ��N������V�WAm�����>� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/2c/f63d6da8c52131dd79622f8572b44a1267e420 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/2c/f63d6da8c52131dd79622f8572b44a1267e420 deleted file mode 100644 index 6738ae2c27138fe3e505e1a242148c4a337b0b7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmV-<0EYi~0ga783c@fD06pgwdlw|zrke&tgr540ZMusELrPr1=UeatUWXYb*HShE z9PngK1SAmA!d(g@(K=)#O{}tH&N^z~RYhXxljFBNYJ+Kp>onix!)1TUCD(ETB#ab$ bA3Hds_ud`!n3(*jJKfsL;8(dXb$c(hItDk+ diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 deleted file mode 100644 index ed74cea0ac22b5cf303dbcf79e5b7208e6720d90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150 zcmV;H0BQet0V^p=O;s>7HD)k0FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^Z_#00<OPGK*4^OY(~<84@O5 z=iF5KTu4xsF?Y6={}#XGkKdrCrDf)%8ZvYoo^wa@<kTMzm)V^4c)t7E&72)O0AC?O E`ATU<?EnA( diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/33/9e2d062760be9ecdb4bb90f97bdb0e634e7831 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/33/9e2d062760be9ecdb4bb90f97bdb0e634e7831 deleted file mode 100644 index 9a510fb59..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/33/9e2d062760be9ecdb4bb90f97bdb0e634e7831 +++ /dev/null @@ -1,2 +0,0 @@ -x��M -� ��=���ɏ�PJ!�CǑj �@�_����}������Ԫ�ӄE�36�����1y�C�G��*��s� OV&B�Y[�~ٍ�R`�!T�h[���p]ֻ||ޟr�o�s24j��Zk��~�ɟ�J�m�����]�/�@� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd b/test/integration/cherryPicking/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd deleted file mode 100644 index e8d63bced5a790cf612ba77d98cf03e888d91233..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120 zcmV-;0Ehp00V^p=O;s>7vtTeW00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Y4mpuZi7vAbmsoZ%p<<?@RO~2>PK~iAM@OWKJZVUShgX-DG aE0y<EoMd$9&qGpRLP&urRs{g5uSNWs5ju+i diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/36/e0ef3e52c6e29e64980c71defbab6064d2da8c b/test/integration/cherryPicking/expected/repo/.git_keep/objects/36/e0ef3e52c6e29e64980c71defbab6064d2da8c deleted file mode 100644 index 394c5a2944bf36c1c25fa0709e723b9a7cac0348..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmV<Y00aMc0V^p=O;s>9GGs6`FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHZejog3MrXIsmUezMU@N*6R&e_ zDt#^_D9e~T+sc27U-HLqP}9;fb5ac%Iu6gdqj_@bkB7@_&U!rGeeGt>jvWBSN{0B< C>3I79 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/3e/0d4389ab458a8643281e494e3ebae7ce307eec b/test/integration/cherryPicking/expected/repo/.git_keep/objects/3e/0d4389ab458a8643281e494e3ebae7ce307eec deleted file mode 100644 index 3863853b0..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/3e/0d4389ab458a8643281e494e3ebae7ce307eec +++ /dev/null @@ -1 +0,0 @@ -x}�� �0=��� ��QA�6�>1`|���o w����j����yF��JH7_0���A��} ��U�)�}����FJ�{�oX�9�o6z��[|G�,� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/45/20f99d650662a3f597a200fea5f2599f528180 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/45/20f99d650662a3f597a200fea5f2599f528180 deleted file mode 100644 index 009c19542..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/45/20f99d650662a3f597a200fea5f2599f528180 +++ /dev/null @@ -1,3 +0,0 @@ -x��K -�0@]��df��@D��cL�)�-5��ނp�x^�k�6`t���BA��gv�lk�i��)H�$��ؙEV�7��>fJ�@�� -{��`�H�pA;�b�٦y����rַ�妇<��#�|��aO�h6�M5�S7}m/�:��L�QR>8 \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 deleted file mode 100644 index e0670d284..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 +++ /dev/null @@ -1 +0,0 @@ -x�� �0C�v�L��\�j�VО�W��=�������M<�i�f.���PU�M�HT�3T�`Q���9�"�^��h�d[�����i+B��;�~�/ Y:/��<P� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/5d/2484f3cb6ce658e296526c48e1a376b2790dfc b/test/integration/cherryPicking/expected/repo/.git_keep/objects/5d/2484f3cb6ce658e296526c48e1a376b2790dfc deleted file mode 100644 index 6cf71737a4b6471f90fb06bde3c8d777e6440960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gcW<3d0}}K+&!}h5JGoHE|p$rI1yQ;W!f-h)oa+J$`e9Za;7F%U<i+ zts{5oP1SlxV@V>A6DW-;G?EU&J~O2yMka(Th~~&m-`$2l>II_52&|+<cwi=22w503 zhCwj}XY!}N_GYKq-lzGg-&~JPZ)L9!>!QPm0npp40|0Z@bE@l~+$`&+<_Bp0IiO2% BL~H;6 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/5d/a4d9200457542d875fe4def54ac98c16332db0 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/5d/a4d9200457542d875fe4def54ac98c16332db0 deleted file mode 100644 index aafb5da95130b77089fc66e2d07a02845f8be98b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33 pcmb<m^geacKghr=>4g3%pYvzD&lvWcY&Pr_@JZHVP-@|e008rm4L|?@ diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 deleted file mode 100644 index 27ac61738744e4923b0d928f7521dd5707074712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmV-c0IC0Y0V^p=O;s?nWH2!R0)>>!qSWM){Gv*R&)<{QyJ)WK{KdP@mMc1dXQ7zE s5kmt5GZPbqw9K4TLxww-Jp!s1-s(@O+<7zQ)?%hjzvs>Y05^djO6CqI%>V!Z diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 deleted file mode 100644 index bfb5376c67ba79deb64b9463958ebd99b0ed9f64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlM&0V^p=O;s>6WiT`_Ff%bxNXyJgWmvlB@n6-{8($(qqj>V2E(CbBbYDf1 MH^Qm_0Pdw7o*~;6`~Uy| diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/61/01e935461d4cd862ae4a720846e87880d198b9 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/61/01e935461d4cd862ae4a720846e87880d198b9 deleted file mode 100644 index 236b6cdf4f4a62168a2e0b0b9b49cdcdbc22c808..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>Lxqxz#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?09@!4B{z#9eE<Le diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/65/c0438e428cd1aa94588eaa52eb7ebad7ec62fd b/test/integration/cherryPicking/expected/repo/.git_keep/objects/65/c0438e428cd1aa94588eaa52eb7ebad7ec62fd deleted file mode 100644 index 653c6633b26f643662ce364c73956e9800b2593d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmV;Z09XHb0fmmiYQr!P1#{L{?7dJ{vb2&Qgn&=}3~BXD3UM54g`|JqKzr|Xn1RuC zS-v_s8xMU0NCB;o?1e3Ra7K07q9zG#4vsZQ%tey9mkqa0p*f%YJZKe#ganr*I8mQq z%Mhiyn7Per%A;S_jmC+N<8;QWEcYuubzM$m#YTw(M@Ju)na!KNr#k-8)1Pj3=z44P Wo6-KL&+<(uo#qYu#ry!I3qu*!W>PKy diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/68/728b56ed31d03ca94496b9e2a45c62ba0f4e8f b/test/integration/cherryPicking/expected/repo/.git_keep/objects/68/728b56ed31d03ca94496b9e2a45c62ba0f4e8f deleted file mode 100644 index dc3380093..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/68/728b56ed31d03ca94496b9e2a45c62ba0f4e8f +++ /dev/null @@ -1,2 +0,0 @@ -x��A -� @Ѯ=��Bщ�(�R�*��ql5 �B�����[|�Z[��1^�!��u�T)rD�m*�kL��yap@LE@�鐵k_�W�Ȃ>D���4f�hJe�>}�=N�>NO������[{h���C�����zNu�����E�֗�Y{<� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/69/6a8fd43c580b3bed203977faab4566b052a4e4 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/69/6a8fd43c580b3bed203977faab4566b052a4e4 deleted file mode 100644 index cd43a8fa07691fe88f3be92c53dee5f1524a724f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmV;N0Av4n0fmmu3c@fDggxgeau;N?Y5qV&=&6sf-KJD9ri2uHd>8cYTn2`3hT&Su zqiY0r>MdvOXAcS4#{m{_F4`d`W{YId!!pC-YywJA?bPzCYvWg(naOhw;wE4S1}r%d z1eDxbL_$SJ-)ht2q_5+2&u=RGGheutn{1figB4t#4FD)f<y6mq@c6^kT94K@{jG`B Kr}_Y<!97%@i%i4- diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/6b/6092c6840d05583489cc32a1260db0d5390a98 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/6b/6092c6840d05583489cc32a1260db0d5390a98 deleted file mode 100644 index ab233877fea48a0172d814ab3881e01064ab2b9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmV<F02cpv0V^p=O;s>9GGj0_FfcPQQAo~6Eh?%k$V|@8%u6?Bcs=38^^N8WZ%k=8 zxk>+m;mlj*Cy!%OX~M8YNKQ9vVVF{Ns-v^){T-2>EL#<@sWfF+zdSwUq_NuEnk!)j z%O$)NTITMXV`2aV3MrXIsmUezMU@PnzbCDC(OlR0i+7zZS9Ac+LNS9QP}9;fb5a>% zm)ulf2@lb2kAHIStJldMF=O2gNb-gZcP@JbR4=^MpHjK=X3DL_Oq+hsor9#nnBnod jnA{fj7Y5a{k5?-1t2oK%(4U8-z=V(jQ>+RAhvkGrKT2<8 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/73/17cf7580efd92f974c8dfb3cde84eded8dafec b/test/integration/cherryPicking/expected/repo/.git_keep/objects/73/17cf7580efd92f974c8dfb3cde84eded8dafec deleted file mode 100644 index 8d1ef58f3..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/73/17cf7580efd92f974c8dfb3cde84eded8dafec +++ /dev/null @@ -1,2 +0,0 @@ -x��K -�0@]��d�I���#�LQ0M�Q<�/�����j�w0Z�&3�.��`v�Ț�Y�r���D�^�i�����Ħ8��f�"y�H!fq)r�����z�^��6'8��U>��9�V/����zG��j��T�?u����_m��<ڪ�/:@� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/78/3666de4acbb22a9efc205197667f5136118c54 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/78/3666de4acbb22a9efc205197667f5136118c54 deleted file mode 100644 index c41ae5c621a9bf45b6c82cc55ae9068918c3caa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmV-O0k{5m0V^p=O;s>4F=sF|FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHj!mUG!xN8n(cjEv8(zOtS)`r& z*|D-JRS=s>3x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6)pd#Os`!N}me}$};B8w({TNm;CV?)U>qBoK!=Gj>B{A aXr7$<<KZ%!vmVcPU%Q#JV+Q~)Ho7|0F``2N diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/78/a5ec82970200538b70f5ac61c18acb45ccb8ee b/test/integration/cherryPicking/expected/repo/.git_keep/objects/78/a5ec82970200538b70f5ac61c18acb45ccb8ee deleted file mode 100644 index e7f686ab1..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/78/a5ec82970200538b70f5ac61c18acb45ccb8ee +++ /dev/null @@ -1,2 +0,0 @@ -x��I -�@]�)�^��C~w@D�*���5 ��Ђ�7��UPy[���awi@V�����C\8{]PSL��)1d��k���褘���Zw�;;�Qa�h��JP�ݦ��a��0>����-o˃�h/7t�̬NzN5���:�6ѯ�u�P_�?>c \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/79/23e4a952f4b169373b0389be6a9db3cd929547 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/79/23e4a952f4b169373b0389be6a9db3cd929547 deleted file mode 100644 index 61b9dcca7..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/79/23e4a952f4b169373b0389be6a9db3cd929547 +++ /dev/null @@ -1,3 +0,0 @@ -x��K -�0@]��d�L���#�N��6%F������{��ܠ�xjU:�ّw�^�1Ȝ� {#��~�M�4��c��AH��\��^|t�G+ls���ɫ�j�Ra�:�w��u_��e����Yg�upֈ�zL5�SWy��� -���e)���f@f \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d b/test/integration/cherryPicking/expected/repo/.git_keep/objects/88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d deleted file mode 100644 index d63de558bc9f6f0096d5c3091fc31b9d8b2630eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>BZZQT#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?09^<aCNNMSe*gdg diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 deleted file mode 100644 index ea7fa53039077c16fa43ab0244a322d4d24fe9f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmb<m^geacKghr|>4S%^SLg|yFpm%oy_5Q@LNrc#=mehd019~do(<MGdES$eOZ4gV Vv?a_hLt2k~xss&Ekdh(N4**9y8ax01 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/90/a84fd62f8033027fab3e567a81d5ed2a6a71cd b/test/integration/cherryPicking/expected/repo/.git_keep/objects/90/a84fd62f8033027fab3e567a81d5ed2a6a71cd deleted file mode 100644 index cdd5f8a937e758f7ae915812f83d48cfa5d7ef50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>3x$%5#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?0A0uwEH54*EdT%j diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/95/9d7a10da71acf97b17300b40a3b4f30903e09c b/test/integration/cherryPicking/expected/repo/.git_keep/objects/95/9d7a10da71acf97b17300b40a3b4f30903e09c deleted file mode 100644 index 1befd67ac5bd6c07ba69162c2e962eb5035fcf02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmV-s0h#`I0V^p=O;s>8G-fa~FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHj!mUG!xN8n(cjEv8(zOtS)`r& z*|D-JRS=s>3x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6<CN7i!$aT_($2jqitidcvZfwKB;GYFb)mPO2e;f5RJ| zYR-4BBY1fvr<9Z*&_2<lilo4pL3-BHulK(h?ph_mWw8F{4EyFg>Zgztm|#@^04{ye Es|G`_Y5)KL diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/9b/b8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/9b/b8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 deleted file mode 100644 index 0cbe05fdae85f04ddee527ca824ffac7c1323024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmV;L0A>Gp0gaA93c@fD06pgwdlzK0?QRkf5qjz~(sW}5V@iqW^DX!Rufq&Xs-@f; z5cY?*se<#Jh|Jo@G)+V?XikJ|gA;L?Z70_H#JySLrq2dF6Xp<RVHBa*WezS9V%Er+ zIE2jPtw$4IZK)d!Bb<lvs-IZahn`X`7qDWTxDFk`(ITSR=|0u;Pu=MKwzLI)8N6#X IUt>o+tw<wD9RL6T diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 deleted file mode 100644 index ffc277c86c56c088175e46f1590082f30deb89cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlM&0V^p=O;s>6WiT`_Ff%bxNXyJgWsu<cVbq|s@7&8(i^8k=TV83;w@^ot MH^Qm_0H#zMoMT`Zd;kCd diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 deleted file mode 100644 index 285df3e5fbab12262e28d85e78af8a31cd0024c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb<m^geacKgb|i!&6t!@Cg%x>`~^A08nuUMF0Q* diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/af/a76754c933269d7cd45630a7184a20849dbe9c b/test/integration/cherryPicking/expected/repo/.git_keep/objects/af/a76754c933269d7cd45630a7184a20849dbe9c deleted file mode 100644 index 7302ca34e9d34bcda37b5a408f6b509933d555f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>Q-zX@#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?09|MlDL7*x5&!@I diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/b4/121e2d6aa156227b6541431ddfb8594904b520 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/b4/121e2d6aa156227b6541431ddfb8594904b520 deleted file mode 100644 index 4aa46eb8cb9607b2fafdb34605c784ea03cecd58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>6NQqD#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?09{BFC@#Vvu>b%7 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/b8/ab98a9ab0599193a3f41a9cc5cb988283e6722 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/b8/ab98a9ab0599193a3f41a9cc5cb988283e6722 deleted file mode 100644 index 5f7cb0d33058514d01688786b26419a0f4cfb30d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmV;T0A2rh0ez0k3c@fD06pg`_AbaKo8|!`f~S7QCfQJ-HKj!H^DXGv>o5b8+p^p{ z7_AR|6M<A*C5s^@HZdm_jRuiYiJl}@@@#0xM%2oiJUY1OIMiY(4*?S;DF!KeUzw8~ zoJ%+uwqg}O`_wkLjc~q=S9$ZY&T`6axqx=sJ5T5h95o`Uo$gaz{_7$9bXD7P>l1u4 QXb&jzlDVzw0}BE`^Tg^&IsgCw diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/bd/6f34089ba29cbae102003bd973e9f37a235c2e b/test/integration/cherryPicking/expected/repo/.git_keep/objects/bd/6f34089ba29cbae102003bd973e9f37a235c2e deleted file mode 100644 index e6bbae5e8b8359e0bc366ab8e4e5fb6fb386629d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmV<a00IAa0V^p=O;s>9GGj0_FfcPQQAo~6Eh?%k$V|@8%u6?Bcs=38^^N8WZ%k=8 zxk>+m;mlj*Cy!%OX~M8YNKQ9vVVF{Ns-v^){T-2>EL#<@sWfF+zdSwUq_NuEnk!)j z%O$)NTITMXV`2aV3MrXIsmUezMU@PnzbCDC(OlR0i+7zZS9Ac+LNS9QP}9;fb5a>% zm)ulf2@lb2kAHIStJldMF=O2gNb-gZcP@JbR4=^MpHjK=X3DL_Oq+hsor9#nnBnod znA{fj7Y5a{k5?-1t2oK%(4U8-z=V(jQwHf-Pru&(X1HsW1ed}3n=|a2@2H;w0FzgR Eiv8ewr~m)} diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/bf/cc5725cd2ef871ff804996f4e02beef3e4dec2 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/bf/cc5725cd2ef871ff804996f4e02beef3e4dec2 deleted file mode 100644 index 0f08b620f..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/bf/cc5725cd2ef871ff804996f4e02beef3e4dec2 +++ /dev/null @@ -1,2 +0,0 @@ -x��M -�0�a�9��I&?����U���,S�߀p��>�Z��e8��6k66�Ÿf����OFs���N�{l�0e�W�F�,*�֕�C��.�D��ؠ����4�u����e�%�r�9Ғ�JJ)�:Nu�3ykG����������>� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/c1/dd146476a4a37fff75b88612a718281ea83b58 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/c1/dd146476a4a37fff75b88612a718281ea83b58 deleted file mode 100644 index 008bb1a6567766c154b88180e8aa85b15392362c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmV+w0qXvE0V^p=O;s>9GiER}FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHj!mUG!xN8n(cjEv8(zOtS)`r& z*|D-JRnWu$2ozE>i&B$I@{1}N5++{f+*JBpNKlqBcea)P7Qf_=-=L<YW#*(BGISiC bb4T;!)E^I**_`!wzWdtEoE<v=$GDftUG$0l diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/ce/ecbe69460104e09eb2cd7c865df520c5679a68 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/ce/ecbe69460104e09eb2cd7c865df520c5679a68 deleted file mode 100644 index a5c693b798c289f22fe60bb002ca48985eab7cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmV;o07(CM0V^p=O;s>5F=8+@FfcPQQAo~6Eh?%k$V|@8%u6?Bcs=38^^N8WZ%k=8 zxk>+m;mlj*Cy$#L0D(eEW>IQ#Nq$i!!{_fw>s>V0b^hXAXUi2Gz_U=y;0V;Tw9K4T zhS()H6<ESUblc;f-23WvvPaBVcLS2VA;X=^9s$)0Z}q2C?!1|DYcbQN-*e|6DKKVu lye=lUh5dy=_3Y!7%KIu#GCK6<At^8+q`(xb0sz^)W#mlqSy%u7 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/d0/60f7226715ca55b04e91fad2b8aca01badd993 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/d0/60f7226715ca55b04e91fad2b8aca01badd993 deleted file mode 100644 index ab357ec23a607497ddef075b5880fd9579922e8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmV+~0nq+<0V^p=O;s>4Fl8__FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHj!mUG!xN8n(cjEv8(zOtS)`r& z*|D-JRS=s>3x)|R{IBUZ7&FzcwhOCjy!uuvtMIIe0T3vpWEQ0+m*f{!G9*mA&bg`d zxsaeNWA1D#|1EyWAHP9OOUukjHDu^GJm-$)$*DgcF0(o7@qG8Sn>jmn003Pvs7;ya BlW+h4 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 deleted file mode 100644 index 198bff1ec786820e0c2f41db6e2bed90f1e103fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 201 zcmV;)05<=40V^p=O;s>5HfJz2FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRl&pn2ozE>i&B$I@{1}N5++{f z+*JBpNKlqBcea)P7Qf_=-=L<YW#*(BGISiCb4T;!)E^I**_`!wzWdtEoE<v=OtNI) D5L{sz diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/d8/e5ca46d2bbd7c115e5849e637efe2361203368 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/d8/e5ca46d2bbd7c115e5849e637efe2361203368 deleted file mode 100644 index b69d3a536..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/d8/e5ca46d2bbd7c115e5849e637efe2361203368 +++ /dev/null @@ -1,2 +0,0 @@ -x��A -� D����k�B)��r�QH!�!��+�] ̼�ʶ���4\�!�3��������ԡK�q�1�70�v�nb��ΐB���!�ɀ,ώ��κ�C�����S>��Un�lm�a���WCD���T�?q5���i-ʪ��? \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 deleted file mode 100644 index af687b6201a28d6535fb8323c61b1d78ce5d3141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmV<90382#0V^p=O;s>5w`4FhFfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GxD20);Yl3A3RT#{c@$&fJdI_IX+=R$(AjJdO|{I~cefBXhDEiE%A)sUg% d@SHoEC#U{+xXk9P$MfCSZszRR0RVyibtbb-a`^xN diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c b/test/integration/cherryPicking/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c deleted file mode 100644 index 74c919681..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c +++ /dev/null @@ -1 +0,0 @@ -x�� �0C����?�3�ƵV�=iO��=������,�8tW��@h*��&R$j�*y��ʑs-ܜ��8v)��u㧱��V�H�����"�� ��P� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b b/test/integration/cherryPicking/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b deleted file mode 100644 index 9b771fc2f6f41f91b00976b4ff3f8f9935f7931e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb<m^geacKgb|i!&6t!@EH?>>`CU&08otwO#lD@ diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e b/test/integration/cherryPicking/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e deleted file mode 100644 index 3a7ee91eab601eb205b04a6e1e62c58599193222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb<m^geacKghr=^~8B^zfcX`6X%0HLNrdE@eS2D>7nZts^PE0#+C9!Ty%L6BZHMO GUmgJUj1jT` diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/48ae5bf6371d80ebee24a22b6df341797a6511 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/48ae5bf6371d80ebee24a22b6df341797a6511 deleted file mode 100644 index 714e20cb7eb8a76c9832939c1e2a103d78bb257d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>bA^(O#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?09~jQD?P;_bN~PV diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 deleted file mode 100644 index 83998943a5a68dad92fe592c8b50a4121bd04c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmV-c0IC0Y0V^p=O;s?nWH2!R0)>>!qSWM){Gv*Rgo)QVH<dmY5|m}koo(g6#V`5e sH$wvhGZPbqw9K4TLxzsSbM9!KociP8GMlp=&v#$DnX_XD052LKjex`_i2wiq diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/aa98b835d0a871d9ea02e6d286f0fbb2204cdc b/test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/aa98b835d0a871d9ea02e6d286f0fbb2204cdc deleted file mode 100644 index 5c0e48092..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/e4/aa98b835d0a871d9ea02e6d286f0fbb2204cdc +++ /dev/null @@ -1,2 +0,0 @@ -x��A -1=�s$��daO���I�J���w�x-��ҥ�k'v~�@Udw�"����=�U�8H�C%���_O\���˰O<� �cB`k��/K�q��8����a�K=��.��mb�:k�Y����ܔk{v�YT��*w�@��{/B� \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d b/test/integration/cherryPicking/expected/repo/.git_keep/objects/ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d deleted file mode 100644 index b047d6827a093b8790d0dd53e0382e18ed1ea88a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmV-v0ha!F0V^p=O;s>8F=H?^FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHj!mUG!xN8n(cjEv8(zOtS)`r& z*|D-JRS=s>3x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6<CN7i!$aT_($2jqitidcvZfwKB;GYFb)mPO2e;f5RJ| zYR-4BBY1fvr<9Z*&_2<lilo4pL3-BHulK(h?ph_mWw8F{4EyFg>Zgztm=IE6id6vs H4=>-(3qr6K diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 deleted file mode 100644 index 4992422c7407bf6efc09d23127726c19cec1119d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66 zcmV-I0KNZs0ZYosPf{>7VkpVTELH%bw9K4Tg}l<-q|_n>V}+88#1aKh^<0JY{LH*` Yg_3-Q<c!p!qDtL@%;an?09_~)CpqyT-~a#s diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/ef/029771f117b5f31c972dfa546037662e243ca7 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/ef/029771f117b5f31c972dfa546037662e243ca7 deleted file mode 100644 index 58cda69666c9184f844889ee9acc004710a35b38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmV;T0A2rh0gaA93IZ_<06q5=xeJoUY}0~>;K^sCZHj{H%5Fvdy@DU`I?TY7X&f&d z$jhqFX5fW2mc-1ZsUU_(RTzg<Q`3}f5KhEY++An8bud;<F~{vtQKR^pOpz>9ilJf4 znFzVm;`Gta(+tNG?2e~{y>z@^ZBwRk4?cJavPB_Sdqi|!`km_br|uRj)2+fUgXNK* Q`UcYuZMNm?K4<bm{bG(&G5`Po diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 deleted file mode 100644 index 3688d63f9f90630dac6d6f55486eb6b86e8e342a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 144 zcmV;B0B`?z0V^p=O;s>5Fkmn-00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R0eS?hqn=r4HCq1PXDguIm6t(FP;-g-jLzWWsiXBg}3@sDtF#Y yxwV*S)9<-+kQ5j*JYE-*+rs|BpnCT4O67eOCm9|3^N<vn5K>@@RRI7%&rx)LLPgyG diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/f3/7d8713ef1390c277b45a084a08c0c142ff7ed9 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/f3/7d8713ef1390c277b45a084a08c0c142ff7ed9 deleted file mode 100644 index 539d19c5f..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/f3/7d8713ef1390c277b45a084a08c0c142ff7ed9 +++ /dev/null @@ -1,2 +0,0 @@ -x}�K -� ��Ʈ�@��QAA��q� �bZ�Op�7<�pWT�*��4���F��-���&Ox�; ��M���S�1�}�R���.�������9��N]��s-# \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 deleted file mode 100644 index e9f9f0881a1460f9b019818b1cbd6e4f67fe70aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmV-60LlM&0V^p=O;s>6WiT`_Ff%bxNXyJgWw@Wst9_>I*&F^-3WwAMy!<tG9g#+o MH^Qm_0E{vk5H*e!i2wiq diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/f4/ffac820a371104fe611d81bc13a45b70a3ebb3 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/f4/ffac820a371104fe611d81bc13a45b70a3ebb3 deleted file mode 100644 index e054b826c6bd4ee34d005c877cc5fcd628c76206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmV;P0Ac@l0gaA93c@fDMP26<vlnENCYcmOgsyswWI92?G^LH;@eOzZm;dn|e6FQD z8yJnJwu=CcoFuR(O^iNz9mpq2-s))kG${}4f?L!UcUc>x%<RZGUX0{GI_H3P9DTNe zCW+)h>>_Mbe78s4VVdDO&3F04vc2TOwcJ2^O`ZlM180qhs?&a|$)CD9gzLJ%FN3;5 MiAS&17ZK<|A8)ZtHvj+t diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/fa/cb56c48e4718f71c08116153c93d87bc699671 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/fa/cb56c48e4718f71c08116153c93d87bc699671 deleted file mode 100644 index 0b357276c..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/objects/fa/cb56c48e4718f71c08116153c93d87bc699671 +++ /dev/null @@ -1,2 +0,0 @@ -x��A -�0E]��d�I�D��z�I:�cJ��� x���?���N�VE` �9�������DΠ�������k1���U� �I����#B����B$�f� A+~��T����]>���\b�7 K�:�n�3!��k?��O]�m�+�*(O������?X \ No newline at end of file diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/objects/fd/31cea7e0b6e8d334280be34db8dd86cdda3007 b/test/integration/cherryPicking/expected/repo/.git_keep/objects/fd/31cea7e0b6e8d334280be34db8dd86cdda3007 deleted file mode 100644 index 168b5c5f9141fac77b1554e5faa51680b0f39ef8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmV-m0iXVO0V^p=O;s?lFkmn=FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N@IrC6JA{3Xuj~ql!lX= z^e-6Byj6bkI5w3g3|oZcbh8$QDOIOBI?LYQ5$VaYRRNnyQ-<}+(?d=gtIe&s5@xVm z!b_oL?!GzLRGKkJe97EXT%V&AF^Toj-S_7<Yt<ZHj!mUG!xN8n(cjEv8(zOtS)`r& z*|D-JRS=s>3x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6<CN7i!$aT_($2jqitidcvZfwKB;GYFb)mPO2e;f5RJ| yYR-4BBY1fvr<9Z*&_2<lilo4pL3-BHulK(h?ph_mWw8F{4EyFg>ZbrQLc@`W;jN4S diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/base_branch b/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/base_branch deleted file mode 100644 index 036ea7527..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/base_branch +++ /dev/null @@ -1 +0,0 @@ -68728b56ed31d03ca94496b9e2a45c62ba0f4e8f diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/develop b/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/develop deleted file mode 100644 index 40c059dd4..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/develop +++ /dev/null @@ -1 +0,0 @@ -0556e5da1cda4e150d6cc1182be6efdb061f59fe diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/feature/cherry-picking b/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/feature/cherry-picking deleted file mode 100644 index 0f0bd273a..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/feature/cherry-picking +++ /dev/null @@ -1 +0,0 @@ -9bb8cd97914c8e8a7b8a6ec6f94bca0b09fa0048 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/master b/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index 6940df038..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -339e2d062760be9ecdb4bb90f97bdb0e634e7831 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/other_branch b/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/other_branch deleted file mode 100644 index f9041d125..000000000 --- a/test/integration/cherryPicking/expected/repo/.git_keep/refs/heads/other_branch +++ /dev/null @@ -1 +0,0 @@ -b8ab98a9ab0599193a3f41a9cc5cb988283e6722 diff --git a/test/integration/cherryPicking/expected/repo/cherrypicking3 b/test/integration/cherryPicking/expected/repo/cherrypicking3 deleted file mode 100644 index eb90e8d7b..000000000 --- a/test/integration/cherryPicking/expected/repo/cherrypicking3 +++ /dev/null @@ -1 +0,0 @@ -this is file number 3 that I'm going to cherry-pick diff --git a/test/integration/cherryPicking/expected/repo/cherrypicking4 b/test/integration/cherryPicking/expected/repo/cherrypicking4 deleted file mode 100644 index b4121e2d6..000000000 --- a/test/integration/cherryPicking/expected/repo/cherrypicking4 +++ /dev/null @@ -1 +0,0 @@ -this is file number 4 that I'm going to cherry-pick diff --git a/test/integration/cherryPicking/expected/repo/cherrypicking5 b/test/integration/cherryPicking/expected/repo/cherrypicking5 deleted file mode 100644 index afa76754c..000000000 --- a/test/integration/cherryPicking/expected/repo/cherrypicking5 +++ /dev/null @@ -1 +0,0 @@ -this is file number 5 that I'm going to cherry-pick diff --git a/test/integration/cherryPicking/expected/repo/directory/file b/test/integration/cherryPicking/expected/repo/directory/file deleted file mode 100644 index df6b0d2bc..000000000 --- a/test/integration/cherryPicking/expected/repo/directory/file +++ /dev/null @@ -1 +0,0 @@ -test3 diff --git a/test/integration/cherryPicking/expected/repo/directory/file2 b/test/integration/cherryPicking/expected/repo/directory/file2 deleted file mode 100644 index df6b0d2bc..000000000 --- a/test/integration/cherryPicking/expected/repo/directory/file2 +++ /dev/null @@ -1 +0,0 @@ -test3 diff --git a/test/integration/cherryPicking/expected/repo/file b/test/integration/cherryPicking/expected/repo/file deleted file mode 100644 index 5da4d9200..000000000 --- a/test/integration/cherryPicking/expected/repo/file +++ /dev/null @@ -1 +0,0 @@ -original1\noriginal2\noriginal3 diff --git a/test/integration/cherryPicking/expected/repo/file1 b/test/integration/cherryPicking/expected/repo/file1 deleted file mode 100644 index dcd348507..000000000 --- a/test/integration/cherryPicking/expected/repo/file1 +++ /dev/null @@ -1,63 +0,0 @@ -Here is a story that has been told throuhg the ages -once upon a time there was a cat -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -... -once upon a time there was another cat diff --git a/test/integration/cherryPicking/expected/repo/file3 b/test/integration/cherryPicking/expected/repo/file3 deleted file mode 100644 index e3ae5c6d8..000000000 --- a/test/integration/cherryPicking/expected/repo/file3 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a horse diff --git a/test/integration/cherryPicking/expected/repo/file4 b/test/integration/cherryPicking/expected/repo/file4 deleted file mode 100644 index e3ae5c6d8..000000000 --- a/test/integration/cherryPicking/expected/repo/file4 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a horse diff --git a/test/integration/cherryPicking/expected/repo/file5 b/test/integration/cherryPicking/expected/repo/file5 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/cherryPicking/expected/repo/file5 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/cherryPicking/recording.json b/test/integration/cherryPicking/recording.json deleted file mode 100644 index e1323235b..000000000 --- a/test/integration/cherryPicking/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":417,"Mod":0,"Key":259,"Ch":0},{"Timestamp":761,"Mod":0,"Key":258,"Ch":0},{"Timestamp":905,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1041,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1248,"Mod":0,"Key":13,"Ch":13},{"Timestamp":1537,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1656,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1809,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1929,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2065,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2193,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2344,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2481,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3112,"Mod":0,"Key":256,"Ch":99},{"Timestamp":3624,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3777,"Mod":0,"Key":258,"Ch":0},{"Timestamp":4009,"Mod":0,"Key":256,"Ch":67},{"Timestamp":4697,"Mod":0,"Key":259,"Ch":0},{"Timestamp":4936,"Mod":0,"Key":256,"Ch":118},{"Timestamp":5296,"Mod":0,"Key":13,"Ch":13},{"Timestamp":5881,"Mod":0,"Key":260,"Ch":0},{"Timestamp":6024,"Mod":0,"Key":260,"Ch":0},{"Timestamp":6456,"Mod":0,"Key":259,"Ch":0},{"Timestamp":6816,"Mod":0,"Key":256,"Ch":99},{"Timestamp":7041,"Mod":0,"Key":257,"Ch":0},{"Timestamp":7152,"Mod":0,"Key":256,"Ch":99},{"Timestamp":7329,"Mod":0,"Key":257,"Ch":0},{"Timestamp":7424,"Mod":0,"Key":256,"Ch":99},{"Timestamp":8040,"Mod":0,"Key":257,"Ch":0},{"Timestamp":8184,"Mod":0,"Key":257,"Ch":0},{"Timestamp":8329,"Mod":0,"Key":257,"Ch":0},{"Timestamp":8497,"Mod":0,"Key":257,"Ch":0},{"Timestamp":8673,"Mod":0,"Key":257,"Ch":0},{"Timestamp":8856,"Mod":0,"Key":257,"Ch":0},{"Timestamp":9041,"Mod":0,"Key":257,"Ch":0},{"Timestamp":9233,"Mod":0,"Key":257,"Ch":0},{"Timestamp":9640,"Mod":0,"Key":256,"Ch":99},{"Timestamp":10056,"Mod":0,"Key":258,"Ch":0},{"Timestamp":10208,"Mod":0,"Key":258,"Ch":0},{"Timestamp":10736,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10872,"Mod":0,"Key":256,"Ch":99},{"Timestamp":11361,"Mod":0,"Key":259,"Ch":0},{"Timestamp":11640,"Mod":0,"Key":256,"Ch":118},{"Timestamp":12048,"Mod":0,"Key":13,"Ch":13},{"Timestamp":12849,"Mod":0,"Key":13,"Ch":13},{"Timestamp":13152,"Mod":0,"Key":13,"Ch":13},{"Timestamp":13408,"Mod":0,"Key":256,"Ch":32},{"Timestamp":14009,"Mod":0,"Key":13,"Ch":13},{"Timestamp":14513,"Mod":0,"Key":13,"Ch":13},{"Timestamp":14833,"Mod":0,"Key":13,"Ch":13},{"Timestamp":15056,"Mod":0,"Key":258,"Ch":0},{"Timestamp":15296,"Mod":0,"Key":256,"Ch":32},{"Timestamp":16217,"Mod":0,"Key":13,"Ch":13},{"Timestamp":17593,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/cherryPicking/setup.sh b/test/integration/cherryPicking/setup.sh deleted file mode 100644 index 1a913412f..000000000 --- a/test/integration/cherryPicking/setup.sh +++ /dev/null @@ -1,157 +0,0 @@ -#!/bin/sh - -set -e - -cd $1 - -git init -git config user.email "CI@example.com" -git config user.name "CI" - - -function add_spacing { - for i in {1..60} - do - echo "..." >> $1 - done -} - -mkdir directory -echo "test1" > directory/file -echo "test1" > directory/file2 - - -echo "Here is a story that has been told throuhg the ages" >> file1 - -git add file1 -git add directory -git commit -m "first commit" - -git checkout -b feature/cherry-picking - -echo "this is file number 1 that I'm going to cherry-pick" > cherrypicking1 -echo "this is file number 2 that I'm going to cherry-pick" > cherrypicking2 - -git add . - -git commit -am "first commit freshman year" - -echo "this is file number 3 that I'm going to cherry-pick" > cherrypicking3 - -git add . - -git commit -am "second commit subway eat fresh" - -echo "this is file number 4 that I'm going to cherry-pick" > cherrypicking4 - -git add . - -git commit -am "third commit fresh" - -echo "this is file number 5 that I'm going to cherry-pick" > cherrypicking5 - -git add . - -git commit -am "fourth commit cool" - -echo "this is file number 6 that I'm going to cherry-pick" > cherrypicking6 - -git add . - -git commit -am "fifth commit nice" - -echo "this is file number 7 that I'm going to cherry-pick" > cherrypicking7 - -git add . - -git commit -am "sixth commit haha" - -echo "this is file number 8 that I'm going to cherry-pick" > cherrypicking8 - -git add . - -git commit -am "seventh commit yeah" - -echo "this is file number 9 that I'm going to cherry-pick" > cherrypicking9 - -git add . - -git commit -am "eighth commit woo" - - -git checkout -b develop -echo "once upon a time there was a dog" >> file1 -add_spacing file1 -echo "once upon a time there was another dog" >> file1 -git add file1 -echo "test2" > directory/file -echo "test2" > directory/file2 -git add directory -git commit -m "first commit on develop" - - -git checkout master -echo "once upon a time there was a cat" >> file1 -add_spacing file1 -echo "once upon a time there was another cat" >> file1 -git add file1 -echo "test3" > directory/file -echo "test3" > directory/file2 -git add directory -git commit -m "first commit on master" - - -git checkout develop -echo "once upon a time there was a mouse" >> file3 -git add file3 -git commit -m "second commit on develop" - - -git checkout master -echo "once upon a time there was a horse" >> file3 -git add file3 -git commit -m "second commit on master" - - -git checkout develop -echo "once upon a time there was a mouse" >> file4 -git add file4 -git commit -m "third commit on develop" - - -git checkout master -echo "once upon a time there was a horse" >> file4 -git add file4 -git commit -m "third commit on master" - - -git checkout develop -echo "once upon a time there was a mouse" >> file5 -git add file5 -git commit -m "fourth commit on develop" - - -git checkout master -echo "once upon a time there was a horse" >> file5 -git add file5 -git commit -m "fourth commit on master" - - -# this is for the autostash feature - -git checkout -b base_branch - -echo "original1\noriginal2\noriginal3" > file -git add file -git commit -m "file" - -git checkout -b other_branch - -git checkout base_branch - -echo "new1\noriginal2\noriginal3" > file -git add file -git commit -m "file changed" - -git checkout other_branch - diff --git a/test/integration/cherryPicking/test.json b/test/integration/cherryPicking/test.json deleted file mode 100644 index e1cda77be..000000000 --- a/test/integration/cherryPicking/test.json +++ /dev/null @@ -1 +0,0 @@ -{ "description": "Cherry picking commits over from another branch via the sub commits context. Also resolving some merge conflicts along the way.", "speed": 5 } diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..851066514 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +four diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/FETCH_HEAD similarity index 100% rename from test/integration/cherryPicking/expected/repo/.git_keep/FETCH_HEAD rename to test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/FETCH_HEAD diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/HEAD b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..2bf8fd13a --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/first-branch diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/ORIG_HEAD b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/ORIG_HEAD new file mode 100644 index 000000000..bbfaa4f49 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/ORIG_HEAD @@ -0,0 +1 @@ +c37c09bdd6f969542d7e94829662c5ac19f5fb7e diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/config b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/config similarity index 87% rename from test/integration/cherryPicking/expected/repo/.git_keep/config rename to test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/config index 8ae104545..8a748ce32 100644 --- a/test/integration/cherryPicking/expected/repo/.git_keep/config +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/config @@ -8,3 +8,5 @@ [user] email = CI@example.com name = CI +[commit] + gpgSign = false diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/description b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/description similarity index 100% rename from test/integration/cherryPicking/expected/repo/.git_keep/description rename to test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/description diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/index b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..65d675154f23ffb2d0196e017d44a5e7017550f5 GIT binary patch literal 65 zcmZ?q402{*U|<4bhL9jvS0E+HV4z^Y<=qr}%;|LA&IJiiy?<Pr)babBCri;)`-<AO Tl}3xATFuWrGP@z+w&EiIWCj?s literal 0 HcmV?d00001 diff --git a/test/integration/cherryPicking/expected/repo/.git_keep/info/exclude b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/info/exclude similarity index 100% rename from test/integration/cherryPicking/expected/repo/.git_keep/info/exclude rename to test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/info/exclude diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/HEAD b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..c558e2761 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,14 @@ +0000000000000000000000000000000000000000 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 commit (initial): base +5b06c6c8d51ba89367991cc7b40dda5d827bb95a 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 checkout: moving from master to first-branch +5b06c6c8d51ba89367991cc7b40dda5d827bb95a 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 checkout: moving from first-branch to second-branch +5b06c6c8d51ba89367991cc7b40dda5d827bb95a 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 checkout: moving from second-branch to first-branch +5b06c6c8d51ba89367991cc7b40dda5d827bb95a 197a799a14b2ca7478cfe339e7c83f7cdea4918b CI <CI@example.com> 1663390248 -0700 commit: one +197a799a14b2ca7478cfe339e7c83f7cdea4918b c37c09bdd6f969542d7e94829662c5ac19f5fb7e CI <CI@example.com> 1663390248 -0700 commit: two +c37c09bdd6f969542d7e94829662c5ac19f5fb7e 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 checkout: moving from first-branch to second-branch +5b06c6c8d51ba89367991cc7b40dda5d827bb95a 198998809e08270eebeb746d6aed45df9faee6a2 CI <CI@example.com> 1663390248 -0700 commit: three +198998809e08270eebeb746d6aed45df9faee6a2 2b10745f8823e1d49edc446ea1440d7730a6625b CI <CI@example.com> 1663390248 -0700 commit: four +2b10745f8823e1d49edc446ea1440d7730a6625b c37c09bdd6f969542d7e94829662c5ac19f5fb7e CI <CI@example.com> 1663390248 -0700 checkout: moving from second-branch to first-branch +c37c09bdd6f969542d7e94829662c5ac19f5fb7e c37c09bdd6f969542d7e94829662c5ac19f5fb7e CI <CI@example.com> 1663390252 -0700 rebase (start): checkout HEAD +c37c09bdd6f969542d7e94829662c5ac19f5fb7e 5d9c4c2ff245b2b0112cfa90a529baa3f3e12c6f CI <CI@example.com> 1663390252 -0700 rebase (pick): three +5d9c4c2ff245b2b0112cfa90a529baa3f3e12c6f 9cf3d6426fc20e3ccf1a9b0e3fa593f136fee92e CI <CI@example.com> 1663390252 -0700 rebase (pick): four +9cf3d6426fc20e3ccf1a9b0e3fa593f136fee92e 9cf3d6426fc20e3ccf1a9b0e3fa593f136fee92e CI <CI@example.com> 1663390252 -0700 rebase (finish): returning to refs/heads/first-branch diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/first-branch b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/first-branch new file mode 100644 index 000000000..839c92cee --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/first-branch @@ -0,0 +1,4 @@ +0000000000000000000000000000000000000000 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 branch: Created from HEAD +5b06c6c8d51ba89367991cc7b40dda5d827bb95a 197a799a14b2ca7478cfe339e7c83f7cdea4918b CI <CI@example.com> 1663390248 -0700 commit: one +197a799a14b2ca7478cfe339e7c83f7cdea4918b c37c09bdd6f969542d7e94829662c5ac19f5fb7e CI <CI@example.com> 1663390248 -0700 commit: two +c37c09bdd6f969542d7e94829662c5ac19f5fb7e 9cf3d6426fc20e3ccf1a9b0e3fa593f136fee92e CI <CI@example.com> 1663390252 -0700 rebase (finish): refs/heads/first-branch onto c37c09bdd6f969542d7e94829662c5ac19f5fb7e diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/master b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/master new file mode 100644 index 000000000..f5df202bf --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 commit (initial): base diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/second-branch b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/second-branch new file mode 100644 index 000000000..41f63c795 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/logs/refs/heads/second-branch @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 5b06c6c8d51ba89367991cc7b40dda5d827bb95a CI <CI@example.com> 1663390248 -0700 branch: Created from HEAD +5b06c6c8d51ba89367991cc7b40dda5d827bb95a 198998809e08270eebeb746d6aed45df9faee6a2 CI <CI@example.com> 1663390248 -0700 commit: three +198998809e08270eebeb746d6aed45df9faee6a2 2b10745f8823e1d49edc446ea1440d7730a6625b CI <CI@example.com> 1663390248 -0700 commit: four diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/19/7a799a14b2ca7478cfe339e7c83f7cdea4918b b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/19/7a799a14b2ca7478cfe339e7c83f7cdea4918b new file mode 100644 index 0000000000000000000000000000000000000000..ec488017ba9a429a1d36d238415472d32ed14d5e GIT binary patch literal 147 zcmV;E0Brww0gcW<3c@fDKvCB@MJ}LB(qu9NB0^U^Mkbk}U`#0yJia}G+s|A4(p!5D z>ljXBSG7UN$67G>BB;U{5Hto^sUmx#Ra65*Fk9aBJ!}-ff`w{yl8Glw%&wFq0cy>$ zl20NWv&o<F=)0X4d!3iNeskMidMUl#tV5h81|P_tApw}99#cdA<fgyX`~WN^IZ(LA BK(7D* literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/19/8998809e08270eebeb746d6aed45df9faee6a2 b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/19/8998809e08270eebeb746d6aed45df9faee6a2 new file mode 100644 index 000000000..d37e83906 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/19/8998809e08270eebeb746d6aed45df9faee6a2 @@ -0,0 +1,2 @@ +x��A +�0@Q�9E.�L�d2"BW=Ff2E��R"x|{���x����~�p껙�B!U�TЄ X��PED��E�趲ۻ�$��J5 R�G�̃j���T)dNŕO���f��}K�^vѵ���8�!�?CpG=P���]t��b:( \ No newline at end of file diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/2b/10745f8823e1d49edc446ea1440d7730a6625b b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/2b/10745f8823e1d49edc446ea1440d7730a6625b new file mode 100644 index 0000000000000000000000000000000000000000..862c1de53b83bbf1832a5801c794faaa7b1ebda1 GIT binary patch literal 146 zcmV;D0B!$x0gaAP3c@fD1^vz`asg$VrrTW*5&G3*B+Uy7)|8Nf$G6_V-(d!3DeL-d zw$tv^DqwvSH>8EVTOuQBASMhxW=X70BuBt2d9#Iz_b(Jx5mJ!2k${LedQKdW{E)Kd z0B~?7?Cnvioo0KT<~u%N-CnpXWxd&sx$l*n7kj3W$Q<;TYWPz(x$M<^0eSp75nrK3 AUjP6A literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 new file mode 100644 index 0000000000000000000000000000000000000000..adf64119a33d7621aeeaa505d30adb58afaa5559 GIT binary patch literal 15 Wcmb<m)YkO!4K+w$VBpeWVgvvgJ_3UP literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/5b/06c6c8d51ba89367991cc7b40dda5d827bb95a b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/5b/06c6c8d51ba89367991cc7b40dda5d827bb95a new file mode 100644 index 000000000..a4f4279e7 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/5b/06c6c8d51ba89367991cc7b40dda5d827bb95a @@ -0,0 +1,2 @@ +x��A +�0Fa�9�\@�&�1��#��E��<�=�����Z� ��$��_La)�2F�5.�|���X\��{�h��2�7|s}=q*�^iP !��HG>3��?������N+� \ No newline at end of file diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/5d/9c4c2ff245b2b0112cfa90a529baa3f3e12c6f b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/5d/9c4c2ff245b2b0112cfa90a529baa3f3e12c6f new file mode 100644 index 0000000000000000000000000000000000000000..8fdf508b88f1d9bcd3e4f17d6f2bf40530f7d341 GIT binary patch literal 151 zcmV;I0BHYs0e#Lv3c@fDKvCB@MJ}LBr^zG(B0^U^MlzXD!PrtFcznBX?e_B)U)I(h z-42YWzN=c7Bl;rbP%>%e1O)0`uCWkfj5Vt|24}Xk>#JKCg8=7Js4}s4Sc0;P$V4bU z$-vdu9Mq(DU)J4Dv%OC9T|cR9Prb<6ZgwCVM+S7!o*@93qaIUT|8tK&Zu)Ypn=hGm FIt^*qMy&t< literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/9c/f3d6426fc20e3ccf1a9b0e3fa593f136fee92e b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/9c/f3d6426fc20e3ccf1a9b0e3fa593f136fee92e new file mode 100644 index 0000000000000000000000000000000000000000..de1b77fe4d21a4c6be22aaa1fe6c52728dea6b4d GIT binary patch literal 150 zcmV;H0BQet0e#Lv3IZ_<KvCB{MK7SFX<8c)5oYBvnof#>V~5fKkMAs8yZyYyFKt<# z!#Z|{(N!%;!Z4ReSR|@&h6ox+YMLWsN>x;efy|n_zK0Dn7b;jQQV<ky4ol4pIUq~U zzIxqDtR`>c(Yl@P_A=dX`pL`s(o<>6)w&qHXFy8!2xkDZ*L`Z}e;)A1O>J8@Uxpw$ E1+Du+_y7O^ literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/c3/7c09bdd6f969542d7e94829662c5ac19f5fb7e b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/objects/c3/7c09bdd6f969542d7e94829662c5ac19f5fb7e new file mode 100644 index 0000000000000000000000000000000000000000..829be32046211347e61a1e7b83be05614d4e9a57 GIT binary patch literal 145 zcmV;C0B-+y0gaA93c@fD06pgw`GB%Xw@DU6gr540&31!=F{MQG`PLtJ9cEyp)q3yN z5ghuaYB482E)vj74w{J}fR30;S_1i$N>)VzG%IiV{DqMt5j)IYIATmvbQnmZq@hGv zl#yJ@hF|^GHapGsJk3}Aa9tmIl2$L)g|HXkG1((T0JGD5s_UP+>F;K~F)cZHpo2rH literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/first-branch b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/first-branch new file mode 100644 index 000000000..52ca93d1e --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/first-branch @@ -0,0 +1 @@ +9cf3d6426fc20e3ccf1a9b0e3fa593f136fee92e diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/master b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/master new file mode 100644 index 000000000..dca03b464 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/master @@ -0,0 +1 @@ +5b06c6c8d51ba89367991cc7b40dda5d827bb95a diff --git a/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/second-branch b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/second-branch new file mode 100644 index 000000000..0d1ec1f3a --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick/expected/repo/.git_keep/refs/heads/second-branch @@ -0,0 +1 @@ +2b10745f8823e1d49edc446ea1440d7730a6625b diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..01f5cbba2 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1,15 @@ +second change + +# Please enter the commit message for your changes. Lines starting +# with '#' will be ignored, and an empty message aborts the commit. +# +# interactive rebase in progress; onto ccc8b92 +# Last command done (1 command done): +# pick dddf38b second change +# Next command to do (1 remaining command): +# pick dae6bc0 second-change-branch unrelated change +# You are currently rebasing branch 'first-change-branch' on 'ccc8b92'. +# +# Changes to be committed: +# modified: file +# diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/FETCH_HEAD new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/HEAD b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..e1c7bf8c5 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/first-change-branch diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/ORIG_HEAD b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/ORIG_HEAD new file mode 100644 index 000000000..b303a7622 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/ORIG_HEAD @@ -0,0 +1 @@ +ccc8b929484ac23c527c54d1a109f20b16f5a006 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/config b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/config new file mode 100644 index 000000000..8a748ce32 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/config @@ -0,0 +1,12 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true +[user] + email = CI@example.com + name = CI +[commit] + gpgSign = false diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/description b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/index b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..b9ff2c0de0f85b22609b5413b6652b531f3af3ee GIT binary patch literal 231 zcmZ?q402{*U|<4b#$?rSB{o&nHW<ywz`)9qe)2T~L*o*l^jDx75g=9&^I~5w`r=>o zgQF*t?(X3JbE^La3j<49W=<+l76?LuTwQ^bB!i)X0T)A^ZpE*1Zq1+l&wAN*M||IH z#aJ2S8Va&B46Mb_z`)GJgaMWE5p!4Uym;H>bo$OImPJ8Kig{``t=1S6ck|w|xS6v0 l*&&NG=AQ<$Qn5Luh}ACfgS@E0AIFz*g5Pr1y?!yN9RQT-PLu!u literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/info/exclude b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/info/exclude new file mode 100644 index 000000000..8e9f2071f --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/info/exclude @@ -0,0 +1,7 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ +.DS_Store diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/HEAD b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..41ddb58b4 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,15 @@ +0000000000000000000000000000000000000000 1091767dde559ffdc97b64f1536955253b931e50 CI <CI@example.com> 1663391521 -0700 commit (initial): one +1091767dde559ffdc97b64f1536955253b931e50 ad9b1c669fdc039038e54fc497f3e888cc4654e0 CI <CI@example.com> 1663391521 -0700 commit: two +ad9b1c669fdc039038e54fc497f3e888cc4654e0 1f9963859d30c1bfe620e9121f3d689a07a35519 CI <CI@example.com> 1663391521 -0700 commit: three +1f9963859d30c1bfe620e9121f3d689a07a35519 977cb37e46b9a00e19e6f99c5c179a30b990ca3d CI <CI@example.com> 1663391521 -0700 commit: original +977cb37e46b9a00e19e6f99c5c179a30b990ca3d 977cb37e46b9a00e19e6f99c5c179a30b990ca3d CI <CI@example.com> 1663391521 -0700 checkout: moving from original-branch to first-change-branch +977cb37e46b9a00e19e6f99c5c179a30b990ca3d ccc8b929484ac23c527c54d1a109f20b16f5a006 CI <CI@example.com> 1663391521 -0700 commit: first change +ccc8b929484ac23c527c54d1a109f20b16f5a006 977cb37e46b9a00e19e6f99c5c179a30b990ca3d CI <CI@example.com> 1663391521 -0700 checkout: moving from first-change-branch to original-branch +977cb37e46b9a00e19e6f99c5c179a30b990ca3d 977cb37e46b9a00e19e6f99c5c179a30b990ca3d CI <CI@example.com> 1663391521 -0700 checkout: moving from original-branch to second-change-branch +977cb37e46b9a00e19e6f99c5c179a30b990ca3d dddf38b00920854961ad30512b3b174141e877b4 CI <CI@example.com> 1663391521 -0700 commit: second change +dddf38b00920854961ad30512b3b174141e877b4 dae6bc03641275886fa12a2a00c01edd6e975d99 CI <CI@example.com> 1663391521 -0700 commit: second-change-branch unrelated change +dae6bc03641275886fa12a2a00c01edd6e975d99 ccc8b929484ac23c527c54d1a109f20b16f5a006 CI <CI@example.com> 1663391521 -0700 checkout: moving from second-change-branch to first-change-branch +ccc8b929484ac23c527c54d1a109f20b16f5a006 ccc8b929484ac23c527c54d1a109f20b16f5a006 CI <CI@example.com> 1663391521 -0700 rebase (start): checkout HEAD +ccc8b929484ac23c527c54d1a109f20b16f5a006 e010d664020f79e46ef7f8bf2a1508fe0864109c CI <CI@example.com> 1663391522 -0700 rebase (continue): second change +e010d664020f79e46ef7f8bf2a1508fe0864109c 948965327ab8404a12fb80d9490ded95969431d1 CI <CI@example.com> 1663391522 -0700 rebase (continue) (pick): second-change-branch unrelated change +948965327ab8404a12fb80d9490ded95969431d1 948965327ab8404a12fb80d9490ded95969431d1 CI <CI@example.com> 1663391522 -0700 rebase (continue) (finish): returning to refs/heads/first-change-branch diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/first-change-branch b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/first-change-branch new file mode 100644 index 000000000..ff417251b --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/first-change-branch @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 977cb37e46b9a00e19e6f99c5c179a30b990ca3d CI <CI@example.com> 1663391521 -0700 branch: Created from HEAD +977cb37e46b9a00e19e6f99c5c179a30b990ca3d ccc8b929484ac23c527c54d1a109f20b16f5a006 CI <CI@example.com> 1663391521 -0700 commit: first change +ccc8b929484ac23c527c54d1a109f20b16f5a006 948965327ab8404a12fb80d9490ded95969431d1 CI <CI@example.com> 1663391522 -0700 rebase (continue) (finish): refs/heads/first-change-branch onto ccc8b929484ac23c527c54d1a109f20b16f5a006 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/original-branch b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/original-branch new file mode 100644 index 000000000..b9f592467 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/original-branch @@ -0,0 +1,4 @@ +0000000000000000000000000000000000000000 1091767dde559ffdc97b64f1536955253b931e50 CI <CI@example.com> 1663391521 -0700 commit (initial): one +1091767dde559ffdc97b64f1536955253b931e50 ad9b1c669fdc039038e54fc497f3e888cc4654e0 CI <CI@example.com> 1663391521 -0700 commit: two +ad9b1c669fdc039038e54fc497f3e888cc4654e0 1f9963859d30c1bfe620e9121f3d689a07a35519 CI <CI@example.com> 1663391521 -0700 commit: three +1f9963859d30c1bfe620e9121f3d689a07a35519 977cb37e46b9a00e19e6f99c5c179a30b990ca3d CI <CI@example.com> 1663391521 -0700 commit: original diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/second-change-branch b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/second-change-branch new file mode 100644 index 000000000..09842646b --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/logs/refs/heads/second-change-branch @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 977cb37e46b9a00e19e6f99c5c179a30b990ca3d CI <CI@example.com> 1663391521 -0700 branch: Created from HEAD +977cb37e46b9a00e19e6f99c5c179a30b990ca3d dddf38b00920854961ad30512b3b174141e877b4 CI <CI@example.com> 1663391521 -0700 commit: second change +dddf38b00920854961ad30512b3b174141e877b4 dae6bc03641275886fa12a2a00c01edd6e975d99 CI <CI@example.com> 1663391521 -0700 commit: second-change-branch unrelated change diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/00/7e2d78fa770b29f98fe68d06bb58f7bb3a0179 new file mode 100644 index 0000000000000000000000000000000000000000..bd9b135ac92b2dd8c84e8ee930f3abbad446dcdc GIT binary patch literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5Rp4_{y#B98@n4!3t51IS?!mv}RsY$z8MvYa Fi~z+L6c_*i literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/10/91767dde559ffdc97b64f1536955253b931e50 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/10/91767dde559ffdc97b64f1536955253b931e50 new file mode 100644 index 000000000..e347adc6e --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/10/91767dde559ffdc97b64f1536955253b931e50 @@ -0,0 +1,3 @@ +x��Q +�0�a�{�\@I�4� 2�ӎ�t +�ʨ��#����_Z�����73`��"LE�4e����EŸ�'d����6�f�M�h�\?/��V��E�!�@�xEtG=&��䮽��{+d \ No newline at end of file diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/11/0d6e0b946c9d9b9b5e44c29d98692e925c368c new file mode 100644 index 0000000000000000000000000000000000000000..a893c25632075cb033b35ab97b00bb966d383053 GIT binary patch literal 48 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5^@Ct>_?tZyx1W^!I;T0!)zPP`GRvIt8v}0& E0IOXS3jhEB literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/16/4a07af15e8fe5be0c5c962ddb80bfcca8fd804 new file mode 100644 index 0000000000000000000000000000000000000000..3f0746de578045d05bc0ab70eedb0910b69841be GIT binary patch literal 46 zcmV+}0MY+=0ZYosPf{>8V&DqN$SmgaEC$l4T*0Zy`FSY{&KZe$>8V_9nK`Lk0P)uh E7zjcZDF6Tf literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/1f/332f64cb03c06913491af20cd407158776bd55 new file mode 100644 index 0000000000000000000000000000000000000000..8cded6c81b47e88b26c954bb22ad356788258752 GIT binary patch literal 49 zcmb<m)YkO!4K*-JGB7bPFg6VIIDN)5bwgBgz@4+zryr%AdX?U;b7@As)EO^U2F6~# FjR3)m6SV*U literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/1f/9963859d30c1bfe620e9121f3d689a07a35519 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/1f/9963859d30c1bfe620e9121f3d689a07a35519 new file mode 100644 index 0000000000000000000000000000000000000000..ac11d698a805aeabc63f4d7d3305ffce4537c7be GIT binary patch literal 147 zcmV;E0Brww0gcX03c@fDKw;N8MJ}LB{>B*)5xVLzlF5V$)|L{%<C`P6eSC{2+qyox zb?i_5P_?m;PgO8_DX4`rAZUuEQAPGdt*AzZX!d;QyW3p3I6>rA1p-5$p_@d$wxC2L z5-~*ulRtgg4m-{EHq8(H=5>GRMYi>B9byRVl6UqDR{%5WnCki`H+>oF<_Db4Isg2r BM-Tu2 literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/2a/ccf5d0d5f4c2501627da4aebeda580cd86f0eb b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/2a/ccf5d0d5f4c2501627da4aebeda580cd86f0eb new file mode 100644 index 0000000000000000000000000000000000000000..e4ca8d59a28af84f911ba57b5962caa3f2e160be GIT binary patch literal 85 zcmV-b0IL6Z0ZYosPg1b7VBiYL$SmgaEC$l4Ts9D(;Nj}%!sV7(R9vFqoROH9p2}ql r0bIeU$@zIHFi|@QP)JEhNi()cQqU-dNGF3eX#$PNN#z0nLB<~6L%t|D literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/3a/ac30738b0dda38d964abe6c2386603f9309a65 new file mode 100644 index 0000000000000000000000000000000000000000..1f72f9aeea32636014d2a1fd48203d51ca973040 GIT binary patch literal 43 zcmV+`0M!3@0ZYosPf{>8WZ(+P$SmgaEC$l4TyB{~#U%>P8Hsu6AWlvy7Xam63&W%1 B5^Dee literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 new file mode 100644 index 0000000000000000000000000000000000000000..adf64119a33d7621aeeaa505d30adb58afaa5559 GIT binary patch literal 15 Wcmb<m)YkO!4K+w$VBpeWVgvvgJ_3UP literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/4c/16472189d1db34cb67b99439725202216e26d9 new file mode 100644 index 0000000000000000000000000000000000000000..9d9452bdd10687443ef9d15b5a5b6f535d97c7c6 GIT binary patch literal 41 zcmV+^0M`F_0ZYosPf{>4XW$CS$SmgaEC$l4T>eFw>6v+nIb3d;IjLL#xmpU3me3P0 literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/94/8965327ab8404a12fb80d9490ded95969431d1 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/94/8965327ab8404a12fb80d9490ded95969431d1 new file mode 100644 index 0000000000000000000000000000000000000000..6510f0fd1a5558d883b06655437c8105a783235a GIT binary patch literal 169 zcmV;a09OBa0fml13c@fD06pgw`+>?PZL<l82tD-~n`C1Jn@Wt}^DXGz>o5Zow{^WW zFlIQkDguZkCXvfbgu(diT^8#S+7L#UDTJO;lUEO}QW^+qOx6x)Fq4<TN~Y{WHmpb7 zQ*?IF=%eCSTeb?*45w+n$eY*4U5;^E&!DaCd#^{Mp+iDcJKd+6{L#%%S5JvsNnKpH XT%`+@OI+Yps@%Crf-hGeH2+0ZIjK)n literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/97/7cb37e46b9a00e19e6f99c5c179a30b990ca3d b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/97/7cb37e46b9a00e19e6f99c5c179a30b990ca3d new file mode 100644 index 0000000000000000000000000000000000000000..6f3ae7c4c3712f64334de98e63a5797b731d4c2b GIT binary patch literal 151 zcmV;I0BHYs0gaAZ3c@fDMg7hyvH@i#X{H$v5&G3-<T2Gk+msN&<(nn=cR8E`H<f)~ zn?`n*Rz)--WD<xxP~yyyqmyAsrf*MdgpEs<d{Sqqa`bRvChHw%3kl;QWIz}VE;f_r z0AsMuA*=9d?^5+N>-#i6<s0^MlUpkLLnD#3jLx9G!U&)`?WdajsjE`g*Ls9a{Q#5U FIqwh@NKya* literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/ad/9b1c669fdc039038e54fc497f3e888cc4654e0 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/ad/9b1c669fdc039038e54fc497f3e888cc4654e0 new file mode 100644 index 0000000000000000000000000000000000000000..7e87c8613e79fc9b964d6ec9428b18c8c6896c31 GIT binary patch literal 145 zcmV;C0B-+y0gaAH3IZ_@06pgw`GC?{x|0SG!P7h=O9usGh9RQQcb?$2sDdh^_s7(R z;V?H5?Q^tP3wc{IN#+Cuf<CuciEWH6i+BdF*0jlM4}ndfP^%zvYqfC5<eNc9jA+qi zc193Xde8gV^lj1S+j5m}>g!WZW%P?SM9#56YxEHUfZFLkHRVrT&CgIj%kDUQqg+M_ literal 0 HcmV?d00001 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/cc/c8b929484ac23c527c54d1a109f20b16f5a006 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/cc/c8b929484ac23c527c54d1a109f20b16f5a006 new file mode 100644 index 000000000..52f8a5e1e --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/cc/c8b929484ac23c527c54d1a109f20b16f5a006 @@ -0,0 +1,2 @@ +x��M +�0@a�9E.��t�〈�U��L'�`�R#x|{��o�d�un�OmW�X���d ��H�1�dt�_cy��liץY�Q2Eu!sPd �Y�`�D��A�&}ڴ���Mu{�E�z���О!��SM�����Y���T��@;� \ No newline at end of file diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/da/e6bc03641275886fa12a2a00c01edd6e975d99 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/da/e6bc03641275886fa12a2a00c01edd6e975d99 new file mode 100644 index 000000000..de1b67169 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/da/e6bc03641275886fa12a2a00c01edd6e975d99 @@ -0,0 +1,3 @@ +x��Qj!��>{����u�Ry�1�������^����_�}��`���CYm��23�M-Ŧ!V"kl,�2'��C��ZksQ�Ÿ�(W�+YqB�ɓFf�&��v�\��r=�O�w=�c� +��D�%X��[�SS������ץl��t��{��Շ��� +n~�fD� \ No newline at end of file diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/dd/df38b00920854961ad30512b3b174141e877b4 b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/dd/df38b00920854961ad30512b3b174141e877b4 new file mode 100644 index 000000000..32ec66bbf --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/dd/df38b00920854961ad30512b3b174141e877b4 @@ -0,0 +1,2 @@ +x��A +�0@Q�9�\@�$6���c�LT0m�<�=���[������}SDRW(V!��r�b���+��-�Yeӹ��I�!� �e �9yG�11c_�|�c�`��2N7�J[_z�K�� �{���pDB4{ݧ����[�2���j~E�<� \ No newline at end of file diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/e0/10d664020f79e46ef7f8bf2a1508fe0864109c b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/e0/10d664020f79e46ef7f8bf2a1508fe0864109c new file mode 100644 index 000000000..8801370d5 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/objects/e0/10d664020f79e46ef7f8bf2a1508fe0864109c @@ -0,0 +1,2 @@ +x��M +�0@a�9E.�L&��]���DӖ��ۅ{��o�xi��5�&��` �R�1���X���b 9[�Zi��kf�9a�@��vC1d U�l|u���}��8��8]�Cm}ʉ�v��{k�qh����>���W/�e.��4�D}'<X \ No newline at end of file diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/first-change-branch b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/first-change-branch new file mode 100644 index 000000000..f904daa2a --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/first-change-branch @@ -0,0 +1 @@ +948965327ab8404a12fb80d9490ded95969431d1 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/original-branch b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/original-branch new file mode 100644 index 000000000..c6a8b91da --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/original-branch @@ -0,0 +1 @@ +977cb37e46b9a00e19e6f99c5c179a30b990ca3d diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/second-change-branch b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/second-change-branch new file mode 100644 index 000000000..dcaa29172 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/.git_keep/refs/heads/second-change-branch @@ -0,0 +1 @@ +dae6bc03641275886fa12a2a00c01edd6e975d99 diff --git a/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/file b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/file new file mode 100644 index 000000000..164a07af1 --- /dev/null +++ b/test/integration_new/cherry_pick/cherry_pick_conflicts/expected/repo/file @@ -0,0 +1,6 @@ + +This +Is +The +Second Change +File From 850a82784ace52f5c9b8f8ed2b96762f594455c6 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Fri, 16 Sep 2022 22:22:20 -0700 Subject: [PATCH 15/44] earlier failure --- pkg/integration/tests/branch/suggestions.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/integration/tests/branch/suggestions.go b/pkg/integration/tests/branch/suggestions.go index 95a40b0ac..7f7f7e8cb 100644 --- a/pkg/integration/tests/branch/suggestions.go +++ b/pkg/integration/tests/branch/suggestions.go @@ -34,6 +34,7 @@ var Suggestions = NewIntegrationTest(NewIntegrationTestArgs{ // we expect the first suggestion to be the branch we want because it most // closely matches what we typed in + assert.MatchSelectedLine(Contains("branch-to-checkout")) input.Confirm() assert.CurrentBranchName("branch-to-checkout") From 6dca3e1766de061264646dbde7d2ba2daa23bbba Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Fri, 16 Sep 2022 22:31:46 -0700 Subject: [PATCH 16/44] allow two attempts on CI --- pkg/integration/clients/cli.go | 1 + pkg/integration/clients/go_test.go | 3 +++ pkg/integration/clients/tui.go | 1 + pkg/integration/components/runner.go | 15 ++++++++++++++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/pkg/integration/clients/cli.go b/pkg/integration/clients/cli.go index 0222bd129..73a02c432 100644 --- a/pkg/integration/clients/cli.go +++ b/pkg/integration/clients/cli.go @@ -43,6 +43,7 @@ func RunCLI(testNames []string, slow bool, sandbox bool) { runAndPrintFatalError, mode, keyPressDelay, + 1, ) if err != nil { log.Print(err.Error()) diff --git a/pkg/integration/clients/go_test.go b/pkg/integration/clients/go_test.go index a14b1f254..3e442feaf 100644 --- a/pkg/integration/clients/go_test.go +++ b/pkg/integration/clients/go_test.go @@ -48,6 +48,9 @@ func TestIntegration(t *testing.T) { }, components.CHECK_SNAPSHOT, 0, + // allowing two attempts at the test. If a test fails intermittently, + // there may be a concurrency issue that we need to resolve. + 2, ) assert.NoError(t, err) diff --git a/pkg/integration/clients/tui.go b/pkg/integration/clients/tui.go index 96ffed8b0..656d16877 100644 --- a/pkg/integration/clients/tui.go +++ b/pkg/integration/clients/tui.go @@ -375,6 +375,7 @@ func runTuiTest(test *components.IntegrationTest, mode components.Mode, keyPress runAndPrintError, mode, keyPressDelay, + 1, ) if err != nil { log.Println(err.Error()) diff --git a/pkg/integration/components/runner.go b/pkg/integration/components/runner.go index 54b42de17..26ac57875 100644 --- a/pkg/integration/components/runner.go +++ b/pkg/integration/components/runner.go @@ -42,6 +42,7 @@ func RunTests( testWrapper func(test *IntegrationTest, f func() error), mode Mode, keyPressDelay int, + maxAttempts int, ) error { projectRootDir := utils.GetLazygitRootDirectory() err := os.Chdir(projectRootDir) @@ -63,7 +64,19 @@ func RunTests( filepath.Join(testDir, test.Name()), ) - return runTest(test, paths, projectRootDir, logf, runCmd, mode, keyPressDelay) + for i := 0; i < maxAttempts; i++ { + err := runTest(test, paths, projectRootDir, logf, runCmd, mode, keyPressDelay) + if err != nil { + if i == maxAttempts-1 { + return err + } + logf("retrying test %s", test.Name()) + } else { + break + } + } + + return nil }) } From a92f0f7c8905b0d4595cc3cb101a2acdcdc139f5 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Sat, 17 Sep 2022 10:50:04 -0700 Subject: [PATCH 17/44] increase recording leeway --- pkg/gui/test_mode.go | 2 +- pkg/integration/deprecated/go_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/gui/test_mode.go b/pkg/gui/test_mode.go index cd3bd83ba..7d1a5eb5a 100644 --- a/pkg/gui/test_mode.go +++ b/pkg/gui/test_mode.go @@ -42,7 +42,7 @@ func (gui *Gui) handleTestMode(test integrationTypes.IntegrationTest) { if Replaying() { gui.g.RecordingConfig = gocui.RecordingConfig{ Speed: GetRecordingSpeed(), - Leeway: 100, + Leeway: 1000, } var err error diff --git a/pkg/integration/deprecated/go_test.go b/pkg/integration/deprecated/go_test.go index 9b8c92a3b..af7f6a8eb 100644 --- a/pkg/integration/deprecated/go_test.go +++ b/pkg/integration/deprecated/go_test.go @@ -106,7 +106,7 @@ func runCmdHeadless(cmd *exec.Cmd) error { // these rows and columns are ignored because internally we use tcell's // simulation screen. However we still need the pty for the sake of // running other commands in a pty. - f, err := pty.StartWithSize(cmd, &pty.Winsize{Rows: 300, Cols: 300}) + f, err := pty.StartWithSize(cmd, &pty.Winsize{Rows: 100, Cols: 100}) if err != nil { return err } From 5639af99188ef4c283a456f9d51186af7a1d6d90 Mon Sep 17 00:00:00 2001 From: README-bot <actions@users.noreply.github.com> Date: Sat, 17 Sep 2022 18:10:08 +0000 Subject: [PATCH 18/44] Updated README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 732d8c97f..2d03f5b94 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ A simple terminal UI for git commands, written in Go with the [gocui](https://gi </p> <p align="center"> -<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/kristijanhusak"><img src="https://github.com/kristijanhusak.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/kublaios"><img src="https://github.com/kublaios.png" width="60px" alt="" /></a><a href="https://github.com/Ulthes"><img src="https://github.com/Ulthes.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/zeevro"><img src="https://github.com/zeevro.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/bastianwegge"><img src="https://github.com/bastianwegge.png" width="60px" alt="" /></a><a href="https://github.com/m-vandeneede"><img src="https://github.com/m-vandeneede.png" width="60px" alt="" /></a><a href="https://github.com/henry174Ajou"><img src="https://github.com/henry174Ajou.png" width="60px" alt="" /></a><a href="https://github.com/akbarsha03"><img src="https://github.com/akbarsha03.png" width="60px" alt="" /></a><!-- sponsors --> +<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/kristijanhusak"><img src="https://github.com/kristijanhusak.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/zeevro"><img src="https://github.com/zeevro.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/bastianwegge"><img src="https://github.com/bastianwegge.png" width="60px" alt="" /></a><a href="https://github.com/m-vandeneede"><img src="https://github.com/m-vandeneede.png" width="60px" alt="" /></a><a href="https://github.com/henry174Ajou"><img src="https://github.com/henry174Ajou.png" width="60px" alt="" /></a><a href="https://github.com/akbarsha03"><img src="https://github.com/akbarsha03.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><!-- sponsors --> </p> ## Elevator Pitch From 7e9dffe1b93d304d8500cc0a379a8a2f4e35a7a2 Mon Sep 17 00:00:00 2001 From: Mihai22125 <mihai.mtb10@gmail.com> Date: Tue, 9 Aug 2022 19:52:19 +0300 Subject: [PATCH 19/44] Add Key field to CustomCommandPrompt struct Add Form field to CustomCommandObjects struct Write user prompts responses to Form field Ensure that map keys exists Add form prompts integration test Remove redundant index --- pkg/config/user_config.go | 2 + .../custom_commands/handler_creator.go | 14 ++- .../tests/custom_commands/form_prompts.go | 88 ++++++++++++++++++ pkg/integration/tests/tests.go | 1 + pkg/utils/template.go | 2 +- .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../form_prompts/expected/repo/.git_keep/HEAD | 1 + .../expected/repo/.git_keep/config | 8 ++ .../expected/repo/.git_keep/description | 1 + .../expected/repo/.git_keep/index | Bin 0 -> 65 bytes .../expected/repo/.git_keep/info/exclude | 6 ++ .../expected/repo/.git_keep/logs/HEAD | 1 + .../repo/.git_keep/logs/refs/heads/master | 1 + .../4b/825dc642cb6eb9a060e54bf8d69288fbee4904 | Bin 0 -> 15 bytes .../6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 | Bin 0 -> 116 bytes .../expected/repo/.git_keep/refs/heads/master | 1 + .../form_prompts/expected/repo/myfile | 1 + 18 files changed, 122 insertions(+), 6 deletions(-) create mode 100644 pkg/integration/tests/custom_commands/form_prompts.go create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/COMMIT_EDITMSG create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/FETCH_HEAD create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/HEAD create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/description create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/index create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/myfile diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index 7e6a21656..f3ff1befb 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -314,6 +314,8 @@ type CustomCommand struct { } type CustomCommandPrompt struct { + Key string `yaml:"key"` + // one of 'input', 'menu', 'confirm', or 'menuFromCommand' Type string `yaml:"type"` diff --git a/pkg/gui/services/custom_commands/handler_creator.go b/pkg/gui/services/custom_commands/handler_creator.go index 6ac9fb733..839f70adf 100644 --- a/pkg/gui/services/custom_commands/handler_creator.go +++ b/pkg/gui/services/custom_commands/handler_creator.go @@ -45,8 +45,9 @@ func (self *HandlerCreator) call(customCommand config.CustomCommand) func() erro return func() error { sessionState := self.sessionStateLoader.call() promptResponses := make([]string, len(customCommand.Prompts)) + form := make(map[string]string) - f := func() error { return self.finalHandler(customCommand, sessionState, promptResponses) } + f := func() error { return self.finalHandler(customCommand, sessionState, promptResponses, form) } // if we have prompts we'll recursively wrap our confirm handlers with more prompts // until we reach the actual command @@ -60,10 +61,11 @@ func (self *HandlerCreator) call(customCommand config.CustomCommand) func() erro wrappedF := func(response string) error { promptResponses[idx] = response + form[prompt.Key] = response return g() } - resolveTemplate := self.getResolveTemplateFn(promptResponses, sessionState) + resolveTemplate := self.getResolveTemplateFn(form, promptResponses, sessionState) resolvedPrompt, err := self.resolver.resolvePrompt(&prompt, resolveTemplate) if err != nil { return self.c.Error(err) @@ -154,19 +156,21 @@ func (self *HandlerCreator) menuPromptFromCommand(prompt *config.CustomCommandPr type CustomCommandObjects struct { *SessionState PromptResponses []string + Form map[string]string } -func (self *HandlerCreator) getResolveTemplateFn(promptResponses []string, sessionState *SessionState) func(string) (string, error) { +func (self *HandlerCreator) getResolveTemplateFn(form map[string]string, promptResponses []string, sessionState *SessionState) func(string) (string, error) { objects := CustomCommandObjects{ SessionState: sessionState, PromptResponses: promptResponses, + Form: form, } return func(templateStr string) (string, error) { return utils.ResolveTemplate(templateStr, objects) } } -func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, sessionState *SessionState, promptResponses []string) error { - resolveTemplate := self.getResolveTemplateFn(promptResponses, sessionState) +func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, sessionState *SessionState, promptResponses []string, form map[string]string) error { + resolveTemplate := self.getResolveTemplateFn(form, promptResponses, sessionState) cmdStr, err := resolveTemplate(customCommand.Command) if err != nil { return self.c.Error(err) diff --git a/pkg/integration/tests/custom_commands/form_prompts.go b/pkg/integration/tests/custom_commands/form_prompts.go new file mode 100644 index 000000000..e4712dbcc --- /dev/null +++ b/pkg/integration/tests/custom_commands/form_prompts.go @@ -0,0 +1,88 @@ +package custom_commands + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var FormPrompts = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Using a custom command reffering prompt responses by name", + ExtraCmdArgs: "", + Skip: false, + SetupRepo: func(shell *Shell) { + shell.EmptyCommit("blah") + }, + SetupConfig: func(cfg *config.AppConfig) { + cfg.UserConfig.CustomCommands = []config.CustomCommand{ + { + Key: "a", + Context: "files", + Command: `echo "{{.Form.FileContent}}" > {{.Form.FileName}}`, + Prompts: []config.CustomCommandPrompt{ + { + Key: "FileName", + Type: "input", + Title: "Enter a file name", + }, + { + Key: "FileContent", + Type: "menu", + Title: "Choose file content", + Options: []config.CustomCommandMenuOption{ + { + Name: "foo", + Description: "Foo", + Value: "FOO", + }, + { + Name: "bar", + Description: "Bar", + Value: "BAR", + }, + { + Name: "baz", + Description: "Baz", + Value: "BAZ", + }, + }, + }, + { + Type: "confirm", + Title: "Are you sure?", + Body: "Are you REALLY sure you want to make this file? Up to you buddy.", + }, + }, + }, + } + }, + Run: func( + shell *Shell, + input *Input, + assert *Assert, + keys config.KeybindingConfig, + ) { + assert.WorkingTreeFileCount(0) + + input.PressKeys("a") + + assert.InPrompt() + assert.MatchCurrentViewTitle(Equals("Enter a file name")) + input.Type("myfile") + input.Confirm() + + assert.InMenu() + assert.MatchCurrentViewTitle(Equals("Choose file content")) + assert.MatchSelectedLine(Contains("foo")) + input.NextItem() + assert.MatchSelectedLine(Contains("bar")) + input.Confirm() + + assert.InConfirm() + assert.MatchCurrentViewTitle(Equals("Are you sure?")) + input.Confirm() + + assert.WorkingTreeFileCount(1) + assert.MatchSelectedLine(Contains("myfile")) + assert.MatchMainViewContent(Contains("BAR")) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index 9280347be..eb2fd83fa 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -36,6 +36,7 @@ var tests = []*components.IntegrationTest{ bisect.FromOtherBranch, cherry_pick.CherryPick, cherry_pick.CherryPickConflicts, + custom_commands.FormPrompts, } func GetTests() []*components.IntegrationTest { diff --git a/pkg/utils/template.go b/pkg/utils/template.go index 6c147cd38..41388ae3a 100644 --- a/pkg/utils/template.go +++ b/pkg/utils/template.go @@ -7,7 +7,7 @@ import ( ) func ResolveTemplate(templateStr string, object interface{}) (string, error) { - tmpl, err := template.New("template").Parse(templateStr) + tmpl, err := template.New("template").Option("missingkey=error").Parse(templateStr) if err != nil { return "", err } diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..907b30816 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +blah diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/FETCH_HEAD new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/HEAD b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..cb089cd89 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config new file mode 100644 index 000000000..596ebaeb3 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config @@ -0,0 +1,8 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[user] + email = CI@example.com + name = CI diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/description b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/index b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..65d675154f23ffb2d0196e017d44a5e7017550f5 GIT binary patch literal 65 zcmZ?q402{*U|<4bhL9jvS0E+HV4z^Y<=qr}%;|LA&IJiiy?<Pr)babBCri;)`-<AO Tl}3xATFuWrGP@z+w&EiIWCj?s literal 0 HcmV?d00001 diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..153f2ddc4 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 6cd61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 CI <CI@example.com> 1660591942 +0000 commit (initial): blah diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master new file mode 100644 index 000000000..153f2ddc4 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 6cd61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 CI <CI@example.com> 1660591942 +0000 commit (initial): blah diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 new file mode 100644 index 0000000000000000000000000000000000000000..adf64119a33d7621aeeaa505d30adb58afaa5559 GIT binary patch literal 15 Wcmb<m)YkO!4K+w$VBpeWVgvvgJ_3UP literal 0 HcmV?d00001 diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 new file mode 100644 index 0000000000000000000000000000000000000000..8d0c394f8aa5c739df95a23ba1821118395c1378 GIT binary patch literal 116 zcmV-)0E_>40ga783c@fD06pgwdlzIAH%k_z2tD-~*>p>VhDeFv^UV{S<1jF#)%xn- z>3->_8IYzB*TNKvvZ-Wbv`D(8l_jLKsTm29%b&it6XpdT^YXNBuJ6NcrPT>MGe+@3 W0j@Z3!;VR}KXa!?-rWzaL@TsV7dVap literal 0 HcmV?d00001 diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master new file mode 100644 index 000000000..4c2ab0871 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master @@ -0,0 +1 @@ +6cd61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/myfile b/test/integration_new/custom_commands/form_prompts/expected/repo/myfile new file mode 100644 index 000000000..ba578e48b --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/myfile @@ -0,0 +1 @@ +BAR From b8900baf1ada72c24e58c487122c21e80858f52a Mon Sep 17 00:00:00 2001 From: jiepeng <jiepengthegreat@126.com> Date: Tue, 13 Sep 2022 18:11:03 +0800 Subject: [PATCH 20/44] remove deprecated calls --- pkg/app/daemon/daemon.go | 3 +-- pkg/app/logging.go | 4 ++-- pkg/cheatsheet/check.go | 3 +-- pkg/commands/git.go | 3 +-- pkg/commands/git_commands/file.go | 4 ++-- pkg/commands/git_commands/rebase.go | 10 +++++----- pkg/commands/git_commands/working_tree_test.go | 4 ++-- pkg/commands/git_config/get_key.go | 4 ++-- pkg/commands/loaders/commits.go | 3 +-- pkg/commands/oscommands/gui_io.go | 6 ++---- pkg/commands/oscommands/os.go | 6 +++--- pkg/commands/oscommands/os_test.go | 9 ++++----- pkg/config/app_config.go | 7 +++---- pkg/gui/controllers/merge_conflicts_controller.go | 5 +++-- pkg/gui/gui.go | 6 +++--- pkg/gui/recent_repos_panel.go | 5 ++--- pkg/gui/test_mode.go | 5 ++--- pkg/integration/components/shell.go | 5 ++--- pkg/integration/components/snapshot.go | 4 ++-- pkg/integration/deprecated/integration.go | 6 +++--- pkg/utils/dummies.go | 5 ++--- 21 files changed, 48 insertions(+), 59 deletions(-) diff --git a/pkg/app/daemon/daemon.go b/pkg/app/daemon/daemon.go index ea71bb956..182807b02 100644 --- a/pkg/app/daemon/daemon.go +++ b/pkg/app/daemon/daemon.go @@ -1,7 +1,6 @@ package daemon import ( - "io/ioutil" "log" "os" "path/filepath" @@ -77,7 +76,7 @@ func (self *rebaseDaemon) Run() error { self.c.Log.Info("args: ", os.Args) if strings.HasSuffix(os.Args[1], "git-rebase-todo") { - if err := ioutil.WriteFile(os.Args[1], []byte(os.Getenv(RebaseTODOEnvKey)), 0o644); err != nil { + if err := os.WriteFile(os.Args[1], []byte(os.Getenv(RebaseTODOEnvKey)), 0o644); err != nil { return err } } else if strings.HasSuffix(os.Args[1], filepath.Join(gitDir(), "COMMIT_EDITMSG")) { // TODO: test diff --git a/pkg/app/logging.go b/pkg/app/logging.go index 7a5eef74e..65bed7823 100644 --- a/pkg/app/logging.go +++ b/pkg/app/logging.go @@ -1,7 +1,7 @@ package app import ( - "io/ioutil" + "io" "log" "os" @@ -26,7 +26,7 @@ func newLogger(config config.AppConfigurer) *logrus.Entry { func newProductionLogger() *logrus.Logger { log := logrus.New() - log.Out = ioutil.Discard + log.Out = io.Discard log.SetLevel(logrus.ErrorLevel) return log } diff --git a/pkg/cheatsheet/check.go b/pkg/cheatsheet/check.go index a0c40e775..6123e4aa5 100644 --- a/pkg/cheatsheet/check.go +++ b/pkg/cheatsheet/check.go @@ -3,7 +3,6 @@ package cheatsheet import ( "fmt" "io/fs" - "io/ioutil" "log" "os" "path/filepath" @@ -60,7 +59,7 @@ func obtainContent(dir string) string { content := "" err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error { if re.MatchString(path) { - bytes, err := ioutil.ReadFile(path) + bytes, err := os.ReadFile(path) if err != nil { log.Fatalf("Error occurred while checking if cheatsheets are up to date: %v", err) } diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 2176077d4..a28e9afb6 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -1,7 +1,6 @@ package commands import ( - "io/ioutil" "os" "path/filepath" "strings" @@ -68,7 +67,7 @@ func NewGitCommand( return nil, err } - dotGitDir, err := findDotGitDir(os.Stat, ioutil.ReadFile) + dotGitDir, err := findDotGitDir(os.Stat, os.ReadFile) if err != nil { return nil, err } diff --git a/pkg/commands/git_commands/file.go b/pkg/commands/git_commands/file.go index 898c26e33..111733bb7 100644 --- a/pkg/commands/git_commands/file.go +++ b/pkg/commands/git_commands/file.go @@ -1,7 +1,7 @@ package git_commands import ( - "io/ioutil" + "os" "strconv" "github.com/go-errors/errors" @@ -20,7 +20,7 @@ func NewFileCommands(gitCommon *GitCommon) *FileCommands { // Cat obtains the content of a file func (self *FileCommands) Cat(fileName string) (string, error) { - buf, err := ioutil.ReadFile(fileName) + buf, err := os.ReadFile(fileName) if err != nil { return "", nil } diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go index 48a613e41..9a8f94618 100644 --- a/pkg/commands/git_commands/rebase.go +++ b/pkg/commands/git_commands/rebase.go @@ -2,7 +2,7 @@ package git_commands import ( "fmt" - "io/ioutil" + "os" "path/filepath" "strings" @@ -202,7 +202,7 @@ func (self *RebaseCommands) AmendTo(sha string) error { // EditRebaseTodo sets the action at a given index in the git-rebase-todo file func (self *RebaseCommands) EditRebaseTodo(index int, action string) error { fileName := filepath.Join(self.dotGitDir, "rebase-merge/git-rebase-todo") - bytes, err := ioutil.ReadFile(fileName) + bytes, err := os.ReadFile(fileName) if err != nil { return err } @@ -217,7 +217,7 @@ func (self *RebaseCommands) EditRebaseTodo(index int, action string) error { content[contentIndex] = action + " " + strings.Join(splitLine[1:], " ") result := strings.Join(content, "\n") - return ioutil.WriteFile(fileName, []byte(result), 0o644) + return os.WriteFile(fileName, []byte(result), 0o644) } func (self *RebaseCommands) getTodoCommitCount(content []string) int { @@ -234,7 +234,7 @@ func (self *RebaseCommands) getTodoCommitCount(content []string) int { // MoveTodoDown moves a rebase todo item down by one position func (self *RebaseCommands) MoveTodoDown(index int) error { fileName := filepath.Join(self.dotGitDir, "rebase-merge/git-rebase-todo") - bytes, err := ioutil.ReadFile(fileName) + bytes, err := os.ReadFile(fileName) if err != nil { return err } @@ -247,7 +247,7 @@ func (self *RebaseCommands) MoveTodoDown(index int) error { rearrangedContent = append(rearrangedContent, content[contentIndex+1:]...) result := strings.Join(rearrangedContent, "\n") - return ioutil.WriteFile(fileName, []byte(result), 0o644) + return os.WriteFile(fileName, []byte(result), 0o644) } // SquashAllAboveFixupCommits squashes all fixup! commits above the given one diff --git a/pkg/commands/git_commands/working_tree_test.go b/pkg/commands/git_commands/working_tree_test.go index e4e884ce4..049961541 100644 --- a/pkg/commands/git_commands/working_tree_test.go +++ b/pkg/commands/git_commands/working_tree_test.go @@ -2,7 +2,7 @@ package git_commands import ( "fmt" - "io/ioutil" + "os" "regexp" "testing" @@ -432,7 +432,7 @@ func TestWorkingTreeApplyPatch(t *testing.T) { filename := matches[1] - content, err := ioutil.ReadFile(filename) + content, err := os.ReadFile(filename) assert.NoError(t, err) assert.Equal(t, "test", string(content)) diff --git a/pkg/commands/git_config/get_key.go b/pkg/commands/git_config/get_key.go index bd6f59248..c3156a2db 100644 --- a/pkg/commands/git_config/get_key.go +++ b/pkg/commands/git_config/get_key.go @@ -3,7 +3,7 @@ package git_config import ( "bytes" "fmt" - "io/ioutil" + "io" "os/exec" "strings" "syscall" @@ -38,7 +38,7 @@ import ( func runGitConfigCmd(cmd *exec.Cmd) (string, error) { var stdout bytes.Buffer cmd.Stdout = &stdout - cmd.Stderr = ioutil.Discard + cmd.Stderr = io.Discard err := cmd.Run() if exitError, ok := err.(*exec.ExitError); ok { diff --git a/pkg/commands/loaders/commits.go b/pkg/commands/loaders/commits.go index 69c88ccf5..5f33408cd 100644 --- a/pkg/commands/loaders/commits.go +++ b/pkg/commands/loaders/commits.go @@ -3,7 +3,6 @@ package loaders import ( "bytes" "fmt" - "io/ioutil" "os" "path/filepath" "regexp" @@ -50,7 +49,7 @@ func NewCommitLoader( cmd: cmd, getCurrentBranchName: getCurrentBranchName, getRebaseMode: getRebaseMode, - readFile: ioutil.ReadFile, + readFile: os.ReadFile, walkFiles: filepath.Walk, dotGitDir: dotGitDir, } diff --git a/pkg/commands/oscommands/gui_io.go b/pkg/commands/oscommands/gui_io.go index 9540c13e1..495285a5f 100644 --- a/pkg/commands/oscommands/gui_io.go +++ b/pkg/commands/oscommands/gui_io.go @@ -1,10 +1,8 @@ package oscommands import ( - "io" - "io/ioutil" - "github.com/sirupsen/logrus" + "io" ) // this struct captures some IO stuff @@ -45,7 +43,7 @@ func NewNullGuiIO(log *logrus.Entry) *guiIO { return &guiIO{ log: log, logCommandFn: func(string, bool) {}, - newCmdWriterFn: func() io.Writer { return ioutil.Discard }, + newCmdWriterFn: func() io.Writer { return io.Discard }, promptForCredentialFn: failPromptFn, } } diff --git a/pkg/commands/oscommands/os.go b/pkg/commands/oscommands/os.go index 2a7cc1328..39149ce84 100644 --- a/pkg/commands/oscommands/os.go +++ b/pkg/commands/oscommands/os.go @@ -2,7 +2,7 @@ package oscommands import ( "fmt" - "io/ioutil" + "io" "os" "os/exec" "path/filepath" @@ -151,7 +151,7 @@ func (c *OSCommand) CreateFileWithContent(path string, content string) error { return err } - if err := ioutil.WriteFile(path, []byte(content), 0o644); err != nil { + if err := os.WriteFile(path, []byte(content), 0o644); err != nil { c.Log.Error(err) return utils.WrapError(err) } @@ -215,7 +215,7 @@ func (c *OSCommand) PipeCommands(commandStrings ...string) error { c.Log.Error(err) } - if b, err := ioutil.ReadAll(stderr); err == nil { + if b, err := io.ReadAll(stderr); err == nil { if len(b) > 0 { finalErrors = append(finalErrors, string(b)) } diff --git a/pkg/commands/oscommands/os_test.go b/pkg/commands/oscommands/os_test.go index 969224405..e9fc91424 100644 --- a/pkg/commands/oscommands/os_test.go +++ b/pkg/commands/oscommands/os_test.go @@ -1,7 +1,6 @@ package oscommands import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -149,7 +148,7 @@ func TestOSCommandAppendLineToFile(t *testing.T) { { filepath.Join(os.TempDir(), "testFile"), func(path string) { - if err := ioutil.WriteFile(path, []byte("hello"), 0o600); err != nil { + if err := os.WriteFile(path, []byte("hello"), 0o600); err != nil { panic(err) } }, @@ -160,7 +159,7 @@ func TestOSCommandAppendLineToFile(t *testing.T) { { filepath.Join(os.TempDir(), "emptyTestFile"), func(path string) { - if err := ioutil.WriteFile(path, []byte(""), 0o600); err != nil { + if err := os.WriteFile(path, []byte(""), 0o600); err != nil { panic(err) } }, @@ -171,7 +170,7 @@ func TestOSCommandAppendLineToFile(t *testing.T) { { filepath.Join(os.TempDir(), "testFileWithNewline"), func(path string) { - if err := ioutil.WriteFile(path, []byte("hello\n"), 0o600); err != nil { + if err := os.WriteFile(path, []byte("hello\n"), 0o600); err != nil { panic(err) } }, @@ -187,7 +186,7 @@ func TestOSCommandAppendLineToFile(t *testing.T) { if err := osCommand.AppendLineToFile(s.path, "world"); err != nil { panic(err) } - f, err := ioutil.ReadFile(s.path) + f, err := os.ReadFile(s.path) if err != nil { panic(err) } diff --git a/pkg/config/app_config.go b/pkg/config/app_config.go index 9806bcf58..49ff32b04 100644 --- a/pkg/config/app_config.go +++ b/pkg/config/app_config.go @@ -2,7 +2,6 @@ package config import ( "fmt" - "io/ioutil" "os" "path/filepath" "strings" @@ -152,7 +151,7 @@ func loadUserConfig(configFiles []string, base *UserConfig) (*UserConfig, error) file.Close() } - content, err := ioutil.ReadFile(path) + content, err := os.ReadFile(path) if err != nil { return nil, err } @@ -243,7 +242,7 @@ func (c *AppConfig) SaveAppState() error { return err } - err = ioutil.WriteFile(filepath, marshalledAppState, 0o644) + err = os.WriteFile(filepath, marshalledAppState, 0o644) if err != nil && os.IsPermission(err) { // apparently when people have read-only permissions they prefer us to fail silently return nil @@ -263,7 +262,7 @@ func loadAppState() (*AppState, error) { return nil, err } - appStateBytes, err := ioutil.ReadFile(filepath) + appStateBytes, err := os.ReadFile(filepath) if err != nil && !os.IsNotExist(err) { return nil, err } diff --git a/pkg/gui/controllers/merge_conflicts_controller.go b/pkg/gui/controllers/merge_conflicts_controller.go index 86d18a6a8..14ab748b1 100644 --- a/pkg/gui/controllers/merge_conflicts_controller.go +++ b/pkg/gui/controllers/merge_conflicts_controller.go @@ -2,6 +2,7 @@ package controllers import ( "io/ioutil" + "os" "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/gui/context" @@ -192,7 +193,7 @@ func (self *MergeConflictsController) HandleUndo() error { self.c.LogAction("Restoring file to previous state") self.c.LogCommand("Undoing last conflict resolution", false) - if err := ioutil.WriteFile(state.GetPath(), []byte(state.GetContent()), 0o644); err != nil { + if err := ioutil.os(state.GetPath(), []byte(state.GetContent()), 0o644); err != nil { return err } @@ -280,7 +281,7 @@ func (self *MergeConflictsController) resolveConflict(selection mergeconflicts.S self.c.LogAction("Resolve merge conflict") self.c.LogCommand(logStr, false) state.PushContent(content) - return true, ioutil.WriteFile(state.GetPath(), []byte(content), 0o644) + return true, os.WriteFile(state.GetPath(), []byte(content), 0o644) } func (self *MergeConflictsController) onLastConflictResolved() error { diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 5420ac9fa..f499ef367 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -2,7 +2,7 @@ package gui import ( "fmt" - "io/ioutil" + "io" "log" "os" "strings" @@ -656,8 +656,8 @@ func (gui *Gui) runSubprocess(cmdObj oscommands.ICmdObj) error { //nolint:unpara err := subprocess.Run() - subprocess.Stdout = ioutil.Discard - subprocess.Stderr = ioutil.Discard + subprocess.Stdout = io.Discard + subprocess.Stderr = io.Discard subprocess.Stdin = nil if gui.Config.GetUserConfig().PromptToReturnFromSubprocess { diff --git a/pkg/gui/recent_repos_panel.go b/pkg/gui/recent_repos_panel.go index df7656841..a301d0447 100644 --- a/pkg/gui/recent_repos_panel.go +++ b/pkg/gui/recent_repos_panel.go @@ -2,7 +2,6 @@ package gui import ( "fmt" - "io/ioutil" "os" "path/filepath" "strings" @@ -20,7 +19,7 @@ import ( func (gui *Gui) getCurrentBranch(path string) string { readHeadFile := func(path string) (string, error) { - headFile, err := ioutil.ReadFile(filepath.Join(path, "HEAD")) + headFile, err := os.ReadFile(filepath.Join(path, "HEAD")) if err == nil { content := strings.TrimSpace(string(headFile)) refsPrefix := "ref: refs/heads/" @@ -47,7 +46,7 @@ func (gui *Gui) getCurrentBranch(path string) string { } } else { // worktree - if worktreeGitDir, err := ioutil.ReadFile(gitDirPath); err == nil { + if worktreeGitDir, err := os.ReadFile(gitDirPath); err == nil { content := strings.TrimSpace(string(worktreeGitDir)) worktreePath := strings.TrimPrefix(content, "gitdir: ") if branch, err := readHeadFile(worktreePath); err == nil { diff --git a/pkg/gui/test_mode.go b/pkg/gui/test_mode.go index 7d1a5eb5a..97c291828 100644 --- a/pkg/gui/test_mode.go +++ b/pkg/gui/test_mode.go @@ -2,7 +2,6 @@ package gui import ( "encoding/json" - "io/ioutil" "log" "os" "strconv" @@ -93,7 +92,7 @@ func GetRecordingSpeed() float64 { func LoadRecording() (*gocui.Recording, error) { path := os.Getenv("REPLAY_EVENTS_FROM") - data, err := ioutil.ReadFile(path) + data, err := os.ReadFile(path) if err != nil { return nil, err } @@ -120,5 +119,5 @@ func SaveRecording(recording *gocui.Recording) error { path := recordEventsTo() - return ioutil.WriteFile(path, jsonEvents, 0o600) + return os.WriteFile(path, jsonEvents, 0o600) } diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index 880e270d3..458528be7 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -2,7 +2,6 @@ package components import ( "fmt" - "io/ioutil" "os" "path/filepath" @@ -38,7 +37,7 @@ func (s *Shell) RunCommand(cmdStr string) *Shell { func (s *Shell) CreateFile(path string, content string) *Shell { fullPath := filepath.Join(s.dir, path) - err := ioutil.WriteFile(fullPath, []byte(content), 0o644) + err := os.WriteFile(fullPath, []byte(content), 0o644) if err != nil { panic(fmt.Sprintf("error creating file: %s\n%s", fullPath, err)) } @@ -48,7 +47,7 @@ func (s *Shell) CreateFile(path string, content string) *Shell { func (s *Shell) UpdateFile(path string, content string) *Shell { fullPath := filepath.Join(s.dir, path) - err := ioutil.WriteFile(fullPath, []byte(content), 0o644) + err := os.WriteFile(fullPath, []byte(content), 0o644) if err != nil { panic(fmt.Sprintf("error updating file: %s\n%s", fullPath, err)) } diff --git a/pkg/integration/components/snapshot.go b/pkg/integration/components/snapshot.go index a75faf8e6..116db930f 100644 --- a/pkg/integration/components/snapshot.go +++ b/pkg/integration/components/snapshot.go @@ -168,7 +168,7 @@ func (self *Snapshotter) compareSnapshots() error { if expectedRepo != actualRepo { // get the log file and print it - bytes, err := ioutil.ReadFile(filepath.Join(self.paths.Config(), "development.log")) + bytes, err := os.ReadFile(filepath.Join(self.paths.Config(), "development.log")) if err != nil { return err } @@ -250,7 +250,7 @@ func generateSnapshot(dir string) (string, error) { return nil } - bytes, err := ioutil.ReadFile(path) + bytes, err := os.ReadFile(path) if err != nil { return err } diff --git a/pkg/integration/deprecated/integration.go b/pkg/integration/deprecated/integration.go index 2f9b2ab8c..b292809c9 100644 --- a/pkg/integration/deprecated/integration.go +++ b/pkg/integration/deprecated/integration.go @@ -178,7 +178,7 @@ func RunTests( } // get the log file and print it - bytes, err := ioutil.ReadFile(filepath.Join(configDir, "development.log")) + bytes, err := os.ReadFile(filepath.Join(configDir, "development.log")) if err != nil { return err } @@ -324,7 +324,7 @@ func LoadTests(testDir string) ([]*IntegrationTest, error) { tests := make([]*IntegrationTest, len(paths)) for i, path := range paths { - data, err := ioutil.ReadFile(path) + data, err := os.ReadFile(path) if err != nil { return nil, err } @@ -406,7 +406,7 @@ func generateSnapshot(dir string) (string, error) { return nil } - bytes, err := ioutil.ReadFile(path) + bytes, err := os.ReadFile(path) if err != nil { return err } diff --git a/pkg/utils/dummies.go b/pkg/utils/dummies.go index c5fba3556..e23880cce 100644 --- a/pkg/utils/dummies.go +++ b/pkg/utils/dummies.go @@ -1,18 +1,17 @@ package utils import ( - "io/ioutil" - "github.com/jesseduffield/lazygit/pkg/common" "github.com/jesseduffield/lazygit/pkg/config" "github.com/jesseduffield/lazygit/pkg/i18n" "github.com/sirupsen/logrus" + "io" ) // NewDummyLog creates a new dummy Log for testing func NewDummyLog() *logrus.Entry { log := logrus.New() - log.Out = ioutil.Discard + log.Out = io.Discard return log.WithField("test", "test") } From bc8050d8acb9cc162e03d3d93e1328feebcd4cb4 Mon Sep 17 00:00:00 2001 From: jiepeng <jiepengthegreat@126.com> Date: Tue, 13 Sep 2022 18:18:22 +0800 Subject: [PATCH 21/44] typo --- pkg/gui/controllers/merge_conflicts_controller.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/gui/controllers/merge_conflicts_controller.go b/pkg/gui/controllers/merge_conflicts_controller.go index 14ab748b1..40824099e 100644 --- a/pkg/gui/controllers/merge_conflicts_controller.go +++ b/pkg/gui/controllers/merge_conflicts_controller.go @@ -1,7 +1,6 @@ package controllers import ( - "io/ioutil" "os" "github.com/jesseduffield/gocui" @@ -193,7 +192,7 @@ func (self *MergeConflictsController) HandleUndo() error { self.c.LogAction("Restoring file to previous state") self.c.LogCommand("Undoing last conflict resolution", false) - if err := ioutil.os(state.GetPath(), []byte(state.GetContent()), 0o644); err != nil { + if err := os.WriteFile(state.GetPath(), []byte(state.GetContent()), 0o644); err != nil { return err } From 3d79c6a3d3bd939259f0a37b34acc9d5a7ab4759 Mon Sep 17 00:00:00 2001 From: TomCao New Macbook Pro <jiepengthegreat@126.com> Date: Wed, 14 Sep 2022 00:30:08 +0800 Subject: [PATCH 22/44] formatter --- pkg/commands/oscommands/gui_io.go | 3 ++- pkg/utils/dummies.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/commands/oscommands/gui_io.go b/pkg/commands/oscommands/gui_io.go index 495285a5f..10a8b2678 100644 --- a/pkg/commands/oscommands/gui_io.go +++ b/pkg/commands/oscommands/gui_io.go @@ -1,8 +1,9 @@ package oscommands import ( - "github.com/sirupsen/logrus" "io" + + "github.com/sirupsen/logrus" ) // this struct captures some IO stuff diff --git a/pkg/utils/dummies.go b/pkg/utils/dummies.go index e23880cce..08de78d1d 100644 --- a/pkg/utils/dummies.go +++ b/pkg/utils/dummies.go @@ -1,11 +1,12 @@ package utils import ( + "io" + "github.com/jesseduffield/lazygit/pkg/common" "github.com/jesseduffield/lazygit/pkg/config" "github.com/jesseduffield/lazygit/pkg/i18n" "github.com/sirupsen/logrus" - "io" ) // NewDummyLog creates a new dummy Log for testing From 438038a4f180978125f239787aa9fc253183d444 Mon Sep 17 00:00:00 2001 From: Ryooooooga <eial5q265e5@gmail.com> Date: Tue, 2 Aug 2022 08:32:28 +0900 Subject: [PATCH 23/44] fix(loaders/file.go): changed to ignore stderr when loading git status --- pkg/commands/git_cmd_obj_runner.go | 4 ++ pkg/commands/loaders/files.go | 2 +- pkg/commands/oscommands/cmd_obj.go | 6 +++ pkg/commands/oscommands/cmd_obj_runner.go | 48 +++++++++++++++++++ .../oscommands/fake_cmd_obj_runner.go | 5 ++ 5 files changed, 64 insertions(+), 1 deletion(-) diff --git a/pkg/commands/git_cmd_obj_runner.go b/pkg/commands/git_cmd_obj_runner.go index c57c2d2be..96cef3c61 100644 --- a/pkg/commands/git_cmd_obj_runner.go +++ b/pkg/commands/git_cmd_obj_runner.go @@ -21,6 +21,10 @@ func (self *gitCmdObjRunner) RunWithOutput(cmdObj oscommands.ICmdObj) (string, e return self.innerRunner.RunWithOutput(cmdObj) } +func (self *gitCmdObjRunner) RunWithOutputs(cmdObj oscommands.ICmdObj) (string, string, error) { + return self.innerRunner.RunWithOutputs(cmdObj) +} + func (self *gitCmdObjRunner) RunAndProcessLines(cmdObj oscommands.ICmdObj, onLine func(line string) (bool, error)) error { return self.innerRunner.RunAndProcessLines(cmdObj, onLine) } diff --git a/pkg/commands/loaders/files.go b/pkg/commands/loaders/files.go index db37da935..6d14bb590 100644 --- a/pkg/commands/loaders/files.go +++ b/pkg/commands/loaders/files.go @@ -87,7 +87,7 @@ func (c *FileLoader) GitStatus(opts GitStatusOptions) ([]FileStatus, error) { noRenamesFlag = " --no-renames" } - statusLines, err := c.cmd.New(fmt.Sprintf("git status %s --porcelain -z%s", opts.UntrackedFilesArg, noRenamesFlag)).DontLog().RunWithOutput() + statusLines, _, err := c.cmd.New(fmt.Sprintf("git status %s --porcelain -z%s", opts.UntrackedFilesArg, noRenamesFlag)).DontLog().RunWithOutputs() if err != nil { return []FileStatus{}, err } diff --git a/pkg/commands/oscommands/cmd_obj.go b/pkg/commands/oscommands/cmd_obj.go index 1a801c6fe..47a227f17 100644 --- a/pkg/commands/oscommands/cmd_obj.go +++ b/pkg/commands/oscommands/cmd_obj.go @@ -22,6 +22,8 @@ type ICmdObj interface { Run() error // runs the command and returns the output as a string, and an error if any RunWithOutput() (string, error) + // runs the command and returns stdout and stderr as a string, and an error if any + RunWithOutputs() (string, string, error) // runs the command and runs a callback function on each line of the output. If the callback returns true for the boolean value, we kill the process and return. RunAndProcessLines(onLine func(line string) (bool, error)) error @@ -162,6 +164,10 @@ func (self *CmdObj) RunWithOutput() (string, error) { return self.runner.RunWithOutput(self) } +func (self *CmdObj) RunWithOutputs() (string, string, error) { + return self.runner.RunWithOutputs(self) +} + func (self *CmdObj) RunAndProcessLines(onLine func(line string) (bool, error)) error { return self.runner.RunAndProcessLines(self, onLine) } diff --git a/pkg/commands/oscommands/cmd_obj_runner.go b/pkg/commands/oscommands/cmd_obj_runner.go index ba1489fe6..01cc0f460 100644 --- a/pkg/commands/oscommands/cmd_obj_runner.go +++ b/pkg/commands/oscommands/cmd_obj_runner.go @@ -15,6 +15,7 @@ import ( type ICmdObjRunner interface { Run(cmdObj ICmdObj) error RunWithOutput(cmdObj ICmdObj) (string, error) + RunWithOutputs(cmdObj ICmdObj) (string, string, error) RunAndProcessLines(cmdObj ICmdObj, onLine func(line string) (bool, error)) error } @@ -76,6 +77,31 @@ func (self *cmdObjRunner) RunWithOutput(cmdObj ICmdObj) (string, error) { return self.RunWithOutputAux(cmdObj) } +func (self *cmdObjRunner) RunWithOutputs(cmdObj ICmdObj) (string, string, error) { + if cmdObj.Mutex() != nil { + cmdObj.Mutex().Lock() + defer cmdObj.Mutex().Unlock() + } + + if cmdObj.GetCredentialStrategy() != NONE { + err := self.runWithCredentialHandling(cmdObj) + // for now we're not capturing output, just because it would take a little more + // effort and there's currently no use case for it. Some commands call RunWithOutputs + // but ignore the output, hence why we've got this check here. + return "", "", err + } + + if cmdObj.ShouldStreamOutput() { + err := self.runAndStream(cmdObj) + // for now we're not capturing output, just because it would take a little more + // effort and there's currently no use case for it. Some commands call RunWithOutputs + // but ignore the output, hence why we've got this check here. + return "", "", err + } + + return self.RunWithOutputsAux(cmdObj) +} + func (self *cmdObjRunner) RunWithOutputAux(cmdObj ICmdObj) (string, error) { self.log.WithField("command", cmdObj.ToString()).Debug("RunCommand") @@ -90,6 +116,28 @@ func (self *cmdObjRunner) RunWithOutputAux(cmdObj ICmdObj) (string, error) { return output, err } +func (self *cmdObjRunner) RunWithOutputsAux(cmdObj ICmdObj) (string, string, error) { + self.log.WithField("command", cmdObj.ToString()).Debug("RunCommand") + + if cmdObj.ShouldLog() { + self.logCmdObj(cmdObj) + } + + var outBuffer, errBuffer bytes.Buffer + cmd := cmdObj.GetCmd() + cmd.Stdout = &outBuffer + cmd.Stderr = &errBuffer + err := cmd.Run() + + stdout := outBuffer.String() + stderr, err := sanitisedCommandOutput(errBuffer.Bytes(), err) + if err != nil { + self.log.WithField("command", cmdObj.ToString()).Error(stderr) + } + + return stdout, stderr, err +} + func (self *cmdObjRunner) RunAndProcessLines(cmdObj ICmdObj, onLine func(line string) (bool, error)) error { if cmdObj.Mutex() != nil { cmdObj.Mutex().Lock() diff --git a/pkg/commands/oscommands/fake_cmd_obj_runner.go b/pkg/commands/oscommands/fake_cmd_obj_runner.go index d06861251..f553d8c63 100644 --- a/pkg/commands/oscommands/fake_cmd_obj_runner.go +++ b/pkg/commands/oscommands/fake_cmd_obj_runner.go @@ -44,6 +44,11 @@ func (self *FakeCmdObjRunner) RunWithOutput(cmdObj ICmdObj) (string, error) { return output, err } +func (self *FakeCmdObjRunner) RunWithOutputs(cmdObj ICmdObj) (string, string, error) { + output, err := self.RunWithOutput(cmdObj) + return output, "", err +} + func (self *FakeCmdObjRunner) RunAndProcessLines(cmdObj ICmdObj, onLine func(line string) (bool, error)) error { output, err := self.RunWithOutput(cmdObj) if err != nil { From 1c8292430765b391177856e6589b08038d6f0f28 Mon Sep 17 00:00:00 2001 From: Ryooooooga <eial5q265e5@gmail.com> Date: Fri, 23 Sep 2022 20:01:44 +0900 Subject: [PATCH 24/44] build: $ ./scripts/bump_gocui.sh --- go.mod | 8 +- go.sum | 15 +-- vendor/github.com/jesseduffield/gocui/edit.go | 6 ++ .../jesseduffield/gocui/text_area.go | 64 ++++++++++++- .../github.com/mattn/go-runewidth/README.md | 2 +- .../github.com/mattn/go-runewidth/go.test.sh | 12 --- .../mattn/go-runewidth/runewidth.go | 93 ++++++++++++++++++- .../mattn/go-runewidth/runewidth_appengine.go | 1 + .../mattn/go-runewidth/runewidth_js.go | 4 +- .../mattn/go-runewidth/runewidth_posix.go | 5 +- .../mattn/go-runewidth/runewidth_windows.go | 4 +- .../x/sys/windows/syscall_windows.go | 4 + .../golang.org/x/sys/windows/types_windows.go | 26 ++++++ .../x/sys/windows/zsyscall_windows.go | 19 ++++ vendor/modules.txt | 8 +- 15 files changed, 231 insertions(+), 40 deletions(-) delete mode 100644 vendor/github.com/mattn/go-runewidth/go.test.sh diff --git a/go.mod b/go.mod index 976225865..0f697c35a 100644 --- a/go.mod +++ b/go.mod @@ -18,14 +18,14 @@ require ( github.com/integrii/flaggy v1.4.0 github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 - github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6 + github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37 github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e github.com/jesseduffield/yaml v2.1.0+incompatible github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 github.com/kyokomi/emoji/v2 v2.2.8 github.com/lucasb-eyer/go-colorful v1.2.0 - github.com/mattn/go-runewidth v0.0.13 + github.com/mattn/go-runewidth v0.0.14 github.com/mgutz/str v1.2.0 github.com/pmezard/go-difflib v1.0.0 github.com/sahilm/fuzzy v0.1.0 @@ -67,8 +67,8 @@ require ( golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 // indirect golang.org/x/exp v0.0.0-20220318154914-8dddf5d87bd8 // indirect golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c // indirect - golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 // indirect - golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 // indirect + golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 // indirect + golang.org/x/term v0.0.0-20220919170432-7a66f970e087 // indirect golang.org/x/text v0.3.7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index ebb3b202b..7e1aeae88 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8T github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 h1:GOQrmaE8i+KEdB8NzAegKYd4tPn/inM0I1uo0NXFerg= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o= -github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6 h1:FgxhH7++BaLcDwldyNtxkeVUC2z7ur2QYtJ8Msgkgc0= -github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= +github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37 h1:EE21YiOAGGs4/K8l3V15w5ICJmDrfwhklm3adc4N/8A= +github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10/go.mod h1:aA97kHeNA+sj2Hbki0pvLslmE4CbDyhBeSSTUUnOuVo= github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e h1:uw/oo+kg7t/oeMs6sqlAwr85ND/9cpO3up3VxphxY0U= @@ -112,8 +112,9 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mgutz/str v1.2.0 h1:4IzWSdIz9qPQWLfKZ0rJcV0jcUDpxvP4JVZ4GXQyvSw= github.com/mgutz/str v1.2.0/go.mod h1:w1v0ofgLaJdoD0HpQ3fycxKD1WtxpjSo151pK/31q6w= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -194,11 +195,11 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 h1:ohgcoMbSofXygzo6AD2I1kz3BFmW1QArPYTtwEM3UXc= -golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 h1:h+EGohizhe9XlX18rfpa8k8RAc5XyaeamM+0VHRd4lc= +golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 h1:Q5284mrmYTpACcm+eAKjKJH48BBwSyfJqmmGDTtT8Vc= -golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220919170432-7a66f970e087 h1:tPwmk4vmvVCMdr98VgL4JH+qZxPL8fqlUOHnyOM8N3w= +golang.org/x/term v0.0.0-20220919170432-7a66f970e087/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= diff --git a/vendor/github.com/jesseduffield/gocui/edit.go b/vendor/github.com/jesseduffield/gocui/edit.go index dde27e76a..535ca40cc 100644 --- a/vendor/github.com/jesseduffield/gocui/edit.go +++ b/vendor/github.com/jesseduffield/gocui/edit.go @@ -49,10 +49,16 @@ func SimpleEditor(v *View, key Key, ch rune, mod Modifier) bool { v.TextArea.ToggleOverwrite() case key == KeyCtrlU: v.TextArea.DeleteToStartOfLine() + case key == KeyCtrlK: + v.TextArea.DeleteToEndOfLine() case key == KeyCtrlA || key == KeyHome: v.TextArea.GoToStartOfLine() case key == KeyCtrlE || key == KeyEnd: v.TextArea.GoToEndOfLine() + case key == KeyCtrlW: + v.TextArea.BackSpaceWord() + case key == KeyCtrlY: + v.TextArea.Yank() // TODO: see if we need all three of these conditions: maybe the final one is sufficient case ch != 0 && mod == 0 && unicode.IsPrint(ch): diff --git a/vendor/github.com/jesseduffield/gocui/text_area.go b/vendor/github.com/jesseduffield/gocui/text_area.go index 5c9ae31ea..731e1cd04 100644 --- a/vendor/github.com/jesseduffield/gocui/text_area.go +++ b/vendor/github.com/jesseduffield/gocui/text_area.go @@ -1,11 +1,21 @@ package gocui -import "github.com/mattn/go-runewidth" +import ( + "strings" + + "github.com/mattn/go-runewidth" +) + +const ( + WHITESPACES = " \t" + WORD_SEPARATORS = "*?_+-.[]~=/&;!#$%^(){}<>" +) type TextArea struct { content []rune cursor int overwrite bool + clipboard string } func (self *TextArea) TypeRune(r rune) { @@ -92,10 +102,25 @@ func (self *TextArea) DeleteToStartOfLine() { // otherwise, you delete everything up to the start of the current line, without // deleting the newline character newlineIndex := self.closestNewlineOnLeft() + self.clipboard = string(self.content[newlineIndex+1 : self.cursor]) self.content = append(self.content[:newlineIndex+1], self.content[self.cursor:]...) self.cursor = newlineIndex + 1 } +func (self *TextArea) DeleteToEndOfLine() { + if self.atEnd() { + return + } + if self.atLineEnd() { + self.content = append(self.content[:self.cursor], self.content[self.cursor+1:]...) + return + } + + lineEndIndex := self.closestNewlineOnRight() + self.clipboard = string(self.content[self.cursor:lineEndIndex]) + self.content = append(self.content[:self.cursor], self.content[lineEndIndex:]...) +} + func (self *TextArea) GoToStartOfLine() { if self.atLineStart() { return @@ -142,6 +167,43 @@ func (self *TextArea) atLineStart() bool { (len(self.content) > self.cursor-1 && self.content[self.cursor-1] == '\n') } +func (self *TextArea) atLineEnd() bool { + return self.atEnd() || + (len(self.content) > self.cursor && self.content[self.cursor] == '\n') +} + +func (self *TextArea) BackSpaceWord() { + if self.cursor == 0 { + return + } + if self.atLineStart() { + self.BackSpaceChar() + return + } + + right := self.cursor + for !self.atLineStart() && strings.ContainsRune(WHITESPACES, self.content[self.cursor-1]) { + self.cursor-- + } + separators := false + for !self.atLineStart() && strings.ContainsRune(WORD_SEPARATORS, self.content[self.cursor-1]) { + self.cursor-- + separators = true + } + if !separators { + for !self.atLineStart() && !strings.ContainsRune(WHITESPACES+WORD_SEPARATORS, self.content[self.cursor-1]) { + self.cursor-- + } + } + + self.clipboard = string(self.content[self.cursor:right]) + self.content = append(self.content[:self.cursor], self.content[right:]...) +} + +func (self *TextArea) Yank() { + self.TypeString(self.clipboard) +} + func (self *TextArea) GetCursorXY() (int, int) { cursorX := 0 cursorY := 0 diff --git a/vendor/github.com/mattn/go-runewidth/README.md b/vendor/github.com/mattn/go-runewidth/README.md index aa56ab96c..5e2cfd98c 100644 --- a/vendor/github.com/mattn/go-runewidth/README.md +++ b/vendor/github.com/mattn/go-runewidth/README.md @@ -1,7 +1,7 @@ go-runewidth ============ -[](https://travis-ci.org/mattn/go-runewidth) +[](https://github.com/mattn/go-runewidth/actions?query=workflow%3Atest) [](https://codecov.io/gh/mattn/go-runewidth) [](http://godoc.org/github.com/mattn/go-runewidth) [](https://goreportcard.com/report/github.com/mattn/go-runewidth) diff --git a/vendor/github.com/mattn/go-runewidth/go.test.sh b/vendor/github.com/mattn/go-runewidth/go.test.sh deleted file mode 100644 index 012162b07..000000000 --- a/vendor/github.com/mattn/go-runewidth/go.test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -e -echo "" > coverage.txt - -for d in $(go list ./... | grep -v vendor); do - go test -race -coverprofile=profile.out -covermode=atomic "$d" - if [ -f profile.out ]; then - cat profile.out >> coverage.txt - rm profile.out - fi -done diff --git a/vendor/github.com/mattn/go-runewidth/runewidth.go b/vendor/github.com/mattn/go-runewidth/runewidth.go index 3d7fa560b..7dfbb3be9 100644 --- a/vendor/github.com/mattn/go-runewidth/runewidth.go +++ b/vendor/github.com/mattn/go-runewidth/runewidth.go @@ -2,6 +2,7 @@ package runewidth import ( "os" + "strings" "github.com/rivo/uniseg" ) @@ -34,7 +35,13 @@ func handleEnv() { EastAsianWidth = env == "1" } // update DefaultCondition - DefaultCondition.EastAsianWidth = EastAsianWidth + if DefaultCondition.EastAsianWidth != EastAsianWidth { + DefaultCondition.EastAsianWidth = EastAsianWidth + if len(DefaultCondition.combinedLut) > 0 { + DefaultCondition.combinedLut = DefaultCondition.combinedLut[:0] + CreateLUT() + } + } } type interval struct { @@ -89,6 +96,7 @@ var nonprint = table{ // Condition have flag EastAsianWidth whether the current locale is CJK or not. type Condition struct { + combinedLut []byte EastAsianWidth bool StrictEmojiNeutral bool } @@ -104,10 +112,16 @@ func NewCondition() *Condition { // RuneWidth returns the number of cells in r. // See http://www.unicode.org/reports/tr11/ func (c *Condition) RuneWidth(r rune) int { + if r < 0 || r > 0x10FFFF { + return 0 + } + if len(c.combinedLut) > 0 { + return int(c.combinedLut[r>>1]>>(uint(r&1)*4)) & 3 + } // optimized version, verified by TestRuneWidthChecksums() if !c.EastAsianWidth { switch { - case r < 0x20 || r > 0x10FFFF: + case r < 0x20: return 0 case (r >= 0x7F && r <= 0x9F) || r == 0xAD: // nonprint return 0 @@ -124,7 +138,7 @@ func (c *Condition) RuneWidth(r rune) int { } } else { switch { - case r < 0 || r > 0x10FFFF || inTables(r, nonprint, combining): + case inTables(r, nonprint, combining): return 0 case inTable(r, narrow): return 1 @@ -138,6 +152,27 @@ func (c *Condition) RuneWidth(r rune) int { } } +// CreateLUT will create an in-memory lookup table of 557056 bytes for faster operation. +// This should not be called concurrently with other operations on c. +// If options in c is changed, CreateLUT should be called again. +func (c *Condition) CreateLUT() { + const max = 0x110000 + lut := c.combinedLut + if len(c.combinedLut) != 0 { + // Remove so we don't use it. + c.combinedLut = nil + } else { + lut = make([]byte, max/2) + } + for i := range lut { + i32 := int32(i * 2) + x0 := c.RuneWidth(i32) + x1 := c.RuneWidth(i32 + 1) + lut[i] = uint8(x0) | uint8(x1)<<4 + } + c.combinedLut = lut +} + // StringWidth return width as you can see func (c *Condition) StringWidth(s string) (width int) { g := uniseg.NewGraphemes(s) @@ -180,11 +215,47 @@ func (c *Condition) Truncate(s string, w int, tail string) string { return s[:pos] + tail } +// TruncateLeft cuts w cells from the beginning of the `s`. +func (c *Condition) TruncateLeft(s string, w int, prefix string) string { + if c.StringWidth(s) <= w { + return prefix + } + + var width int + pos := len(s) + + g := uniseg.NewGraphemes(s) + for g.Next() { + var chWidth int + for _, r := range g.Runes() { + chWidth = c.RuneWidth(r) + if chWidth > 0 { + break // See StringWidth() for details. + } + } + + if width+chWidth > w { + if width < w { + _, pos = g.Positions() + prefix += strings.Repeat(" ", width+chWidth-w) + } else { + pos, _ = g.Positions() + } + + break + } + + width += chWidth + } + + return prefix + s[pos:] +} + // Wrap return string wrapped with w cells func (c *Condition) Wrap(s string, w int) string { width := 0 out := "" - for _, r := range []rune(s) { + for _, r := range s { cw := c.RuneWidth(r) if r == '\n' { out += string(r) @@ -257,6 +328,11 @@ func Truncate(s string, w int, tail string) string { return DefaultCondition.Truncate(s, w, tail) } +// TruncateLeft cuts w cells from the beginning of the `s`. +func TruncateLeft(s string, w int, prefix string) string { + return DefaultCondition.TruncateLeft(s, w, prefix) +} + // Wrap return string wrapped with w cells func Wrap(s string, w int) string { return DefaultCondition.Wrap(s, w) @@ -271,3 +347,12 @@ func FillLeft(s string, w int) string { func FillRight(s string, w int) string { return DefaultCondition.FillRight(s, w) } + +// CreateLUT will create an in-memory lookup table of 557055 bytes for faster operation. +// This should not be called concurrently with other operations. +func CreateLUT() { + if len(DefaultCondition.combinedLut) > 0 { + return + } + DefaultCondition.CreateLUT() +} diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go b/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go index 7d99f6e52..84b6528df 100644 --- a/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go +++ b/vendor/github.com/mattn/go-runewidth/runewidth_appengine.go @@ -1,3 +1,4 @@ +//go:build appengine // +build appengine package runewidth diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_js.go b/vendor/github.com/mattn/go-runewidth/runewidth_js.go index c5fdf40ba..c2abbc2db 100644 --- a/vendor/github.com/mattn/go-runewidth/runewidth_js.go +++ b/vendor/github.com/mattn/go-runewidth/runewidth_js.go @@ -1,5 +1,5 @@ -// +build js -// +build !appengine +//go:build js && !appengine +// +build js,!appengine package runewidth diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_posix.go b/vendor/github.com/mattn/go-runewidth/runewidth_posix.go index 480ad7485..5a31d738e 100644 --- a/vendor/github.com/mattn/go-runewidth/runewidth_posix.go +++ b/vendor/github.com/mattn/go-runewidth/runewidth_posix.go @@ -1,6 +1,5 @@ -// +build !windows -// +build !js -// +build !appengine +//go:build !windows && !js && !appengine +// +build !windows,!js,!appengine package runewidth diff --git a/vendor/github.com/mattn/go-runewidth/runewidth_windows.go b/vendor/github.com/mattn/go-runewidth/runewidth_windows.go index d6a61777d..5f987a310 100644 --- a/vendor/github.com/mattn/go-runewidth/runewidth_windows.go +++ b/vendor/github.com/mattn/go-runewidth/runewidth_windows.go @@ -1,5 +1,5 @@ -// +build windows -// +build !appengine +//go:build windows && !appengine +// +build windows,!appengine package runewidth diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 29737b200..3f2cbb638 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -442,6 +442,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable //sys RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable +// Desktop Window Manager API (Dwmapi) +//sys DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute +//sys DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute + // syscall interface implementation for other packages // GetCurrentProcess returns the handle for the current process. diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index ef489f546..0c4add974 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -3232,3 +3232,29 @@ type GUIThreadInfo struct { CaretHandle HWND CaretRect Rect } + +const ( + DWMWA_NCRENDERING_ENABLED = 1 + DWMWA_NCRENDERING_POLICY = 2 + DWMWA_TRANSITIONS_FORCEDISABLED = 3 + DWMWA_ALLOW_NCPAINT = 4 + DWMWA_CAPTION_BUTTON_BOUNDS = 5 + DWMWA_NONCLIENT_RTL_LAYOUT = 6 + DWMWA_FORCE_ICONIC_REPRESENTATION = 7 + DWMWA_FLIP3D_POLICY = 8 + DWMWA_EXTENDED_FRAME_BOUNDS = 9 + DWMWA_HAS_ICONIC_BITMAP = 10 + DWMWA_DISALLOW_PEEK = 11 + DWMWA_EXCLUDED_FROM_PEEK = 12 + DWMWA_CLOAK = 13 + DWMWA_CLOAKED = 14 + DWMWA_FREEZE_REPRESENTATION = 15 + DWMWA_PASSIVE_UPDATE_MODE = 16 + DWMWA_USE_HOSTBACKDROPBRUSH = 17 + DWMWA_USE_IMMERSIVE_DARK_MODE = 20 + DWMWA_WINDOW_CORNER_PREFERENCE = 33 + DWMWA_BORDER_COLOR = 34 + DWMWA_CAPTION_COLOR = 35 + DWMWA_TEXT_COLOR = 36 + DWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37 +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 6c6f27ba5..96ba8559c 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -40,6 +40,7 @@ var ( modadvapi32 = NewLazySystemDLL("advapi32.dll") modcrypt32 = NewLazySystemDLL("crypt32.dll") moddnsapi = NewLazySystemDLL("dnsapi.dll") + moddwmapi = NewLazySystemDLL("dwmapi.dll") modiphlpapi = NewLazySystemDLL("iphlpapi.dll") modkernel32 = NewLazySystemDLL("kernel32.dll") modmswsock = NewLazySystemDLL("mswsock.dll") @@ -175,6 +176,8 @@ var ( procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute") + procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute") procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx") @@ -1534,6 +1537,22 @@ func DnsRecordListFree(rl *DNSRecord, freetype uint32) { return } +func DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { + r0, _, _ := syscall.Syscall6(procDwmGetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) { + r0, _, _ := syscall.Syscall6(procDwmSetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) if r0 != 0 { diff --git a/vendor/modules.txt b/vendor/modules.txt index aa1d34c6c..2619b0e18 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -172,7 +172,7 @@ github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem github.com/jesseduffield/go-git/v5/utils/merkletrie/index github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame github.com/jesseduffield/go-git/v5/utils/merkletrie/noder -# github.com/jesseduffield/gocui v0.3.1-0.20220916034937-22d48fda22d6 +# github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37 ## explicit; go 1.12 github.com/jesseduffield/gocui # github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 @@ -210,7 +210,7 @@ github.com/mattn/go-colorable # github.com/mattn/go-isatty v0.0.14 ## explicit; go 1.12 github.com/mattn/go-isatty -# github.com/mattn/go-runewidth v0.0.13 +# github.com/mattn/go-runewidth v0.0.14 ## explicit; go 1.9 github.com/mattn/go-runewidth # github.com/mgutz/str v1.2.0 @@ -291,14 +291,14 @@ golang.org/x/exp/slices golang.org/x/net/context golang.org/x/net/internal/socks golang.org/x/net/proxy -# golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 +# golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 ## explicit; go 1.17 golang.org/x/sys/cpu golang.org/x/sys/internal/unsafeheader golang.org/x/sys/plan9 golang.org/x/sys/unix golang.org/x/sys/windows -# golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 +# golang.org/x/term v0.0.0-20220919170432-7a66f970e087 ## explicit; go 1.17 golang.org/x/term # golang.org/x/text v0.3.7 From 212e19f598e9ea96939959f55a2cf7c422721212 Mon Sep 17 00:00:00 2001 From: Ryooooooga <eial5q265e5@gmail.com> Date: Fri, 23 Sep 2022 20:04:39 +0900 Subject: [PATCH 25/44] feat: add support for emacs keybindings --- pkg/gui/editors.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/gui/editors.go b/pkg/gui/editors.go index 6f40c6d58..2fd606a3b 100644 --- a/pkg/gui/editors.go +++ b/pkg/gui/editors.go @@ -38,10 +38,16 @@ func (gui *Gui) handleEditorKeypress(textArea *gocui.TextArea, key gocui.Key, ch textArea.ToggleOverwrite() case key == gocui.KeyCtrlU: textArea.DeleteToStartOfLine() + case key == gocui.KeyCtrlK: + textArea.DeleteToEndOfLine() case key == gocui.KeyCtrlA || key == gocui.KeyHome: textArea.GoToStartOfLine() case key == gocui.KeyCtrlE || key == gocui.KeyEnd: textArea.GoToEndOfLine() + case key == gocui.KeyCtrlW: + textArea.BackSpaceWord() + case key == gocui.KeyCtrlY: + textArea.Yank() // TODO: see if we need all three of these conditions: maybe the final one is sufficient case ch != 0 && mod == 0 && unicode.IsPrint(ch): From e00118376879e7be6633620a8e81c81148027540 Mon Sep 17 00:00:00 2001 From: README-bot <actions@users.noreply.github.com> Date: Sat, 24 Sep 2022 02:27:14 +0000 Subject: [PATCH 26/44] Updated README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2d03f5b94..ca8ae2243 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ A simple terminal UI for git commands, written in Go with the [gocui](https://gi </p> <p align="center"> -<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/kristijanhusak"><img src="https://github.com/kristijanhusak.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/zeevro"><img src="https://github.com/zeevro.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/bastianwegge"><img src="https://github.com/bastianwegge.png" width="60px" alt="" /></a><a href="https://github.com/m-vandeneede"><img src="https://github.com/m-vandeneede.png" width="60px" alt="" /></a><a href="https://github.com/henry174Ajou"><img src="https://github.com/henry174Ajou.png" width="60px" alt="" /></a><a href="https://github.com/akbarsha03"><img src="https://github.com/akbarsha03.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><!-- sponsors --> +<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/bastianwegge"><img src="https://github.com/bastianwegge.png" width="60px" alt="" /></a><a href="https://github.com/m-vandeneede"><img src="https://github.com/m-vandeneede.png" width="60px" alt="" /></a><a href="https://github.com/henry174Ajou"><img src="https://github.com/henry174Ajou.png" width="60px" alt="" /></a><a href="https://github.com/akbarsha03"><img src="https://github.com/akbarsha03.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><!-- sponsors --> </p> ## Elevator Pitch From 17df42e517cd66331f5680bb0622bbf18cdaee5f Mon Sep 17 00:00:00 2001 From: kawaemon <me@kawaemon.dev> Date: Sun, 26 Dec 2021 04:35:04 +0900 Subject: [PATCH 27/44] fix: scan to buffer to empty character input in stdin --- pkg/gui/gui.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index f499ef367..6ab2a916b 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -662,7 +662,10 @@ func (gui *Gui) runSubprocess(cmdObj oscommands.ICmdObj) error { //nolint:unpara if gui.Config.GetUserConfig().PromptToReturnFromSubprocess { fmt.Fprintf(os.Stdout, "\n%s", style.FgGreen.Sprint(gui.Tr.PressEnterToReturn)) - fmt.Scanln() // wait for enter press + + // scan to buffer to prevent run unintentional operations when TUI resumes. + var buffer string + fmt.Scanln(&buffer) // wait for enter press } return err From 41f86f65353e2e73545103ebcf87d86e29d08a1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= <luka.markusic@microblink.com> Date: Sat, 10 Sep 2022 07:35:10 +0200 Subject: [PATCH 28/44] Rebase merges by default --- pkg/commands/git_commands/rebase.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/commands/git_commands/rebase.go b/pkg/commands/git_commands/rebase.go index 9a8f94618..11c187f36 100644 --- a/pkg/commands/git_commands/rebase.go +++ b/pkg/commands/git_commands/rebase.go @@ -255,7 +255,7 @@ func (self *RebaseCommands) SquashAllAboveFixupCommits(sha string) error { return self.runSkipEditorCommand( self.cmd.New( fmt.Sprintf( - "git rebase --interactive --autostash --autosquash %s^", + "git rebase --interactive --rebase-merges --autostash --autosquash %s^", sha, ), ), From 4c7d363959287031453354f547a97a2658208c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= <luka.markusic@microblink.com> Date: Sat, 10 Sep 2022 17:00:19 +0200 Subject: [PATCH 29/44] Add CheckoutBranch and Merge helpers for integration tests --- pkg/integration/components/shell.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index 458528be7..6595b1e87 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -63,6 +63,10 @@ func (s *Shell) Checkout(name string) *Shell { return s.RunCommand("git checkout " + name) } +func (s *Shell) Merge(name string) *Shell { + return s.RunCommand("git merge --commit " + name) +} + func (s *Shell) GitAdd(path string) *Shell { return s.RunCommand(fmt.Sprintf("git add \"%s\"", path)) } From 0141bbde0e774de29c0e73e54d23c2c211f59cce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luka=20Marku=C5=A1i=C4=87?= <luka.markusic@microblink.com> Date: Sat, 10 Sep 2022 17:00:40 +0200 Subject: [PATCH 30/44] Add test for amending a merge commit --- pkg/integration/components/shell.go | 2 +- .../tests/interactive_rebase/amend_merge.go | 37 ++++++++++++++++++ pkg/integration/tests/tests.go | 1 + .../expected/repo/.git_keep/COMMIT_EDITMSG | 1 + .../expected/repo/.git_keep/FETCH_HEAD | 0 .../amend_merge/expected/repo/.git_keep/HEAD | 1 + .../expected/repo/.git_keep/ORIG_HEAD | 1 + .../expected/repo/.git_keep/config | 10 +++++ .../expected/repo/.git_keep/description | 1 + .../amend_merge/expected/repo/.git_keep/index | Bin 0 -> 286 bytes .../expected/repo/.git_keep/info/exclude | 6 +++ .../expected/repo/.git_keep/logs/HEAD | 5 +++ .../logs/refs/heads/development-branch | 2 + .../.git_keep/logs/refs/heads/feature-branch | 2 + .../30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d | Bin 0 -> 93 bytes .../47/d2739ba2c34690248c8f91b84bb54e8936899a | Bin 0 -> 27 bytes .../48/9361eca1233745c15acc9381322e97b4d44b57 | Bin 0 -> 57 bytes .../5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f | 2 + .../6b/584e8ece562ebffc15d38808cd6b98fc3d97ea | Bin 0 -> 22 bytes .../77/e1bb1effc5857c4d701219a001823432e3586d | 1 + .../a6/9464e3729a09e3a526d4a2db209ee43e64ba1c | 2 + .../.git_keep/refs/heads/development-branch | 1 + .../repo/.git_keep/refs/heads/feature-branch | 1 + .../amend_merge/expected/repo/initial-file | 1 + .../expected/repo/new-feature-file | 1 + .../amend_merge/expected/repo/post-merge-file | 1 + 26 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 pkg/integration/tests/interactive_rebase/amend_merge.go create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/FETCH_HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/47/d2739ba2c34690248c8f91b84bb54e8936899a create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/48/9361eca1233745c15acc9381322e97b4d44b57 create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index 6595b1e87..5f7fef350 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -64,7 +64,7 @@ func (s *Shell) Checkout(name string) *Shell { } func (s *Shell) Merge(name string) *Shell { - return s.RunCommand("git merge --commit " + name) + return s.RunCommand("git merge --commit --no-ff " + name) } func (s *Shell) GitAdd(path string) *Shell { diff --git a/pkg/integration/tests/interactive_rebase/amend_merge.go b/pkg/integration/tests/interactive_rebase/amend_merge.go new file mode 100644 index 000000000..d1b295cff --- /dev/null +++ b/pkg/integration/tests/interactive_rebase/amend_merge.go @@ -0,0 +1,37 @@ +package interactive_rebase + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var AmendMerge = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Amends a staged file to a merge commit.", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell. + NewBranch("development-branch"). + CreateFileAndAdd("initial-file", "content"). + Commit("initial commit"). + NewBranch("feature-branch"). // it's also checked out automatically + CreateFileAndAdd("new-feature-file", "new content"). + Commit("new feature commit"). + CheckoutBranch("development-branch"). + Merge("feature-branch"). + CreateFileAndAdd("post-merge-file", "content") + }, + Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { + assert.CommitCount(3) + + input.SwitchToCommitsWindow() + assert.CurrentViewName("commits") + + input.PressKeys(keys.Commits.AmendToCommit) + input.PressKeys(keys.Universal.Return) + + assert.MatchHeadCommitMessage(Contains("Merge")) + assert.CommitCount(3) + }, +}) diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index eb2fd83fa..d59177c7e 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -29,6 +29,7 @@ var tests = []*components.IntegrationTest{ branch.Rebase, branch.RebaseAndDrop, interactive_rebase.One, + interactive_rebase.AmendMerge, custom_commands.Basic, custom_commands.MultiplePrompts, custom_commands.MenuFromCommand, diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG new file mode 100644 index 000000000..857a5998b --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG @@ -0,0 +1 @@ +new feature commit diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/FETCH_HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/FETCH_HEAD new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD new file mode 100644 index 000000000..dbe0904e2 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/HEAD @@ -0,0 +1 @@ +ref: refs/heads/development-branch diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD new file mode 100644 index 000000000..6b03146bc --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD @@ -0,0 +1 @@ +a69464e3729a09e3a526d4a2db209ee43e64ba1c diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config new file mode 100644 index 000000000..8a266ea88 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config @@ -0,0 +1,10 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true +[user] + email = CI@example.com + name = CI +[commit] + gpgSign = false diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index new file mode 100644 index 0000000000000000000000000000000000000000..02e2692f47fedb6a6fb436d06aa938672bb4929f GIT binary patch literal 286 zcmZ?q402{*U|<4b=46@G&l&#zE``xRF)7C7@9P*C8kYd2UqCPedv=6h-?=co{eMI+ zcW|7|p7F<a`YQ&W%)HE!%)}hsw9K4TpiUqFnZuOA@(M-+g+S&3%|bDc+x=4U>_vy& zCaCoEPu$_X)vwd6a~6X@UTV2+T54iRX;CWFOt3lA9&UosQ1jNKnTOqd`~~^NCAzt( sMd>i(7(#+vU4dq>G3Xj97;rTo(myx-@JYEseYd~6mq>n!4^GJj0JzX)?*IS* literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD new file mode 100644 index 000000000..8f516843a --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD @@ -0,0 +1,5 @@ +0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 commit (initial): initial commit +a69464e3729a09e3a526d4a2db209ee43e64ba1c a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 checkout: moving from development-branch to feature-branch +a69464e3729a09e3a526d4a2db209ee43e64ba1c 5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f CI <CI@example.com> 1662823399 +0200 commit: new feature commit +5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 checkout: moving from feature-branch to development-branch +a69464e3729a09e3a526d4a2db209ee43e64ba1c 77e1bb1effc5857c4d701219a001823432e3586d CI <CI@example.com> 1662823399 +0200 merge feature-branch: Merge made by the 'ort' strategy. diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch new file mode 100644 index 000000000..e191d45d0 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 commit (initial): initial commit +a69464e3729a09e3a526d4a2db209ee43e64ba1c 77e1bb1effc5857c4d701219a001823432e3586d CI <CI@example.com> 1662823399 +0200 merge feature-branch: Merge made by the 'ort' strategy. diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch new file mode 100644 index 000000000..0825e687b --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 branch: Created from HEAD +a69464e3729a09e3a526d4a2db209ee43e64ba1c 5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f CI <CI@example.com> 1662823399 +0200 commit: new feature commit diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d new file mode 100644 index 0000000000000000000000000000000000000000..3b87e38964f0ee0bef41a17b53341dcc85ff690d GIT binary patch literal 93 zcmV-j0HXhR0V^p=O;xZkVK6i>Ff%bx$jr+u$xO`AP0P$lWyp^3>pK^wxBrjm<qnRs z*)#swPJabemzP?uo0ghbQd*P>QR{xGc=n>hZWB~``X}!2-s;zB);S9R8;m51B-k!= literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/47/d2739ba2c34690248c8f91b84bb54e8936899a b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/47/d2739ba2c34690248c8f91b84bb54e8936899a new file mode 100644 index 0000000000000000000000000000000000000000..c416a87e05b83ccdacb2040539807f0853995be9 GIT binary patch literal 27 icmb<m^geacKghr&<%G9xxW~Ek+MZ{%85wM)*xCV-m<f&m literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/48/9361eca1233745c15acc9381322e97b4d44b57 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/48/9361eca1233745c15acc9381322e97b4d44b57 new file mode 100644 index 0000000000000000000000000000000000000000..4ac136337e1d4823579eb6130bf93528e8016ad1 GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bx$jr+u$xO`AP0P$lWyp^3>pK^wxBrjm<qnRs P*)#swPJaaee}NL|xGoy} literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f new file mode 100644 index 000000000..7d41ab0db --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f @@ -0,0 +1,2 @@ +x��K +�@]�)z/H�g�ɀ��U�љ�A�|�����WT�K�4= ק��YR���-1l�R46����9��V�02�A|#�8�[-:�q�c"xh�J���X6�z�v���.i�nT�J+��Hgfw��T�����+������?> \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea new file mode 100644 index 0000000000000000000000000000000000000000..ec9764eae7ae13711d9505390685b84b0bafd229 GIT binary patch literal 22 dcmb<m^geacKgb~6<J@^|&$HT$49d<dp8#a02tEJ+ literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d new file mode 100644 index 000000000..7b142c36d --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d @@ -0,0 +1 @@ +x���j1ES�W�s�3�Y B0�r���]��!�|~��)Ͻ�9���9��U��'�"c`V�Px-�`�|1��|��mZ�4����HI}�@��R�hG��I{��i�F�y ���J?zf2s$���]��Ng�v:��vë���E(sJ�ٓ�ݾ� �Ի�O���bw(�v�x�჻.mu��m�����Z0 \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c new file mode 100644 index 000000000..ae807eb94 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c @@ -0,0 +1,2 @@ +x��K +�0@]��$���]��8`�1�D�� x���x�j-�ѥ"`c"�� Q���e�D�Ia�OkWT��W;`^�>/9s�7�q���&�<%�j��tL�����.�� ~���.� \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch new file mode 100644 index 000000000..e51ee7bdf --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch @@ -0,0 +1 @@ +77e1bb1effc5857c4d701219a001823432e3586d diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch new file mode 100644 index 000000000..e80dfebb2 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch @@ -0,0 +1 @@ +5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file new file mode 100644 index 000000000..6b584e8ec --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file @@ -0,0 +1 @@ +content \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file new file mode 100644 index 000000000..47d2739ba --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/new-feature-file @@ -0,0 +1 @@ +new content \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file new file mode 100644 index 000000000..6b584e8ec --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file @@ -0,0 +1 @@ +content \ No newline at end of file From 23d39c79b2ea59ef061906c5f0735efbaf9033ef Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Sat, 17 Sep 2022 11:58:24 -0700 Subject: [PATCH 31/44] update test --- pkg/integration/components/input.go | 6 +++++ .../tests/interactive_rebase/amend_merge.go | 25 +++++++++++++----- .../expected/repo/.git_keep/COMMIT_EDITMSG | 2 +- .../expected/repo/.git_keep/ORIG_HEAD | 2 +- .../expected/repo/.git_keep/config | 2 ++ .../amend_merge/expected/repo/.git_keep/index | Bin 286 -> 305 bytes .../expected/repo/.git_keep/info/exclude | 1 + .../expected/repo/.git_keep/logs/HEAD | 17 ++++++++---- .../logs/refs/heads/development-branch | 6 +++-- .../.git_keep/logs/refs/heads/feature-branch | 4 +-- .../30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d | Bin 93 -> 0 bytes .../34/9e7420fb0fcc3ff740eae5b9dc103a1261558e | Bin 0 -> 128 bytes .../3a/d14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 | Bin 0 -> 123 bytes .../3f/891fb57220f67735a13cb5a65d27c8ad388030 | Bin 0 -> 57 bytes .../48/9361eca1233745c15acc9381322e97b4d44b57 | Bin 57 -> 0 bytes .../5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f | 2 -- .../63/e06ef6d5baa80461d12e953ee7e75444180d8f | Bin 0 -> 39 bytes .../6b/584e8ece562ebffc15d38808cd6b98fc3d97ea | Bin 22 -> 0 bytes .../77/e1bb1effc5857c4d701219a001823432e3586d | 1 - .../78/02c86c6ce62289e32aa13d0c85dc3f733195cb | 2 ++ .../7a/02580e6e6ba96ea8fb9c7ebad7d03d00ec0643 | Bin 0 -> 36 bytes .../7b/d422e3608d9bcfeef85748c90a5ec114fc2c17 | Bin 0 -> 93 bytes .../a6/9464e3729a09e3a526d4a2db209ee43e64ba1c | 2 -- .../d1/c7801838f293fe8f4b49dae6b4919d0359e6e6 | Bin 0 -> 154 bytes .../f5/17de66e2a158d4a1d85246611cae9ca23a938d | 2 ++ .../f6/8c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 | 2 ++ .../.git_keep/refs/heads/development-branch | 2 +- .../repo/.git_keep/refs/heads/feature-branch | 2 +- .../amend_merge/expected/repo/initial-file | 2 +- .../amend_merge/expected/repo/post-merge-file | 2 +- 30 files changed, 58 insertions(+), 26 deletions(-) delete mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/34/9e7420fb0fcc3ff740eae5b9dc103a1261558e create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/3a/d14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/3f/891fb57220f67735a13cb5a65d27c8ad388030 delete mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/48/9361eca1233745c15acc9381322e97b4d44b57 delete mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/63/e06ef6d5baa80461d12e953ee7e75444180d8f delete mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea delete mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/78/02c86c6ce62289e32aa13d0c85dc3f733195cb create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/7a/02580e6e6ba96ea8fb9c7ebad7d03d00ec0643 create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/7b/d422e3608d9bcfeef85748c90a5ec114fc2c17 delete mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/d1/c7801838f293fe8f4b49dae6b4919d0359e6e6 create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f5/17de66e2a158d4a1d85246611cae9ca23a938d create mode 100644 test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f6/8c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 diff --git a/pkg/integration/components/input.go b/pkg/integration/components/input.go index 61c78e9eb..61b0f771f 100644 --- a/pkg/integration/components/input.go +++ b/pkg/integration/components/input.go @@ -76,6 +76,12 @@ func (self *Input) Confirm() { self.pressKey(self.keys.Universal.Confirm) } +func (self *Input) ProceedWhenAsked(matcher *matcher) { + self.assert.InConfirm() + self.assert.MatchCurrentViewContent(matcher) + self.Confirm() +} + // i.e. same as Confirm func (self *Input) Enter() { self.pressKey(self.keys.Universal.Confirm) diff --git a/pkg/integration/tests/interactive_rebase/amend_merge.go b/pkg/integration/tests/interactive_rebase/amend_merge.go index d1b295cff..e01e79a78 100644 --- a/pkg/integration/tests/interactive_rebase/amend_merge.go +++ b/pkg/integration/tests/interactive_rebase/amend_merge.go @@ -5,6 +5,11 @@ import ( . "github.com/jesseduffield/lazygit/pkg/integration/components" ) +var ( + postMergeFileContent = "post merge file content" + postMergeFilename = "post-merge-file" +) + var AmendMerge = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Amends a staged file to a merge commit.", ExtraCmdArgs: "", @@ -13,14 +18,14 @@ var AmendMerge = NewIntegrationTest(NewIntegrationTestArgs{ SetupRepo: func(shell *Shell) { shell. NewBranch("development-branch"). - CreateFileAndAdd("initial-file", "content"). + CreateFileAndAdd("initial-file", "initial file content"). Commit("initial commit"). NewBranch("feature-branch"). // it's also checked out automatically CreateFileAndAdd("new-feature-file", "new content"). Commit("new feature commit"). - CheckoutBranch("development-branch"). + Checkout("development-branch"). Merge("feature-branch"). - CreateFileAndAdd("post-merge-file", "content") + CreateFileAndAdd(postMergeFilename, postMergeFileContent) }, Run: func(shell *Shell, input *Input, assert *Assert, keys config.KeybindingConfig) { assert.CommitCount(3) @@ -28,10 +33,18 @@ var AmendMerge = NewIntegrationTest(NewIntegrationTestArgs{ input.SwitchToCommitsWindow() assert.CurrentViewName("commits") - input.PressKeys(keys.Commits.AmendToCommit) - input.PressKeys(keys.Universal.Return) + mergeCommitMessage := "Merge branch 'feature-branch' into development-branch" + assert.MatchHeadCommitMessage(Contains(mergeCommitMessage)) - assert.MatchHeadCommitMessage(Contains("Merge")) + input.PressKeys(keys.Commits.AmendToCommit) + input.ProceedWhenAsked(Contains("Are you sure you want to amend this commit with your staged files?")) + + // assuring we haven't added a brand new commit assert.CommitCount(3) + assert.MatchHeadCommitMessage(Contains(mergeCommitMessage)) + + // assuring the post-merge file shows up in the merge commit. + assert.MatchMainViewContent(Contains(postMergeFilename)) + assert.MatchMainViewContent(Contains("++" + postMergeFileContent)) }, }) diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG index 857a5998b..de6160af5 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/COMMIT_EDITMSG @@ -1 +1 @@ -new feature commit +fixup! Merge branch 'feature-branch' into development-branch diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD index 6b03146bc..4829a07d0 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/ORIG_HEAD @@ -1 +1 @@ -a69464e3729a09e3a526d4a2db209ee43e64ba1c +7802c86c6ce62289e32aa13d0c85dc3f733195cb diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config index 8a266ea88..8a748ce32 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/config @@ -3,6 +3,8 @@ filemode = true bare = false logallrefupdates = true + ignorecase = true + precomposeunicode = true [user] email = CI@example.com name = CI diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/index index 02e2692f47fedb6a6fb436d06aa938672bb4929f..01d1d03a330ea96f731b83814d0c29100ce2253c 100644 GIT binary patch literal 305 zcmZ?q402{*U|<4b=43Uo93|hXZWztTz`)8<;JTK9p>YWV1LIeq8W9k#Vv69)%U+qc z;`f}oUDq$zGQ44PX5h)p%Ph%E%+XED%t-~R0s^2pdCYDq0x%k4o|`|KdED-oif1o6 z>^4EAr+?xO@2!5FW}UMb1oBeLb<<K4OG=AUp=N^3DM(O<(NOcE(99E0evtR=>aG<m zi5K;z+C6_B;v&J@&%j@hUtFS_n_83(Gmar7$ki3-Oi2b~1p_XVc_j+J`OnyYcX;)5 h=N$nnp~TQW-d9?aoUI=%e>LY-hkGVd((S!b4*=k>Tu}f3 literal 286 zcmZ?q402{*U|<4b=46@G&l&#zE``xRF)7C7@9P*C8kYd2UqCPedv=6h-?=co{eMI+ zcW|7|p7F<a`YQ&W%)HE!%)}hsw9K4TpiUqFnZuOA@(M-+g+S&3%|bDc+x=4U>_vy& zCaCoEPu$_X)vwd6a~6X@UTV2+T54iRX;CWFOt3lA9&UosQ1jNKnTOqd`~~^NCAzt( sMd>i(7(#+vU4dq>G3Xj97;rTo(myx-@JYEseYd~6mq>n!4^GJj0JzX)?*IS* diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude index a5196d1be..8e9f2071f 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/info/exclude @@ -4,3 +4,4 @@ # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~ +.DS_Store diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD index 8f516843a..bf29df758 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/HEAD @@ -1,5 +1,12 @@ -0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 commit (initial): initial commit -a69464e3729a09e3a526d4a2db209ee43e64ba1c a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 checkout: moving from development-branch to feature-branch -a69464e3729a09e3a526d4a2db209ee43e64ba1c 5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f CI <CI@example.com> 1662823399 +0200 commit: new feature commit -5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 checkout: moving from feature-branch to development-branch -a69464e3729a09e3a526d4a2db209ee43e64ba1c 77e1bb1effc5857c4d701219a001823432e3586d CI <CI@example.com> 1662823399 +0200 merge feature-branch: Merge made by the 'ort' strategy. +0000000000000000000000000000000000000000 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 CI <CI@example.com> 1663440492 -0700 commit (initial): initial commit +3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 CI <CI@example.com> 1663440492 -0700 checkout: moving from development-branch to feature-branch +3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 d1c7801838f293fe8f4b49dae6b4919d0359e6e6 CI <CI@example.com> 1663440492 -0700 commit: new feature commit +d1c7801838f293fe8f4b49dae6b4919d0359e6e6 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 CI <CI@example.com> 1663440492 -0700 checkout: moving from feature-branch to development-branch +3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 f68c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 CI <CI@example.com> 1663440492 -0700 merge feature-branch: Merge made by the 'recursive' strategy. +f68c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 7802c86c6ce62289e32aa13d0c85dc3f733195cb CI <CI@example.com> 1663440493 -0700 commit: fixup! Merge branch 'feature-branch' into development-branch +7802c86c6ce62289e32aa13d0c85dc3f733195cb 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 CI <CI@example.com> 1663440494 -0700 rebase (start): checkout f68c5b48c653ca6ab23abd7606fe8fa8cc8d5b15^ +3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 d1c7801838f293fe8f4b49dae6b4919d0359e6e6 CI <CI@example.com> 1663440494 -0700 rebase: fast-forward +d1c7801838f293fe8f4b49dae6b4919d0359e6e6 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 CI <CI@example.com> 1663440494 -0700 rebase (reset): 'onto' +3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 f68c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 CI <CI@example.com> 1663440494 -0700 rebase: fast-forward +f68c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 f517de66e2a158d4a1d85246611cae9ca23a938d CI <CI@example.com> 1663440494 -0700 rebase (fixup): Merge branch 'feature-branch' into development-branch +f517de66e2a158d4a1d85246611cae9ca23a938d f517de66e2a158d4a1d85246611cae9ca23a938d CI <CI@example.com> 1663440494 -0700 rebase (finish): returning to refs/heads/development-branch diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch index e191d45d0..c7353e0e3 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/development-branch @@ -1,2 +1,4 @@ -0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 commit (initial): initial commit -a69464e3729a09e3a526d4a2db209ee43e64ba1c 77e1bb1effc5857c4d701219a001823432e3586d CI <CI@example.com> 1662823399 +0200 merge feature-branch: Merge made by the 'ort' strategy. +0000000000000000000000000000000000000000 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 CI <CI@example.com> 1663440492 -0700 commit (initial): initial commit +3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 f68c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 CI <CI@example.com> 1663440492 -0700 merge feature-branch: Merge made by the 'recursive' strategy. +f68c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 7802c86c6ce62289e32aa13d0c85dc3f733195cb CI <CI@example.com> 1663440493 -0700 commit: fixup! Merge branch 'feature-branch' into development-branch +7802c86c6ce62289e32aa13d0c85dc3f733195cb f517de66e2a158d4a1d85246611cae9ca23a938d CI <CI@example.com> 1663440494 -0700 rebase (finish): refs/heads/development-branch onto 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch index 0825e687b..2d2177acc 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/logs/refs/heads/feature-branch @@ -1,2 +1,2 @@ -0000000000000000000000000000000000000000 a69464e3729a09e3a526d4a2db209ee43e64ba1c CI <CI@example.com> 1662823399 +0200 branch: Created from HEAD -a69464e3729a09e3a526d4a2db209ee43e64ba1c 5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f CI <CI@example.com> 1662823399 +0200 commit: new feature commit +0000000000000000000000000000000000000000 3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 CI <CI@example.com> 1663440492 -0700 branch: Created from HEAD +3ad14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 d1c7801838f293fe8f4b49dae6b4919d0359e6e6 CI <CI@example.com> 1663440492 -0700 commit: new feature commit diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/30/2ccf67433ac0eae0af16e7ad84e0fca8690f2d deleted file mode 100644 index 3b87e38964f0ee0bef41a17b53341dcc85ff690d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmV-j0HXhR0V^p=O;xZkVK6i>Ff%bx$jr+u$xO`AP0P$lWyp^3>pK^wxBrjm<qnRs z*)#swPJabemzP?uo0ghbQd*P>QR{xGc=n>hZWB~``X}!2-s;zB);S9R8;m51B-k!= diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/34/9e7420fb0fcc3ff740eae5b9dc103a1261558e b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/34/9e7420fb0fcc3ff740eae5b9dc103a1261558e new file mode 100644 index 0000000000000000000000000000000000000000..5f350fcff7689be1cedb988a54cbb6af10f32e89 GIT binary patch literal 128 zcmV-`0Du2@0V^p=O;s>7GG{O}FfcPQQOL~8EXhpF(M`+DNoA;Fir~x3UYWPz_nf+2 z*Du&IykT>Os>@3)*G)@JEGaEYg{XDER6KjpVYdk?J^d4RcyIOVH0zuNRa=l>T%wzs iT9gh|n*1Q|+tpnwSQ0PlO|^UeJj6wUw;upBfi$|t^*itY literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/3a/d14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/3a/d14f8b4ed479f2fd9d8d4f7fe2a9913771b7f3 new file mode 100644 index 0000000000000000000000000000000000000000..0ac8eaeca224797ad80ebd692f5aa059808274c2 GIT binary patch literal 123 zcmV->0EGW|0ga7Y3c@fD0R7G>_5#W#n^!@k(61h2n<f}&jFc66d<$N{-(iMHy|pT! z9bIJ48K}fTm&FBRu=o(jv8J>*_HH#HMP4aJBvky7XWwC(;Xch{KDfQNd`rDOKzmQt dq8$ueF(9gwo)gJ`>Z-n~RNmm%sV^6QF79mQIuQT> literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/3f/891fb57220f67735a13cb5a65d27c8ad388030 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/3f/891fb57220f67735a13cb5a65d27c8ad388030 new file mode 100644 index 0000000000000000000000000000000000000000..057b302dc63b77dfa185ad0b0bbeda88f7ded413 GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bx$jr+u$xO`AP0P$lWvF6`;LFQinYZHioVs1t PFW54?VRHrmc8U?5wZ$4+ literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/48/9361eca1233745c15acc9381322e97b4d44b57 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/48/9361eca1233745c15acc9381322e97b4d44b57 deleted file mode 100644 index 4ac136337e1d4823579eb6130bf93528e8016ad1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bx$jr+u$xO`AP0P$lWyp^3>pK^wxBrjm<qnRs P*)#swPJaaee}NL|xGoy} diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f deleted file mode 100644 index 7d41ab0db..000000000 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/5e/62a9dc2e1352e7ee6ecf17033e2ed3382efc6f +++ /dev/null @@ -1,2 +0,0 @@ -x��K -�@]�)z/H�g�ɀ��U�љ�A�|�����WT�K�4= ק��YR���-1l�R46����9��V�02�A|#�8�[-:�q�c"xh�J���X6�z�v���.i�nT�J+��Hgfw��T�����+������?> \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/63/e06ef6d5baa80461d12e953ee7e75444180d8f b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/63/e06ef6d5baa80461d12e953ee7e75444180d8f new file mode 100644 index 0000000000000000000000000000000000000000..21a235054c0b5ff6bb0d831eaa312997128fb477 GIT binary patch literal 39 vcmb<m^geacKghr+P2+^VUf>B|T`&JokJD#7Lp{!&*Y-TC&B(AUit8HyEpHEA literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/6b/584e8ece562ebffc15d38808cd6b98fc3d97ea deleted file mode 100644 index ec9764eae7ae13711d9505390685b84b0bafd229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22 dcmb<m^geacKgb~6<J@^|&$HT$49d<dp8#a02tEJ+ diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d deleted file mode 100644 index 7b142c36d..000000000 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/77/e1bb1effc5857c4d701219a001823432e3586d +++ /dev/null @@ -1 +0,0 @@ -x���j1ES�W�s�3�Y B0�r���]��!�|~��)Ͻ�9���9��U��'�"c`V�Px-�`�|1��|��mZ�4����HI}�@��R�hG��I{��i�F�y ���J?zf2s$���]��Ng�v:��vë���E(sJ�ٓ�ݾ� �Ի�O���bw(�v�x�჻.mu��m�����Z0 \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/78/02c86c6ce62289e32aa13d0c85dc3f733195cb b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/78/02c86c6ce62289e32aa13d0c85dc3f733195cb new file mode 100644 index 000000000..e99473942 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/78/02c86c6ce62289e32aa13d0c85dc3f733195cb @@ -0,0 +1,2 @@ +x��Mj�0F��)���R$��J �,z��x�1D�r��kh���xTK�;.~��֍ݠ%k!�"�iF�y��h�f���j��K �|v�����`1O1� �Q�|6^��o��� +����O,띿��o0!X�-u�Z����ͻ��������!7\�a�[��?`^z��|�k��_B���N� \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/7a/02580e6e6ba96ea8fb9c7ebad7d03d00ec0643 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/7a/02580e6e6ba96ea8fb9c7ebad7d03d00ec0643 new file mode 100644 index 0000000000000000000000000000000000000000..c30233de17aa43a1c80be7ab20fc51d5103224b7 GIT binary patch literal 36 scmb<m^geacKghr+;l!EKIwyV31bUo4;~DC4?!30=S#3s!_Pw0X0W!-FdjJ3c literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/7b/d422e3608d9bcfeef85748c90a5ec114fc2c17 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/7b/d422e3608d9bcfeef85748c90a5ec114fc2c17 new file mode 100644 index 0000000000000000000000000000000000000000..0b10fcf3ffe56ef4b20ea3ad65b3074f61e89e02 GIT binary patch literal 93 zcmV-j0HXhR0V^p=O;xZkVK6i>Ff%bx$jr+u$xO`AP0P$lWvF6`;LFQinYZHioVs1t zFW54?VRMG6%S$cSO-oHIDJ@EcsCB<oJbTe$w+Sje{S$Y1Z}sam>zoAu*>)p7;leAW literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c deleted file mode 100644 index ae807eb94..000000000 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/a6/9464e3729a09e3a526d4a2db209ee43e64ba1c +++ /dev/null @@ -1,2 +0,0 @@ -x��K -�0@]��$���]��8`�1�D�� x���x�j-�ѥ"`c"�� Q���e�D�Ia�OkWT��W;`^�>/9s�7�q���&�<%�j��tL�����.�� ~���.� \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/d1/c7801838f293fe8f4b49dae6b4919d0359e6e6 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/d1/c7801838f293fe8f4b49dae6b4919d0359e6e6 new file mode 100644 index 0000000000000000000000000000000000000000..abe014bbcd74657bfb18ee1fa5645b48d85895a0 GIT binary patch literal 154 zcmV;L0A>Gp0gaAZ3c@fD0R7G>_5w;C+in6PLce;9Ja$nqZ3!uQd<$N{-(dzOueClq zSUsG2V+KkEtz|cAUqZ^lEPf#LIp{cWHU=fzY)Eaf@zTM?av-0O3sMj(B@|y!NZ7^@ zj3Y9M#HqOV$J$_;;X2KC{=~Yy_>$Lp12c{eQDd-h)}*yM=rPs#PhBni2I1KE#_(&^ I7yqa~ae(kg&j0`b literal 0 HcmV?d00001 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f5/17de66e2a158d4a1d85246611cae9ca23a938d b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f5/17de66e2a158d4a1d85246611cae9ca23a938d new file mode 100644 index 000000000..3d42ec640 --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f5/17de66e2a158d4a1d85246611cae9ca23a938d @@ -0,0 +1,2 @@ +x���jAD�Wt�Hf��9@�"��9�-�fwFƟ�˱���^����m� �et�,Gx6J��R��g��9�Z��I��9`�R�2Ȧ�YBfT�Q��XCe��b��{���?�����1� +�p�X�:Ve�7�Ǹ���:�/��Nm�㵬퍴s�Yq4tT^�i_w��p~���'(���+i<:���@�e�T������yL?2#Y| \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f6/8c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f6/8c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 new file mode 100644 index 000000000..72c90791a --- /dev/null +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/objects/f6/8c5b48c653ca6ab23abd7606fe8fa8cc8d5b15 @@ -0,0 +1,2 @@ +x���jC1DS߯�Ε�kiB�r����������C>?�����9�i�<����U!W�4&Gµ���)#5v��{����V�.b�}��*�ق Z6 ��ǜ}��x�-���GS2��R4��Y\<�&MSy����|����M�ʼ�����+��"�Cptٹi_w���ħw� +���]�`Zƣ��ඌD?��n���{L�r[Y� \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch index e51ee7bdf..8dec112d4 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/development-branch @@ -1 +1 @@ -77e1bb1effc5857c4d701219a001823432e3586d +f517de66e2a158d4a1d85246611cae9ca23a938d diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch index e80dfebb2..61eacdc31 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/.git_keep/refs/heads/feature-branch @@ -1 +1 @@ -5e62a9dc2e1352e7ee6ecf17033e2ed3382efc6f +d1c7801838f293fe8f4b49dae6b4919d0359e6e6 diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file index 6b584e8ec..7a02580e6 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/initial-file @@ -1 +1 @@ -content \ No newline at end of file +initial file content \ No newline at end of file diff --git a/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file b/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file index 6b584e8ec..63e06ef6d 100644 --- a/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file +++ b/test/integration_new/interactive_rebase/amend_merge/expected/repo/post-merge-file @@ -1 +1 @@ -content \ No newline at end of file +post merge file content \ No newline at end of file From 19df238b7792e8b7c7cf1889583ed45d786e1c7b Mon Sep 17 00:00:00 2001 From: Ryooooooga <eial5q265e5@gmail.com> Date: Fri, 30 Sep 2022 21:10:56 +0900 Subject: [PATCH 32/44] feat: allow `OSCommand.Quote` to be invoked within a custom command --- docs/Custom_Command_Keybindings.md | 2 +- .../services/custom_commands/handler_creator.go | 7 ++++++- pkg/gui/services/custom_commands/resolver.go | 17 ----------------- pkg/utils/template.go | 4 ++-- 4 files changed, 9 insertions(+), 21 deletions(-) diff --git a/docs/Custom_Command_Keybindings.md b/docs/Custom_Command_Keybindings.md index ca966799e..09708d54c 100644 --- a/docs/Custom_Command_Keybindings.md +++ b/docs/Custom_Command_Keybindings.md @@ -8,7 +8,7 @@ customCommands: command: 'hub browse -- "commit/{{.SelectedLocalCommit.Sha}}"' context: 'commits' - key: 'a' - command: "git {{if .SelectedFile.HasUnstagedChanges}} add {{else}} reset {{end}} {{.SelectedFile.Name}}" + command: "git {{if .SelectedFile.HasUnstagedChanges}} add {{else}} reset {{end}} {{.SelectedFile.Name | Quote}}" context: 'files' description: 'toggle file staged' - key: 'C' diff --git a/pkg/gui/services/custom_commands/handler_creator.go b/pkg/gui/services/custom_commands/handler_creator.go index 839f70adf..9b30041e3 100644 --- a/pkg/gui/services/custom_commands/handler_creator.go +++ b/pkg/gui/services/custom_commands/handler_creator.go @@ -2,6 +2,7 @@ package custom_commands import ( "strings" + "text/template" "github.com/jesseduffield/generics/slices" "github.com/jesseduffield/lazygit/pkg/commands" @@ -166,7 +167,11 @@ func (self *HandlerCreator) getResolveTemplateFn(form map[string]string, promptR Form: form, } - return func(templateStr string) (string, error) { return utils.ResolveTemplate(templateStr, objects) } + funcs := template.FuncMap{ + "Quote": self.os.Quote, + } + + return func(templateStr string) (string, error) { return utils.ResolveTemplate(templateStr, objects, funcs) } } func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, sessionState *SessionState, promptResponses []string, form map[string]string) error { diff --git a/pkg/gui/services/custom_commands/resolver.go b/pkg/gui/services/custom_commands/resolver.go index 4702d36c4..4c32a51ca 100644 --- a/pkg/gui/services/custom_commands/resolver.go +++ b/pkg/gui/services/custom_commands/resolver.go @@ -1,9 +1,6 @@ package custom_commands import ( - "bytes" - "text/template" - "github.com/jesseduffield/lazygit/pkg/common" "github.com/jesseduffield/lazygit/pkg/config" ) @@ -110,17 +107,3 @@ type CustomCommandObject struct { PromptResponses []string Form map[string]string } - -func ResolveTemplate(templateStr string, object interface{}) (string, error) { - tmpl, err := template.New("template").Parse(templateStr) - if err != nil { - return "", err - } - - var buf bytes.Buffer - if err := tmpl.Execute(&buf, object); err != nil { - return "", err - } - - return buf.String(), nil -} diff --git a/pkg/utils/template.go b/pkg/utils/template.go index 41388ae3a..d98a68b99 100644 --- a/pkg/utils/template.go +++ b/pkg/utils/template.go @@ -6,8 +6,8 @@ import ( "text/template" ) -func ResolveTemplate(templateStr string, object interface{}) (string, error) { - tmpl, err := template.New("template").Option("missingkey=error").Parse(templateStr) +func ResolveTemplate(templateStr string, object interface{}, funcs template.FuncMap) (string, error) { + tmpl, err := template.New("template").Funcs(funcs).Option("missingkey=error").Parse(templateStr) if err != nil { return "", err } From e16f1ba84f84213a8e4af4c7c4c310b8034a8ed3 Mon Sep 17 00:00:00 2001 From: Ryooooooga <eial5q265e5@gmail.com> Date: Sat, 1 Oct 2022 20:51:44 +0900 Subject: [PATCH 33/44] test: add integration test for `Quote` --- .../tests/custom_commands/form_prompts.go | 10 +++++----- .../expected/repo/.git_keep/commit-template.txt | 0 .../form_prompts/expected/repo/.git_keep/config | 4 ++++ .../expected/repo/.git_keep/info/exclude | 6 ------ .../expected/repo/.git_keep/logs/HEAD | 2 +- .../repo/.git_keep/logs/refs/heads/master | 2 +- .../46/87e94a43ed02b2ba08f3e6160ee22b92e64413 | 3 +++ .../6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 | Bin 116 -> 0 bytes .../expected/repo/.git_keep/refs/heads/master | 2 +- .../form_prompts/expected/repo/my file | 1 + .../form_prompts/expected/repo/myfile | 1 - 11 files changed, 16 insertions(+), 15 deletions(-) create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/commit-template.txt create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/46/87e94a43ed02b2ba08f3e6160ee22b92e64413 delete mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 create mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/my file delete mode 100644 test/integration_new/custom_commands/form_prompts/expected/repo/myfile diff --git a/pkg/integration/tests/custom_commands/form_prompts.go b/pkg/integration/tests/custom_commands/form_prompts.go index e4712dbcc..4148c767a 100644 --- a/pkg/integration/tests/custom_commands/form_prompts.go +++ b/pkg/integration/tests/custom_commands/form_prompts.go @@ -17,7 +17,7 @@ var FormPrompts = NewIntegrationTest(NewIntegrationTestArgs{ { Key: "a", Context: "files", - Command: `echo "{{.Form.FileContent}}" > {{.Form.FileName}}`, + Command: `echo {{.Form.FileContent | Quote}} > {{.Form.FileName | Quote}}`, Prompts: []config.CustomCommandPrompt{ { Key: "FileName", @@ -37,7 +37,7 @@ var FormPrompts = NewIntegrationTest(NewIntegrationTestArgs{ { Name: "bar", Description: "Bar", - Value: "BAR", + Value: `"BAR"`, }, { Name: "baz", @@ -67,7 +67,7 @@ var FormPrompts = NewIntegrationTest(NewIntegrationTestArgs{ assert.InPrompt() assert.MatchCurrentViewTitle(Equals("Enter a file name")) - input.Type("myfile") + input.Type("my file") input.Confirm() assert.InMenu() @@ -82,7 +82,7 @@ var FormPrompts = NewIntegrationTest(NewIntegrationTestArgs{ input.Confirm() assert.WorkingTreeFileCount(1) - assert.MatchSelectedLine(Contains("myfile")) - assert.MatchMainViewContent(Contains("BAR")) + assert.MatchSelectedLine(Contains("my file")) + assert.MatchMainViewContent(Contains(`"BAR"`)) }, }) diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/commit-template.txt b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/commit-template.txt new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config index 596ebaeb3..8a748ce32 100644 --- a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/config @@ -3,6 +3,10 @@ filemode = true bare = false logallrefupdates = true + ignorecase = true + precomposeunicode = true [user] email = CI@example.com name = CI +[commit] + gpgSign = false diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude index a5196d1be..e69de29bb 100644 --- a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/info/exclude @@ -1,6 +0,0 @@ -# git ls-files --others --exclude-from=.git/info/exclude -# Lines that start with '#' are comments. -# For a project mostly in C, the following would be a good set of -# exclude patterns (uncomment them if you want to use them): -# *.[oa] -# *~ diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD index 153f2ddc4..e0854d95a 100644 --- a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/HEAD @@ -1 +1 @@ -0000000000000000000000000000000000000000 6cd61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 CI <CI@example.com> 1660591942 +0000 commit (initial): blah +0000000000000000000000000000000000000000 4687e94a43ed02b2ba08f3e6160ee22b92e64413 CI <CI@example.com> 1664625021 +0900 commit (initial): blah diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master index 153f2ddc4..e0854d95a 100644 --- a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/logs/refs/heads/master @@ -1 +1 @@ -0000000000000000000000000000000000000000 6cd61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 CI <CI@example.com> 1660591942 +0000 commit (initial): blah +0000000000000000000000000000000000000000 4687e94a43ed02b2ba08f3e6160ee22b92e64413 CI <CI@example.com> 1664625021 +0900 commit (initial): blah diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/46/87e94a43ed02b2ba08f3e6160ee22b92e64413 b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/46/87e94a43ed02b2ba08f3e6160ee22b92e64413 new file mode 100644 index 000000000..00eeb9d5f --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/46/87e94a43ed02b2ba08f3e6160ee22b92e64413 @@ -0,0 +1,3 @@ +x��1 +�0@��>��B�UY�PB S�a9 +)ĸz��]?~i��;x~��a���R�������XH�W5���o�i��4�����ۣ�:�a���� �]��t��;���N��+� \ No newline at end of file diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/objects/6c/d61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 deleted file mode 100644 index 8d0c394f8aa5c739df95a23ba1821118395c1378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 zcmV-)0E_>40ga783c@fD06pgwdlzIAH%k_z2tD-~*>p>VhDeFv^UV{S<1jF#)%xn- z>3->_8IYzB*TNKvvZ-Wbv`D(8l_jLKsTm29%b&it6XpdT^YXNBuJ6NcrPT>MGe+@3 W0j@Z3!;VR}KXa!?-rWzaL@TsV7dVap diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master index 4c2ab0871..97a2c1d6c 100644 --- a/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/.git_keep/refs/heads/master @@ -1 +1 @@ -6cd61dc75eb17cf3e01d4d5f8f2b38a73ed9be90 +4687e94a43ed02b2ba08f3e6160ee22b92e64413 diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/my file b/test/integration_new/custom_commands/form_prompts/expected/repo/my file new file mode 100644 index 000000000..d6efee909 --- /dev/null +++ b/test/integration_new/custom_commands/form_prompts/expected/repo/my file @@ -0,0 +1 @@ +"BAR" diff --git a/test/integration_new/custom_commands/form_prompts/expected/repo/myfile b/test/integration_new/custom_commands/form_prompts/expected/repo/myfile deleted file mode 100644 index ba578e48b..000000000 --- a/test/integration_new/custom_commands/form_prompts/expected/repo/myfile +++ /dev/null @@ -1 +0,0 @@ -BAR From b0c19b291ff50575d1911d58c8d9058bef1c9db8 Mon Sep 17 00:00:00 2001 From: README-bot <actions@users.noreply.github.com> Date: Sun, 2 Oct 2022 19:42:47 +0000 Subject: [PATCH 34/44] Updated README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca8ae2243..a7d707e71 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ A simple terminal UI for git commands, written in Go with the [gocui](https://gi </p> <p align="center"> -<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/bastianwegge"><img src="https://github.com/bastianwegge.png" width="60px" alt="" /></a><a href="https://github.com/m-vandeneede"><img src="https://github.com/m-vandeneede.png" width="60px" alt="" /></a><a href="https://github.com/henry174Ajou"><img src="https://github.com/henry174Ajou.png" width="60px" alt="" /></a><a href="https://github.com/akbarsha03"><img src="https://github.com/akbarsha03.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><!-- sponsors --> +<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/akbarsha03"><img src="https://github.com/akbarsha03.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><a href="https://github.com/jakewarren"><img src="https://github.com/jakewarren.png" width="60px" alt="" /></a><a href="https://github.com/huettern"><img src="https://github.com/huettern.png" width="60px" alt="" /></a><a href="https://github.com/lukasjarosch"><img src="https://github.com/lukasjarosch.png" width="60px" alt="" /></a><!-- sponsors --> </p> ## Elevator Pitch From c953871ec76528f638af8613d40051cd6c48be72 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Sun, 2 Oct 2022 18:42:51 -0700 Subject: [PATCH 35/44] use lowercase 'quote' for consistency with existing custom command template functions --- docs/Custom_Command_Keybindings.md | 2 +- pkg/gui/services/custom_commands/handler_creator.go | 2 +- pkg/integration/tests/custom_commands/form_prompts.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/Custom_Command_Keybindings.md b/docs/Custom_Command_Keybindings.md index 09708d54c..62a034ecf 100644 --- a/docs/Custom_Command_Keybindings.md +++ b/docs/Custom_Command_Keybindings.md @@ -8,7 +8,7 @@ customCommands: command: 'hub browse -- "commit/{{.SelectedLocalCommit.Sha}}"' context: 'commits' - key: 'a' - command: "git {{if .SelectedFile.HasUnstagedChanges}} add {{else}} reset {{end}} {{.SelectedFile.Name | Quote}}" + command: "git {{if .SelectedFile.HasUnstagedChanges}} add {{else}} reset {{end}} {{.SelectedFile.Name | quote}}" context: 'files' description: 'toggle file staged' - key: 'C' diff --git a/pkg/gui/services/custom_commands/handler_creator.go b/pkg/gui/services/custom_commands/handler_creator.go index 9b30041e3..bad972bd6 100644 --- a/pkg/gui/services/custom_commands/handler_creator.go +++ b/pkg/gui/services/custom_commands/handler_creator.go @@ -168,7 +168,7 @@ func (self *HandlerCreator) getResolveTemplateFn(form map[string]string, promptR } funcs := template.FuncMap{ - "Quote": self.os.Quote, + "quote": self.os.Quote, } return func(templateStr string) (string, error) { return utils.ResolveTemplate(templateStr, objects, funcs) } diff --git a/pkg/integration/tests/custom_commands/form_prompts.go b/pkg/integration/tests/custom_commands/form_prompts.go index 4148c767a..5d9403107 100644 --- a/pkg/integration/tests/custom_commands/form_prompts.go +++ b/pkg/integration/tests/custom_commands/form_prompts.go @@ -17,7 +17,7 @@ var FormPrompts = NewIntegrationTest(NewIntegrationTestArgs{ { Key: "a", Context: "files", - Command: `echo {{.Form.FileContent | Quote}} > {{.Form.FileName | Quote}}`, + Command: `echo {{.Form.FileContent | quote}} > {{.Form.FileName | quote}}`, Prompts: []config.CustomCommandPrompt{ { Key: "FileName", From 5670c0a30198440061aef1ca0b86b458903eefe1 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Sun, 2 Oct 2022 12:47:57 -0700 Subject: [PATCH 36/44] bump gocui --- go.mod | 4 +- go.sum | 8 ++-- vendor/github.com/jesseduffield/gocui/edit.go | 4 ++ .../github.com/jesseduffield/gocui/escape.go | 2 + .../jesseduffield/gocui/text_area.go | 48 +++++++++++++++++++ vendor/github.com/jesseduffield/gocui/view.go | 40 ++++++++++++---- vendor/golang.org/x/sys/unix/syscall_linux.go | 13 ++++- vendor/golang.org/x/sys/unix/syscall_unix.go | 12 +++-- .../golang.org/x/sys/unix/zsyscall_linux.go | 10 ++++ .../golang.org/x/sys/unix/ztypes_linux_386.go | 6 +++ .../x/sys/unix/ztypes_linux_amd64.go | 6 +++ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 6 +++ .../x/sys/unix/ztypes_linux_arm64.go | 6 +++ .../x/sys/unix/ztypes_linux_loong64.go | 6 +++ .../x/sys/unix/ztypes_linux_mips.go | 6 +++ .../x/sys/unix/ztypes_linux_mips64.go | 6 +++ .../x/sys/unix/ztypes_linux_mips64le.go | 6 +++ .../x/sys/unix/ztypes_linux_mipsle.go | 6 +++ .../golang.org/x/sys/unix/ztypes_linux_ppc.go | 6 +++ .../x/sys/unix/ztypes_linux_ppc64.go | 6 +++ .../x/sys/unix/ztypes_linux_ppc64le.go | 6 +++ .../x/sys/unix/ztypes_linux_riscv64.go | 6 +++ .../x/sys/unix/ztypes_linux_s390x.go | 6 +++ .../x/sys/unix/ztypes_linux_sparc64.go | 6 +++ .../x/sys/windows/syscall_windows.go | 10 ++-- vendor/modules.txt | 4 +- 26 files changed, 220 insertions(+), 25 deletions(-) diff --git a/go.mod b/go.mod index 0f697c35a..026e573d1 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/integrii/flaggy v1.4.0 github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 - github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37 + github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e github.com/jesseduffield/yaml v2.1.0+incompatible @@ -67,7 +67,7 @@ require ( golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 // indirect golang.org/x/exp v0.0.0-20220318154914-8dddf5d87bd8 // indirect golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c // indirect - golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 // indirect + golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect golang.org/x/term v0.0.0-20220919170432-7a66f970e087 // indirect golang.org/x/text v0.3.7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 7e1aeae88..87e316c87 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8T github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 h1:GOQrmaE8i+KEdB8NzAegKYd4tPn/inM0I1uo0NXFerg= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o= -github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37 h1:EE21YiOAGGs4/K8l3V15w5ICJmDrfwhklm3adc4N/8A= -github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= +github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d h1:OTUa2dO3IvnY53QWCABkKJK9v5yvs3+uv3RMbG698S0= +github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10/go.mod h1:aA97kHeNA+sj2Hbki0pvLslmE4CbDyhBeSSTUUnOuVo= github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e h1:uw/oo+kg7t/oeMs6sqlAwr85ND/9cpO3up3VxphxY0U= @@ -195,8 +195,8 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220318055525-2edf467146b5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 h1:h+EGohizhe9XlX18rfpa8k8RAc5XyaeamM+0VHRd4lc= -golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI= +golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20220919170432-7a66f970e087 h1:tPwmk4vmvVCMdr98VgL4JH+qZxPL8fqlUOHnyOM8N3w= golang.org/x/term v0.0.0-20220919170432-7a66f970e087/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= diff --git a/vendor/github.com/jesseduffield/gocui/edit.go b/vendor/github.com/jesseduffield/gocui/edit.go index 535ca40cc..0ad5d60a2 100644 --- a/vendor/github.com/jesseduffield/gocui/edit.go +++ b/vendor/github.com/jesseduffield/gocui/edit.go @@ -37,8 +37,12 @@ func SimpleEditor(v *View, key Key, ch rune, mod Modifier) bool { v.TextArea.MoveCursorDown() case key == KeyArrowUp: v.TextArea.MoveCursorUp() + case key == KeyArrowLeft && (mod&ModAlt) != 0: + v.TextArea.MoveLeftWord() case key == KeyArrowLeft: v.TextArea.MoveCursorLeft() + case key == KeyArrowRight && (mod&ModAlt) != 0: + v.TextArea.MoveRightWord() case key == KeyArrowRight: v.TextArea.MoveCursorRight() case key == KeyEnter: diff --git a/vendor/github.com/jesseduffield/gocui/escape.go b/vendor/github.com/jesseduffield/gocui/escape.go index 0085d0eb4..87d6de72a 100644 --- a/vendor/github.com/jesseduffield/gocui/escape.go +++ b/vendor/github.com/jesseduffield/gocui/escape.go @@ -214,6 +214,8 @@ func (ei *escapeInterpreter) outputNormal() error { case p == 0: ei.curFgColor = ColorDefault ei.curBgColor = ColorDefault + case p >= 21 && p <= 29: + ei.curFgColor &= ^getFontEffect(p - 20) default: ei.curFgColor |= getFontEffect(p) } diff --git a/vendor/github.com/jesseduffield/gocui/text_area.go b/vendor/github.com/jesseduffield/gocui/text_area.go index 731e1cd04..ca4809107 100644 --- a/vendor/github.com/jesseduffield/gocui/text_area.go +++ b/vendor/github.com/jesseduffield/gocui/text_area.go @@ -64,6 +64,54 @@ func (self *TextArea) MoveCursorRight() { self.cursor++ } +func (self *TextArea) MoveLeftWord() { + if self.cursor == 0 { + return + } + if self.atLineStart() { + self.cursor-- + return + } + + for !self.atLineStart() && strings.ContainsRune(WHITESPACES, self.content[self.cursor-1]) { + self.cursor-- + } + separators := false + for !self.atLineStart() && strings.ContainsRune(WORD_SEPARATORS, self.content[self.cursor-1]) { + self.cursor-- + separators = true + } + if !separators { + for !self.atLineStart() && !strings.ContainsRune(WHITESPACES+WORD_SEPARATORS, self.content[self.cursor-1]) { + self.cursor-- + } + } +} + +func (self *TextArea) MoveRightWord() { + if self.atEnd() { + return + } + if self.atLineEnd() { + self.cursor++ + return + } + + for !self.atLineEnd() && strings.ContainsRune(WHITESPACES, self.content[self.cursor]) { + self.cursor++ + } + separators := false + for !self.atLineEnd() && strings.ContainsRune(WORD_SEPARATORS, self.content[self.cursor]) { + self.cursor++ + separators = true + } + if !separators { + for !self.atLineEnd() && !strings.ContainsRune(WHITESPACES+WORD_SEPARATORS, self.content[self.cursor]) { + self.cursor++ + } + } +} + func (self *TextArea) MoveCursorUp() { x, y := self.GetCursorXY() self.SetCursor2D(x, y-1) diff --git a/vendor/github.com/jesseduffield/gocui/view.go b/vendor/github.com/jesseduffield/gocui/view.go index ce0aa3c48..b3e21a0e0 100644 --- a/vendor/github.com/jesseduffield/gocui/view.go +++ b/vendor/github.com/jesseduffield/gocui/view.go @@ -601,6 +601,14 @@ func (v *View) writeCells(x, y int, cells []cell) { v.lines[y] = line[:newLen] } +// readCell gets cell at specified location (x, y) +func (v *View) readCell(x, y int) (cell, bool) { + if y < 0 || y >= len(v.lines) || x < 0 || x >= len(v.lines[y]) { + return cell{}, false + } + return v.lines[y][x], true +} + // Write appends a byte slice into the view's internal buffer. Because // View implements the io.Writer interface, it can be passed as parameter // of functions like fmt.Fprintf, fmt.Fprintln, io.Copy, etc. Clear must @@ -631,17 +639,29 @@ func (v *View) writeRunes(p []rune) { for _, r := range p { switch r { case '\n': + if c, ok := v.readCell(v.wx+1, v.wy); !ok || c.chr == 0 { + v.writeCells(v.wx, v.wy, []cell{{ + chr: 0, + fgColor: 0, + bgColor: 0, + }}) + } + v.wx = 0 v.wy++ if v.wy >= len(v.lines) { v.lines = append(v.lines, nil) } - - fallthrough - // not valid in every OS, but making runtime OS checks in cycle is bad. case '\r': + if c, ok := v.readCell(v.wx, v.wy); !ok || c.chr == 0 { + v.writeCells(v.wx, v.wy, []cell{{ + chr: 0, + fgColor: 0, + bgColor: 0, + }}) + } v.wx = 0 default: - moveCursor, cells := v.parseInput(r) + moveCursor, cells := v.parseInput(r, v.wx, v.wy) if cells == nil { continue } @@ -666,7 +686,7 @@ func (v *View) writeString(s string) { // parseInput parses char by char the input written to the View. It returns nil // while processing ESC sequences. Otherwise, it returns a cell slice that // contains the processed data. -func (v *View) parseInput(ch rune) (bool, []cell) { +func (v *View) parseInput(ch rune, x int, y int) (bool, []cell) { cells := []cell{} moveCursor := true @@ -698,8 +718,9 @@ func (v *View) parseInput(ch rune) (bool, []cell) { return moveCursor, nil } else if ch == '\t' { // fill tab-sized space + const tabStop = 4 ch = ' ' - repeatCount = 4 + repeatCount = tabStop - (x % tabStop) } c := cell{ fgColor: v.ei.curFgColor, @@ -936,11 +957,14 @@ func (v *View) draw() error { if y >= maxY { break } - x := 0 + x := -v.ox j := 0 var c cell for { - if j < v.ox { + if x < 0 { + if j < len(vline.line) { + x += runewidth.RuneWidth(vline.line[j].chr) + } j++ continue } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 47146911f..e044d5b54 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -2252,7 +2252,7 @@ func (fh *FileHandle) Bytes() []byte { if n == 0 { return nil } - return (*[1 << 30]byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type)) + 4))[:n:n] + return unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n) } // NameToHandleAt wraps the name_to_handle_at system call; it obtains @@ -2368,6 +2368,16 @@ func Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) { return prev, nil } +//sysnb rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK + +func PthreadSigmask(how int, set, oldset *Sigset_t) error { + if oldset != nil { + // Explicitly clear in case Sigset_t is larger than _C__NSIG. + *oldset = Sigset_t{} + } + return rtSigprocmask(how, set, oldset, _C__NSIG/8) +} + /* * Unimplemented */ @@ -2426,7 +2436,6 @@ func Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) { // RestartSyscall // RtSigaction // RtSigpending -// RtSigprocmask // RtSigqueueinfo // RtSigreturn // RtSigsuspend diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go index 9f7535607..00bafda86 100644 --- a/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -423,11 +423,15 @@ func Send(s int, buf []byte, flags int) (err error) { } func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { - ptr, n, err := to.sockaddr() - if err != nil { - return err + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return err + } } - return sendto(fd, p, flags, ptr, n) + return sendto(fd, p, flags, ptr, salen) } func SetsockoptByte(fd, level, opt int, value byte) (err error) { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index bc4a27531..293cf3680 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -2151,3 +2151,13 @@ func setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) { + _, _, e1 := RawSyscall6(SYS_RT_SIGPROCMASK, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oldset)), uintptr(sigsetsize), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 263604401..89c516a29 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -254,6 +254,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index 8187489d1..62b4fb269 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -269,6 +269,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index d1612335f..e86b35893 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -245,6 +245,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index c28e5556b..6c6be4c91 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -248,6 +248,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go index 187061f9f..4982ea355 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -249,6 +249,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 369129917..173141a67 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -250,6 +250,12 @@ type Sigset_t struct { const _C__NSIG = 0x80 +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + type Siginfo struct { Signo int32 Code int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 7473468d7..93ae4c516 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -251,6 +251,12 @@ type Sigset_t struct { const _C__NSIG = 0x80 +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + type Siginfo struct { Signo int32 Code int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index ed9448524..4e4e510ca 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -251,6 +251,12 @@ type Sigset_t struct { const _C__NSIG = 0x80 +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + type Siginfo struct { Signo int32 Code int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index 0892a73a4..3f5ba013d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -250,6 +250,12 @@ type Sigset_t struct { const _C__NSIG = 0x80 +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x3 +) + type Siginfo struct { Signo int32 Code int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index e1dd48333..71dfe7cdb 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -257,6 +257,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index d9f654c7b..3a2b7f0a6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -258,6 +258,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 74acda9fe..a52d62756 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -258,6 +258,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 50ebe69eb..dfc007d8a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -276,6 +276,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 75b34c259..b53cb9103 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -271,6 +271,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x0 + SIG_UNBLOCK = 0x1 + SIG_SETMASK = 0x2 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 429c3bf7d..fe0aa3547 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -253,6 +253,12 @@ type Sigset_t struct { const _C__NSIG = 0x41 +const ( + SIG_BLOCK = 0x1 + SIG_UNBLOCK = 0x2 + SIG_SETMASK = 0x4 +) + type Siginfo struct { Signo int32 Errno int32 diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 3f2cbb638..5f4f0430e 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -1115,9 +1115,13 @@ func Shutdown(fd Handle, how int) (err error) { } func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) { - rsa, l, err := to.sockaddr() - if err != nil { - return err + var rsa unsafe.Pointer + var l int32 + if to != nil { + rsa, l, err = to.sockaddr() + if err != nil { + return err + } } return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine) } diff --git a/vendor/modules.txt b/vendor/modules.txt index 2619b0e18..f151d83dc 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -172,7 +172,7 @@ github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem github.com/jesseduffield/go-git/v5/utils/merkletrie/index github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame github.com/jesseduffield/go-git/v5/utils/merkletrie/noder -# github.com/jesseduffield/gocui v0.3.1-0.20220922032454-744b0c465c37 +# github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d ## explicit; go 1.12 github.com/jesseduffield/gocui # github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 @@ -291,7 +291,7 @@ golang.org/x/exp/slices golang.org/x/net/context golang.org/x/net/internal/socks golang.org/x/net/proxy -# golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8 +# golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec ## explicit; go 1.17 golang.org/x/sys/cpu golang.org/x/sys/internal/unsafeheader From 8858f03606c5edc78e7161d83e200bebda37d909 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Sun, 2 Oct 2022 20:34:14 -0700 Subject: [PATCH 37/44] adjust test temporarily to unblock master --- pkg/integration/tests/custom_commands/menu_from_command.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/integration/tests/custom_commands/menu_from_command.go b/pkg/integration/tests/custom_commands/menu_from_command.go index f45d820d6..765f7b873 100644 --- a/pkg/integration/tests/custom_commands/menu_from_command.go +++ b/pkg/integration/tests/custom_commands/menu_from_command.go @@ -55,9 +55,9 @@ var MenuFromCommand = NewIntegrationTest(NewIntegrationTestArgs{ assert.InMenu() assert.MatchCurrentViewTitle(Equals("Choose commit message")) - assert.MatchSelectedLine(Equals("baz")) + assert.MatchSelectedLine(Equals("baz ")) // TODO: remove the trailing space input.NextItem() - assert.MatchSelectedLine(Equals("bar")) + assert.MatchSelectedLine(Equals("bar ")) // TODO: remove the trailing space input.Confirm() assert.InPrompt() From a77aa4d75ae1f04a15257fd92f7e763b8a4215db Mon Sep 17 00:00:00 2001 From: README-bot <actions@users.noreply.github.com> Date: Mon, 3 Oct 2022 03:37:49 +0000 Subject: [PATCH 38/44] Updated README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a7d707e71..0cb5c045b 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ A simple terminal UI for git commands, written in Go with the [gocui](https://gi </p> <p align="center"> -<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/akbarsha03"><img src="https://github.com/akbarsha03.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><a href="https://github.com/jakewarren"><img src="https://github.com/jakewarren.png" width="60px" alt="" /></a><a href="https://github.com/huettern"><img src="https://github.com/huettern.png" width="60px" alt="" /></a><a href="https://github.com/lukasjarosch"><img src="https://github.com/lukasjarosch.png" width="60px" alt="" /></a><!-- sponsors --> +<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><a href="https://github.com/jakewarren"><img src="https://github.com/jakewarren.png" width="60px" alt="" /></a><a href="https://github.com/huettern"><img src="https://github.com/huettern.png" width="60px" alt="" /></a><a href="https://github.com/lukasjarosch"><img src="https://github.com/lukasjarosch.png" width="60px" alt="" /></a><!-- sponsors --> </p> ## Elevator Pitch From e76fa5a6cb648f8c3b642d83368ea08a48ab43b0 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Sun, 2 Oct 2022 20:31:40 -0700 Subject: [PATCH 39/44] fix glitchy render of stale data when flicking through files and directories --- go.mod | 2 +- go.sum | 4 +-- pkg/gui/main_panels.go | 32 +++++++++++++++++--- pkg/gui/window.go | 29 +++++++++++++----- vendor/github.com/jesseduffield/gocui/gui.go | 15 +++++++++ vendor/modules.txt | 2 +- 6 files changed, 69 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 026e573d1..57baf958b 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/integrii/flaggy v1.4.0 github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 - github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d + github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e github.com/jesseduffield/yaml v2.1.0+incompatible diff --git a/go.sum b/go.sum index 87e316c87..fea88fbd6 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8T github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 h1:GOQrmaE8i+KEdB8NzAegKYd4tPn/inM0I1uo0NXFerg= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o= -github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d h1:OTUa2dO3IvnY53QWCABkKJK9v5yvs3+uv3RMbG698S0= -github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= +github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c h1:mbOoXlqOzc243zNV71pDxeiEof8IRRw2ZJzVXm/RLjc= +github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10/go.mod h1:aA97kHeNA+sj2Hbki0pvLslmE4CbDyhBeSSTUUnOuVo= github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e h1:uw/oo+kg7t/oeMs6sqlAwr85ND/9cpO3up3VxphxY0U= diff --git a/pkg/gui/main_panels.go b/pkg/gui/main_panels.go index 625391480..9e36c18e9 100644 --- a/pkg/gui/main_panels.go +++ b/pkg/gui/main_panels.go @@ -27,11 +27,35 @@ func (gui *Gui) runTaskForView(view *gocui.View, task types.UpdateTask) error { } func (gui *Gui) moveMainContextPairToTop(pair types.MainContextPair) { - gui.setWindowContext(pair.Main) - gui.moveToTopOfWindow(pair.Main) + gui.moveMainContextToTop(pair.Main) if pair.Secondary != nil { - gui.setWindowContext(pair.Secondary) - gui.moveToTopOfWindow(pair.Secondary) + gui.moveMainContextToTop(pair.Secondary) + } +} + +func (gui *Gui) moveMainContextToTop(context types.Context) { + gui.setWindowContext(context) + + view := context.GetView() + + topView := gui.topViewInWindow(context.GetWindowName()) + if topView == nil { + gui.Log.Error("unexpected: topView is nil") + return + } + + if topView != view { + // We need to copy the content to avoid a flicker effect: If we're flicking + // through files in the files panel, we use a different view to render the + // files vs the directories, and if you select dir A, then file B, then dir + // C, you'll briefly see dir A's contents again before the view is updated. + // So here we're copying the content from the top window to avoid that + // flicker effect. + gui.g.CopyContent(topView, view) + + if err := gui.g.SetViewOnTopOf(view.Name(), topView.Name()); err != nil { + gui.Log.Error(err) + } } } diff --git a/pkg/gui/window.go b/pkg/gui/window.go index efee847e1..12cd31868 100644 --- a/pkg/gui/window.go +++ b/pkg/gui/window.go @@ -3,6 +3,7 @@ package gui import ( "fmt" + "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/gui/context" "github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/samber/lo" @@ -70,28 +71,42 @@ func (gui *Gui) resetWindowContext(c types.Context) { } } -func (gui *Gui) moveToTopOfWindow(context types.Context) { +// moves given context's view to the top of the window and returns +// true if the view was not already on top. +func (gui *Gui) moveToTopOfWindow(context types.Context) bool { view := context.GetView() if view == nil { - return + return false } window := context.GetWindowName() + topView := gui.topViewInWindow(window) + + if view.Name() == topView.Name() { + return false + } else { + if err := gui.g.SetViewOnTopOf(view.Name(), topView.Name()); err != nil { + gui.Log.Error(err) + } + + return true + } +} + +func (gui *Gui) topViewInWindow(windowName string) *gocui.View { // now I need to find all views in that same window, via contexts. And I guess then I need to find the index of the highest view in that list. - viewNamesInWindow := gui.viewNamesInWindow(window) + viewNamesInWindow := gui.viewNamesInWindow(windowName) // The views list is ordered highest-last, so we're grabbing the last view of the window - topView := view + var topView *gocui.View for _, currentView := range gui.g.Views() { if lo.Contains(viewNamesInWindow, currentView.Name()) { topView = currentView } } - if err := gui.g.SetViewOnTopOf(view.Name(), topView.Name()); err != nil { - gui.Log.Error(err) - } + return topView } func (gui *Gui) viewNamesInWindow(windowName string) []string { diff --git a/vendor/github.com/jesseduffield/gocui/gui.go b/vendor/github.com/jesseduffield/gocui/gui.go index f02f1a93a..889e02999 100644 --- a/vendor/github.com/jesseduffield/gocui/gui.go +++ b/vendor/github.com/jesseduffield/gocui/gui.go @@ -403,6 +403,21 @@ func (g *Gui) SetViewOnTopOf(toMove string, other string) error { return nil } +// replaces the content in toView with the content in fromView +func (g *Gui) CopyContent(fromView *View, toView *View) { + g.Mutexes.ViewsMutex.Lock() + defer g.Mutexes.ViewsMutex.Unlock() + + toView.clear() + + toView.lines = fromView.lines + toView.viewLines = fromView.viewLines + toView.ox = fromView.ox + toView.oy = fromView.oy + toView.cx = fromView.cx + toView.cy = fromView.cy +} + // Views returns all the views in the GUI. func (g *Gui) Views() []*View { return g.views diff --git a/vendor/modules.txt b/vendor/modules.txt index f151d83dc..c37a93336 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -172,7 +172,7 @@ github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem github.com/jesseduffield/go-git/v5/utils/merkletrie/index github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame github.com/jesseduffield/go-git/v5/utils/merkletrie/noder -# github.com/jesseduffield/gocui v0.3.1-0.20221001154429-72c39318a83d +# github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c ## explicit; go 1.12 github.com/jesseduffield/gocui # github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 From ed98b60078df3b4b30f46ea6beee9181a57f3df1 Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Sun, 2 Oct 2022 20:57:44 -0700 Subject: [PATCH 40/44] use thread safe map --- pkg/gui/gui.go | 2 +- pkg/gui/window.go | 19 ++++--- pkg/utils/thread_safe_map.go | 90 +++++++++++++++++++++++++++++++ pkg/utils/thread_safe_map_test.go | 59 ++++++++++++++++++++ 4 files changed, 162 insertions(+), 8 deletions(-) create mode 100644 pkg/utils/thread_safe_map.go create mode 100644 pkg/utils/thread_safe_map_test.go diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 6ab2a916b..1d14c9f50 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -185,7 +185,7 @@ type GuiRepoState struct { // WindowViewNameMap is a mapping of windows to the current view of that window. // Some views move between windows for example the commitFiles view and when cycling through // side windows we need to know which view to give focus to for a given window - WindowViewNameMap map[string]string + WindowViewNameMap *utils.ThreadSafeMap[string, string] // tells us whether we've set up our views for the current repo. We'll need to // do this whenever we switch back and forth between repos to get the views diff --git a/pkg/gui/window.go b/pkg/gui/window.go index 12cd31868..1d69c420c 100644 --- a/pkg/gui/window.go +++ b/pkg/gui/window.go @@ -6,6 +6,7 @@ import ( "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/gui/context" "github.com/jesseduffield/lazygit/pkg/gui/types" + "github.com/jesseduffield/lazygit/pkg/utils" "github.com/samber/lo" ) @@ -15,18 +16,18 @@ import ( // space. Right now most windows are 1:1 with views, except for commitFiles which // is a view that moves between windows -func (gui *Gui) initialWindowViewNameMap(contextTree *context.ContextTree) map[string]string { - result := map[string]string{} +func (gui *Gui) initialWindowViewNameMap(contextTree *context.ContextTree) *utils.ThreadSafeMap[string, string] { + result := utils.NewThreadSafeMap[string, string]() for _, context := range contextTree.Flatten() { - result[context.GetWindowName()] = context.GetViewName() + result.Set(context.GetWindowName(), context.GetViewName()) } return result } func (gui *Gui) getViewNameForWindow(window string) string { - viewName, ok := gui.State.WindowViewNameMap[window] + viewName, ok := gui.State.WindowViewNameMap.Get(window) if !ok { panic(fmt.Sprintf("Viewname not found for window: %s", window)) } @@ -51,7 +52,7 @@ func (gui *Gui) setWindowContext(c types.Context) { gui.resetWindowContext(c) } - gui.State.WindowViewNameMap[c.GetWindowName()] = c.GetViewName() + gui.State.WindowViewNameMap.Set(c.GetWindowName(), c.GetViewName()) } func (gui *Gui) currentWindow() string { @@ -60,11 +61,15 @@ func (gui *Gui) currentWindow() string { // assumes the context's windowName has been set to the new window if necessary func (gui *Gui) resetWindowContext(c types.Context) { - for windowName, viewName := range gui.State.WindowViewNameMap { + for _, windowName := range gui.State.WindowViewNameMap.Keys() { + viewName, ok := gui.State.WindowViewNameMap.Get(windowName) + if !ok { + continue + } if viewName == c.GetViewName() && windowName != c.GetWindowName() { for _, context := range gui.State.Contexts.Flatten() { if context.GetKey() != c.GetKey() && context.GetWindowName() == windowName { - gui.State.WindowViewNameMap[windowName] = context.GetViewName() + gui.State.WindowViewNameMap.Set(windowName, context.GetViewName()) } } } diff --git a/pkg/utils/thread_safe_map.go b/pkg/utils/thread_safe_map.go new file mode 100644 index 000000000..a70cefc7d --- /dev/null +++ b/pkg/utils/thread_safe_map.go @@ -0,0 +1,90 @@ +package utils + +import "sync" + +type ThreadSafeMap[K comparable, V any] struct { + mutex sync.RWMutex + + innerMap map[K]V +} + +func NewThreadSafeMap[K comparable, V any]() *ThreadSafeMap[K, V] { + return &ThreadSafeMap[K, V]{ + innerMap: make(map[K]V), + } +} + +func (m *ThreadSafeMap[K, V]) Get(key K) (V, bool) { + m.mutex.RLock() + defer m.mutex.RUnlock() + + value, ok := m.innerMap[key] + return value, ok +} + +func (m *ThreadSafeMap[K, V]) Set(key K, value V) { + m.mutex.Lock() + defer m.mutex.Unlock() + + m.innerMap[key] = value +} + +func (m *ThreadSafeMap[K, V]) Delete(key K) { + m.mutex.Lock() + defer m.mutex.Unlock() + + delete(m.innerMap, key) +} + +func (m *ThreadSafeMap[K, V]) Keys() []K { + m.mutex.RLock() + defer m.mutex.RUnlock() + + keys := make([]K, 0, len(m.innerMap)) + for key := range m.innerMap { + keys = append(keys, key) + } + + return keys +} + +func (m *ThreadSafeMap[K, V]) Values() []V { + m.mutex.RLock() + defer m.mutex.RUnlock() + + values := make([]V, 0, len(m.innerMap)) + for _, value := range m.innerMap { + values = append(values, value) + } + + return values +} + +func (m *ThreadSafeMap[K, V]) Len() int { + m.mutex.RLock() + defer m.mutex.RUnlock() + + return len(m.innerMap) +} + +func (m *ThreadSafeMap[K, V]) Clear() { + m.mutex.Lock() + defer m.mutex.Unlock() + + m.innerMap = make(map[K]V) +} + +func (m *ThreadSafeMap[K, V]) IsEmpty() bool { + m.mutex.RLock() + defer m.mutex.RUnlock() + + return len(m.innerMap) == 0 +} + +func (m *ThreadSafeMap[K, V]) Has(key K) bool { + m.mutex.RLock() + defer m.mutex.RUnlock() + + _, ok := m.innerMap[key] + return ok +} diff --git a/pkg/utils/thread_safe_map_test.go b/pkg/utils/thread_safe_map_test.go new file mode 100644 index 000000000..9676cfe5f --- /dev/null +++ b/pkg/utils/thread_safe_map_test.go @@ -0,0 +1,59 @@ +package utils + +import ( + "testing" +) + +func TestThreadSafeMap(t *testing.T) { + m := NewThreadSafeMap[int, int]() + + m.Set(1, 1) + m.Set(2, 2) + m.Set(3, 3) + + if m.Len() != 3 { + t.Errorf("Expected length to be 3, got %d", m.Len()) + } + + if !m.Has(1) { + t.Errorf("Expected to have key 1") + } + + if m.Has(4) { + t.Errorf("Expected to not have key 4") + } + + if _, ok := m.Get(1); !ok { + t.Errorf("Expected to have key 1") + } + + if _, ok := m.Get(4); ok { + t.Errorf("Expected to not have key 4") + } + + m.Delete(1) + + if m.Has(1) { + t.Errorf("Expected to not have key 1") + } + + m.Clear() + + if m.Len() != 0 { + t.Errorf("Expected length to be 0, got %d", m.Len()) + } +} + +func TestThreadSafeMapConcurrentReadWrite(t *testing.T) { + m := NewThreadSafeMap[int, int]() + + go func() { + for i := 0; i < 10000; i++ { + m.Set(0, 0) + } + }() + + for i := 0; i < 10000; i++ { + m.Get(0) + } +} From e3f21f058879e9c42540a033630a5857808db47f Mon Sep 17 00:00:00 2001 From: Jesse Duffield <jessedduffield@gmail.com> Date: Mon, 3 Oct 2022 09:23:24 -0700 Subject: [PATCH 41/44] strip NUL bytes instead of replacing with space --- go.mod | 2 +- go.sum | 4 ++-- pkg/integration/tests/custom_commands/menu_from_command.go | 4 ++-- vendor/github.com/jesseduffield/gocui/view.go | 6 +++--- vendor/modules.txt | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 57baf958b..cb746383c 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/integrii/flaggy v1.4.0 github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 - github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c + github.com/jesseduffield/gocui v0.3.1-0.20221003162644-fead10f7b360 github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e github.com/jesseduffield/yaml v2.1.0+incompatible diff --git a/go.sum b/go.sum index fea88fbd6..f75d64c9e 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68 h1:EQP2Tv8T github.com/jesseduffield/generics v0.0.0-20220320043834-727e535cbe68/go.mod h1:+LLj9/WUPAP8LqCchs7P+7X0R98HiFujVFANdNaxhGk= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4 h1:GOQrmaE8i+KEdB8NzAegKYd4tPn/inM0I1uo0NXFerg= github.com/jesseduffield/go-git/v5 v5.1.2-0.20201006095850-341962be15a4/go.mod h1:nGNEErzf+NRznT+N2SWqmHnDnF9aLgANB1CUNEan09o= -github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c h1:mbOoXlqOzc243zNV71pDxeiEof8IRRw2ZJzVXm/RLjc= -github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= +github.com/jesseduffield/gocui v0.3.1-0.20221003162644-fead10f7b360 h1:43F6SAmNzsjwhNa7hBfYCXUgPSl76b+3IogJIloMDnU= +github.com/jesseduffield/gocui v0.3.1-0.20221003162644-fead10f7b360/go.mod h1:znJuCDnF2Ph40YZSlBwdX/4GEofnIoWLGdT4mK5zRAU= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 h1:jmpr7KpX2+2GRiE91zTgfq49QvgiqB0nbmlwZ8UnOx0= github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10/go.mod h1:aA97kHeNA+sj2Hbki0pvLslmE4CbDyhBeSSTUUnOuVo= github.com/jesseduffield/minimal/gitignore v0.3.3-0.20211018110810-9cde264e6b1e h1:uw/oo+kg7t/oeMs6sqlAwr85ND/9cpO3up3VxphxY0U= diff --git a/pkg/integration/tests/custom_commands/menu_from_command.go b/pkg/integration/tests/custom_commands/menu_from_command.go index 765f7b873..f45d820d6 100644 --- a/pkg/integration/tests/custom_commands/menu_from_command.go +++ b/pkg/integration/tests/custom_commands/menu_from_command.go @@ -55,9 +55,9 @@ var MenuFromCommand = NewIntegrationTest(NewIntegrationTestArgs{ assert.InMenu() assert.MatchCurrentViewTitle(Equals("Choose commit message")) - assert.MatchSelectedLine(Equals("baz ")) // TODO: remove the trailing space + assert.MatchSelectedLine(Equals("baz")) input.NextItem() - assert.MatchSelectedLine(Equals("bar ")) // TODO: remove the trailing space + assert.MatchSelectedLine(Equals("bar")) input.Confirm() assert.InPrompt() diff --git a/vendor/github.com/jesseduffield/gocui/view.go b/vendor/github.com/jesseduffield/gocui/view.go index b3e21a0e0..ea6923781 100644 --- a/vendor/github.com/jesseduffield/gocui/view.go +++ b/vendor/github.com/jesseduffield/gocui/view.go @@ -1080,7 +1080,7 @@ func (v *View) BufferLines() []string { lines := make([]string, len(v.lines)) for i, l := range v.lines { str := lineType(l).String() - str = strings.Replace(str, "\x00", " ", -1) + str = strings.Replace(str, "\x00", "", -1) lines[i] = str } return lines @@ -1098,7 +1098,7 @@ func (v *View) ViewBufferLines() []string { lines := make([]string, len(v.viewLines)) for i, l := range v.viewLines { str := lineType(l.line).String() - str = strings.Replace(str, "\x00", " ", -1) + str = strings.Replace(str, "\x00", "", -1) lines[i] = str } return lines @@ -1274,7 +1274,7 @@ func (v *View) SelectedLine() string { } line := v.lines[v.SelectedLineIdx()] str := lineType(line).String() - return strings.Replace(str, "\x00", " ", -1) + return strings.Replace(str, "\x00", "", -1) } func (v *View) SelectedPoint() (int, int) { diff --git a/vendor/modules.txt b/vendor/modules.txt index c37a93336..a829719fd 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -172,7 +172,7 @@ github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem github.com/jesseduffield/go-git/v5/utils/merkletrie/index github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame github.com/jesseduffield/go-git/v5/utils/merkletrie/noder -# github.com/jesseduffield/gocui v0.3.1-0.20221003033055-3b1444b7ce1c +# github.com/jesseduffield/gocui v0.3.1-0.20221003162644-fead10f7b360 ## explicit; go 1.12 github.com/jesseduffield/gocui # github.com/jesseduffield/kill v0.0.0-20220618033138-bfbe04675d10 From c686c7f9ed2c9b149a3c424dac2edca6301be0c3 Mon Sep 17 00:00:00 2001 From: TomBaxter <tkb608@gmail.com> Date: Mon, 3 Oct 2022 13:58:04 -0400 Subject: [PATCH 42/44] Replace regex for retrieving latest version --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0cb5c045b..a37556e1d 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ sudo eopkg install lazygit ### Ubuntu ```sh -LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[0-35.]+') +LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v*([^"]+)".*/\1/') ``` ```sh From e436922eb60771130f4a6c6222f46b41ccb62022 Mon Sep 17 00:00:00 2001 From: Ryooooooga <eial5q265e5@gmail.com> Date: Wed, 5 Oct 2022 22:29:51 +0900 Subject: [PATCH 43/44] feat(editors.go): move by words --- pkg/gui/editors.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/gui/editors.go b/pkg/gui/editors.go index 20223d117..9e00f8351 100644 --- a/pkg/gui/editors.go +++ b/pkg/gui/editors.go @@ -22,8 +22,12 @@ func (gui *Gui) handleEditorKeypress(textArea *gocui.TextArea, key gocui.Key, ch textArea.MoveCursorDown() case key == gocui.KeyArrowUp: textArea.MoveCursorUp() + case key == gocui.KeyArrowLeft && (mod&gocui.ModAlt) != 0: + textArea.MoveLeftWord() case key == gocui.KeyArrowLeft || key == gocui.KeyCtrlB: textArea.MoveCursorLeft() + case key == gocui.KeyArrowRight && (mod&gocui.ModAlt) != 0: + textArea.MoveRightWord() case key == gocui.KeyArrowRight || key == gocui.KeyCtrlF: textArea.MoveCursorRight() case key == newlineKey: From 7b4b42abd6f458eb667d322ec870bc6b20024812 Mon Sep 17 00:00:00 2001 From: README-bot <actions@users.noreply.github.com> Date: Thu, 6 Oct 2022 18:26:36 +0000 Subject: [PATCH 44/44] Updated README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a37556e1d..9486a2d9d 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ A simple terminal UI for git commands, written in Go with the [gocui](https://gi </p> <p align="center"> -<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><a href="https://github.com/jakewarren"><img src="https://github.com/jakewarren.png" width="60px" alt="" /></a><a href="https://github.com/huettern"><img src="https://github.com/huettern.png" width="60px" alt="" /></a><a href="https://github.com/lukasjarosch"><img src="https://github.com/lukasjarosch.png" width="60px" alt="" /></a><!-- sponsors --> +<!-- sponsors --><a href="https://github.com/atecce"><img src="https://github.com/atecce.png" width="60px" alt="" /></a><a href="https://github.com/intabulas"><img src="https://github.com/intabulas.png" width="60px" alt="" /></a><a href="https://github.com/peppy"><img src="https://github.com/peppy.png" width="60px" alt="" /></a><a href="https://github.com/piot"><img src="https://github.com/piot.png" width="60px" alt="" /></a><a href="https://github.com/blacky14"><img src="https://github.com/blacky14.png" width="60px" alt="" /></a><a href="https://github.com/rgwood"><img src="https://github.com/rgwood.png" width="60px" alt="" /></a><a href="https://github.com/oliverguenther"><img src="https://github.com/oliverguenther.png" width="60px" alt="" /></a><a href="https://github.com/pawanjay176"><img src="https://github.com/pawanjay176.png" width="60px" alt="" /></a><a href="https://github.com/bdach"><img src="https://github.com/bdach.png" width="60px" alt="" /></a><a href="https://github.com/naoey"><img src="https://github.com/naoey.png" width="60px" alt="" /></a><a href="https://github.com/jryom"><img src="https://github.com/jryom.png" width="60px" alt="" /></a><a href="https://github.com/sagor999"><img src="https://github.com/sagor999.png" width="60px" alt="" /></a><a href="https://github.com/fargozhu"><img src="https://github.com/fargozhu.png" width="60px" alt="" /></a><a href="https://github.com/carstengehling"><img src="https://github.com/carstengehling.png" width="60px" alt="" /></a><a href="https://github.com/ceuk"><img src="https://github.com/ceuk.png" width="60px" alt="" /></a><a href="https://github.com/akospwc"><img src="https://github.com/akospwc.png" width="60px" alt="" /></a><a href="https://github.com/peterdieleman"><img src="https://github.com/peterdieleman.png" width="60px" alt="" /></a><a href="https://github.com/Xetera"><img src="https://github.com/Xetera.png" width="60px" alt="" /></a><a href="https://github.com/HoldenLucas"><img src="https://github.com/HoldenLucas.png" width="60px" alt="" /></a><a href="https://github.com/barbados-clemens"><img src="https://github.com/barbados-clemens.png" width="60px" alt="" /></a><a href="https://github.com/nartc"><img src="https://github.com/nartc.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/matejcik"><img src="https://github.com/matejcik.png" width="60px" alt="" /></a><a href="https://github.com/lucatume"><img src="https://github.com/lucatume.png" width="60px" alt="" /></a><a href="https://github.com/dbabiak"><img src="https://github.com/dbabiak.png" width="60px" alt="" /></a><a href="https://github.com/davidlattimore"><img src="https://github.com/davidlattimore.png" width="60px" alt="" /></a><a href="https://github.com/zach-fuller"><img src="https://github.com/zach-fuller.png" width="60px" alt="" /></a><a href="https://github.com/escrafford"><img src="https://github.com/escrafford.png" width="60px" alt="" /></a><a href="https://github.com/KowalskiPiotr98"><img src="https://github.com/KowalskiPiotr98.png" width="60px" alt="" /></a><a href="https://github.com/IvanZuy"><img src="https://github.com/IvanZuy.png" width="60px" alt="" /></a><a href="https://github.com/nicholascloud"><img src="https://github.com/nicholascloud.png" width="60px" alt="" /></a><a href="https://github.com/topher200"><img src="https://github.com/topher200.png" width="60px" alt="" /></a><a href="https://github.com/"><img src="https://github.com/.png" width="60px" alt="" /></a><a href="https://github.com/PhotonQuantum"><img src="https://github.com/PhotonQuantum.png" width="60px" alt="" /></a><a href="https://github.com/GitSquared"><img src="https://github.com/GitSquared.png" width="60px" alt="" /></a><a href="https://github.com/ava1ar"><img src="https://github.com/ava1ar.png" width="60px" alt="" /></a><a href="https://github.com/alqh"><img src="https://github.com/alqh.png" width="60px" alt="" /></a><a href="https://github.com/pedropombeiro"><img src="https://github.com/pedropombeiro.png" width="60px" alt="" /></a><a href="https://github.com/minidfx"><img src="https://github.com/minidfx.png" width="60px" alt="" /></a><a href="https://github.com/JoeKlemmer"><img src="https://github.com/JoeKlemmer.png" width="60px" alt="" /></a><a href="https://github.com/MikaelElkiaer"><img src="https://github.com/MikaelElkiaer.png" width="60px" alt="" /></a><a href="https://github.com/smoogipoo"><img src="https://github.com/smoogipoo.png" width="60px" alt="" /></a><a href="https://github.com/ColonelBucket8"><img src="https://github.com/ColonelBucket8.png" width="60px" alt="" /></a><a href="https://github.com/mutewinter"><img src="https://github.com/mutewinter.png" width="60px" alt="" /></a><a href="https://github.com/tobi"><img src="https://github.com/tobi.png" width="60px" alt="" /></a><a href="https://github.com/benmacleod"><img src="https://github.com/benmacleod.png" width="60px" alt="" /></a><a href="https://github.com/claudiofreitas"><img src="https://github.com/claudiofreitas.png" width="60px" alt="" /></a><a href="https://github.com/benbfortis"><img src="https://github.com/benbfortis.png" width="60px" alt="" /></a><a href="https://github.com/jakewarren"><img src="https://github.com/jakewarren.png" width="60px" alt="" /></a><a href="https://github.com/huettern"><img src="https://github.com/huettern.png" width="60px" alt="" /></a><a href="https://github.com/lukasjarosch"><img src="https://github.com/lukasjarosch.png" width="60px" alt="" /></a><a href="https://github.com/tgpholly"><img src="https://github.com/tgpholly.png" width="60px" alt="" /></a><a href="https://github.com/FerencoVonMatterhorn"><img src="https://github.com/FerencoVonMatterhorn.png" width="60px" alt="" /></a><a href="https://github.com/bashcoder"><img src="https://github.com/bashcoder.png" width="60px" alt="" /></a><a href="https://github.com/Fuzznimp"><img src="https://github.com/Fuzznimp.png" width="60px" alt="" /></a><!-- sponsors --> </p> ## Elevator Pitch