From ff3c5d331ecaaa5a9f372deda8877a92331dde7f Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sat, 25 Feb 2023 22:09:14 +1100 Subject: [PATCH 1/5] migrate merge conflict tests --- pkg/integration/tests/conflicts/filter.go | 38 +++++ .../tests/conflicts/resolve_externally.go | 33 ++++ .../tests/conflicts/resolve_multiple_files.go | 54 ++++++ pkg/integration/tests/shared/conflicts.go | 40 +++-- pkg/integration/tests/tests_gen.go | 3 + .../mergeConflicts/config/config.yml | 5 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 36 ---- .../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 | 10 -- .../expected/repo/.git_keep/description | 1 - .../expected/repo/.git_keep/index | Bin 1814 -> 0 bytes .../expected/repo/.git_keep/info/exclude | 7 - .../expected/repo/.git_keep/logs/HEAD | 34 ---- .../.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 - .../09/cbe8c6717c06a61876b7b641a46a62bf3c585d | Bin 112 -> 0 bytes .../0b/2387a3f67ec050f6d4e08f379e3cbb0a9913f1 | Bin 148 -> 0 bytes .../16/18ce1085acb41fd710e279ac38911aadfb0a09 | Bin 121 -> 0 bytes .../17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 | Bin 34 -> 0 bytes .../17/4a8c9444cfa700682d74059d9fa9be5749242c | Bin 177 -> 0 bytes .../18/0cf8328022becee9aaa2577a8f84ea2b9f3827 | Bin 21 -> 0 bytes .../18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 | Bin 66 -> 0 bytes .../1b/9ae5f5dff631baaa180a30afd9983f83dc27ca | Bin 50 -> 0 bytes .../1f/bc3eb4b11cb89b204a593572c2e01462ca5a89 | 4 - .../20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 | Bin 144 -> 0 bytes .../21/78af7503938665881174069be4d48fa483e4af | Bin 117 -> 0 bytes .../22/b0fd807dd5e428c2d818aef6a2311d7c11e885 | Bin 66 -> 0 bytes .../24/10ee12b940bade9d9e99413732faa6dc60adb1 | Bin 34 -> 0 bytes .../24/6f7487e08e6330ccbec4053e701145d53f64d4 | Bin 327 -> 0 bytes .../27/94411aa7b73b44f533fb862cdb9dbfd13c5d92 | Bin 145 -> 0 bytes .../2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 | Bin 150 -> 0 bytes .../32/d15fd4451b6693a93d6420c8af6cfc99348e71 | Bin 80 -> 0 bytes .../34/1cf8213827614a274c750cd7dec4307eb41de7 | Bin 153 -> 0 bytes .../34/c74161eef968fc951cf170a011fa8abfeddbcd | Bin 120 -> 0 bytes .../36/e0ef3e52c6e29e64980c71defbab6064d2da8c | Bin 252 -> 0 bytes .../38/08a710b52a152bb73805fe274e0d877cf61800 | 2 - .../49/7b1e236588f0e2674c9a5787abeb226abf3680 | Bin 407 -> 0 bytes .../4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 | 1 - .../55/9043765dc6c32c943b6278b4abbff1e6f52839 | 3 - .../55/f688e6b47b7a5ca8ffc4e25b77c1af6222b503 | 6 - .../56/2af0640203fb5a6e92c090d8d1ded26806d2c4 | Bin 147 -> 0 bytes .../5d/874a902548f753e50944827e572a7470aa9731 | Bin 107 -> 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 .../61/db24350a92fa37b2fe35f13eb3dd3f7655f6cf | 2 - .../78/3666de4acbb22a9efc205197667f5136118c54 | Bin 328 -> 0 bytes .../88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d | Bin 66 -> 0 bytes .../88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 | Bin 65 -> 0 bytes .../90/a84fd62f8033027fab3e567a81d5ed2a6a71cd | Bin 66 -> 0 bytes .../91/65a12a95d3b2b9b8a0374de787af169b2c339e | Bin 48 -> 0 bytes .../95/9d7a10da71acf97b17300b40a3b4f30903e09c | Bin 358 -> 0 bytes .../9d/e8260b738a34a74533df54f2e404276aa96242 | Bin 54 -> 0 bytes .../a1/9ec0b99e516795f349033f09383f87be0b74e9 | 2 - .../a1/e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b | 4 - .../a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 | Bin 21 -> 0 bytes .../af/a76754c933269d7cd45630a7184a20849dbe9c | Bin 66 -> 0 bytes .../b0/753bdba91b84e3f406e21dbc7deba8e98f1fc8 | Bin 153 -> 0 bytes .../b2/d5312a06a9c56e9ada21c48a12f57ce8dd4c4a | 3 - .../b4/121e2d6aa156227b6541431ddfb8594904b520 | Bin 66 -> 0 bytes .../c1/dd146476a4a37fff75b88612a718281ea83b58 | Bin 277 -> 0 bytes .../cc/19bee93215b6c20ab129fb2c006762d4ae1497 | Bin 155 -> 0 bytes .../d0/60f7226715ca55b04e91fad2b8aca01badd993 | Bin 303 -> 0 bytes .../d3/e2708327280097b5e1f8ab69309934b24f8b64 | 3 - .../d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 | Bin 201 -> 0 bytes .../da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 | Bin 227 -> 0 bytes .../dc/d348507ba1da8f6479b9d964daa302b2fb9d9c | 1 - .../dd/259e90c3748e269bdf1ee3ce537a006d2394aa | 3 - .../df/2c0daa40dcba0dded361a25ff7806b13db59a6 | Bin 154 -> 0 bytes .../df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b | Bin 21 -> 0 bytes .../e3/ae5c6d8407e8307b9bc77923be78c901408f6e | Bin 50 -> 0 bytes .../e4/48ae5bf6371d80ebee24a22b6df341797a6511 | Bin 66 -> 0 bytes .../e4/666ba294866d5c16f9afebcacf8f4adfee7439 | Bin 86 -> 0 bytes .../e5/63585cb87cc39b553ca421902d631ea8890118 | 2 - .../ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d | Bin 361 -> 0 bytes .../eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 | Bin 66 -> 0 bytes .../ed/d4e2e50eb82125428b045c540a9194d934e180 | Bin 154 -> 0 bytes .../f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 | Bin 144 -> 0 bytes .../f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 | Bin 54 -> 0 bytes .../f7/f30ea7f84d4521d3ce9cc08b780c7a1bf7cc5e | Bin 163 -> 0 bytes .../f8/9097f0bd23eda6d8977c0edfae7f913ffc5db3 | Bin 158 -> 0 bytes .../f8/dd12b796f400be7f59d9471670c3080f9c90a1 | 1 - .../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/cherrypicking1 | 1 - .../expected/repo/cherrypicking2 | 1 - .../expected/repo/cherrypicking3 | 1 - .../expected/repo/cherrypicking4 | 1 - .../expected/repo/cherrypicking5 | 1 - .../expected/repo/cherrypicking6 | 1 - .../expected/repo/cherrypicking7 | 1 - .../expected/repo/cherrypicking8 | 1 - .../expected/repo/cherrypicking9 | 1 - .../expected/repo/directory/file | 1 - .../expected/repo/directory/file2 | 1 - .../mergeConflicts/expected/repo/file | 1 - .../mergeConflicts/expected/repo/file1 | 63 ------- .../mergeConflicts/expected/repo/file3 | 1 - .../mergeConflicts/expected/repo/file4 | 1 - .../mergeConflicts/expected/repo/file5 | 1 - .../integration/mergeConflicts/recording.json | 1 - test/integration/mergeConflicts/setup.sh | 158 ------------------ test/integration/mergeConflicts/test.json | 1 - .../mergeConflictsFiltered/config/config.yml | 5 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 38 ----- .../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 | 10 -- .../expected/repo/.git_keep/description | 1 - .../expected/repo/.git_keep/index | Bin 1734 -> 0 bytes .../expected/repo/.git_keep/info/exclude | 7 - .../expected/repo/.git_keep/logs/HEAD | 33 ---- .../.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 | 2 - .../09/cbe8c6717c06a61876b7b641a46a62bf3c585d | Bin 112 -> 0 bytes .../0f/8c9b8f1cac20c63e92e8df34f6d8b3fa74accd | Bin 162 -> 0 bytes .../17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 | Bin 34 -> 0 bytes .../17/4a8c9444cfa700682d74059d9fa9be5749242c | Bin 177 -> 0 bytes .../18/0cf8328022becee9aaa2577a8f84ea2b9f3827 | Bin 21 -> 0 bytes .../18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 | Bin 66 -> 0 bytes .../1b/9ae5f5dff631baaa180a30afd9983f83dc27ca | Bin 50 -> 0 bytes .../20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 | Bin 144 -> 0 bytes .../21/730e75ee0eec374cc54eb1140d24e03db834fc | 1 - .../21/78af7503938665881174069be4d48fa483e4af | Bin 117 -> 0 bytes .../22/b0fd807dd5e428c2d818aef6a2311d7c11e885 | Bin 66 -> 0 bytes .../24/6f7487e08e6330ccbec4053e701145d53f64d4 | Bin 327 -> 0 bytes .../2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 | Bin 150 -> 0 bytes .../32/d15fd4451b6693a93d6420c8af6cfc99348e71 | Bin 80 -> 0 bytes .../34/c74161eef968fc951cf170a011fa8abfeddbcd | Bin 120 -> 0 bytes .../34/d20faa891d1857610dce8f790a35b702ebd7ee | 3 - .../36/e0ef3e52c6e29e64980c71defbab6064d2da8c | Bin 252 -> 0 bytes .../38/08a710b52a152bb73805fe274e0d877cf61800 | 2 - .../41/893d444283aa0c46aa7b5ee01811522cca473d | 3 - .../4b/6f90d670c40e5ac78d9c405a5bc40932a0980b | 3 - .../4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 | 1 - .../5d/a4d9200457542d875fe4def54ac98c16332db0 | Bin 33 -> 0 bytes .../5e/66799d4a5a3fed89757f3df445a962c9ce2d4f | Bin 381 -> 0 bytes .../5f/3e4598b46a912f0f95a4898743e979343c82f3 | Bin 86 -> 0 bytes .../60/91d709b275e712111d016d9b3a4fb44e63f1f6 | Bin 54 -> 0 bytes .../61/01e935461d4cd862ae4a720846e87880d198b9 | Bin 66 -> 0 bytes .../67/b2eea3191ca9a6efc8c1685aadd8e6dbae2b45 | Bin 155 -> 0 bytes .../6c/590c6a21f4e6d335528b5ecf6c52993b914996 | Bin 158 -> 0 bytes .../72/c9bf1e687e81778850d517953c64f03adbaa1b | 2 - .../72/df4fceb0be99deb091ece3f501ef80b39a876a | Bin 74 -> 0 bytes .../78/3666de4acbb22a9efc205197667f5136118c54 | Bin 328 -> 0 bytes .../79/6a5a2670ccb2d08db89b9cfcaa07e9be5358e6 | 2 - .../88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d | Bin 66 -> 0 bytes .../88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 | Bin 65 -> 0 bytes .../90/a84fd62f8033027fab3e567a81d5ed2a6a71cd | Bin 66 -> 0 bytes .../91/65a12a95d3b2b9b8a0374de787af169b2c339e | Bin 48 -> 0 bytes .../95/9d7a10da71acf97b17300b40a3b4f30903e09c | Bin 358 -> 0 bytes .../9a/92a03fdc6eb492ea1ac7acf4fdb04962092f81 | Bin 160 -> 0 bytes .../9d/e8260b738a34a74533df54f2e404276aa96242 | Bin 54 -> 0 bytes .../a5/1a44d96e13555215619b32065d0a22d95b8476 | 2 - .../a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 | Bin 21 -> 0 bytes .../ab/daa06b758aa198cc4afb9c406c87c5690d0ca0 | Bin 157 -> 0 bytes .../af/a76754c933269d7cd45630a7184a20849dbe9c | Bin 66 -> 0 bytes .../b2/afb2548f2d143fdd691058f2283b03933a1749 | 4 - .../b4/121e2d6aa156227b6541431ddfb8594904b520 | Bin 66 -> 0 bytes .../c1/dd146476a4a37fff75b88612a718281ea83b58 | Bin 277 -> 0 bytes .../c6/2b5bc94e327ddb9b545213ff77b207ade48aba | Bin 148 -> 0 bytes .../d0/60f7226715ca55b04e91fad2b8aca01badd993 | Bin 303 -> 0 bytes .../d4/f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 | 5 - .../d7/d52ecd690fe82c7d820ddb437e82d78b0fa7b2 | Bin 203 -> 0 bytes .../d8/8617710499a59992caf98d6df1b5f981c58ab1 | 3 - .../d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 | Bin 201 -> 0 bytes .../da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 | Bin 227 -> 0 bytes .../dc/d348507ba1da8f6479b9d964daa302b2fb9d9c | 1 - .../dd/401e3ee3d58b648207cee7f737364a37139bea | Bin 157 -> 0 bytes .../df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b | Bin 21 -> 0 bytes .../e3/ae5c6d8407e8307b9bc77923be78c901408f6e | Bin 50 -> 0 bytes .../e4/48ae5bf6371d80ebee24a22b6df341797a6511 | Bin 66 -> 0 bytes .../e4/666ba294866d5c16f9afebcacf8f4adfee7439 | Bin 86 -> 0 bytes .../ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d | Bin 361 -> 0 bytes .../eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 | Bin 66 -> 0 bytes .../f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 | Bin 144 -> 0 bytes .../f3/7ec566036d715d6995f55dbc82a4fb3cf56f2f | Bin 121 -> 0 bytes .../f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 | Bin 54 -> 0 bytes .../fa/5c5dac095b577173e47b4a0c139525eced009f | 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/cherrypicking1 | 1 - .../expected/repo/cherrypicking2 | 1 - .../expected/repo/cherrypicking3 | 1 - .../expected/repo/cherrypicking4 | 1 - .../expected/repo/cherrypicking5 | 1 - .../expected/repo/cherrypicking6 | 1 - .../expected/repo/cherrypicking7 | 1 - .../expected/repo/cherrypicking8 | 1 - .../expected/repo/cherrypicking9 | 1 - .../expected/repo/directory/file | 1 - .../expected/repo/directory/file2 | 1 - .../mergeConflictsFiltered/expected/repo/file | 1 - .../expected/repo/file1 | 63 ------- .../expected/repo/file3 | 1 - .../expected/repo/file4 | 1 - .../expected/repo/file5 | 1 - .../mergeConflictsFiltered/recording.json | 1 - .../mergeConflictsFiltered/setup.sh | 156 ----------------- .../mergeConflictsFiltered/test.json | 4 - .../config/config.yml | 6 - .../expected/repo/.git_keep/COMMIT_EDITMSG | 20 --- .../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 | 10 -- .../expected/repo/.git_keep/description | 1 - .../expected/repo/.git_keep/index | Bin 231 -> 0 bytes .../expected/repo/.git_keep/info/exclude | 7 - .../expected/repo/.git_keep/logs/HEAD | 7 - .../repo/.git_keep/logs/refs/heads/master | 2 - .../repo/.git_keep/logs/refs/heads/other | 3 - .../03/959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 | 4 - .../08/84a47e04257f4c85435a8b10ff4f15fffa63fc | Bin 23 -> 0 bytes .../0b/e6e80a67f6276c5ede28dd6b8fa8873f1b23c5 | Bin 22 -> 0 bytes .../2d/8021ed8803ed6142d31b331850ef46246391a7 | Bin 49 -> 0 bytes .../53/502c7023f80c046a1b00b45614d5ffef8977d9 | Bin 48 -> 0 bytes .../69/1ee9e9d9c654c81214f56c514ff725f46cb9e4 | Bin 148 -> 0 bytes .../6b/03bc7537ecf00b48a0ea57ce1edf388ed3f1ad | Bin 49 -> 0 bytes .../76/9c8b8d89700f6f196b8331159150746a839662 | 3 - .../bd/2b32f02abf86a2bb79a12ab09758e44b204b34 | Bin 23 -> 0 bytes .../c0/565d7cfcf1039c969105f2e1c86ca5eff64381 | Bin 49 -> 0 bytes .../f2/df244fb87b6ba1d2ab484d76c66baba168a867 | Bin 197 -> 0 bytes .../expected/repo/.git_keep/refs/heads/master | 1 - .../expected/repo/.git_keep/refs/heads/other | 1 - .../expected/repo/file | 1 - .../recording.json | 1 - .../mergeConflictsResolvedExternally/setup.sh | 29 ---- .../test.json | 4 - 247 files changed, 156 insertions(+), 912 deletions(-) create mode 100644 pkg/integration/tests/conflicts/filter.go create mode 100644 pkg/integration/tests/conflicts/resolve_externally.go create mode 100644 pkg/integration/tests/conflicts/resolve_multiple_files.go delete mode 100644 test/integration/mergeConflicts/config/config.yml delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/FETCH_HEAD delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/ORIG_HEAD delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/config delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/description delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/index delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/info/exclude delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/base_branch delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/develop delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/other_branch delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/0b/2387a3f67ec050f6d4e08f379e3cbb0a9913f1 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/16/18ce1085acb41fd710e279ac38911aadfb0a09 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/17/4a8c9444cfa700682d74059d9fa9be5749242c delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/1f/bc3eb4b11cb89b204a593572c2e01462ca5a89 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/22/b0fd807dd5e428c2d818aef6a2311d7c11e885 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/24/10ee12b940bade9d9e99413732faa6dc60adb1 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/24/6f7487e08e6330ccbec4053e701145d53f64d4 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/27/94411aa7b73b44f533fb862cdb9dbfd13c5d92 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/32/d15fd4451b6693a93d6420c8af6cfc99348e71 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/34/1cf8213827614a274c750cd7dec4307eb41de7 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/36/e0ef3e52c6e29e64980c71defbab6064d2da8c delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/49/7b1e236588f0e2674c9a5787abeb226abf3680 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/55/9043765dc6c32c943b6278b4abbff1e6f52839 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/55/f688e6b47b7a5ca8ffc4e25b77c1af6222b503 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/56/2af0640203fb5a6e92c090d8d1ded26806d2c4 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/5d/874a902548f753e50944827e572a7470aa9731 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/5d/a4d9200457542d875fe4def54ac98c16332db0 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/61/01e935461d4cd862ae4a720846e87880d198b9 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/61/db24350a92fa37b2fe35f13eb3dd3f7655f6cf delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/78/3666de4acbb22a9efc205197667f5136118c54 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/90/a84fd62f8033027fab3e567a81d5ed2a6a71cd delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/91/65a12a95d3b2b9b8a0374de787af169b2c339e delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/95/9d7a10da71acf97b17300b40a3b4f30903e09c delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/a1/9ec0b99e516795f349033f09383f87be0b74e9 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/a1/e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/af/a76754c933269d7cd45630a7184a20849dbe9c delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/b0/753bdba91b84e3f406e21dbc7deba8e98f1fc8 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/b2/d5312a06a9c56e9ada21c48a12f57ce8dd4c4a delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/b4/121e2d6aa156227b6541431ddfb8594904b520 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/c1/dd146476a4a37fff75b88612a718281ea83b58 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/cc/19bee93215b6c20ab129fb2c006762d4ae1497 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/d0/60f7226715ca55b04e91fad2b8aca01badd993 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/d3/e2708327280097b5e1f8ab69309934b24f8b64 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/dd/259e90c3748e269bdf1ee3ce537a006d2394aa delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/df/2c0daa40dcba0dded361a25ff7806b13db59a6 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/e4/48ae5bf6371d80ebee24a22b6df341797a6511 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/e5/63585cb87cc39b553ca421902d631ea8890118 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/ed/d4e2e50eb82125428b045c540a9194d934e180 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/f7/f30ea7f84d4521d3ce9cc08b780c7a1bf7cc5e delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/f8/9097f0bd23eda6d8977c0edfae7f913ffc5db3 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/f8/dd12b796f400be7f59d9471670c3080f9c90a1 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/objects/fd/31cea7e0b6e8d334280be34db8dd86cdda3007 delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/base_branch delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/develop delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/feature/cherry-picking delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/other_branch delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking1 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking2 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking3 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking4 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking5 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking6 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking7 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking8 delete mode 100644 test/integration/mergeConflicts/expected/repo/cherrypicking9 delete mode 100644 test/integration/mergeConflicts/expected/repo/directory/file delete mode 100644 test/integration/mergeConflicts/expected/repo/directory/file2 delete mode 100644 test/integration/mergeConflicts/expected/repo/file delete mode 100644 test/integration/mergeConflicts/expected/repo/file1 delete mode 100644 test/integration/mergeConflicts/expected/repo/file3 delete mode 100644 test/integration/mergeConflicts/expected/repo/file4 delete mode 100644 test/integration/mergeConflicts/expected/repo/file5 delete mode 100644 test/integration/mergeConflicts/recording.json delete mode 100644 test/integration/mergeConflicts/setup.sh delete mode 100644 test/integration/mergeConflicts/test.json delete mode 100644 test/integration/mergeConflictsFiltered/config/config.yml delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/FETCH_HEAD delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/ORIG_HEAD delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/config delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/description delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/index delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/info/exclude delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/base_branch delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/develop delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/other_branch delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/0f/8c9b8f1cac20c63e92e8df34f6d8b3fa74accd delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/17/4a8c9444cfa700682d74059d9fa9be5749242c delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/18/0cf8328022becee9aaa2577a8f84ea2b9f3827 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/1b/9ae5f5dff631baaa180a30afd9983f83dc27ca delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/21/730e75ee0eec374cc54eb1140d24e03db834fc delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/22/b0fd807dd5e428c2d818aef6a2311d7c11e885 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/24/6f7487e08e6330ccbec4053e701145d53f64d4 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/2e/cced19ece4424e0d3f26eb3ea2ccb6bfeafaa8 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/32/d15fd4451b6693a93d6420c8af6cfc99348e71 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/34/d20faa891d1857610dce8f790a35b702ebd7ee delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/36/e0ef3e52c6e29e64980c71defbab6064d2da8c delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/41/893d444283aa0c46aa7b5ee01811522cca473d delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/4b/6f90d670c40e5ac78d9c405a5bc40932a0980b delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/5d/a4d9200457542d875fe4def54ac98c16332db0 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/5e/66799d4a5a3fed89757f3df445a962c9ce2d4f delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/61/01e935461d4cd862ae4a720846e87880d198b9 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/67/b2eea3191ca9a6efc8c1685aadd8e6dbae2b45 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/6c/590c6a21f4e6d335528b5ecf6c52993b914996 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/72/c9bf1e687e81778850d517953c64f03adbaa1b delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/72/df4fceb0be99deb091ece3f501ef80b39a876a delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/78/3666de4acbb22a9efc205197667f5136118c54 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/79/6a5a2670ccb2d08db89b9cfcaa07e9be5358e6 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/88/9b0fdfe5f2ae3d7df3066f3bc1e181fa712c8d delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/88/c39cdc29c995f8e1a63ccd48e7bbd6d96cb8b8 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/90/a84fd62f8033027fab3e567a81d5ed2a6a71cd delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/91/65a12a95d3b2b9b8a0374de787af169b2c339e delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/95/9d7a10da71acf97b17300b40a3b4f30903e09c delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/9a/92a03fdc6eb492ea1ac7acf4fdb04962092f81 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/a5/1a44d96e13555215619b32065d0a22d95b8476 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/ab/daa06b758aa198cc4afb9c406c87c5690d0ca0 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/af/a76754c933269d7cd45630a7184a20849dbe9c delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/b2/afb2548f2d143fdd691058f2283b03933a1749 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/b4/121e2d6aa156227b6541431ddfb8594904b520 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/c1/dd146476a4a37fff75b88612a718281ea83b58 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/c6/2b5bc94e327ddb9b545213ff77b207ade48aba delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d0/60f7226715ca55b04e91fad2b8aca01badd993 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d4/f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d7/d52ecd690fe82c7d820ddb437e82d78b0fa7b2 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d8/8617710499a59992caf98d6df1b5f981c58ab1 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/da/72a6dd6fbaaa4a2803a3c867437ab81a1a99a0 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/dd/401e3ee3d58b648207cee7f737364a37139bea delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/e4/48ae5bf6371d80ebee24a22b6df341797a6511 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/e4/666ba294866d5c16f9afebcacf8f4adfee7439 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/ea/a48cb1e3d47e1b8b8df47bdc248e991207cc3d delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/f1/46c7f7b874778c1ad0cf9aebe45ec2427c7de2 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/f3/7ec566036d715d6995f55dbc82a4fb3cf56f2f delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/fa/5c5dac095b577173e47b4a0c139525eced009f delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/fd/31cea7e0b6e8d334280be34db8dd86cdda3007 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/base_branch delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/develop delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/feature/cherry-picking delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/other_branch delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking1 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking2 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking3 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking4 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking5 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking6 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking7 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking8 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/cherrypicking9 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/directory/file delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/directory/file2 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/file delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/file1 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/file3 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/file4 delete mode 100644 test/integration/mergeConflictsFiltered/expected/repo/file5 delete mode 100644 test/integration/mergeConflictsFiltered/recording.json delete mode 100644 test/integration/mergeConflictsFiltered/setup.sh delete mode 100644 test/integration/mergeConflictsFiltered/test.json delete mode 100644 test/integration/mergeConflictsResolvedExternally/config/config.yml delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/COMMIT_EDITMSG delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/FETCH_HEAD delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/HEAD delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/ORIG_HEAD delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/config delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/description delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/index delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/info/exclude delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/HEAD delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/master delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/other delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/03/959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/08/84a47e04257f4c85435a8b10ff4f15fffa63fc delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/0b/e6e80a67f6276c5ede28dd6b8fa8873f1b23c5 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/2d/8021ed8803ed6142d31b331850ef46246391a7 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/53/502c7023f80c046a1b00b45614d5ffef8977d9 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/69/1ee9e9d9c654c81214f56c514ff725f46cb9e4 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/6b/03bc7537ecf00b48a0ea57ce1edf388ed3f1ad delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/76/9c8b8d89700f6f196b8331159150746a839662 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/bd/2b32f02abf86a2bb79a12ab09758e44b204b34 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/c0/565d7cfcf1039c969105f2e1c86ca5eff64381 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/f2/df244fb87b6ba1d2ab484d76c66baba168a867 delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/master delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/other delete mode 100644 test/integration/mergeConflictsResolvedExternally/expected/repo/file delete mode 100644 test/integration/mergeConflictsResolvedExternally/recording.json delete mode 100644 test/integration/mergeConflictsResolvedExternally/setup.sh delete mode 100644 test/integration/mergeConflictsResolvedExternally/test.json diff --git a/pkg/integration/tests/conflicts/filter.go b/pkg/integration/tests/conflicts/filter.go new file mode 100644 index 000000000..b5f4b4c81 --- /dev/null +++ b/pkg/integration/tests/conflicts/filter.go @@ -0,0 +1,38 @@ +package conflicts + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" + "github.com/jesseduffield/lazygit/pkg/integration/tests/shared" +) + +var Filter = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Ensures that when there are merge conflicts, the files panel only shows conflicted files", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shared.CreateMergeConflictFiles(shell) + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU").Contains("file1").IsSelected(), + Contains("UU").Contains("file2"), + ). + Press(keys.Files.OpenStatusFilter). + Tap(func() { + t.ExpectPopup().Menu(). + Title(Equals("Filtering")). + Select(Contains("Reset filter")). + Confirm() + }). + Lines( + Contains("UU").Contains("file1").IsSelected(), + Contains("UU").Contains("file2"), + // now we see the non-merge conflict file + Contains("A ").Contains("file3"), + ) + }, +}) diff --git a/pkg/integration/tests/conflicts/resolve_externally.go b/pkg/integration/tests/conflicts/resolve_externally.go new file mode 100644 index 000000000..385e9ce4a --- /dev/null +++ b/pkg/integration/tests/conflicts/resolve_externally.go @@ -0,0 +1,33 @@ +package conflicts + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" + "github.com/jesseduffield/lazygit/pkg/integration/tests/shared" +) + +var ResolveExternally = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Ensures that when merge conflicts are resolved outside of lazygit, lazygit prompts you to continue", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shared.CreateMergeConflictFile(shell) + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU file").IsSelected(), + ). + Tap(func() { + t.Shell().UpdateFile("file", "resolved content") + }). + Press(keys.Universal.Refresh) + + t.Actions().ContinueOnConflictsResolved() + + t.Views().Files(). + IsEmpty() + }, +}) diff --git a/pkg/integration/tests/conflicts/resolve_multiple_files.go b/pkg/integration/tests/conflicts/resolve_multiple_files.go new file mode 100644 index 000000000..2be35148e --- /dev/null +++ b/pkg/integration/tests/conflicts/resolve_multiple_files.go @@ -0,0 +1,54 @@ +package conflicts + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" + "github.com/jesseduffield/lazygit/pkg/integration/tests/shared" +) + +var ResolveMultipleFiles = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Ensures that upon resolving conflicts for one file, the next file is selected", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shared.CreateMergeConflictFiles(shell) + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU").Contains("file1").IsSelected(), + Contains("UU").Contains("file2"), + ). + PressEnter() + + t.Views().MergeConflicts(). + IsFocused(). + SelectedLines( + Contains("<<<<<<< HEAD"), + Contains("First Change"), + Contains("======="), + ). + PressPrimaryAction() + + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU").Contains("file2").IsSelected(), + ). + PressEnter() + + // coincidentally these files have the same conflict + t.Views().MergeConflicts(). + IsFocused(). + SelectedLines( + Contains("<<<<<<< HEAD"), + Contains("First Change"), + Contains("======="), + ). + PressPrimaryAction() + + t.Actions().ContinueOnConflictsResolved() + }, +}) diff --git a/pkg/integration/tests/shared/conflicts.go b/pkg/integration/tests/shared/conflicts.go index 39a37cc37..76800a878 100644 --- a/pkg/integration/tests/shared/conflicts.go +++ b/pkg/integration/tests/shared/conflicts.go @@ -60,6 +60,33 @@ var CreateMergeCommit = func(shell *Shell) { shell.ContinueMerge() } +// creates a merge conflict where there are two files with conflicts and a separate file without conflicts +var CreateMergeConflictFiles = func(shell *Shell) { + shell. + NewBranch("original-branch"). + EmptyCommit("one"). + EmptyCommit("two"). + EmptyCommit("three"). + CreateFileAndAdd("file1", OriginalFileContent). + CreateFileAndAdd("file2", OriginalFileContent). + Commit("original"). + NewBranch("first-change-branch"). + UpdateFileAndAdd("file1", FirstChangeFileContent). + UpdateFileAndAdd("file2", FirstChangeFileContent). + Commit("first change"). + Checkout("original-branch"). + NewBranch("second-change-branch"). + UpdateFileAndAdd("file1", SecondChangeFileContent). + UpdateFileAndAdd("file2", SecondChangeFileContent). + // this file is not changed in the second branch + CreateFileAndAdd("file3", "content"). + Commit("second change"). + EmptyCommit("second-change-branch unrelated change"). + Checkout("first-change-branch") + + shell.RunShellCommandExpectError("git merge --no-edit second-change-branch") +} + // These 'multiple' variants are just like the short ones but with longer file contents and with multiple conflicts within the file. var OriginalFileContentMultiple = ` @@ -110,8 +137,7 @@ Other Other Second Change ` -// prepares us for a rebase/merge that has conflicts -var MergeConflictsSetupMultiple = func(shell *Shell) { +var CreateMergeConflictFileMultiple = func(shell *Shell) { shell. NewBranch("original-branch"). EmptyCommit("one"). @@ -128,16 +154,6 @@ var MergeConflictsSetupMultiple = func(shell *Shell) { Commit("second change"). EmptyCommit("second-change-branch unrelated change"). Checkout("first-change-branch") -} - -var CreateMergeConflictFileMultiple = func(shell *Shell) { - MergeConflictsSetupMultiple(shell) shell.RunShellCommandExpectError("git merge --no-edit second-change-branch") } - -var CreateMergeCommitMultiple = func(shell *Shell) { - CreateMergeConflictFileMultiple(shell) - shell.UpdateFileAndAdd("file", SecondChangeFileContentMultiple) - shell.ContinueMerge() -} diff --git a/pkg/integration/tests/tests_gen.go b/pkg/integration/tests/tests_gen.go index 16cf7d92a..dd1dfd70f 100644 --- a/pkg/integration/tests/tests_gen.go +++ b/pkg/integration/tests/tests_gen.go @@ -59,6 +59,9 @@ var tests = []*components.IntegrationTest{ commit.StagedWithoutHooks, commit.Unstaged, config.RemoteNamedStar, + conflicts.Filter, + conflicts.ResolveExternally, + conflicts.ResolveMultipleFiles, conflicts.UndoChooseHunk, custom_commands.Basic, custom_commands.FormPrompts, diff --git a/test/integration/mergeConflicts/config/config.yml b/test/integration/mergeConflicts/config/config.yml deleted file mode 100644 index 718ebf70d..000000000 --- a/test/integration/mergeConflicts/config/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -disableStartupPopups: true -gui: - showFileTree: false -refresher: - refreshInterval: 1 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/mergeConflicts/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index b41fd4b11..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1,36 +0,0 @@ -Merge branch 'develop' into other_branch - -# Conflicts: -# directory/file -# directory/file2 -# file1 -# file3 -# file4 -# file5 -# -# It looks like you may be committing a merge. -# If this is not correct, please remove the file -# /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/mergeConflicts/actual/.git/MERGE_HEAD -# and try again. - - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# -# On branch other_branch -# All conflicts fixed but you are still merging. -# -# Changes to be committed: -# new file: cherrypicking1 -# new file: cherrypicking2 -# new file: cherrypicking3 -# new file: cherrypicking4 -# new file: cherrypicking5 -# new file: cherrypicking6 -# new file: cherrypicking7 -# new file: cherrypicking8 -# new file: cherrypicking9 -# modified: file1 -# modified: file4 -# modified: file5 -# diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/FETCH_HEAD b/test/integration/mergeConflicts/expected/repo/.git_keep/FETCH_HEAD deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/HEAD b/test/integration/mergeConflicts/expected/repo/.git_keep/HEAD deleted file mode 100644 index 904a2e296..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/other_branch diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/ORIG_HEAD b/test/integration/mergeConflicts/expected/repo/.git_keep/ORIG_HEAD deleted file mode 100644 index c7c35a1e7..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/ORIG_HEAD +++ /dev/null @@ -1 +0,0 @@ -562af0640203fb5a6e92c090d8d1ded26806d2c4 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/config b/test/integration/mergeConflicts/expected/repo/.git_keep/config deleted file mode 100644 index 8ae104545..000000000 --- a/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/.git_keep/description b/test/integration/mergeConflicts/expected/repo/.git_keep/description deleted file mode 100644 index 498b267a8..000000000 --- a/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/.git_keep/index b/test/integration/mergeConflicts/expected/repo/.git_keep/index deleted file mode 100644 index 4e5ae2746971402ecd0b12b47f0fa5e2853611ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1814 zcmZ?q402{*U|<4bfrRX>qGrEX@?bP00|N`2t`JbZaR~zh<5!>>5g;~6WPEArChKz} zX`NRQhue#ahKnbW&r=Ql@ z)_!Kow?6o=@mHZvFPeEqF!RhAEGK}>1JO|PT+z*YJ>kXmjphq)Oldf|N&kZ3%vBDWIwH-$my%hOnp~1!RH>hqnUe}NPr+pMsXIXPz%P+W zpn>KHn(j)R3!|atX`q=Wts?MFXs5%jdvoW_bTl{mwd_v9+Kmh>Fjs-iQIQZ|bOvY+ zn1-4Yj%p5LPHel^1XYjk!B06|n(D%}N(xp@H)LQ1nFG$QAoqwHJej>0MnlaBLN$j$ z`SH4#+!pp12Gz5VS1RwTILYYHp9e7qoUK6SNSK%`ya}VB<^-afBR%Ws*ZbcLcde4( zGFX3ehJEuL^-~aYz}X38j`=ew`n%-ONy&Sj5)>V>!Z zQ!01fOu4m~Y18kybNn0L@KkfYdmX{cBRQp{{DAg}9#xRB#ta5%?!}f;u*Et^w+ThM dP07|RyzJc3M}fcZ3GA7_(%M|i%bVxCHUJ%hUqS!? diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/info/exclude b/test/integration/mergeConflicts/expected/repo/.git_keep/info/exclude deleted file mode 100644 index 8e9f2071f..000000000 --- a/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/.git_keep/logs/HEAD b/test/integration/mergeConflicts/expected/repo/.git_keep/logs/HEAD deleted file mode 100644 index 6ebcd55da..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/HEAD +++ /dev/null @@ -1,34 +0,0 @@ -0000000000000000000000000000000000000000 1618ce1085acb41fd710e279ac38911aadfb0a09 CI 1617671441 +1000 commit (initial): first commit -1618ce1085acb41fd710e279ac38911aadfb0a09 1618ce1085acb41fd710e279ac38911aadfb0a09 CI 1617671441 +1000 checkout: moving from master to feature/cherry-picking -1618ce1085acb41fd710e279ac38911aadfb0a09 b2d5312a06a9c56e9ada21c48a12f57ce8dd4c4a CI 1617671441 +1000 commit: first commit freshman year -b2d5312a06a9c56e9ada21c48a12f57ce8dd4c4a f7f30ea7f84d4521d3ce9cc08b780c7a1bf7cc5e CI 1617671441 +1000 commit: second commit subway eat fresh -f7f30ea7f84d4521d3ce9cc08b780c7a1bf7cc5e edd4e2e50eb82125428b045c540a9194d934e180 CI 1617671441 +1000 commit: third commit fresh -edd4e2e50eb82125428b045c540a9194d934e180 cc19bee93215b6c20ab129fb2c006762d4ae1497 CI 1617671441 +1000 commit: fourth commit cool -cc19bee93215b6c20ab129fb2c006762d4ae1497 b0753bdba91b84e3f406e21dbc7deba8e98f1fc8 CI 1617671441 +1000 commit: fifth commit nice -b0753bdba91b84e3f406e21dbc7deba8e98f1fc8 df2c0daa40dcba0dded361a25ff7806b13db59a6 CI 1617671441 +1000 commit: sixth commit haha -df2c0daa40dcba0dded361a25ff7806b13db59a6 1fbc3eb4b11cb89b204a593572c2e01462ca5a89 CI 1617671441 +1000 commit: seventh commit yeah -1fbc3eb4b11cb89b204a593572c2e01462ca5a89 d3e2708327280097b5e1f8ab69309934b24f8b64 CI 1617671441 +1000 commit: eighth commit woo -d3e2708327280097b5e1f8ab69309934b24f8b64 d3e2708327280097b5e1f8ab69309934b24f8b64 CI 1617671441 +1000 checkout: moving from feature/cherry-picking to develop -d3e2708327280097b5e1f8ab69309934b24f8b64 a1e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b CI 1617671441 +1000 commit: first commit on develop -a1e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b 1618ce1085acb41fd710e279ac38911aadfb0a09 CI 1617671441 +1000 checkout: moving from develop to master -1618ce1085acb41fd710e279ac38911aadfb0a09 f89097f0bd23eda6d8977c0edfae7f913ffc5db3 CI 1617671441 +1000 commit: first commit on master -f89097f0bd23eda6d8977c0edfae7f913ffc5db3 a1e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b CI 1617671441 +1000 checkout: moving from master to develop -a1e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b 55f688e6b47b7a5ca8ffc4e25b77c1af6222b503 CI 1617671441 +1000 commit: second commit on develop -55f688e6b47b7a5ca8ffc4e25b77c1af6222b503 f89097f0bd23eda6d8977c0edfae7f913ffc5db3 CI 1617671441 +1000 checkout: moving from develop to master -f89097f0bd23eda6d8977c0edfae7f913ffc5db3 a19ec0b99e516795f349033f09383f87be0b74e9 CI 1617671441 +1000 commit: second commit on master -a19ec0b99e516795f349033f09383f87be0b74e9 55f688e6b47b7a5ca8ffc4e25b77c1af6222b503 CI 1617671441 +1000 checkout: moving from master to develop -55f688e6b47b7a5ca8ffc4e25b77c1af6222b503 dd259e90c3748e269bdf1ee3ce537a006d2394aa CI 1617671441 +1000 commit: third commit on develop -dd259e90c3748e269bdf1ee3ce537a006d2394aa a19ec0b99e516795f349033f09383f87be0b74e9 CI 1617671441 +1000 checkout: moving from develop to master -a19ec0b99e516795f349033f09383f87be0b74e9 61db24350a92fa37b2fe35f13eb3dd3f7655f6cf CI 1617671441 +1000 commit: third commit on master -61db24350a92fa37b2fe35f13eb3dd3f7655f6cf dd259e90c3748e269bdf1ee3ce537a006d2394aa CI 1617671441 +1000 checkout: moving from master to develop -dd259e90c3748e269bdf1ee3ce537a006d2394aa e563585cb87cc39b553ca421902d631ea8890118 CI 1617671441 +1000 commit: fourth commit on develop -e563585cb87cc39b553ca421902d631ea8890118 61db24350a92fa37b2fe35f13eb3dd3f7655f6cf CI 1617671441 +1000 checkout: moving from develop to master -61db24350a92fa37b2fe35f13eb3dd3f7655f6cf 559043765dc6c32c943b6278b4abbff1e6f52839 CI 1617671441 +1000 commit: fourth commit on master -559043765dc6c32c943b6278b4abbff1e6f52839 559043765dc6c32c943b6278b4abbff1e6f52839 CI 1617671441 +1000 checkout: moving from master to base_branch -559043765dc6c32c943b6278b4abbff1e6f52839 0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 CI 1617671441 +1000 commit: file -0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 CI 1617671441 +1000 checkout: moving from base_branch to other_branch -0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 CI 1617671441 +1000 checkout: moving from other_branch to base_branch -0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 341cf8213827614a274c750cd7dec4307eb41de7 CI 1617671441 +1000 commit: file changed -341cf8213827614a274c750cd7dec4307eb41de7 0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 CI 1617671441 +1000 checkout: moving from base_branch to other_branch -0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 562af0640203fb5a6e92c090d8d1ded26806d2c4 CI 1617671444 +1000 commit: asd -562af0640203fb5a6e92c090d8d1ded26806d2c4 f8dd12b796f400be7f59d9471670c3080f9c90a1 CI 1617671461 +1000 commit (merge): Merge branch 'develop' into other_branch diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/base_branch b/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/base_branch deleted file mode 100644 index 6e46aa010..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/base_branch +++ /dev/null @@ -1,3 +0,0 @@ -0000000000000000000000000000000000000000 559043765dc6c32c943b6278b4abbff1e6f52839 CI 1617671441 +1000 branch: Created from HEAD -559043765dc6c32c943b6278b4abbff1e6f52839 0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 CI 1617671441 +1000 commit: file -0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 341cf8213827614a274c750cd7dec4307eb41de7 CI 1617671441 +1000 commit: file changed diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/develop b/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/develop deleted file mode 100644 index 83fe584c1..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/develop +++ /dev/null @@ -1,5 +0,0 @@ -0000000000000000000000000000000000000000 d3e2708327280097b5e1f8ab69309934b24f8b64 CI 1617671441 +1000 branch: Created from HEAD -d3e2708327280097b5e1f8ab69309934b24f8b64 a1e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b CI 1617671441 +1000 commit: first commit on develop -a1e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b 55f688e6b47b7a5ca8ffc4e25b77c1af6222b503 CI 1617671441 +1000 commit: second commit on develop -55f688e6b47b7a5ca8ffc4e25b77c1af6222b503 dd259e90c3748e269bdf1ee3ce537a006d2394aa CI 1617671441 +1000 commit: third commit on develop -dd259e90c3748e269bdf1ee3ce537a006d2394aa e563585cb87cc39b553ca421902d631ea8890118 CI 1617671441 +1000 commit: fourth commit on develop diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking b/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking deleted file mode 100644 index f90ef71fb..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking +++ /dev/null @@ -1,9 +0,0 @@ -0000000000000000000000000000000000000000 1618ce1085acb41fd710e279ac38911aadfb0a09 CI 1617671441 +1000 branch: Created from HEAD -1618ce1085acb41fd710e279ac38911aadfb0a09 b2d5312a06a9c56e9ada21c48a12f57ce8dd4c4a CI 1617671441 +1000 commit: first commit freshman year -b2d5312a06a9c56e9ada21c48a12f57ce8dd4c4a f7f30ea7f84d4521d3ce9cc08b780c7a1bf7cc5e CI 1617671441 +1000 commit: second commit subway eat fresh -f7f30ea7f84d4521d3ce9cc08b780c7a1bf7cc5e edd4e2e50eb82125428b045c540a9194d934e180 CI 1617671441 +1000 commit: third commit fresh -edd4e2e50eb82125428b045c540a9194d934e180 cc19bee93215b6c20ab129fb2c006762d4ae1497 CI 1617671441 +1000 commit: fourth commit cool -cc19bee93215b6c20ab129fb2c006762d4ae1497 b0753bdba91b84e3f406e21dbc7deba8e98f1fc8 CI 1617671441 +1000 commit: fifth commit nice -b0753bdba91b84e3f406e21dbc7deba8e98f1fc8 df2c0daa40dcba0dded361a25ff7806b13db59a6 CI 1617671441 +1000 commit: sixth commit haha -df2c0daa40dcba0dded361a25ff7806b13db59a6 1fbc3eb4b11cb89b204a593572c2e01462ca5a89 CI 1617671441 +1000 commit: seventh commit yeah -1fbc3eb4b11cb89b204a593572c2e01462ca5a89 d3e2708327280097b5e1f8ab69309934b24f8b64 CI 1617671441 +1000 commit: eighth commit woo diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 3ac4fad17..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1,5 +0,0 @@ -0000000000000000000000000000000000000000 1618ce1085acb41fd710e279ac38911aadfb0a09 CI 1617671441 +1000 commit (initial): first commit -1618ce1085acb41fd710e279ac38911aadfb0a09 f89097f0bd23eda6d8977c0edfae7f913ffc5db3 CI 1617671441 +1000 commit: first commit on master -f89097f0bd23eda6d8977c0edfae7f913ffc5db3 a19ec0b99e516795f349033f09383f87be0b74e9 CI 1617671441 +1000 commit: second commit on master -a19ec0b99e516795f349033f09383f87be0b74e9 61db24350a92fa37b2fe35f13eb3dd3f7655f6cf CI 1617671441 +1000 commit: third commit on master -61db24350a92fa37b2fe35f13eb3dd3f7655f6cf 559043765dc6c32c943b6278b4abbff1e6f52839 CI 1617671441 +1000 commit: fourth commit on master diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/other_branch b/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/other_branch deleted file mode 100644 index cb2cf3437..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/logs/refs/heads/other_branch +++ /dev/null @@ -1,3 +0,0 @@ -0000000000000000000000000000000000000000 0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 CI 1617671441 +1000 branch: Created from HEAD -0b2387a3f67ec050f6d4e08f379e3cbb0a9913f1 562af0640203fb5a6e92c090d8d1ded26806d2c4 CI 1617671444 +1000 commit: asd -562af0640203fb5a6e92c090d8d1ded26806d2c4 f8dd12b796f400be7f59d9471670c3080f9c90a1 CI 1617671461 +1000 commit (merge): Merge branch 'develop' into other_branch diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d b/test/integration/mergeConflicts/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<PK~iAM@OWKJZVUShgX-DG SE0y;F6gC_H diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/0b/2387a3f67ec050f6d4e08f379e3cbb0a9913f1 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/0b/2387a3f67ec050f6d4e08f379e3cbb0a9913f1 deleted file mode 100644 index 5c37019a9b178ebec270dc06df9315f29e832605..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148 zcmV;F0Biqv0gcW}3c@fDfMM4;MfQTs})0zVsuVT Cc}DsG diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/16/18ce1085acb41fd710e279ac38911aadfb0a09 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/16/18ce1085acb41fd710e279ac38911aadfb0a09 deleted file mode 100644 index d75634d716952dcce29ea9b05a3dd91493d17bc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmV-<0EYi~0ga783c@fD06pgwdlw|D+f4%^LQj3hHr>U7Atk2J=UeatUWXYbm7JFb z*x{*FRZwE)Nv@H4=DADA7R7W*lB_q9*;E7FqLZz?N`+yB`!GIrm%P69l1hF6G6oJv bgm6ahy*ubJY5J$`Y^k3Hzsh|9bi*&P(sMZn diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 deleted file mode 100644 index 25389c9d662fa3c7c7b5b9b2c4a41240d70f394f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34 qcmbL%-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~ZE#08nZNMgRZ+ diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 b/test/integration/mergeConflicts/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-Q7nZts^PE0#`Wacbg|_{j0{$> Gd}ROuKoaKw diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/1f/bc3eb4b11cb89b204a593572c2e01462ca5a89 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/1f/bc3eb4b11cb89b204a593572c2e01462ca5a89 deleted file mode 100644 index 99413297c..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/1f/bc3eb4b11cb89b204a593572c2e01462ca5a89 +++ /dev/null @@ -1,4 +0,0 @@ -xM -0F]d&͏cPR xŰ*,g>Ӟ -MGΌX; -RlFav(91tRCN9~i`4} (?UϹy諵L5Fkmn-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/mergeConflicts/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af b/test/integration/mergeConflicts/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<PK~iAM@OWKJZVUShgX-DG XE0yi+kh=VyFxv@AV diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/22/b0fd807dd5e428c2d818aef6a2311d7c11e885 b/test/integration/mergeConflicts/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-Q4F=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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q65Fkmn-00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R0b7+cS1WIcHNshZ>FQU(XVB964q`+k~d_ybJ-)Hdf~19l**kq zQ*JG0+Vp$w93%zC43F2v7HD)k0FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^Z_#006FlVrV00j?MM;EUAyyR4c(t`Xvg+zst%-mFkl8n@%RE6@y mVxT}qeo=8Mmn{U~SDKq&3RG$b0SYOpWvMy&1zZ3SiX=>?Kq37A diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/34/1cf8213827614a274c750cd7dec4307eb41de7 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/34/1cf8213827614a274c750cd7dec4307eb41de7 deleted file mode 100644 index 564b332bae0413e32f842d19d3aa843a1140d022..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmV;K0A~Mq0gcW<3d0}}K+&!}h5JI8QR66-QphUD&~a=6H3`8&kKY`j+s|8k-dbC_ z#uzXC5YZK#XR4F~IikRr3UG}{vbaImI73WDjM~#7YuAvC4U}y4Bn$&oUz|XwmZDhB z8B&aBE2{MA^LFTQ()V$C$~U$BEjQlUL!(FXgwCP9A^@nfo>N`^7vtTeW00M=S%%arflKi4dhR@%V*1Kq~>-@#L&Xy}WfM=nY z!4X3P12Yp7g|y6^R6~Y4mpuZi7vAbmsoZ%p<PK~iAM@OWKJZVUShgX-DG aE0y9GGs6`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_7jvWBSN{0B< C>3I79 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 deleted file mode 100644 index 74bc806ad..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 +++ /dev/null @@ -1,2 +0,0 @@ -xA -0E]ATzI34)ɴMK0 |>o\a83BQ/h Eǜ}aAsjAwތ1O*B|V'5C/Q&c۬5x70| \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/49/7b1e236588f0e2674c9a5787abeb226abf3680 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/49/7b1e236588f0e2674c9a5787abeb226abf3680 deleted file mode 100644 index 923f563026d2a2f52568b0d9a5fbed3f21d3d800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmV;I0cies0V^p=O;s>8w_q?dFfcPQQAo~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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6qBoKyxCfpcM{faM3OgTh;8?ppz85G_$jALQ(d@LNx`b=hDZvG86K~T$!%eO zVNgB$c%|~bij#~E{dq_VOc+u^=jq|@kΨV=:9WRWiP_P} mA \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/55/f688e6b47b7a5ca8ffc4e25b77c1af6222b503 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/55/f688e6b47b7a5ca8ffc4e25b77c1af6222b503 deleted file mode 100644 index cd691a15d..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/55/f688e6b47b7a5ca8ffc4e25b77c1af6222b503 +++ /dev/null @@ -1,6 +0,0 @@ -xA -0E]d&S -"BW=F&3EmJ x>/eyTDLR4`2wG1Tz>dĈmiB"C"10Er䅣 0eoI6) -(#8"F[T?i -? -jo^B \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/56/2af0640203fb5a6e92c090d8d1ded26806d2c4 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/56/2af0640203fb5a6e92c090d8d1ded26806d2c4 deleted file mode 100644 index 785d58c4c0eda2661823a530b5c32db68adb2b61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmV;E0Brww0gcW<3c@fDKvCB@MfQTsWTu%0L(4Gq}dp9<87~X|IUedoJJteuO~6%SXa40pmOk z3s=V0KxiuUhGtS^Y6#2)Dtol3O3%rhL5Z7_vNHN9#VFklej8i4j3TV0&U^nWeH~Kd NeFssJdjPfiP{E>uGQ4g3%pYvzD&lvWcY&Pr_@JZHVP-@|e008rm4L|?@ diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 b/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 b/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/.git_keep/objects/61/01e935461d4cd862ae4a720846e87880d198b9 b/test/integration/mergeConflicts/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+-xp[bȊ9I6;\ᮟT^Ƶހ<Lh8ܴy')XP > \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/78/3666de4acbb22a9efc205197667f5136118c54 b/test/integration/mergeConflicts/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_73x)|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$<7VkpVTELH%bw9K4Tg}l<-q|_n>BZZQT#1aKh^<0JY{LH*` Yg_3-Q4S%^SLg|yFpm%oy_5Q@LNrc#=mehd019~do(7VkpVTELH%bw9K4Tg}l<-q|_n>3x$%5#1aKh^<0JY{LH*` Yg_3-Q8G-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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6Zgztm|#@^04{ye Es|G`_Y5)KL diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/9d/e8260b738a34a74533df54f2e404276aa96242 b/test/integration/mergeConflicts/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ދgv@h,و 9k f${BqrSR6ΣC$6yMIfO:8ۣ0/p|l/Zn@lG3!괟jg]A]mPA# \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/a1/e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/a1/e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b deleted file mode 100644 index f93dc352f..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/a1/e00cd67130c6f7e2b9bb7f23f0cda2b37eb30b +++ /dev/null @@ -1,4 +0,0 @@ -xK -0@]d&| -"BW=FL6F{R]&<]49x L)JbF<Ǚ66F` -0F:Qs ѱ_Qw]>rIu93Qjʴ?*+dy\7> \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 deleted file mode 100644 index 285df3e5fbab12262e28d85e78af8a31cd0024c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb`~^A08nuUMF0Q* diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/af/a76754c933269d7cd45630a7184a20849dbe9c b/test/integration/mergeConflicts/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-QM@Q&`M)1s~ATUA3M}Qqm`Vpp!ku;)T!IkVQU3dirFkSOl=lrOqn>A%!(*M zc=XB0$KcYtPTK+f0QY`)+9xgh%Wk?Y4SHS)LofNo#0o&I;*)a Hj%Gf0Gp7VkpVTELH%bw9K4Tg}l<-q|_n>6NQqD#1aKh^<0JY{LH*` Yg_3-Qb%7 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/c1/dd146476a4a37fff75b88612a718281ea83b58 b/test/integration/mergeConflicts/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_7i&B$I@{1}N5++{f+*JBpNKlqBcea)P7Qf_=-=LVwC7@TFSH zt7`-H(wm6R>I;lOK5XI;LfQZT diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/d0/60f7226715ca55b04e91fad2b8aca01badd993 b/test/integration/mergeConflicts/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_73x)|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/mergeConflicts/expected/repo/.git_keep/objects/d3/e2708327280097b5e1f8ab69309934b24f8b64 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/d3/e2708327280097b5e1f8ab69309934b24f8b64 deleted file mode 100644 index 139da07d2..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/d3/e2708327280097b5e1f8ab69309934b24f8b64 +++ /dev/null @@ -1,3 +0,0 @@ -xM -0F]$I"BW=F2NmR"z| ^{[Kݡo"%̥LlbdԚ7yv -">Y p9&_}n #*\ׇ a!Qku?O\r ? ޭ/Ճ=w \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/d8/a7c50dcab42b2b62e5c77cdcece620d3964bd4 b/test/integration/mergeConflicts/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_=-=L5w`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/mergeConflicts/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c deleted file mode 100644 index 74c919681..000000000 --- a/test/integration/mergeConflicts/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㧱VH" P \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/dd/259e90c3748e269bdf1ee3ce537a006d2394aa b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/dd/259e90c3748e269bdf1ee3ce537a006d2394aa deleted file mode 100644 index f66748219..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/dd/259e90c3748e269bdf1ee3ce537a006d2394aa +++ /dev/null @@ -1,3 +0,0 @@ -xK -0@]d&i@DcL -XSJ>ރWں.,敖BX'aRgb=˾:LS1Bà1{,PkjCf.$5Zks@gxx[ P$L ͗~>/ -&}m@; \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/df/2c0daa40dcba0dded361a25ff7806b13db59a6 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/df/2c0daa40dcba0dded361a25ff7806b13db59a6 deleted file mode 100644 index 0e14fe82843a6674b83d186846fde209271ff365..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmV;L0A>Gp0gaA93d0}}0DJZodoL7Mjc%coLQZ+csw)O+6H*I#egpkLufq&XT3VYs z80}7d6M=*|qw_9!c5Fi_B@B_sqv3#L2!+YUfz-;IygEc31{-taD@Jl+i_=~V=9og3 z$Rt-PSQ07z^tx;?PH-EihwR+er(Dv~?tmVH59l1i8MW5xpvP2~KXvt<_g>*wLFLNo I3vKK^qnb)bod5s; diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/df/6b0d2bcc76e6ec0fca20c227104a4f28bac41b deleted file mode 100644 index 9b771fc2f6f41f91b00976b4ff3f8f9935f7931e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb>`CU&08otwO#lD@ diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e deleted file mode 100644 index 3a7ee91eab601eb205b04a6e1e62c58599193222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb7nZts^PE0#+C9!Ty%L6BZHMO GUmgJUj1jT` diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/e4/48ae5bf6371d80ebee24a22b6df341797a6511 b/test/integration/mergeConflicts/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>!qSWM){Gv*Rgo)QVH8F=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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6Zgztm=IE6id6vs H4=>-(3qr6K diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 b/test/integration/mergeConflicts/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-QGp0gaA93d0}}0DJZodoPsLsB555Fkmn-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@@RRI7%&rx)LLPgyG diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 b/test/integration/mergeConflicts/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!>Wujmwd&PdN>odi9Z#BPV9&MV}RVm;D(X+rUYD(8QS?3N?&w z@KLnMnS|KzR>!hH+rg#nZu;hFe&|WcbOj6;LqsBkBU)?CPWP#*f9hscDbEbQ4A!lG R@duPE42!O#`2t>ZLh=@LN<#nu diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/f8/9097f0bd23eda6d8977c0edfae7f913ffc5db3 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/f8/9097f0bd23eda6d8977c0edfae7f913ffc5db3 deleted file mode 100644 index 1190b1af399c192cc0388d4a90d588bdb7026913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmV;P0Ac@l0gaA93c@fDMP26TTbx~W2&th$!N=sIC)5+-iN1rFX>WzW{x7@B0wDw{49sG|^-Ftid!M``ke+IW^| z0~3i%X+%Lb@~V%rK|jE?AMW~=ygv03OTK+SeCNqIf-@naIp`5p_0PFU^R`#`Sx^?p MvLCYf0O}w=Oy)~VqyPW_ diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/f8/dd12b796f400be7f59d9471670c3080f9c90a1 b/test/integration/mergeConflicts/expected/repo/.git_keep/objects/f8/dd12b796f400be7f59d9471670c3080f9c90a1 deleted file mode 100644 index 572556d0f..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/f8/dd12b796f400be7f59d9471670c3080f9c90a1 +++ /dev/null @@ -1 +0,0 @@ -xϻj1ӹ4 +yl]-B1~,i5u`FW}&e#.YRuӌb%#PjJb:1./)2E*4(L{,˻>Һ Hȋ'+τӱ'OڿrO[YTຍm,?>R \ No newline at end of file diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/objects/fd/31cea7e0b6e8d334280be34db8dd86cdda3007 b/test/integration/mergeConflicts/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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6ZbrQLc@`W;jN4S diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/base_branch b/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/base_branch deleted file mode 100644 index 50316367d..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/base_branch +++ /dev/null @@ -1 +0,0 @@ -341cf8213827614a274c750cd7dec4307eb41de7 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/develop b/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/develop deleted file mode 100644 index ffaafc687..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/develop +++ /dev/null @@ -1 +0,0 @@ -e563585cb87cc39b553ca421902d631ea8890118 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/feature/cherry-picking b/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/feature/cherry-picking deleted file mode 100644 index 848e686fb..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/feature/cherry-picking +++ /dev/null @@ -1 +0,0 @@ -d3e2708327280097b5e1f8ab69309934b24f8b64 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/master b/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index 7874adebd..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -559043765dc6c32c943b6278b4abbff1e6f52839 diff --git a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/other_branch b/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/other_branch deleted file mode 100644 index 1e2bd76fa..000000000 --- a/test/integration/mergeConflicts/expected/repo/.git_keep/refs/heads/other_branch +++ /dev/null @@ -1 +0,0 @@ -f8dd12b796f400be7f59d9471670c3080f9c90a1 diff --git a/test/integration/mergeConflicts/expected/repo/cherrypicking1 b/test/integration/mergeConflicts/expected/repo/cherrypicking1 deleted file mode 100644 index 6101e9354..000000000 --- a/test/integration/mergeConflicts/expected/repo/cherrypicking1 +++ /dev/null @@ -1 +0,0 @@ -this is file number 1 that I'm going to cherry-pick diff --git a/test/integration/mergeConflicts/expected/repo/cherrypicking2 b/test/integration/mergeConflicts/expected/repo/cherrypicking2 deleted file mode 100644 index 889b0fdfe..000000000 --- a/test/integration/mergeConflicts/expected/repo/cherrypicking2 +++ /dev/null @@ -1 +0,0 @@ -this is file number 2 that I'm going to cherry-pick diff --git a/test/integration/mergeConflicts/expected/repo/cherrypicking3 b/test/integration/mergeConflicts/expected/repo/cherrypicking3 deleted file mode 100644 index eb90e8d7b..000000000 --- a/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/cherrypicking4 b/test/integration/mergeConflicts/expected/repo/cherrypicking4 deleted file mode 100644 index b4121e2d6..000000000 --- a/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/cherrypicking5 b/test/integration/mergeConflicts/expected/repo/cherrypicking5 deleted file mode 100644 index afa76754c..000000000 --- a/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/cherrypicking6 b/test/integration/mergeConflicts/expected/repo/cherrypicking6 deleted file mode 100644 index 18f469bc7..000000000 --- a/test/integration/mergeConflicts/expected/repo/cherrypicking6 +++ /dev/null @@ -1 +0,0 @@ -this is file number 6 that I'm going to cherry-pick diff --git a/test/integration/mergeConflicts/expected/repo/cherrypicking7 b/test/integration/mergeConflicts/expected/repo/cherrypicking7 deleted file mode 100644 index e448ae5bf..000000000 --- a/test/integration/mergeConflicts/expected/repo/cherrypicking7 +++ /dev/null @@ -1 +0,0 @@ -this is file number 7 that I'm going to cherry-pick diff --git a/test/integration/mergeConflicts/expected/repo/cherrypicking8 b/test/integration/mergeConflicts/expected/repo/cherrypicking8 deleted file mode 100644 index 90a84fd62..000000000 --- a/test/integration/mergeConflicts/expected/repo/cherrypicking8 +++ /dev/null @@ -1 +0,0 @@ -this is file number 8 that I'm going to cherry-pick diff --git a/test/integration/mergeConflicts/expected/repo/cherrypicking9 b/test/integration/mergeConflicts/expected/repo/cherrypicking9 deleted file mode 100644 index 22b0fd807..000000000 --- a/test/integration/mergeConflicts/expected/repo/cherrypicking9 +++ /dev/null @@ -1 +0,0 @@ -this is file number 9 that I'm going to cherry-pick diff --git a/test/integration/mergeConflicts/expected/repo/directory/file b/test/integration/mergeConflicts/expected/repo/directory/file deleted file mode 100644 index df6b0d2bc..000000000 --- a/test/integration/mergeConflicts/expected/repo/directory/file +++ /dev/null @@ -1 +0,0 @@ -test3 diff --git a/test/integration/mergeConflicts/expected/repo/directory/file2 b/test/integration/mergeConflicts/expected/repo/directory/file2 deleted file mode 100644 index df6b0d2bc..000000000 --- a/test/integration/mergeConflicts/expected/repo/directory/file2 +++ /dev/null @@ -1 +0,0 @@ -test3 diff --git a/test/integration/mergeConflicts/expected/repo/file b/test/integration/mergeConflicts/expected/repo/file deleted file mode 100644 index 2410ee12b..000000000 --- a/test/integration/mergeConflicts/expected/repo/file +++ /dev/null @@ -1 +0,0 @@ -new2\noriginal2\noriginal3 diff --git a/test/integration/mergeConflicts/expected/repo/file1 b/test/integration/mergeConflicts/expected/repo/file1 deleted file mode 100644 index 5d874a902..000000000 --- a/test/integration/mergeConflicts/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/mergeConflicts/expected/repo/file3 b/test/integration/mergeConflicts/expected/repo/file3 deleted file mode 100644 index e3ae5c6d8..000000000 --- a/test/integration/mergeConflicts/expected/repo/file3 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a horse diff --git a/test/integration/mergeConflicts/expected/repo/file4 b/test/integration/mergeConflicts/expected/repo/file4 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/mergeConflicts/expected/repo/file4 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/mergeConflicts/expected/repo/file5 b/test/integration/mergeConflicts/expected/repo/file5 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/mergeConflicts/expected/repo/file5 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/mergeConflicts/recording.json b/test/integration/mergeConflicts/recording.json deleted file mode 100644 index 52b825301..000000000 --- a/test/integration/mergeConflicts/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":1126,"Mod":0,"Key":256,"Ch":32},{"Timestamp":1332,"Mod":0,"Key":256,"Ch":99},{"Timestamp":1621,"Mod":0,"Key":256,"Ch":97},{"Timestamp":1677,"Mod":0,"Key":256,"Ch":115},{"Timestamp":1758,"Mod":0,"Key":256,"Ch":100},{"Timestamp":1990,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2286,"Mod":0,"Key":259,"Ch":0},{"Timestamp":2557,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2805,"Mod":0,"Key":258,"Ch":0},{"Timestamp":2957,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3541,"Mod":0,"Key":256,"Ch":77},{"Timestamp":3869,"Mod":0,"Key":13,"Ch":13},{"Timestamp":4437,"Mod":0,"Key":13,"Ch":13},{"Timestamp":4773,"Mod":0,"Key":258,"Ch":0},{"Timestamp":4917,"Mod":0,"Key":258,"Ch":0},{"Timestamp":5053,"Mod":0,"Key":258,"Ch":0},{"Timestamp":5269,"Mod":0,"Key":256,"Ch":32},{"Timestamp":5773,"Mod":0,"Key":256,"Ch":32},{"Timestamp":6317,"Mod":0,"Key":256,"Ch":32},{"Timestamp":6549,"Mod":0,"Key":258,"Ch":0},{"Timestamp":6829,"Mod":0,"Key":256,"Ch":32},{"Timestamp":7501,"Mod":0,"Key":256,"Ch":96},{"Timestamp":8429,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9349,"Mod":0,"Key":256,"Ch":32},{"Timestamp":10197,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10530,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10546,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10563,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10579,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10595,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10611,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10628,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10645,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10662,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10678,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10694,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10711,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10728,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10745,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10761,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10777,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10794,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10810,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10827,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10844,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10860,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10877,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10895,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10911,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10927,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10943,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10960,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10977,"Mod":0,"Key":257,"Ch":0},{"Timestamp":10993,"Mod":0,"Key":257,"Ch":0},{"Timestamp":12005,"Mod":0,"Key":258,"Ch":0},{"Timestamp":12349,"Mod":0,"Key":256,"Ch":32},{"Timestamp":12909,"Mod":0,"Key":257,"Ch":0},{"Timestamp":13276,"Mod":0,"Key":256,"Ch":32},{"Timestamp":14301,"Mod":0,"Key":256,"Ch":32},{"Timestamp":14836,"Mod":0,"Key":256,"Ch":32},{"Timestamp":15597,"Mod":0,"Key":258,"Ch":0},{"Timestamp":15930,"Mod":0,"Key":258,"Ch":0},{"Timestamp":15946,"Mod":0,"Key":258,"Ch":0},{"Timestamp":15962,"Mod":0,"Key":258,"Ch":0},{"Timestamp":15978,"Mod":0,"Key":258,"Ch":0},{"Timestamp":15995,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16011,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16028,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16044,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16060,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16076,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16093,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16109,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16126,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16143,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16160,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16177,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16194,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16210,"Mod":0,"Key":258,"Ch":0},{"Timestamp":16573,"Mod":0,"Key":257,"Ch":0},{"Timestamp":16741,"Mod":0,"Key":257,"Ch":0},{"Timestamp":17053,"Mod":0,"Key":256,"Ch":32},{"Timestamp":17565,"Mod":0,"Key":256,"Ch":32},{"Timestamp":18109,"Mod":0,"Key":258,"Ch":0},{"Timestamp":18357,"Mod":0,"Key":256,"Ch":32},{"Timestamp":19157,"Mod":0,"Key":13,"Ch":13},{"Timestamp":20012,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":127,"Height":35}]} \ No newline at end of file diff --git a/test/integration/mergeConflicts/setup.sh b/test/integration/mergeConflicts/setup.sh deleted file mode 100644 index 5182e5eae..000000000 --- a/test/integration/mergeConflicts/setup.sh +++ /dev/null @@ -1,158 +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 - -echo "new2\noriginal2\noriginal3" > file diff --git a/test/integration/mergeConflicts/test.json b/test/integration/mergeConflicts/test.json deleted file mode 100644 index 1082379ed..000000000 --- a/test/integration/mergeConflicts/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/mergeConflictsFiltered/config/config.yml b/test/integration/mergeConflictsFiltered/config/config.yml deleted file mode 100644 index 718ebf70d..000000000 --- a/test/integration/mergeConflictsFiltered/config/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -disableStartupPopups: true -gui: - showFileTree: false -refresher: - refreshInterval: 1 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index f08e0d5c6..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1,38 +0,0 @@ -Merge branch 'develop' into other_branch - -# Conflicts: -# directory/file -# directory/file2 -# file1 -# file3 -# file4 -# file5 -# -# It looks like you may be committing a merge. -# If this is not correct, please remove the file -# /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/mergeConflictsFiltered/actual/.git/MERGE_HEAD -# and try again. - - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# -# On branch other_branch -# All conflicts fixed but you are still merging. -# -# Changes to be committed: -# new file: cherrypicking1 -# new file: cherrypicking2 -# new file: cherrypicking4 -# new file: cherrypicking5 -# new file: cherrypicking6 -# new file: cherrypicking7 -# new file: cherrypicking8 -# new file: cherrypicking9 -# modified: directory/file -# modified: file3 -# modified: file4 -# -# Untracked files: -# cherrypicking3 -# diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/FETCH_HEAD b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/FETCH_HEAD deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/HEAD b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/HEAD deleted file mode 100644 index 904a2e296..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/other_branch diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/ORIG_HEAD b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/ORIG_HEAD deleted file mode 100644 index c71cd262c..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/ORIG_HEAD +++ /dev/null @@ -1 +0,0 @@ -c62b5bc94e327ddb9b545213ff77b207ade48aba diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/config b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/config deleted file mode 100644 index 8ae104545..000000000 --- a/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/.git_keep/description b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/description deleted file mode 100644 index 498b267a8..000000000 --- a/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/.git_keep/index b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/index deleted file mode 100644 index bf18bbf792e3d66f1dd3646dee53bdb2be63084a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1734 zcmZ?q402{*U|<4b{>1N##5k|9n89d91_o9pW47B242??|7#P0-)rbJGNh0G*Q#VIU}{GsInk4IXg2i-4Ljb0c_6A4SX;fYTg}m^Ezhp-+%gP zoo(%BwtVY@4;z0K>hz+SX9PFz{v;i+c|aO!-aT~lwg}1TW-Sa;s!nxumc73t(vxMY z0-AXyaPuCudVtLX(opm6qno#Wd3wl6W3{<8SHcXIOL!@?%-uH!%{)`Mc~6TLg3SZc zQ1c$3n9=?}^8{=x^q- z4X@v+EYi;X>{wZqDu`yDIo!P0;qqYffHc&+N9g8FSmA$7zrmQPezjd#RpZsST3Ll> z(af`eoA=HY;yxe^HSaOHc}g4pHq>5yqH*Yk#JX>b3}tHsU$ml`X9+b=S=f4yIM97y z8fqRe-JzsEHVK{|Mh!~)&b?fn_<(2k)3v~v*l+2>k^Uk4} zrx3g3rUFZNh;DoQlY3viPWFfy>uz9Rfw>B7j*9x(9czH*fN7{X?@`TR%(-*fBcOWW zt^SnCoi|f%EoR#Ed+r;-azC?sZ@#H&Q2=Hp@zKShPU`uzX<{P1z47G<63n0;r>R>3Z 1643618835 +1100 commit (initial): first commit -f37ec566036d715d6995f55dbc82a4fb3cf56f2f f37ec566036d715d6995f55dbc82a4fb3cf56f2f CI 1643618835 +1100 checkout: moving from master to feature/cherry-picking -f37ec566036d715d6995f55dbc82a4fb3cf56f2f 21730e75ee0eec374cc54eb1140d24e03db834fc CI 1643618835 +1100 commit: first commit freshman year -21730e75ee0eec374cc54eb1140d24e03db834fc 0f8c9b8f1cac20c63e92e8df34f6d8b3fa74accd CI 1643618835 +1100 commit: second commit subway eat fresh -0f8c9b8f1cac20c63e92e8df34f6d8b3fa74accd 72c9bf1e687e81778850d517953c64f03adbaa1b CI 1643618835 +1100 commit: third commit fresh -72c9bf1e687e81778850d517953c64f03adbaa1b 67b2eea3191ca9a6efc8c1685aadd8e6dbae2b45 CI 1643618835 +1100 commit: fourth commit cool -67b2eea3191ca9a6efc8c1685aadd8e6dbae2b45 4b6f90d670c40e5ac78d9c405a5bc40932a0980b CI 1643618835 +1100 commit: fifth commit nice -4b6f90d670c40e5ac78d9c405a5bc40932a0980b 796a5a2670ccb2d08db89b9cfcaa07e9be5358e6 CI 1643618835 +1100 commit: sixth commit haha -796a5a2670ccb2d08db89b9cfcaa07e9be5358e6 41893d444283aa0c46aa7b5ee01811522cca473d CI 1643618835 +1100 commit: seventh commit yeah -41893d444283aa0c46aa7b5ee01811522cca473d d88617710499a59992caf98d6df1b5f981c58ab1 CI 1643618835 +1100 commit: eighth commit woo -d88617710499a59992caf98d6df1b5f981c58ab1 d88617710499a59992caf98d6df1b5f981c58ab1 CI 1643618835 +1100 checkout: moving from feature/cherry-picking to develop -d88617710499a59992caf98d6df1b5f981c58ab1 fa5c5dac095b577173e47b4a0c139525eced009f CI 1643618835 +1100 commit: first commit on develop -fa5c5dac095b577173e47b4a0c139525eced009f f37ec566036d715d6995f55dbc82a4fb3cf56f2f CI 1643618835 +1100 checkout: moving from develop to master -f37ec566036d715d6995f55dbc82a4fb3cf56f2f abdaa06b758aa198cc4afb9c406c87c5690d0ca0 CI 1643618835 +1100 commit: first commit on master -abdaa06b758aa198cc4afb9c406c87c5690d0ca0 fa5c5dac095b577173e47b4a0c139525eced009f CI 1643618835 +1100 checkout: moving from master to develop -fa5c5dac095b577173e47b4a0c139525eced009f 6c590c6a21f4e6d335528b5ecf6c52993b914996 CI 1643618835 +1100 commit: second commit on develop -6c590c6a21f4e6d335528b5ecf6c52993b914996 abdaa06b758aa198cc4afb9c406c87c5690d0ca0 CI 1643618835 +1100 checkout: moving from develop to master -abdaa06b758aa198cc4afb9c406c87c5690d0ca0 dd401e3ee3d58b648207cee7f737364a37139bea CI 1643618835 +1100 commit: second commit on master -dd401e3ee3d58b648207cee7f737364a37139bea 6c590c6a21f4e6d335528b5ecf6c52993b914996 CI 1643618835 +1100 checkout: moving from master to develop -6c590c6a21f4e6d335528b5ecf6c52993b914996 b2afb2548f2d143fdd691058f2283b03933a1749 CI 1643618835 +1100 commit: third commit on develop -b2afb2548f2d143fdd691058f2283b03933a1749 dd401e3ee3d58b648207cee7f737364a37139bea CI 1643618835 +1100 checkout: moving from develop to master -dd401e3ee3d58b648207cee7f737364a37139bea 34d20faa891d1857610dce8f790a35b702ebd7ee CI 1643618835 +1100 commit: third commit on master -34d20faa891d1857610dce8f790a35b702ebd7ee b2afb2548f2d143fdd691058f2283b03933a1749 CI 1643618835 +1100 checkout: moving from master to develop -b2afb2548f2d143fdd691058f2283b03933a1749 9a92a03fdc6eb492ea1ac7acf4fdb04962092f81 CI 1643618835 +1100 commit: fourth commit on develop -9a92a03fdc6eb492ea1ac7acf4fdb04962092f81 34d20faa891d1857610dce8f790a35b702ebd7ee CI 1643618835 +1100 checkout: moving from develop to master -34d20faa891d1857610dce8f790a35b702ebd7ee d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 CI 1643618835 +1100 commit: fourth commit on master -d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 CI 1643618835 +1100 checkout: moving from master to base_branch -d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 c62b5bc94e327ddb9b545213ff77b207ade48aba CI 1643618835 +1100 commit: file -c62b5bc94e327ddb9b545213ff77b207ade48aba c62b5bc94e327ddb9b545213ff77b207ade48aba CI 1643618835 +1100 checkout: moving from base_branch to other_branch -c62b5bc94e327ddb9b545213ff77b207ade48aba c62b5bc94e327ddb9b545213ff77b207ade48aba CI 1643618835 +1100 checkout: moving from other_branch to base_branch -c62b5bc94e327ddb9b545213ff77b207ade48aba a51a44d96e13555215619b32065d0a22d95b8476 CI 1643618835 +1100 commit: file changed -a51a44d96e13555215619b32065d0a22d95b8476 c62b5bc94e327ddb9b545213ff77b207ade48aba CI 1643618835 +1100 checkout: moving from base_branch to other_branch -c62b5bc94e327ddb9b545213ff77b207ade48aba d7d52ecd690fe82c7d820ddb437e82d78b0fa7b2 CI 1643618855 +1100 commit (merge): Merge branch 'develop' into other_branch diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/base_branch b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/base_branch deleted file mode 100644 index 9b14238c0..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/base_branch +++ /dev/null @@ -1,3 +0,0 @@ -0000000000000000000000000000000000000000 d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 CI 1643618835 +1100 branch: Created from HEAD -d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 c62b5bc94e327ddb9b545213ff77b207ade48aba CI 1643618835 +1100 commit: file -c62b5bc94e327ddb9b545213ff77b207ade48aba a51a44d96e13555215619b32065d0a22d95b8476 CI 1643618835 +1100 commit: file changed diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/develop b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/develop deleted file mode 100644 index 59e1aede7..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/develop +++ /dev/null @@ -1,5 +0,0 @@ -0000000000000000000000000000000000000000 d88617710499a59992caf98d6df1b5f981c58ab1 CI 1643618835 +1100 branch: Created from HEAD -d88617710499a59992caf98d6df1b5f981c58ab1 fa5c5dac095b577173e47b4a0c139525eced009f CI 1643618835 +1100 commit: first commit on develop -fa5c5dac095b577173e47b4a0c139525eced009f 6c590c6a21f4e6d335528b5ecf6c52993b914996 CI 1643618835 +1100 commit: second commit on develop -6c590c6a21f4e6d335528b5ecf6c52993b914996 b2afb2548f2d143fdd691058f2283b03933a1749 CI 1643618835 +1100 commit: third commit on develop -b2afb2548f2d143fdd691058f2283b03933a1749 9a92a03fdc6eb492ea1ac7acf4fdb04962092f81 CI 1643618835 +1100 commit: fourth commit on develop diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking deleted file mode 100644 index 752d03eb6..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/feature/cherry-picking +++ /dev/null @@ -1,9 +0,0 @@ -0000000000000000000000000000000000000000 f37ec566036d715d6995f55dbc82a4fb3cf56f2f CI 1643618835 +1100 branch: Created from HEAD -f37ec566036d715d6995f55dbc82a4fb3cf56f2f 21730e75ee0eec374cc54eb1140d24e03db834fc CI 1643618835 +1100 commit: first commit freshman year -21730e75ee0eec374cc54eb1140d24e03db834fc 0f8c9b8f1cac20c63e92e8df34f6d8b3fa74accd CI 1643618835 +1100 commit: second commit subway eat fresh -0f8c9b8f1cac20c63e92e8df34f6d8b3fa74accd 72c9bf1e687e81778850d517953c64f03adbaa1b CI 1643618835 +1100 commit: third commit fresh -72c9bf1e687e81778850d517953c64f03adbaa1b 67b2eea3191ca9a6efc8c1685aadd8e6dbae2b45 CI 1643618835 +1100 commit: fourth commit cool -67b2eea3191ca9a6efc8c1685aadd8e6dbae2b45 4b6f90d670c40e5ac78d9c405a5bc40932a0980b CI 1643618835 +1100 commit: fifth commit nice -4b6f90d670c40e5ac78d9c405a5bc40932a0980b 796a5a2670ccb2d08db89b9cfcaa07e9be5358e6 CI 1643618835 +1100 commit: sixth commit haha -796a5a2670ccb2d08db89b9cfcaa07e9be5358e6 41893d444283aa0c46aa7b5ee01811522cca473d CI 1643618835 +1100 commit: seventh commit yeah -41893d444283aa0c46aa7b5ee01811522cca473d d88617710499a59992caf98d6df1b5f981c58ab1 CI 1643618835 +1100 commit: eighth commit woo diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index d27b9c51b..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1,5 +0,0 @@ -0000000000000000000000000000000000000000 f37ec566036d715d6995f55dbc82a4fb3cf56f2f CI 1643618835 +1100 commit (initial): first commit -f37ec566036d715d6995f55dbc82a4fb3cf56f2f abdaa06b758aa198cc4afb9c406c87c5690d0ca0 CI 1643618835 +1100 commit: first commit on master -abdaa06b758aa198cc4afb9c406c87c5690d0ca0 dd401e3ee3d58b648207cee7f737364a37139bea CI 1643618835 +1100 commit: second commit on master -dd401e3ee3d58b648207cee7f737364a37139bea 34d20faa891d1857610dce8f790a35b702ebd7ee CI 1643618835 +1100 commit: third commit on master -34d20faa891d1857610dce8f790a35b702ebd7ee d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 CI 1643618835 +1100 commit: fourth commit on master diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/other_branch b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/other_branch deleted file mode 100644 index 5842c42d8..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/logs/refs/heads/other_branch +++ /dev/null @@ -1,2 +0,0 @@ -0000000000000000000000000000000000000000 c62b5bc94e327ddb9b545213ff77b207ade48aba CI 1643618835 +1100 branch: Created from HEAD -c62b5bc94e327ddb9b545213ff77b207ade48aba d7d52ecd690fe82c7d820ddb437e82d78b0fa7b2 CI 1643618855 +1100 commit (merge): Merge branch 'develop' into other_branch diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/09/cbe8c6717c06a61876b7b641a46a62bf3c585d b/test/integration/mergeConflictsFiltered/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<PK~iAM@OWKJZVUShgX-DG SE0y;F6gC_H diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/0f/8c9b8f1cac20c63e92e8df34f6d8b3fa74accd b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/0f/8c9b8f1cac20c63e92e8df34f6d8b3fa74accd deleted file mode 100644 index aa6525a94e0f7b834fdfe0093eff304e7cbdac20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmV;T0A2rh0gaBq3c@fD1wH30_AbaK*)$1=2%h|mbn}XWwbDk^zgP4Jybd!kI*sGG zk+X5tW`Jyzk~E8m4ka>o$<-(va?L}@JwlZ1#HqQJ8P{*<88HA1sE?u=1iiJw)d|?w zK6x3`lzTf(GaZh!JskIVmhpDMMyGK{wiDmklzgDIwan&2KT{2V>SlpX*Gj*PmV5sw QFG6WF%vet54J?>KpQ4veD*ylh diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/17/3a40ed58e33060166ccbfb7d0ccc0387be5f09 deleted file mode 100644 index 25389c9d662fa3c7c7b5b9b2c4a41240d70f394f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34 qcmbL%-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~ZE#08nZNMgRZ+ diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/18/f469bc737f6c2a589205e2ddefceb32a7cc3a7 b/test/integration/mergeConflictsFiltered/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-Q7nZts^PE0#`Wacbg|_{j0{$> Gd}ROuKoaKw diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/20/85c8dd0a80e95ed959e4db2ab98f66b970ad77 b/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/.git_keep/objects/21/730e75ee0eec374cc54eb1140d24e03db834fc b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/21/730e75ee0eec374cc54eb1140d24e03db834fc deleted file mode 100644 index 8d46c2d8b..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/21/730e75ee0eec374cc54eb1140d24e03db834fc +++ /dev/null @@ -1 +0,0 @@ -xKj1)z_{L0jjcdǐ d[TAuP0:@~"0hQ"$.1=>seɖs-:IVZf {\NFu;%qç<~cɽ{jk:&wt BC \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/21/78af7503938665881174069be4d48fa483e4af b/test/integration/mergeConflictsFiltered/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<PK~iAM@OWKJZVUShgX-DG XE0yi+kh=VyFxv@AV diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/22/b0fd807dd5e428c2d818aef6a2311d7c11e885 b/test/integration/mergeConflictsFiltered/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-Q4F=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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q67HD)k0FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^Z_#006FlVrV00j?MM;EUAyyR4c(t`Xvg+zst%-mFkl8n@%RE6@y mVxT}qeo=8Mmn{U~SDKq&3RG$b0SYOpWvMy&1zZ3SiX=>?Kq37A diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/34/c74161eef968fc951cf170a011fa8abfeddbcd b/test/integration/mergeConflictsFiltered/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<PK~iAM@OWKJZVUShgX-DG aE0y9GGs6`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_7jvWBSN{0B< C>3I79 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 deleted file mode 100644 index 74bc806ad..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/38/08a710b52a152bb73805fe274e0d877cf61800 +++ /dev/null @@ -1,2 +0,0 @@ -xA -0E]ATzI34)ɴMK0 |>o\a83BQ/h Eǜ}aAsjAwތ1O*B|V'5C/Q&c۬5x70| \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/41/893d444283aa0c46aa7b5ee01811522cca473d b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/41/893d444283aa0c46aa7b5ee01811522cca473d deleted file mode 100644 index 9e653599d..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/41/893d444283aa0c46aa7b5ee01811522cca473d +++ /dev/null @@ -1,3 +0,0 @@ -xK -0@]d]ɔ -ƖEoo }Z ]D)vLeȻMNHa|#ENc`R융Tßsm*z -!? \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 deleted file mode 100644 index e0670d284..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/4f/80ec0c7b09eeeb580d0c19947477c02bc88c25 +++ /dev/null @@ -1 +0,0 @@ -x 0CvL\jVОW=M4g3%pYvzD&lvWcY&Pr_@JZHVP-@|e008rm4L|?@ diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/5e/66799d4a5a3fed89757f3df445a962c9ce2d4f b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/5e/66799d4a5a3fed89757f3df445a962c9ce2d4f deleted file mode 100644 index 807874f1c4e54ef0edf9da4385ed6642519bb4d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmV-@0fPQ`0V^p=O;s>8He)a}FfcPQQAo~6Eh?%k$V|@8%u6?9NMw9z>L%-RBWayi z5r^B0iiV3bc4AX$#LzLD|NhfY>uhU3v*lYKeAxJ_P^TB0N)v`HLUOuU3&WJEQyraU z@9&88WZ9~KO{FQr`sL{%CymwS)?5iQST5nE&@y-59BeAh7$m-A?kTR%(TbSF`snWa zbDOnl4ll>1(wyOm$GYfm=CTd1->EFp&i(9IS(Pe?O{E3HgcbhR^c#$s>Q~!^RW)9H ztCdxF7Mn^-2Bi&u8)~mU(KvKNV%@hzhO#w+FIr6ufIuN7vnVyWB)_PVq3FKux}jH)ObT*(0EO z;jR9Z%AGe;ZY^fo^m{HWFhB+vGf2;R`t|-d!(FQ+xD3|coMGR5NBtC%2_}RTm@+(G b7n9q<{=%So_VG&PeHAAe9s2VC7!%%Z%iX|5 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/5f/3e4598b46a912f0f95a4898743e979343c82f3 b/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/.git_keep/objects/60/91d709b275e712111d016d9b3a4fb44e63f1f6 b/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/.git_keep/objects/61/01e935461d4cd862ae4a720846e87880d198b9 b/test/integration/mergeConflictsFiltered/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-QN4dthafOI$JRPuR(@aBXZ}z<_I!)2J~&vdEFdbwuK+@@N$07N|E#mp&OSE&(`K}t JeF3;4KJRU5L}CB{ diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/6c/590c6a21f4e6d335528b5ecf6c52993b914996 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/6c/590c6a21f4e6d335528b5ecf6c52993b914996 deleted file mode 100644 index 5400b19fc593885d37c76b4c14a2725f224979b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmV;P0Ac@l0gaA93c@fD06pgwdlzK4n=~ni2tE0XWOs{#ZAy*e^A-Gn*I@=m>O9{X zbVR$hnZcw?VmTU?-jXu=E@3hDT9Rt&MKv>GbZg#hX)xs=L9^fxN{Epnn~%k36yhOt z!Ne4Cm|T9gYu#YHz;V2s?VacKZU?FJ38?qnQ%W3QPlV{c^gGq;Pu)FC>Z0(=pe~^H MvU^?K2a%XTo6+@8CjbBd diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/72/c9bf1e687e81778850d517953c64f03adbaa1b b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/72/c9bf1e687e81778850d517953c64f03adbaa1b deleted file mode 100644 index 8a19f046d..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/72/c9bf1e687e81778850d517953c64f03adbaa1b +++ /dev/null @@ -1,2 +0,0 @@ -xK -0@]$ "tcLf&`m</6WiT`_Ff%bxNXyJgWsu4F=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_73x)|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$<7VkpVTELH%bw9K4Tg}l<-q|_n>BZZQT#1aKh^<0JY{LH*` Yg_3-Q4S%^SLg|yFpm%oy_5Q@LNrc#=mehd019~do(7VkpVTELH%bw9K4Tg}l<-q|_n>3x$%5#1aKh^<0JY{LH*` Yg_3-Q8G-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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6Zgztm|#@^04{ye Es|G`_Y5)KL diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/9a/92a03fdc6eb492ea1ac7acf4fdb04962092f81 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/9a/92a03fdc6eb492ea1ac7acf4fdb04962092f81 deleted file mode 100644 index 03e4507e878d3c236bb977472c21c7579726dd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK%j0gaAL3d0}}M!WVDvo93KF;StELRLA3KO-r`7{rtwzkyz$%kS|Xe6g1D z>YxxWy)grOuWby-l(b6WiT`_Ff%bxNXyJgWsuXp!kD}z}eˍ!z!%us˟\-'Z_R=K \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/a5/bce3fd2565d8f458555a0c6f42d0504a848bd5 deleted file mode 100644 index 285df3e5fbab12262e28d85e78af8a31cd0024c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 ccmb`~^A08nuUMF0Q* diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/ab/daa06b758aa198cc4afb9c406c87c5690d0ca0 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/ab/daa06b758aa198cc4afb9c406c87c5690d0ca0 deleted file mode 100644 index e58f89e997c922d435906149ce37205f17eb09e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmV;O0Al}m0gaA93c@fD06pgwdlw|hX45Q)2tD-~X}XIAV@n&s=UeatUWXZ&veY^^ z@Rm<)69H0`K%B-9Gdr(VnQ};+x`4tRW5ANUqFM7MuLg>p6pGPeoH|ESWF{q=#>2`% zM=VNFy_)=Pk7a{?fNMY8<&*3BluKFa4O|QuT}nuBcFtOJ&||8}pSsa`+Z+5USYA-` Le#GVr142KE?E^=p diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/af/a76754c933269d7cd45630a7184a20849dbe9c b/test/integration/mergeConflictsFiltered/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-Q7VkpVTELH%bw9K4Tg}l<-q|_n>6NQqD#1aKh^<0JY{LH*` Yg_3-Qb%7 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/c1/dd146476a4a37fff75b88612a718281ea83b58 b/test/integration/mergeConflictsFiltered/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_7i&B$I@{1}N5++{f+*JBpNKlqBcea)P7Qf_=-=LYMFT>>P@pCNES#IG z$yv{6K;_SPZHJy_eV^v1d~@Gdxz(*dw2j_Hi|B&BT5F6t>p3;#Pp;asiuwU{2|2IN C0YuLL diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d0/60f7226715ca55b04e91fad2b8aca01badd993 b/test/integration/mergeConflictsFiltered/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_73x)|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/mergeConflictsFiltered/expected/repo/.git_keep/objects/d4/f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d4/f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 deleted file mode 100644 index e683803d4..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d4/f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 +++ /dev/null @@ -1,5 +0,0 @@ -xK -0@]dm~ "tcL*Sj -߂px^<t@?$?#.hGF"JsfM^s"e -;œ$Ƚ=v2g/bxoK`:NwpYrI܀; -p&B4=eP_P} WA \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d7/d52ecd690fe82c7d820ddb437e82d78b0fa7b2 b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/d7/d52ecd690fe82c7d820ddb437e82d78b0fa7b2 deleted file mode 100644 index d2ef671e0c5af3412181aaab7bae7d96ac50c957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmV;+05t!20gaElY6CG4MN{i5rgISpdW;?eAp~5x$Tx(MG|C#ht3@crpPz-0KJB>& zE~oT$y-u*vKg}TmUP6dO71^_EQWHfVo2w1cGX-0yh^^Sv&O^2dCD`n9Arxn0t(me% zZ;fj$#%y)uDwsI)pHEDdwQIEm$w*e%aEV+Rwwg5_51MRCM)CJt`hfEVUeA|zdGNa5 z5HfJz2FfcPQQAo~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_=-=L5w`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/mergeConflictsFiltered/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/dc/d348507ba1da8f6479b9d964daa302b2fb9d9c deleted file mode 100644 index 74c919681..000000000 --- a/test/integration/mergeConflictsFiltered/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㧱VH" P \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/dd/401e3ee3d58b648207cee7f737364a37139bea b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/dd/401e3ee3d58b648207cee7f737364a37139bea deleted file mode 100644 index 9226b9f5d5e14565d6765a267f64a60f0ec8fa2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmV;O0Al}m0gaAL3c@fDgz1MSS%hr(##tTm$QZ9moIPh1_sb>`CU&08otwO#lD@ diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/e3/ae5c6d8407e8307b9bc77923be78c901408f6e deleted file mode 100644 index 3a7ee91eab601eb205b04a6e1e62c58599193222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmb7nZts^PE0#+C9!Ty%L6BZHMO GUmgJUj1jT` diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/e4/48ae5bf6371d80ebee24a22b6df341797a6511 b/test/integration/mergeConflictsFiltered/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>!qSWM){Gv*Rgo)QVH8F=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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6Zgztm=IE6id6vs H4=>-(3qr6K diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/eb/90e8d7b137a1d89480c9b22fd03199da77c9c7 b/test/integration/mergeConflictsFiltered/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-Q5Fkmn-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@@RRI7%&rx)LLPgyG diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/f3/7ec566036d715d6995f55dbc82a4fb3cf56f2f b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/f3/7ec566036d715d6995f55dbc82a4fb3cf56f2f deleted file mode 100644 index 1dfe631798a885c371c4d747ab274aad05932539..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmV-<0EYi~0ga783c@fD06pgwdl#f@HfsVRLQj3hHr>U7Atgre`4;?u*I|aqwUo63 z20Zkp3QEj8%Q;bGUP4B;B&KtgY|%&-Q@xN+PTu`d8;lcN$LX#gDce&|xt1FslV^<4 b2RI@QgWKso>H4ScY;CU&zsh|9ca<-}QqnfS diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/f3/f762af4429ae89fa0dae3d0a5b500ca11630c4 b/test/integration/mergeConflictsFiltered/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!hC.q¨]QWq'}KhHtNi8#J)z.Ҟ~ y[? \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/objects/fd/31cea7e0b6e8d334280be34db8dd86cdda3007 b/test/integration/mergeConflictsFiltered/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_73x)|R{IBUZ7&FzcwhOCjy!uuvtMDu~m6i-j8~!%bUVWl*=!V3)Z;K3N zYXo1kniv3qLP};)YH~?_Q6ZbrQLc@`W;jN4S diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/base_branch b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/base_branch deleted file mode 100644 index 504dbe400..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/base_branch +++ /dev/null @@ -1 +0,0 @@ -a51a44d96e13555215619b32065d0a22d95b8476 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/develop b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/develop deleted file mode 100644 index a63801a54..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/develop +++ /dev/null @@ -1 +0,0 @@ -9a92a03fdc6eb492ea1ac7acf4fdb04962092f81 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/feature/cherry-picking b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/feature/cherry-picking deleted file mode 100644 index d09c7755e..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/feature/cherry-picking +++ /dev/null @@ -1 +0,0 @@ -d88617710499a59992caf98d6df1b5f981c58ab1 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/master b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index 7a24b5e07..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -d4f8ef9f7c7602e92d2b2c7228bdaf3c7314d802 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/other_branch b/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/other_branch deleted file mode 100644 index 1e24c496e..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/.git_keep/refs/heads/other_branch +++ /dev/null @@ -1 +0,0 @@ -d7d52ecd690fe82c7d820ddb437e82d78b0fa7b2 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking1 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking1 deleted file mode 100644 index 6101e9354..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking1 +++ /dev/null @@ -1 +0,0 @@ -this is file number 1 that I'm going to cherry-pick diff --git a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking2 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking2 deleted file mode 100644 index 889b0fdfe..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking2 +++ /dev/null @@ -1 +0,0 @@ -this is file number 2 that I'm going to cherry-pick diff --git a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking3 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking3 deleted file mode 100644 index eb90e8d7b..000000000 --- a/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/cherrypicking4 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking4 deleted file mode 100644 index b4121e2d6..000000000 --- a/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/cherrypicking5 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking5 deleted file mode 100644 index afa76754c..000000000 --- a/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/cherrypicking6 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking6 deleted file mode 100644 index 18f469bc7..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking6 +++ /dev/null @@ -1 +0,0 @@ -this is file number 6 that I'm going to cherry-pick diff --git a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking7 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking7 deleted file mode 100644 index e448ae5bf..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking7 +++ /dev/null @@ -1 +0,0 @@ -this is file number 7 that I'm going to cherry-pick diff --git a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking8 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking8 deleted file mode 100644 index 90a84fd62..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking8 +++ /dev/null @@ -1 +0,0 @@ -this is file number 8 that I'm going to cherry-pick diff --git a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking9 b/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking9 deleted file mode 100644 index 22b0fd807..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/cherrypicking9 +++ /dev/null @@ -1 +0,0 @@ -this is file number 9 that I'm going to cherry-pick diff --git a/test/integration/mergeConflictsFiltered/expected/repo/directory/file b/test/integration/mergeConflictsFiltered/expected/repo/directory/file deleted file mode 100644 index 180cf8328..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/directory/file +++ /dev/null @@ -1 +0,0 @@ -test2 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/directory/file2 b/test/integration/mergeConflictsFiltered/expected/repo/directory/file2 deleted file mode 100644 index df6b0d2bc..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/directory/file2 +++ /dev/null @@ -1 +0,0 @@ -test3 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/file b/test/integration/mergeConflictsFiltered/expected/repo/file deleted file mode 100644 index 5da4d9200..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/file +++ /dev/null @@ -1 +0,0 @@ -original1\noriginal2\noriginal3 diff --git a/test/integration/mergeConflictsFiltered/expected/repo/file1 b/test/integration/mergeConflictsFiltered/expected/repo/file1 deleted file mode 100644 index dcd348507..000000000 --- a/test/integration/mergeConflictsFiltered/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/mergeConflictsFiltered/expected/repo/file3 b/test/integration/mergeConflictsFiltered/expected/repo/file3 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/file3 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/mergeConflictsFiltered/expected/repo/file4 b/test/integration/mergeConflictsFiltered/expected/repo/file4 deleted file mode 100644 index 1b9ae5f5d..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/file4 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a mouse diff --git a/test/integration/mergeConflictsFiltered/expected/repo/file5 b/test/integration/mergeConflictsFiltered/expected/repo/file5 deleted file mode 100644 index e3ae5c6d8..000000000 --- a/test/integration/mergeConflictsFiltered/expected/repo/file5 +++ /dev/null @@ -1 +0,0 @@ -once upon a time there was a horse diff --git a/test/integration/mergeConflictsFiltered/recording.json b/test/integration/mergeConflictsFiltered/recording.json deleted file mode 100644 index 6d620e9e3..000000000 --- a/test/integration/mergeConflictsFiltered/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":682,"Mod":0,"Key":259,"Ch":0},{"Timestamp":929,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1104,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1417,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1953,"Mod":0,"Key":256,"Ch":77},{"Timestamp":2241,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2729,"Mod":0,"Key":13,"Ch":13},{"Timestamp":3233,"Mod":0,"Key":258,"Ch":0},{"Timestamp":3489,"Mod":0,"Key":256,"Ch":32},{"Timestamp":4048,"Mod":0,"Key":256,"Ch":32},{"Timestamp":4353,"Mod":0,"Key":258,"Ch":0},{"Timestamp":4673,"Mod":0,"Key":256,"Ch":32},{"Timestamp":4992,"Mod":0,"Key":258,"Ch":0},{"Timestamp":5208,"Mod":0,"Key":256,"Ch":32},{"Timestamp":6408,"Mod":2,"Key":2,"Ch":2},{"Timestamp":7145,"Mod":0,"Key":13,"Ch":13},{"Timestamp":7625,"Mod":0,"Key":258,"Ch":0},{"Timestamp":7841,"Mod":0,"Key":258,"Ch":0},{"Timestamp":8056,"Mod":0,"Key":258,"Ch":0},{"Timestamp":8520,"Mod":0,"Key":256,"Ch":32},{"Timestamp":8897,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9233,"Mod":0,"Key":256,"Ch":32},{"Timestamp":9633,"Mod":2,"Key":2,"Ch":2},{"Timestamp":10016,"Mod":0,"Key":258,"Ch":0},{"Timestamp":10393,"Mod":0,"Key":13,"Ch":13},{"Timestamp":10881,"Mod":0,"Key":258,"Ch":0},{"Timestamp":11137,"Mod":0,"Key":258,"Ch":0},{"Timestamp":11473,"Mod":0,"Key":258,"Ch":0},{"Timestamp":11809,"Mod":0,"Key":258,"Ch":0},{"Timestamp":12056,"Mod":0,"Key":256,"Ch":32},{"Timestamp":12354,"Mod":0,"Key":256,"Ch":32},{"Timestamp":12921,"Mod":2,"Key":2,"Ch":2},{"Timestamp":13481,"Mod":0,"Key":258,"Ch":0},{"Timestamp":13681,"Mod":0,"Key":258,"Ch":0},{"Timestamp":13945,"Mod":0,"Key":13,"Ch":13},{"Timestamp":14992,"Mod":0,"Key":256,"Ch":32},{"Timestamp":15408,"Mod":0,"Key":256,"Ch":32},{"Timestamp":15929,"Mod":0,"Key":256,"Ch":32},{"Timestamp":16185,"Mod":0,"Key":257,"Ch":0},{"Timestamp":16401,"Mod":0,"Key":256,"Ch":32},{"Timestamp":16753,"Mod":0,"Key":256,"Ch":32},{"Timestamp":17353,"Mod":0,"Key":256,"Ch":32},{"Timestamp":17640,"Mod":0,"Key":258,"Ch":0},{"Timestamp":17825,"Mod":0,"Key":256,"Ch":32},{"Timestamp":18249,"Mod":0,"Key":256,"Ch":32},{"Timestamp":18457,"Mod":0,"Key":257,"Ch":0},{"Timestamp":18673,"Mod":0,"Key":256,"Ch":32},{"Timestamp":19593,"Mod":0,"Key":13,"Ch":13},{"Timestamp":20641,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/mergeConflictsFiltered/setup.sh b/test/integration/mergeConflictsFiltered/setup.sh deleted file mode 100644 index 63c51ded4..000000000 --- a/test/integration/mergeConflictsFiltered/setup.sh +++ /dev/null @@ -1,156 +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/mergeConflictsFiltered/test.json b/test/integration/mergeConflictsFiltered/test.json deleted file mode 100644 index 7402aede2..000000000 --- a/test/integration/mergeConflictsFiltered/test.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "description": "Verify that when we get merge conflicts we filter out any non-conflicted files", - "speed": 5 -} diff --git a/test/integration/mergeConflictsResolvedExternally/config/config.yml b/test/integration/mergeConflictsResolvedExternally/config/config.yml deleted file mode 100644 index 33b63939a..000000000 --- a/test/integration/mergeConflictsResolvedExternally/config/config.yml +++ /dev/null @@ -1,6 +0,0 @@ -disableStartupPopups: true -customCommands: - - key: 'N' - description: 'Resolve conflict' - context: 'files' - command: 'echo "master2" > file' diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/COMMIT_EDITMSG b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/COMMIT_EDITMSG deleted file mode 100644 index 9c1b1e853..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/COMMIT_EDITMSG +++ /dev/null @@ -1,20 +0,0 @@ -Merge branch 'master' into other - -# Conflicts: -# file -# -# It looks like you may be committing a merge. -# If this is not correct, please remove the file -# /Users/jesseduffieldduffield/go/src/github.com/jesseduffield/lazygit/test/integration/mergeConflictsResolvedExternally/actual/.git/MERGE_HEAD -# and try again. - - -# Please enter the commit message for your changes. Lines starting -# with '#' will be ignored, and an empty message aborts the commit. -# -# On branch other -# All conflicts fixed but you are still merging. -# -# Changes to be committed: -# modified: file -# diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/FETCH_HEAD b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/FETCH_HEAD deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/HEAD b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/HEAD deleted file mode 100644 index 0ca960536..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/HEAD +++ /dev/null @@ -1 +0,0 @@ -ref: refs/heads/other diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/ORIG_HEAD b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/ORIG_HEAD deleted file mode 100644 index 30d51fe1d..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/ORIG_HEAD +++ /dev/null @@ -1 +0,0 @@ -769c8b8d89700f6f196b8331159150746a839662 diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/config b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/config deleted file mode 100644 index 8ae104545..000000000 --- a/test/integration/mergeConflictsResolvedExternally/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/mergeConflictsResolvedExternally/expected/repo/.git_keep/description b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/description deleted file mode 100644 index 498b267a8..000000000 --- a/test/integration/mergeConflictsResolvedExternally/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/mergeConflictsResolvedExternally/expected/repo/.git_keep/index b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/index deleted file mode 100644 index 61de7270ad4b71a053e71a85280edd268c0bd331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmZ?q402{*U|<4b#>A(RkBqPTr^0AP1_o9pzBO7542?^G(qDmUM1Yusqh(1Qi)y`3 zt8-Mhz<+ 1642403134 +1100 commit (initial): master1 -03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 CI 1642403134 +1100 checkout: moving from master to other -03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 769c8b8d89700f6f196b8331159150746a839662 CI 1642403134 +1100 commit: other1 -769c8b8d89700f6f196b8331159150746a839662 03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 CI 1642403134 +1100 checkout: moving from other to master -03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 691ee9e9d9c654c81214f56c514ff725f46cb9e4 CI 1642403134 +1100 commit: master2 -691ee9e9d9c654c81214f56c514ff725f46cb9e4 769c8b8d89700f6f196b8331159150746a839662 CI 1642403134 +1100 checkout: moving from master to other -769c8b8d89700f6f196b8331159150746a839662 f2df244fb87b6ba1d2ab484d76c66baba168a867 CI 1642403138 +1100 commit (merge): Merge branch 'master' into other diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/master b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/master deleted file mode 100644 index 2e39e4fcd..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/master +++ /dev/null @@ -1,2 +0,0 @@ -0000000000000000000000000000000000000000 03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 CI 1642403134 +1100 commit (initial): master1 -03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 691ee9e9d9c654c81214f56c514ff725f46cb9e4 CI 1642403134 +1100 commit: master2 diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/other b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/other deleted file mode 100644 index a462e4b21..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/logs/refs/heads/other +++ /dev/null @@ -1,3 +0,0 @@ -0000000000000000000000000000000000000000 03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 CI 1642403134 +1100 branch: Created from HEAD -03959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 769c8b8d89700f6f196b8331159150746a839662 CI 1642403134 +1100 commit: other1 -769c8b8d89700f6f196b8331159150746a839662 f2df244fb87b6ba1d2ab484d76c66baba168a867 CI 1642403138 +1100 commit (merge): Merge branch 'master' into other diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/03/959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/03/959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 deleted file mode 100644 index e91b55a9f..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/03/959db9f70fcb4a8f0931e4ad64e1c9ec1016a4 +++ /dev/null @@ -1,4 +0,0 @@ -xA -1 @Q=E$v!"j) -X#<=Bȹą}TYbQ8%Hϸ .vӯ멧 -#{8!Ydܙ'&xR-k \ No newline at end of file diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/08/84a47e04257f4c85435a8b10ff4f15fffa63fc b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/08/84a47e04257f4c85435a8b10ff4f15fffa63fc deleted file mode 100644 index 20a13c21890e7e375d02d129591c6cdbd1cf6d7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23 fcmb9VlXr?Ff%bxNXyJgW#E4Hf-C)-dQRLujl0?XE86X)m5%}d H28Ir#)Hf9y diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/53/502c7023f80c046a1b00b45614d5ffef8977d9 b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/53/502c7023f80c046a1b00b45614d5ffef8977d9 deleted file mode 100644 index fdb7cf9f9ce99114b878604e39115fc817d5fe6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmV-00MGw;0V^p=O;s>9VlXr?Ff%bxNXyJgW#DL8QpciN@6+lW)h+PfU-bX40FPpv1_I#VK`jx&u^;DLAu^7n_c=TkChyZ4<`_#}sx#{xWu`@q=@;S;} CIY(#! diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/6b/03bc7537ecf00b48a0ea57ce1edf388ed3f1ad b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/6b/03bc7537ecf00b48a0ea57ce1edf388ed3f1ad deleted file mode 100644 index 9ccb24501a89e37bf43dafc7f94dff30f515cc4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bxNXyJgW!S52^g(NX+oIi-3$->(k9gv(;B5i` H3b78X#1a%D diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/76/9c8b8d89700f6f196b8331159150746a839662 b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/76/9c8b8d89700f6f196b8331159150746a839662 deleted file mode 100644 index f6c47ec28..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/76/9c8b8d89700f6f196b8331159150746a839662 +++ /dev/null @@ -1,3 +0,0 @@ -xA -0@Q9Ed1"BW=FL`L <=[j}BUjHGvp%0= ƫc@2I^\c( 1{VL }d?ck΋C/V=;Bb{F0G=Mv4? -8 \ No newline at end of file diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/bd/2b32f02abf86a2bb79a12ab09758e44b204b34 b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/bd/2b32f02abf86a2bb79a12ab09758e44b204b34 deleted file mode 100644 index abea138422cb0a69f1ff4af68cadaed74809aed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23 fcmbqT=sIOVIO=c#M-Xj3x-E603ph8w2^ FJOIrF5)c3Y diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/f2/df244fb87b6ba1d2ab484d76c66baba168a867 b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/objects/f2/df244fb87b6ba1d2ab484d76c66baba168a867 deleted file mode 100644 index a8bc1219e26505808f5dd7ba3901e000411db4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197 zcmV;$06PD80gaElY6CG4MN{urOy?pHX7m_oAOwRe7x@TDJIWfYT_Y=y&ySk)sV*GO zDQ-DhyA3cLUPf01Z#|k4(AXNWpyNatF+0!XR$r^uC?Tw}JW|(vKwv2`$8}P~%9Vt3 zw3f&Vc?`3UR+!D7&qAuAvPxm^N+d(BdM5HtowV_ij$IGbLQE diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/master b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/master deleted file mode 100644 index b735e793a..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/master +++ /dev/null @@ -1 +0,0 @@ -691ee9e9d9c654c81214f56c514ff725f46cb9e4 diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/other b/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/other deleted file mode 100644 index 52ac4afa8..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/.git_keep/refs/heads/other +++ /dev/null @@ -1 +0,0 @@ -f2df244fb87b6ba1d2ab484d76c66baba168a867 diff --git a/test/integration/mergeConflictsResolvedExternally/expected/repo/file b/test/integration/mergeConflictsResolvedExternally/expected/repo/file deleted file mode 100644 index 0884a47e0..000000000 --- a/test/integration/mergeConflictsResolvedExternally/expected/repo/file +++ /dev/null @@ -1 +0,0 @@ -master2 diff --git a/test/integration/mergeConflictsResolvedExternally/recording.json b/test/integration/mergeConflictsResolvedExternally/recording.json deleted file mode 100644 index 21b60ce5a..000000000 --- a/test/integration/mergeConflictsResolvedExternally/recording.json +++ /dev/null @@ -1 +0,0 @@ -{"KeyEvents":[{"Timestamp":438,"Mod":0,"Key":259,"Ch":0},{"Timestamp":663,"Mod":0,"Key":258,"Ch":0},{"Timestamp":1206,"Mod":0,"Key":256,"Ch":77},{"Timestamp":1487,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2045,"Mod":0,"Key":13,"Ch":13},{"Timestamp":2951,"Mod":0,"Key":256,"Ch":78},{"Timestamp":3606,"Mod":0,"Key":13,"Ch":13},{"Timestamp":4343,"Mod":0,"Key":256,"Ch":113}],"ResizeEvents":[{"Timestamp":0,"Width":272,"Height":74}]} \ No newline at end of file diff --git a/test/integration/mergeConflictsResolvedExternally/setup.sh b/test/integration/mergeConflictsResolvedExternally/setup.sh deleted file mode 100644 index e1126d2c3..000000000 --- a/test/integration/mergeConflictsResolvedExternally/setup.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -set -e - -cd $1 - -git init -git config user.email "CI@example.com" -git config user.name "CI" - -git checkout -b master - -echo "master1" > file -git add . -git commit -m "master1" - -git checkout -b other - -echo "other1" > file -git add . -git commit -m "other1" - -git checkout master - -echo "master2" > file -git add . -git commit -m "master2" - -git checkout other diff --git a/test/integration/mergeConflictsResolvedExternally/test.json b/test/integration/mergeConflictsResolvedExternally/test.json deleted file mode 100644 index e51abcada..000000000 --- a/test/integration/mergeConflictsResolvedExternally/test.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "description": "This test verifies that merge conflicts resolved externally are recognised by lazygit and the user is prompted to continue", - "speed": 10 -} From f82f4f6dbcae4c6f46c8c39bbceda526ab92ee11 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 26 Feb 2023 11:22:24 +1100 Subject: [PATCH 2/5] disable auto-refresh in integration tests --- test/default_test_config/config.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/default_test_config/config.yml b/test/default_test_config/config.yml index 087049261..77a9ad237 100644 --- a/test/default_test_config/config.yml +++ b/test/default_test_config/config.yml @@ -1,3 +1,5 @@ +# This config is used in our integration tests. If we want to modify this for a specific test, you can do so in the SetupConfig function + disableStartupPopups: true gui: theme: @@ -8,3 +10,10 @@ gui: - reverse # TODO: we should update most tests to use a file tree now that it's the default showFileTree: false +git: + # We don't want to run any periodic background git commands because it'll introduce race conditions and flakiness. + # If we need to refresh something from within the test (which should only really happen if we've invoked a + # shell command in the background) we should have the user press shift+R to refresh. + # TODO: add tests which explicitly test auto-refresh functionality + autoRefresh: false + autoFetch: false From 8b5d59c2380c9d4c78d148d8ee0cecdfa556f1f5 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 26 Feb 2023 11:23:36 +1100 Subject: [PATCH 3/5] remove legacy integration tests --- .github/workflows/ci.yml | 30 - .gitignore | 9 +- cmd/integration_test/main.go | 5 - pkg/integration/README.md | 22 +- pkg/integration/clients/go_test.go | 4 +- pkg/integration/clients/tui.go | 2 +- pkg/integration/components/paths.go | 2 +- pkg/integration/deprecated/cmd/runner/main.go | 65 -- pkg/integration/deprecated/cmd/tui/main.go | 422 ------------- pkg/integration/deprecated/go_test.go | 122 ---- pkg/integration/deprecated/integration.go | 564 ------------------ test/repos/bom.sh | 23 - test/repos/case_insensitive_checkouts.sh | 19 - test/repos/extras/pre-commit | 7 - test/repos/gpg.sh | 19 - test/repos/lots_of_commits.sh | 19 - test/repos/merge_conflict.sh | 155 ----- test/repos/pre_commit_hook.sh | 12 - test/repos/unicode_characters.sh | 22 - test/shell_script_input_prompt.sh | 7 - 20 files changed, 7 insertions(+), 1523 deletions(-) delete mode 100644 pkg/integration/deprecated/cmd/runner/main.go delete mode 100644 pkg/integration/deprecated/cmd/tui/main.go delete mode 100644 pkg/integration/deprecated/go_test.go delete mode 100644 pkg/integration/deprecated/integration.go delete mode 100755 test/repos/bom.sh delete mode 100755 test/repos/case_insensitive_checkouts.sh delete mode 100644 test/repos/extras/pre-commit delete mode 100755 test/repos/gpg.sh delete mode 100755 test/repos/lots_of_commits.sh delete mode 100755 test/repos/merge_conflict.sh delete mode 100755 test/repos/pre_commit_hook.sh delete mode 100755 test/repos/unicode_characters.sh delete mode 100755 test/shell_script_input_prompt.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 646fdde7f..5b813da41 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,36 +46,6 @@ jobs: # we're passing -short so that we skip the integration tests, which will be run in parallel below run: | go test ./... -short - integration-tests-old: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - parallelism: [5] - index: [0,1,2,3,4] - name: "Integration Tests (Old pattern) (${{ matrix.index }}/${{ matrix.parallelism }})" - env: - GOFLAGS: -mod=vendor - steps: - - name: Checkout code - uses: actions/checkout@v2 - - name: Setup Go - uses: actions/setup-go@v1 - with: - go-version: 1.18.x - - name: Cache build - uses: actions/cache@v1 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - key: ${{runner.os}}-go-${{hashFiles('**/go.sum')}}-test - restore-keys: | - ${{runner.os}}-go- - - name: Test code - # for file.allow thing see https://vielmetti.typepad.com/logbook/2022/10/git-security-fixes-lead-to-fatal-transport-file-not-allowed-error-in-ci-systems-cve-2022-39253.html - run: | - git config --global protocol.file.allow always && PARALLEL_TOTAL=${{ matrix.parallelism }} PARALLEL_INDEX=${{ matrix.index }} go test pkg/integration/deprecated/*.go integration-tests: runs-on: ubuntu-latest name: "Integration Tests" diff --git a/.gitignore b/.gitignore index a1a0ebe21..57f63c955 100644 --- a/.gitignore +++ b/.gitignore @@ -35,14 +35,7 @@ lazygit.exe test/git_server/data -# we'll scrap these lines once we've fully moved over to the new integration test approach -test/integration/*/actual/ -test/integration/*/used_config/ -# these sample hooks waste too much space -test/integration/*/expected/**/hooks/ -test/integration/*/expected_remote/**/hooks/ - -test/integration_new/** +test/integration/** oryxBuildBinary __debug_bin diff --git a/cmd/integration_test/main.go b/cmd/integration_test/main.go index dc0cede86..9de11a2c8 100644 --- a/cmd/integration_test/main.go +++ b/cmd/integration_test/main.go @@ -17,11 +17,6 @@ Usage: 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 - MODE: - * ask (default): if a snapshot test fails, asks if you want to update the snapshot - * check: if a snapshot test fails, exits with an error - * update: if a snapshot test fails, updates the snapshot - * sandbox: uses the test's setup step to run the test in a sandbox where you can do whatever you want TUI mode: > go run cmd/integration_test/main.go tui diff --git a/pkg/integration/README.md b/pkg/integration/README.md index 413f2d71a..598810a82 100644 --- a/pkg/integration/README.md +++ b/pkg/integration/README.md @@ -52,7 +52,7 @@ There are three ways to invoke a test: 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 +3. go test pkg/integration/clients/*.go The first, the test runner, is for directly running a test from the command line. If you pass no arguments, it runs all tests. The second, the TUI, is for running tests from a terminal UI where it's easier to find a test and run it without having to copy it's name and paste it into the terminal. This is the easiest approach by far. @@ -62,7 +62,7 @@ The name of a test is based on its path, so the name of the test at `pkg/integra You can pass the KEY_PRESS_DELAY env var to the test runner in order to set a delay in milliseconds between keypresses, which helps for watching a test at a realistic speed to understand what it's doing. Or you can pass the '--slow' flag which sets a pre-set 'slow' key delay. In the tui you can press 't' to run the test in slow mode. -The resultant repo will be stored in `test/integration_new`, so if you're not sure what went wrong you can go there and inspect the repo. +The resultant repo will be stored in `test/integration`, so if you're not sure what went wrong you can go there and inspect the repo. ### Running tests in VSCode @@ -78,21 +78,3 @@ The test will run in a VSCode terminal: 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 in the test runner pass the --sandbox argument. - -## Migration process - -You can watch how to migrate tests in this youtube [video](https://youtu.be/cJtOJu6-HcA). - -At the time of writing, most tests are created under an old approach, where you would record yourself in a lazygit session and then the test would replay the keybindings with the same timestamps. This old approach is great for writing tests quickly, but is much harder to maintain. It has to rely on snapshots to determining if a test passes or fails, and can't do assertions along the way. It's also harder to grok what's the intention behind certain actions that take place within the test (e.g. was the recorder intentionally switching to another panel or was that just a misclick?). - -At the moment, all the deprecated test code lives in pkg/integration/deprecated. Hopefully in the very near future we migrate everything across so that we don't need to maintain two systems. - -We should never write any new tests under the old method, and if a given test breaks because of new functionality, it's best to simply rewrite it under the new approach. If you want to run a test for the sake of watching what it does so that you can transcribe it into the new approach, you can run: - -``` -go run pkg/integration/deprecated/cmd/tui/main.go -``` - -The tests in the old format live in test/integration. In the old format, test definitions are co-located with snapshots. The setup step is done in a `setup.sh` shell script and the `recording.json` file contains the recorded keypresses to be replayed during the test. - -If you have rewritten an integration test under the new pattern, be sure to delete the old integration test directory. diff --git a/pkg/integration/clients/go_test.go b/pkg/integration/clients/go_test.go index 201d9bbfa..29d914708 100644 --- a/pkg/integration/clients/go_test.go +++ b/pkg/integration/clients/go_test.go @@ -3,8 +3,8 @@ package clients -// this is the new way of running tests. See pkg/integration/integration_tests/commit.go -// for an example +// This file allows you to use `go test` to run integration tests. +// See See pkg/integration/README.md for more info. import ( "bytes" diff --git a/pkg/integration/clients/tui.go b/pkg/integration/clients/tui.go index dc4e1b5b0..10bfcf748 100644 --- a/pkg/integration/clients/tui.go +++ b/pkg/integration/clients/tui.go @@ -137,7 +137,7 @@ func RunTUI() { return nil } - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code test/integration_new/%s", currentTest.Name())) + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code test/integration/%s", currentTest.Name())) if err := cmd.Run(); err != nil { return err } diff --git a/pkg/integration/components/paths.go b/pkg/integration/components/paths.go index d01b58437..43468f509 100644 --- a/pkg/integration/components/paths.go +++ b/pkg/integration/components/paths.go @@ -3,7 +3,7 @@ package components import "path/filepath" // convenience struct for easily getting directories within our test directory. -// We have one test directory for each test, found in test/integration_new. +// We have one test directory for each test, found in test/integration. type Paths struct { // e.g. test/integration/test_name root string diff --git a/pkg/integration/deprecated/cmd/runner/main.go b/pkg/integration/deprecated/cmd/runner/main.go deleted file mode 100644 index 86f3c1f14..000000000 --- a/pkg/integration/deprecated/cmd/runner/main.go +++ /dev/null @@ -1,65 +0,0 @@ -package main - -import ( - "fmt" - "log" - "os" - "os/exec" - "testing" - - "github.com/jesseduffield/lazygit/pkg/integration/deprecated" - "github.com/stretchr/testify/assert" -) - -// Deprecated: This file is part of the old way of doing things. - -// see https://github.com/jesseduffield/lazygit/blob/master/pkg/integration/README.md -// This file can be invoked directly, but you might find it easier to go through -// test/lazyintegration/main.go, which provides a convenient gui wrapper to integration tests. -// -// If invoked directly, you can specify a test by passing it as the first argument. -// You can also specify that you want to record a test by passing MODE=record -// as an env var. - -func main() { - mode := deprecated.GetModeFromEnv() - speedEnv := os.Getenv("SPEED") - includeSkipped := os.Getenv("INCLUDE_SKIPPED") == "true" - selectedTestName := os.Args[1] - - err := deprecated.RunTests( - log.Printf, - runCmdInTerminal, - func(test *deprecated.IntegrationTest, f func(*testing.T) error) { - if selectedTestName != "" && test.Name != selectedTestName { - return - } - if err := f(nil); err != nil { - log.Print(err.Error()) - } - }, - mode, - speedEnv, - func(_t *testing.T, expected string, actual string, prefix string) { //nolint:thelper - assert.Equal(MockTestingT{}, expected, actual, fmt.Sprintf("Unexpected %s. Expected:\n%s\nActual:\n%s\n", prefix, expected, actual)) - }, - includeSkipped, - ) - if err != nil { - log.Print(err.Error()) - } -} - -type MockTestingT struct{} - -func (t MockTestingT) Errorf(format string, args ...interface{}) { - fmt.Printf(format, args...) -} - -func runCmdInTerminal(cmd *exec.Cmd) error { - cmd.Stdout = os.Stdout - cmd.Stdin = os.Stdin - cmd.Stderr = os.Stderr - - return cmd.Run() -} diff --git a/pkg/integration/deprecated/cmd/tui/main.go b/pkg/integration/deprecated/cmd/tui/main.go deleted file mode 100644 index b7fc45d5c..000000000 --- a/pkg/integration/deprecated/cmd/tui/main.go +++ /dev/null @@ -1,422 +0,0 @@ -package main - -import ( - "fmt" - "log" - "os" - "os/exec" - "path/filepath" - - "github.com/jesseduffield/gocui" - "github.com/jesseduffield/lazygit/pkg/gui" - "github.com/jesseduffield/lazygit/pkg/gui/style" - "github.com/jesseduffield/lazygit/pkg/integration/deprecated" - "github.com/jesseduffield/lazygit/pkg/secureexec" -) - -// Deprecated. See lazy_integration for the new approach. - -// this program lets you manage integration tests in a TUI. See https://github.com/jesseduffield/lazygit/blob/master/pkg/integration/README.md for more info. - -type App struct { - tests []*deprecated.IntegrationTest - itemIdx int - testDir string - editing bool - g *gocui.Gui -} - -func (app *App) getCurrentTest() *deprecated.IntegrationTest { - if len(app.tests) > 0 { - return app.tests[app.itemIdx] - } - return nil -} - -func (app *App) refreshTests() { - app.loadTests() - app.g.Update(func(*gocui.Gui) error { - listView, err := app.g.View("list") - if err != nil { - return err - } - - listView.Clear() - for _, test := range app.tests { - fmt.Fprintln(listView, test.Name) - } - - return nil - }) -} - -func (app *App) loadTests() { - tests, err := deprecated.LoadTests(app.testDir) - if err != nil { - log.Panicln(err) - } - - app.tests = tests - if app.itemIdx > len(app.tests)-1 { - app.itemIdx = len(app.tests) - 1 - } -} - -func main() { - rootDir := deprecated.GetRootDirectory() - testDir := filepath.Join(rootDir, "test", "integration") - - app := &App{testDir: testDir} - app.loadTests() - - g, err := gocui.NewGui(gocui.OutputTrue, false, gocui.NORMAL, false, gui.RuneReplacements) - if err != nil { - log.Panicln(err) - } - - g.Cursor = false - - app.g = g - - g.SetManagerFunc(app.layout) - - if err := g.SetKeybinding("list", gocui.KeyArrowUp, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - if app.itemIdx > 0 { - app.itemIdx-- - } - listView, err := g.View("list") - if err != nil { - return err - } - listView.FocusPoint(0, app.itemIdx) - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 'q', gocui.ModNone, quit); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 'r', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("INCLUDE_SKIPPED=true MODE=record go run pkg/integration/deprecated/cmd/runner/main.go %s", currentTest.Name)) - app.runSubprocess(cmd) - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 's', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("INCLUDE_SKIPPED=true MODE=sandbox go run pkg/integration/deprecated/cmd/runner/main.go %s", currentTest.Name)) - app.runSubprocess(cmd) - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("INCLUDE_SKIPPED=true go run pkg/integration/deprecated/cmd/runner/main.go %s", currentTest.Name)) - app.runSubprocess(cmd) - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 'u', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("INCLUDE_SKIPPED=true MODE=updateSnapshot go run pkg/integration/deprecated/cmd/runner/main.go %s", currentTest.Name)) - app.runSubprocess(cmd) - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 't', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("INCLUDE_SKIPPED=true SPEED=1 go run pkg/integration/deprecated/cmd/runner/main.go %s", currentTest.Name)) - app.runSubprocess(cmd) - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 'o', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code -r %s/%s/test.json", app.testDir, currentTest.Name)) - if err := cmd.Run(); err != nil { - return err - } - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 'n', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - // need to duplicate that folder and then re-fetch our tests. - dir := app.testDir + "/" + app.getCurrentTest().Name - newDir := dir + "_Copy" - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("cp -r %s %s", dir, newDir)) - if err := cmd.Run(); err != nil { - return err - } - - app.loadTests() - - app.refreshTests() - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 'm', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - app.editing = true - if _, err := g.SetCurrentView("editor"); err != nil { - return err - } - editorView, err := g.View("editor") - if err != nil { - return err - } - editorView.Clear() - fmt.Fprint(editorView, currentTest.Name) - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("list", 'd', gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - dir := app.testDir + "/" + app.getCurrentTest().Name - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("rm -rf %s", dir)) - if err := cmd.Run(); err != nil { - return err - } - - app.refreshTests() - - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("editor", gocui.KeyEnter, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - app.editing = false - if _, err := g.SetCurrentView("list"); err != nil { - return err - } - - editorView, err := g.View("editor") - if err != nil { - return err - } - - dir := app.testDir + "/" + app.getCurrentTest().Name - newDir := app.testDir + "/" + editorView.Buffer() - - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("mv %s %s", dir, newDir)) - if err := cmd.Run(); err != nil { - return err - } - - editorView.Clear() - - app.refreshTests() - return nil - }); err != nil { - log.Panicln(err) - } - - if err := g.SetKeybinding("editor", gocui.KeyEsc, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - app.editing = false - if _, err := g.SetCurrentView("list"); err != nil { - return err - } - - return nil - }); err != nil { - log.Panicln(err) - } - - err = g.MainLoop() - g.Close() - switch err { - case gocui.ErrQuit: - return - default: - log.Panicln(err) - } -} - -func (app *App) runSubprocess(cmd *exec.Cmd) { - if err := gocui.Screen.Suspend(); err != nil { - panic(err) - } - - cmd.Stdin = os.Stdin - cmd.Stderr = os.Stderr - cmd.Stdout = os.Stdout - if err := cmd.Run(); err != nil { - log.Println(err.Error()) - } - cmd.Stdin = nil - cmd.Stderr = nil - cmd.Stdout = nil - - fmt.Fprintf(os.Stdout, "\n%s", style.FgGreen.Sprint("press enter to return")) - fmt.Scanln() // wait for enter press - - if err := gocui.Screen.Resume(); err != nil { - panic(err) - } -} - -func (app *App) layout(g *gocui.Gui) error { - maxX, maxY := g.Size() - descriptionViewHeight := 7 - keybindingsViewHeight := 3 - editorViewHeight := 3 - if !app.editing { - editorViewHeight = 0 - } else { - descriptionViewHeight = 0 - keybindingsViewHeight = 0 - } - g.Cursor = app.editing - g.FgColor = gocui.ColorGreen - listView, err := g.SetView("list", 0, 0, maxX-1, maxY-descriptionViewHeight-keybindingsViewHeight-editorViewHeight-1, 0) - if err != nil { - if !gocui.IsUnknownView(err) { - return err - } - listView.Highlight = true - listView.SelBgColor = gocui.ColorBlue - listView.Clear() - for _, test := range app.tests { - fmt.Fprintln(listView, test.Name) - } - listView.Title = "Tests" - listView.FgColor = gocui.ColorDefault - if _, err := g.SetCurrentView("list"); err != nil { - return err - } - } - - descriptionView, err := g.SetViewBeneath("description", "list", descriptionViewHeight) - if err != nil { - if !gocui.IsUnknownView(err) { - return err - } - descriptionView.Title = "Test description" - descriptionView.Wrap = true - descriptionView.FgColor = gocui.ColorDefault - } - - keybindingsView, err := g.SetViewBeneath("keybindings", "description", keybindingsViewHeight) - if err != nil { - if !gocui.IsUnknownView(err) { - return err - } - keybindingsView.Title = "Keybindings" - keybindingsView.Wrap = true - keybindingsView.FgColor = gocui.ColorDefault - fmt.Fprintln(keybindingsView, "up/down: navigate, enter: run test, u: run test and update snapshots, r: record test, s: sandbox, o: open test config, n: duplicate test, m: rename test, d: delete test, t: run test at original speed") - } - - editorView, err := g.SetViewBeneath("editor", "keybindings", editorViewHeight) - if err != nil { - if !gocui.IsUnknownView(err) { - return err - } - editorView.Title = "Enter Name" - editorView.FgColor = gocui.ColorDefault - editorView.Editable = true - } - - currentTest := app.getCurrentTest() - if currentTest == nil { - return nil - } - - descriptionView.Clear() - fmt.Fprintf(descriptionView, "Speed: %f. %s", currentTest.Speed, currentTest.Description) - - if err := g.SetKeybinding("list", gocui.KeyArrowDown, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { - if app.itemIdx < len(app.tests)-1 { - app.itemIdx++ - } - - listView, err := g.View("list") - if err != nil { - return err - } - listView.FocusPoint(0, app.itemIdx) - return nil - }); err != nil { - log.Panicln(err) - } - - return nil -} - -func quit(g *gocui.Gui, v *gocui.View) error { - return gocui.ErrQuit -} diff --git a/pkg/integration/deprecated/go_test.go b/pkg/integration/deprecated/go_test.go deleted file mode 100644 index af7f6a8eb..000000000 --- a/pkg/integration/deprecated/go_test.go +++ /dev/null @@ -1,122 +0,0 @@ -//go:build !windows -// +build !windows - -package deprecated - -import ( - "bytes" - "errors" - "fmt" - "io" - "io/ioutil" - "os" - "os/exec" - "strconv" - "testing" - - "github.com/creack/pty" - "github.com/stretchr/testify/assert" -) - -// Deprecated. - -// This file is quite similar to integration/main.go. The main difference is that this file is -// run via `go test` whereas the other is run via `test/lazyintegration/main.go` which provides -// a convenient gui wrapper around our integration tests. The `go test` approach is better -// for CI and for running locally in the background to ensure you haven't broken -// anything while making changes. If you want to visually see what's happening when a test is run, -// you'll need to take the other approach -// -// As for this file, to run an integration test, e.g. for test 'commit', go: -// go test pkg/gui/old_gui_test.go -run /commit -// -// To update a snapshot for an integration test, pass UPDATE_SNAPSHOTS=true -// UPDATE_SNAPSHOTS=true go test pkg/gui/old_gui_test.go -run /commit -// -// integration tests are run in test/integration//actual and the final test does -// not clean up that directory so you can cd into it to see for yourself what -// happened when a test fails. -// -// To override speed, pass e.g. `SPEED=1` as an env var. Otherwise we start each test -// at a high speed and then drop down to lower speeds upon each failure until finally -// trying at the original playback speed (speed 1). A speed of 2 represents twice the -// original playback speed. Speed may be a decimal. - -func Test(t *testing.T) { - if testing.Short() { - t.Skip("Skipping integration tests in short mode") - } - - mode := GetModeFromEnv() - speedEnv := os.Getenv("SPEED") - includeSkipped := os.Getenv("INCLUDE_SKIPPED") != "" - - parallelTotal := tryConvert(os.Getenv("PARALLEL_TOTAL"), 1) - parallelIndex := tryConvert(os.Getenv("PARALLEL_INDEX"), 0) - testNumber := 0 - - err := RunTests( - t.Logf, - runCmdHeadless, - func(test *IntegrationTest, f func(*testing.T) error) { - defer func() { testNumber += 1 }() - if testNumber%parallelTotal != parallelIndex { - return - } - - t.Run(test.Name, func(t *testing.T) { - err := f(t) - assert.NoError(t, err) - }) - }, - mode, - speedEnv, - func(t *testing.T, expected string, actual string, prefix string) { - t.Helper() - assert.Equal(t, expected, actual, fmt.Sprintf("Unexpected %s. Expected:\n%s\nActual:\n%s\n", prefix, expected, actual)) - }, - includeSkipped, - ) - - assert.NoError(t, err) -} - -func tryConvert(numStr string, defaultVal int) int { - num, err := strconv.Atoi(numStr) - if err != nil { - return defaultVal - } - - return num -} - -func runCmdHeadless(cmd *exec.Cmd) error { - cmd.Env = append( - cmd.Env, - "HEADLESS=true", - "TERM=xterm", - ) - - // 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: 100, Cols: 100}) - 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 deleted file mode 100644 index b292809c9..000000000 --- a/pkg/integration/deprecated/integration.go +++ /dev/null @@ -1,564 +0,0 @@ -package deprecated - -import ( - "encoding/json" - "errors" - "fmt" - "io/ioutil" - "log" - "os" - "os/exec" - "path/filepath" - "strconv" - "strings" - "testing" - - "github.com/jesseduffield/generics/slices" - "github.com/jesseduffield/lazygit/pkg/commands/oscommands" - "github.com/jesseduffield/lazygit/pkg/secureexec" -) - -// Deprecated: This file is part of the old way of doing things. See pkg/integration/integration.go for the new way - -// This package is for running our integration test suite. See https://github.com/jesseduffield/lazygit/blob/master/pkg/integration/README.md for more info. - -type IntegrationTest struct { - Name string `json:"name"` - Speed float64 `json:"speed"` - Description string `json:"description"` - ExtraCmdArgs string `json:"extraCmdArgs"` - Skip bool `json:"skip"` -} - -type Mode int - -const ( - // default: for when we're just running a test and comparing to the snapshot - TEST = iota - // for when we want to record a test and set the snapshot based on the result - RECORD - // when we just want to use the setup of the test for our own sandboxing purposes. - // This does not record the session and does not create/update snapshots - SANDBOX - // running a test but updating the snapshot - UPDATE_SNAPSHOT -) - -func GetModeFromEnv() Mode { - switch os.Getenv("MODE") { - case "record": - return RECORD - case "", "test": - return TEST - case "updateSnapshot": - return UPDATE_SNAPSHOT - case "sandbox": - return SANDBOX - default: - log.Fatalf("unknown test mode: %s, must be one of [test, record, updateSnapshot, sandbox]", os.Getenv("MODE")) - panic("unreachable") - } -} - -// this function is used by both `go test` and from our lazyintegration gui, but -// errors need to be handled differently in each (for example go test is always -// working with *testing.T) so we pass in any differences as args here. -func RunTests( - logf func(format string, formatArgs ...interface{}), - runCmd func(cmd *exec.Cmd) error, - fnWrapper func(test *IntegrationTest, f func(*testing.T) error), - mode Mode, - speedEnv string, - onFail func(t *testing.T, expected string, actual string, prefix string), - includeSkipped bool, -) error { - rootDir := GetRootDirectory() - err := os.Chdir(rootDir) - if err != nil { - return err - } - - testDir := filepath.Join(rootDir, "test", "integration") - - osCommand := oscommands.NewDummyOSCommand() - err = osCommand.Cmd.New("go build -o " + tempLazygitPath()).Run() - if err != nil { - return err - } - - tests, err := LoadTests(testDir) - if err != nil { - return err - } - - for _, test := range tests { - test := test - - fnWrapper(test, func(t *testing.T) error { //nolint: thelper - if test.Skip && !includeSkipped { - logf("skipping test: %s", test.Name) - return nil - } - - speeds := getTestSpeeds(test.Speed, mode, speedEnv) - testPath := filepath.Join(testDir, test.Name) - actualDir := filepath.Join(testPath, "actual") - expectedDir := filepath.Join(testPath, "expected") - actualRepoDir := filepath.Join(actualDir, "repo") - logf("path: %s", testPath) - - for i, speed := range speeds { - if mode != SANDBOX && mode != RECORD { - logf("%s: attempting test at speed %f\n", test.Name, speed) - } - - findOrCreateDir(testPath) - prepareIntegrationTestDir(actualDir) - findOrCreateDir(actualRepoDir) - err := createFixture(testPath, actualRepoDir) - if err != nil { - return err - } - - configDir := filepath.Join(testPath, "used_config") - - cmd, err := getLazygitCommand(testPath, rootDir, mode, speed, test.ExtraCmdArgs) - if err != nil { - return err - } - - err = runCmd(cmd) - if err != nil { - return err - } - - if mode == UPDATE_SNAPSHOT || mode == RECORD { - // create/update snapshot - err = oscommands.CopyDir(actualDir, expectedDir) - if err != nil { - return err - } - - if err := renameSpecialPaths(expectedDir); err != nil { - return err - } - - logf("%s", "updated snapshot") - } else { - if err := validateSameRepos(expectedDir, actualDir); err != nil { - return err - } - - // iterate through each repo in the expected dir and comparet to the corresponding repo in the actual dir - expectedFiles, err := ioutil.ReadDir(expectedDir) - if err != nil { - return err - } - - success := true - for _, f := range expectedFiles { - if !f.IsDir() { - return errors.New("unexpected file (as opposed to directory) in integration test 'expected' directory") - } - - // get corresponding file name from actual dir - actualRepoPath := filepath.Join(actualDir, f.Name()) - expectedRepoPath := filepath.Join(expectedDir, f.Name()) - - actualRepo, expectedRepo, err := generateSnapshots(actualRepoPath, expectedRepoPath) - if err != nil { - return err - } - - if expectedRepo != actualRepo { - success = false - // if the snapshot doesn't match and we haven't tried all playback speeds different we'll retry at a slower speed - if i < len(speeds)-1 { - break - } - - // get the log file and print it - bytes, err := os.ReadFile(filepath.Join(configDir, "development.log")) - if err != nil { - return err - } - logf("%s", string(bytes)) - - onFail(t, expectedRepo, actualRepo, f.Name()) - } - } - - if success { - logf("%s: success at speed %f\n", test.Name, speed) - break - } - } - } - - return nil - }) - } - - return nil -} - -// validates that the actual and expected dirs have the same repo names (doesn't actually check the contents of the repos) -func validateSameRepos(expectedDir string, actualDir string) error { - // iterate through each repo in the expected dir and compare to the corresponding repo in the actual dir - expectedFiles, err := ioutil.ReadDir(expectedDir) - if err != nil { - return err - } - - var actualFiles []os.FileInfo - actualFiles, err = ioutil.ReadDir(actualDir) - if err != nil { - return err - } - - expectedFileNames := slices.Map(expectedFiles, getFileName) - actualFileNames := slices.Map(actualFiles, getFileName) - if !slices.Equal(expectedFileNames, actualFileNames) { - return fmt.Errorf("expected and actual repo dirs do not match: expected: %s, actual: %s", expectedFileNames, actualFileNames) - } - - return nil -} - -func getFileName(f os.FileInfo) string { - return f.Name() -} - -func prepareIntegrationTestDir(actualDir string) { - // remove contents of integration test directory - dir, err := ioutil.ReadDir(actualDir) - if err != nil { - if os.IsNotExist(err) { - err = os.Mkdir(actualDir, 0o777) - if err != nil { - panic(err) - } - } else { - panic(err) - } - } - for _, d := range dir { - os.RemoveAll(filepath.Join(actualDir, d.Name())) - } -} - -func GetRootDirectory() string { - path, err := os.Getwd() - if err != nil { - panic(err) - } - - for { - _, err := os.Stat(filepath.Join(path, ".git")) - - if err == nil { - return path - } - - if !os.IsNotExist(err) { - panic(err) - } - - path = filepath.Dir(path) - - if path == "/" { - log.Fatal("must run in lazygit folder or child folder") - } - } -} - -func createFixture(testPath, actualDir string) error { - bashScriptPath := filepath.Join(testPath, "setup.sh") - cmd := secureexec.Command("bash", bashScriptPath, actualDir) - - if output, err := cmd.CombinedOutput(); err != nil { - return errors.New(string(output)) - } - - return nil -} - -func tempLazygitPath() string { - return filepath.Join("/tmp", "lazygit", "test_lazygit") -} - -func getTestSpeeds(testStartSpeed float64, mode Mode, speedStr string) []float64 { - if mode != TEST { - // have to go at original speed if updating snapshots in case we go to fast and create a junk snapshot - return []float64{1.0} - } - - if speedStr != "" { - speed, err := strconv.ParseFloat(speedStr, 64) - if err != nil { - panic(err) - } - return []float64{speed} - } - - // default is 10, 5, 1 - startSpeed := 10.0 - if testStartSpeed != 0 { - startSpeed = testStartSpeed - } - speeds := []float64{startSpeed} - if startSpeed > 5 { - speeds = append(speeds, 5) - } - speeds = append(speeds, 1, 0.5, 0.5) - - return speeds -} - -func LoadTests(testDir string) ([]*IntegrationTest, error) { - paths, err := filepath.Glob(filepath.Join(testDir, "/*/test.json")) - if err != nil { - return nil, err - } - - tests := make([]*IntegrationTest, len(paths)) - - for i, path := range paths { - data, err := os.ReadFile(path) - if err != nil { - return nil, err - } - - test := &IntegrationTest{} - - err = json.Unmarshal(data, test) - if err != nil { - return nil, err - } - - test.Name = strings.TrimPrefix(filepath.Dir(path), testDir+"/") - - tests[i] = test - } - - return tests, nil -} - -func findOrCreateDir(path string) { - _, err := os.Stat(path) - if err != nil { - if os.IsNotExist(err) { - err = os.MkdirAll(path, 0o777) - if err != nil { - panic(err) - } - } else { - panic(err) - } - } -} - -// note that we don't actually store this snapshot in the lazygit repo. -// Instead we store the whole expected git repo of our test, so that -// we can easily change what we want to compare without needing to regenerate -// snapshots for each test. -func generateSnapshot(dir string) (string, error) { - osCommand := oscommands.NewDummyOSCommand() - - _, err := os.Stat(filepath.Join(dir, ".git")) - if err != nil { - return "git directory not found", nil - } - - snapshot := "" - - cmdStrs := []string{ - `remote show -n origin`, // remote branches - // TODO: find a way to bring this back without breaking tests - // `ls-remote origin`, - `status`, // file tree - `log --pretty=%B|%an|%ae -p -1`, // log - `tag -n`, // tags - `stash list`, // stash - `submodule foreach 'git status'`, // submodule status - `submodule foreach 'git log --pretty=%B -p -1'`, // submodule log - `submodule foreach 'git tag -n'`, // submodule tags - `submodule foreach 'git stash list'`, // submodule stash - } - - for _, cmdStr := range cmdStrs { - // ignoring error for now. If there's an error it could be that there are no results - output, _ := osCommand.Cmd.New(fmt.Sprintf("git -C %s %s", dir, cmdStr)).RunWithOutput() - - snapshot += fmt.Sprintf("git %s:\n%s\n", cmdStr, output) - } - - snapshot += "files in repo:\n" - err = filepath.Walk(dir, func(path string, f os.FileInfo, err error) error { - if err != nil { - return err - } - - if f.IsDir() { - if f.Name() == ".git" { - return filepath.SkipDir - } - return nil - } - - bytes, err := os.ReadFile(path) - if err != nil { - return err - } - - relativePath, err := filepath.Rel(dir, path) - if err != nil { - return err - } - snapshot += fmt.Sprintf("path: %s\ncontent:\n%s\n", relativePath, string(bytes)) - - return nil - }) - - if err != nil { - return "", err - } - - return snapshot, nil -} - -func generateSnapshots(actualDir string, expectedDir string) (string, string, error) { - actual, err := generateSnapshot(actualDir) - if err != nil { - return "", "", err - } - - // there are a couple of reasons we're not generating the snapshot in expectedDir directly: - // Firstly we don't want to have to revert our .git file back to .git_keep. - // Secondly, the act of calling git commands like 'git status' actually changes the index - // for some reason, and we don't want to leave your lazygit working tree dirty as a result. - expectedDirCopyDir := filepath.Join(filepath.Dir(expectedDir), "expected_dir_test") - err = oscommands.CopyDir(expectedDir, expectedDirCopyDir) - if err != nil { - return "", "", err - } - - defer func() { - err := os.RemoveAll(expectedDirCopyDir) - if err != nil { - panic(err) - } - }() - - if err := restoreSpecialPaths(expectedDirCopyDir); err != nil { - return "", "", err - } - - expected, err := generateSnapshot(expectedDirCopyDir) - if err != nil { - return "", "", err - } - - return actual, expected, nil -} - -func getPathsToRename(dir string, needle string, contains string) []string { - pathsToRename := []string{} - - err := filepath.Walk(dir, func(path string, f os.FileInfo, err error) error { - if err != nil { - return err - } - - if f.Name() == needle && (contains == "" || strings.Contains(path, contains)) { - pathsToRename = append(pathsToRename, path) - } - - return nil - }) - if err != nil { - panic(err) - } - - return pathsToRename -} - -var specialPathMappings = []struct{ original, new, contains string }{ - // git refuses to track .git or .gitmodules in subdirectories so we need to rename them - {".git", ".git_keep", ""}, - {".gitmodules", ".gitmodules_keep", ""}, - // we also need git to ignore the contents of our test gitignore files so that - // we actually commit files that are ignored within the test. - {".gitignore", "lg_ignore_file", ""}, - // this is the .git/info/exclude file. We're being a little more specific here - // so that we don't accidentally mess with some other file named 'exclude' in the test. - {"exclude", "lg_exclude_file", ".git/info/exclude"}, -} - -func renameSpecialPaths(dir string) error { - for _, specialPath := range specialPathMappings { - for _, path := range getPathsToRename(dir, specialPath.original, specialPath.contains) { - err := os.Rename(path, filepath.Join(filepath.Dir(path), specialPath.new)) - if err != nil { - return err - } - } - } - - return nil -} - -func restoreSpecialPaths(dir string) error { - for _, specialPath := range specialPathMappings { - for _, path := range getPathsToRename(dir, specialPath.new, specialPath.contains) { - err := os.Rename(path, filepath.Join(filepath.Dir(path), specialPath.original)) - if err != nil { - return err - } - } - } - - return nil -} - -func getLazygitCommand(testPath string, rootDir string, mode Mode, speed float64, extraCmdArgs string) (*exec.Cmd, error) { - osCommand := oscommands.NewDummyOSCommand() - - replayPath := filepath.Join(testPath, "recording.json") - templateConfigDir := filepath.Join(rootDir, "test", "default_test_config") - actualRepoDir := filepath.Join(testPath, "actual", "repo") - - exists, err := osCommand.FileExists(filepath.Join(testPath, "config")) - if err != nil { - return nil, err - } - - if exists { - templateConfigDir = filepath.Join(testPath, "config") - } - - configDir := filepath.Join(testPath, "used_config") - - err = os.RemoveAll(configDir) - if err != nil { - return nil, err - } - err = oscommands.CopyDir(templateConfigDir, configDir) - if err != nil { - return nil, err - } - - cmdStr := fmt.Sprintf("%s -debug --use-config-dir=%s --path=%s %s", tempLazygitPath(), configDir, actualRepoDir, extraCmdArgs) - - cmdObj := osCommand.Cmd.New(cmdStr) - cmdObj.AddEnvVars(fmt.Sprintf("SPEED=%f", speed)) - - switch mode { - case RECORD: - cmdObj.AddEnvVars(fmt.Sprintf("RECORD_EVENTS_TO=%s", replayPath)) - case TEST, UPDATE_SNAPSHOT: - cmdObj.AddEnvVars(fmt.Sprintf("REPLAY_EVENTS_FROM=%s", replayPath)) - } - - return cmdObj.GetCmd(), nil -} diff --git a/test/repos/bom.sh b/test/repos/bom.sh deleted file mode 100755 index 190f501a1..000000000 --- a/test/repos/bom.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -set -ex; rm -rf repo; mkdir repo; cd repo - -git init - -cat <> windowslf.txt -asdf -asdf -EOT - -cat <> linuxlf.txt -asdf -asdf -EOT - -cat <> bomtest.txt -A,B,C,D,E -F,G,H,I,J -K,L,M,N,O -P,Q,R,S,T -U,V,W,X,Y -Z,1,2,3,4 -EOT diff --git a/test/repos/case_insensitive_checkouts.sh b/test/repos/case_insensitive_checkouts.sh deleted file mode 100755 index 1a2b83403..000000000 --- a/test/repos/case_insensitive_checkouts.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -ex; rm -rf repo; mkdir repo; cd repo - -git init -git config user.email "test@example.com" -git config user.name "Lazygit Tester" - - -touch foo -git add foo -git commit -m "init" -git branch -a -git branch test -git branch TEST -git checkout TEST -git checkout TeST -git checkout TesT -git checkout TEsT -git branch -a \ No newline at end of file diff --git a/test/repos/extras/pre-commit b/test/repos/extras/pre-commit deleted file mode 100644 index 3f7e7a5bb..000000000 --- a/test/repos/extras/pre-commit +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -echo "test1" -sleep 1 -echo "test2" -sleep 1 -echo "test3" \ No newline at end of file diff --git a/test/repos/gpg.sh b/test/repos/gpg.sh deleted file mode 100755 index 646f785b1..000000000 --- a/test/repos/gpg.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -ex; rm -rf repo; mkdir repo; cd repo - -git init -git config user.email "test@example.com" -git config user.name "Lazygit Tester" - - -git config gpg.program $(which gpg) -git config user.signingkey E304229F # test key -git config commit.gpgsign true -git config credential.helper store -git config credential.helper cache 1 - -touch foo -git add foo - -touch bar -git add bar \ No newline at end of file diff --git a/test/repos/lots_of_commits.sh b/test/repos/lots_of_commits.sh deleted file mode 100755 index ad55864c3..000000000 --- a/test/repos/lots_of_commits.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -set -ex; rm -rf repo; mkdir repo; cd repo - -git init -git config user.email "test@example.com" -git config user.name "Lazygit Tester" - - -i=2 -end=100 -while [ $i -le $end ]; do - echo "file${i}" > file${i} - git add file${i} - git commit -m file${i} - - i=$(($i+1)) -done - -echo "unstaged change" > file100 diff --git a/test/repos/merge_conflict.sh b/test/repos/merge_conflict.sh deleted file mode 100755 index 7796cf38a..000000000 --- a/test/repos/merge_conflict.sh +++ /dev/null @@ -1,155 +0,0 @@ -#!/bin/sh -set -ex; rm -rf repo; mkdir repo; cd repo - -git init -git config user.email "test@example.com" -git config user.name "Lazygit Tester" - - -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 - -echo "new2\noriginal2\noriginal3" > file diff --git a/test/repos/pre_commit_hook.sh b/test/repos/pre_commit_hook.sh deleted file mode 100755 index f1b76b56a..000000000 --- a/test/repos/pre_commit_hook.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -ex; rm -rf repo; mkdir repo; cd repo - -git init -git config user.email "test@example.com" -git config user.name "Lazygit Tester" - -cp ../extras/pre-commit .git/hooks/pre-commit -chmod +x .git/hooks/pre-commit - -echo "file" > file -git add file diff --git a/test/repos/unicode_characters.sh b/test/repos/unicode_characters.sh deleted file mode 100755 index 3d1707d56..000000000 --- a/test/repos/unicode_characters.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -set -ex; rm -rf repo; mkdir repo; cd repo - -git init -git config user.email "test@example.com" -git config user.name "Lazygit Tester" - - -# Add some ansi, unicode, zero width joiner characters -cat <> charstest.txt -ANSI Œ (U+0152 Œ Latin capital ligature OE Latin Extended-A) - ¥ (0xA5 U+00A5 ¥ yes sign) - ƒ (0x83 U+0192 ƒ Latin small letter f with hook) -ZWJ https://en.wikipedia.org/wiki/Zero-width_joiner / https://unicode.org/Public/emoji/4.0/emoji-zwj-sequences.txt 👶(👨‍👦) -UNICODE ☆ 🤓 え 术 -EOT -git add charstest.txt -git commit -m "Test chars Œ¥ƒ👶👨‍👦☆ 🤓 え 术👩‍💻👩🏻‍💻👩🏽‍💻👩🏼‍💻👩🏾‍💻👩🏿‍💻👨‍💻👨🏻‍💻👨🏼‍💻👨🏽‍💻👨🏾‍💻👨🏿‍💻 commit" -echo "我喜歡編碼" >> charstest.txt -echo "நான் குறியீடு விரும்புகிறேன்" >> charstest.txt -git add charstest.txt -git commit -m "Test chars 我喜歡編碼 நான் குறியீடு விரும்புகிறேன் commit" diff --git a/test/shell_script_input_prompt.sh b/test/shell_script_input_prompt.sh deleted file mode 100755 index eb3a31374..000000000 --- a/test/shell_script_input_prompt.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# For testing subprocesses that require input -# Ask the user for login details -read -p 'Username: ' user -read -sp 'Password: ' pass -echo -echo Hello $user From f7e8b2dd7194ef32f6644481c974602bd8059c9c Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 26 Feb 2023 11:49:15 +1100 Subject: [PATCH 4/5] cleanup integration test code --- .gitignore | 2 +- .../hosting_service/hosting_service_test.go | 4 +- pkg/{test => fakes}/log.go | 2 +- pkg/integration/README.md | 32 +++++---- pkg/integration/clients/cli.go | 9 ++- pkg/integration/clients/tui.go | 2 +- .../components/assertion_helper.go | 2 +- .../components/{actions.go => common.go} | 16 ++--- pkg/integration/components/menu_driver.go | 2 +- pkg/integration/components/paths.go | 4 +- pkg/integration/components/prompt_driver.go | 2 +- pkg/integration/components/runner.go | 8 ++- pkg/integration/components/shell.go | 25 ++++++- pkg/integration/components/test.go | 2 +- pkg/integration/components/test_driver.go | 4 +- pkg/integration/components/test_test.go | 2 + pkg/integration/components/viewDriver.go | 6 +- pkg/integration/components/views.go | 10 --- pkg/integration/tests/bisect/basic.go | 4 +- pkg/integration/tests/branch/rebase.go | 4 +- .../tests/branch/rebase_and_drop.go | 4 +- .../cherry_pick/cherry_pick_conflicts.go | 4 +- .../tests/conflicts/resolve_externally.go | 2 +- .../tests/conflicts/resolve_multiple_files.go | 2 +- pkg/integration/tests/file/discard_changes.go | 2 +- .../tests/filter_by_path/select_file.go | 37 ---------- .../tests/filter_by_path/shared.go | 42 ++++++++++++ .../interactive_rebase/amend_first_commit.go | 2 +- .../interactive_rebase/edit_first_commit.go | 4 +- .../interactive_rebase/fixup_first_commit.go | 2 +- .../interactive_rebase/fixup_second_commit.go | 2 +- .../interactive_rebase/move_in_rebase.go | 4 +- .../tests/interactive_rebase/rebase.go | 6 +- .../interactive_rebase/reword_first_commit.go | 2 +- .../tests/interactive_rebase/shared.go | 68 +++++++++++++++++++ .../squash_down_first_commit.go | 2 +- .../squash_down_second_commit.go | 2 +- .../squash_fixups_above_first_commit.go | 4 +- .../swap_in_rebase_with_conflict.go | 67 +----------------- pkg/integration/tests/patch_building/apply.go | 2 +- .../tests/patch_building/apply_in_reverse.go | 2 +- .../patch_building/copy_patch_to_clipboard.go | 2 +- .../tests/patch_building/move_to_index.go | 2 +- .../patch_building/move_to_index_partial.go | 4 +- .../move_to_index_with_conflict.go | 6 +- .../patch_building/move_to_new_commit.go | 2 +- .../patch_building/remove_from_commit.go | 2 +- .../patch_building/specific_selection.go | 10 +-- .../tests/patch_building/start_new_patch.go | 2 +- .../tests/staging/discard_all_changes.go | 4 +- pkg/integration/tests/staging/stage_hunks.go | 2 +- pkg/integration/tests/staging/stage_ranges.go | 6 +- pkg/integration/tests/submodule/add.go | 2 +- pkg/integration/tests/submodule/enter.go | 3 +- pkg/integration/tests/submodule/remove.go | 3 +- pkg/integration/tests/submodule/reset.go | 3 +- .../sync/force_push_multiple_upstream.go | 19 ------ .../tests/sync/pull_merge_conflict.go | 4 +- .../tests/sync/pull_rebase_conflict.go | 4 +- .../sync/pull_rebase_interactive_conflict.go | 4 +- .../pull_rebase_interactive_conflict_drop.go | 4 +- pkg/integration/tests/sync/push.go | 25 ------- .../tests/sync/push_with_credential_prompt.go | 3 +- pkg/integration/tests/sync/shared.go | 49 +++++++++++++ .../tests/{tests_gen.go => test_list.go} | 0 ...ts_generator.go => test_list_generator.go} | 6 +- pkg/integration/tests/tests.go | 15 ++-- test/README.md | 2 + test/{hooks => files}/pre-push | 0 test/global_git_config | 2 + 70 files changed, 322 insertions(+), 272 deletions(-) rename pkg/{test => fakes}/log.go (98%) rename pkg/integration/components/{actions.go => common.go} (67%) create mode 100644 pkg/integration/tests/filter_by_path/shared.go create mode 100644 pkg/integration/tests/interactive_rebase/shared.go create mode 100644 pkg/integration/tests/sync/shared.go rename pkg/integration/tests/{tests_gen.go => test_list.go} (100%) rename pkg/integration/tests/{tests_generator.go => test_list_generator.go} (95%) create mode 100644 test/README.md rename test/{hooks => files}/pre-push (100%) mode change 100644 => 100755 diff --git a/.gitignore b/.gitignore index 57f63c955..09b2235f1 100644 --- a/.gitignore +++ b/.gitignore @@ -35,7 +35,7 @@ lazygit.exe test/git_server/data -test/integration/** +test/results/** oryxBuildBinary __debug_bin diff --git a/pkg/commands/hosting_service/hosting_service_test.go b/pkg/commands/hosting_service/hosting_service_test.go index ded310c85..d67d94ed8 100644 --- a/pkg/commands/hosting_service/hosting_service_test.go +++ b/pkg/commands/hosting_service/hosting_service_test.go @@ -3,8 +3,8 @@ package hosting_service import ( "testing" + "github.com/jesseduffield/lazygit/pkg/fakes" "github.com/jesseduffield/lazygit/pkg/i18n" - "github.com/jesseduffield/lazygit/pkg/test" "github.com/stretchr/testify/assert" ) @@ -328,7 +328,7 @@ func TestGetPullRequestURL(t *testing.T) { s := s t.Run(s.testName, func(t *testing.T) { tr := i18n.EnglishTranslationSet() - log := &test.FakeFieldLogger{} + log := &fakes.FakeFieldLogger{} hostingServiceMgr := NewHostingServiceMgr(log, &tr, s.remoteUrl, s.configServiceDomains) s.test(hostingServiceMgr.GetPullRequestURL(s.from, s.to)) log.AssertErrors(t, s.expectedLoggedErrors) diff --git a/pkg/test/log.go b/pkg/fakes/log.go similarity index 98% rename from pkg/test/log.go rename to pkg/fakes/log.go index 32d79b987..fc68f23c1 100644 --- a/pkg/test/log.go +++ b/pkg/fakes/log.go @@ -1,4 +1,4 @@ -package test +package fakes import ( "fmt" diff --git a/pkg/integration/README.md b/pkg/integration/README.md index 598810a82..6dfadd8f8 100644 --- a/pkg/integration/README.md +++ b/pkg/integration/README.md @@ -16,7 +16,7 @@ go run cmd/integration_test/main.go cli [--slow or --sandbox] [testname or testp ## Writing tests -The tests live in pkg/integration/tests. Each test is listed in `pkg/integration/tests/tests_gen.go` which is an auto-generated file. You can re-generate that file by running `go generate ./...` at the root of the Lazygit repo. +The tests live in pkg/integration/tests. Each test is registered in `pkg/integration/tests/test_list.go` which is an auto-generated file. You can re-generate that file by running `go generate ./...` at the root of the Lazygit repo. Each test has two important steps: the setup step and the run step. @@ -34,18 +34,6 @@ The run step has two arguments passed in: `t` is for driving the gui by pressing certain keys, selecting list items, etc. `keys` is for use when getting the test to press a particular key e.g. `t.Views().Commits().Focus().PressKey(keys.Universal.Confirm)` -### Tips - -#### Handle most setup in the `shell` part of the test - -Try to do as much setup work as possible in your setup step. For example, if all you're testing is that the user is able to resolve merge conflicts, create the merge conflicts in the setup step. On the other hand, if you're testing to see that lazygit can warn the user about merge conflicts after an attempted merge, it's fine to wait until the run step to actually create the conflicts. If the run step is focused on the thing you're trying to test, the test will run faster and its intent will be clearer. - -#### Create helper functions for (very) frequently used test logic - -If you find yourself doing something frequently in a test, consider making it a method in one of the helper arguments. For example, instead of calling `t.PressKey(keys.Universal.Confirm)` in 100 places, it's better to have a method `t.Confirm()`. This is not to say that everything should be made into a helper method: just things that are particularly common in tests. - -Also, given how often we need to select a menu item or type into a prompt panel, there are some helper functions for that. See `ExpectConfirmation` for an example. - ## Running tests There are three ways to invoke a test: @@ -62,7 +50,7 @@ The name of a test is based on its path, so the name of the test at `pkg/integra You can pass the KEY_PRESS_DELAY env var to the test runner in order to set a delay in milliseconds between keypresses, which helps for watching a test at a realistic speed to understand what it's doing. Or you can pass the '--slow' flag which sets a pre-set 'slow' key delay. In the tui you can press 't' to run the test in slow mode. -The resultant repo will be stored in `test/integration`, so if you're not sure what went wrong you can go there and inspect the repo. +The resultant repo will be stored in `test/results`, so if you're not sure what went wrong you can go there and inspect the repo. ### Running tests in VSCode @@ -78,3 +66,19 @@ The test will run in a VSCode terminal: 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 in the test runner pass the --sandbox argument. + +## Tips for writing tests + +### Handle most setup in the `shell` part of the test + +Try to do as much setup work as possible in your setup step. For example, if all you're testing is that the user is able to resolve merge conflicts, create the merge conflicts in the setup step. On the other hand, if you're testing to see that lazygit can warn the user about merge conflicts after an attempted merge, it's fine to wait until the run step to actually create the conflicts. If the run step is focused on the thing you're trying to test, the test will run faster and its intent will be clearer. + +### Create helper functions for (very) frequently used test logic + +If within a test directory you find several tests need to share some logic, you can create a file called `shared.go` in that directory to hold shared helper functions (see `pkg/integration/tests/filter_by_path/shared.go` for an example). + +If you need to share test logic across test directories you can put helper functions in the `tests/shared` package. If you find yourself frequently doing the same thing from within a test across test directories, for example, responding a particular popup, consider adding a helper method to `pkg/integration/components/common.go`. If you look around the code in the `components` directory you may find another place that's sensible to put your helper function. + +### Don't do too much in one test + +If you're testing different pieces of functionality, it's better to test them in isolation using multiple short tests, compared to one larger longer test. Sometimes it's appropriate to have a longer test which tests how various different pieces interact, but err on the side of keeping things short. diff --git a/pkg/integration/clients/cli.go b/pkg/integration/clients/cli.go index 1030d7690..8ac9947e9 100644 --- a/pkg/integration/clients/cli.go +++ b/pkg/integration/clients/cli.go @@ -11,6 +11,7 @@ import ( "github.com/jesseduffield/generics/slices" "github.com/jesseduffield/lazygit/pkg/integration/components" "github.com/jesseduffield/lazygit/pkg/integration/tests" + "github.com/samber/lo" ) // see pkg/integration/README.md @@ -65,6 +66,12 @@ func getTestsToRun(testNames []string) []*components.IntegrationTest { ) }) + if lo.SomeBy(testNames, func(name string) bool { + return strings.HasSuffix(name, "/shared") + }) { + log.Fatalf("'shared' is a reserved name for tests that are shared between multiple test files. Please rename your test.") + } + outer: for _, testName := range testNames { // check if our given test name actually exists @@ -74,7 +81,7 @@ outer: continue outer } } - log.Fatalf("test %s not found. Perhaps you forgot to add it to `pkg/integration/integration_tests/tests_gen.go`? This can be done by running `go generate ./...` from the Lazygit root. You'll need to ensure that your test name and the file name match (where the test name is in PascalCase and the file name is in snake_case).", testName) + log.Fatalf("test %s not found. Perhaps you forgot to add it to `pkg/integration/integration_tests/test_list.go`? This can be done by running `go generate ./...` from the Lazygit root. You'll need to ensure that your test name and the file name match (where the test name is in PascalCase and the file name is in snake_case).", testName) } return testsToRun diff --git a/pkg/integration/clients/tui.go b/pkg/integration/clients/tui.go index 10bfcf748..f93f4589a 100644 --- a/pkg/integration/clients/tui.go +++ b/pkg/integration/clients/tui.go @@ -137,7 +137,7 @@ func RunTUI() { return nil } - cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code test/integration/%s", currentTest.Name())) + cmd := secureexec.Command("sh", "-c", fmt.Sprintf("code test/results/%s", currentTest.Name())) if err := cmd.Run(); err != nil { return err } diff --git a/pkg/integration/components/assertion_helper.go b/pkg/integration/components/assertion_helper.go index b60bda17b..4ae785db2 100644 --- a/pkg/integration/components/assertion_helper.go +++ b/pkg/integration/components/assertion_helper.go @@ -18,7 +18,7 @@ func retryWaitTimes() []int { // give it more leeway compared to when we're running things locally. return []int{0, 1, 1, 1, 1, 1, 5, 10, 20, 40, 100, 200, 500, 1000, 2000, 4000} } else { - return []int{0, 1, 1, 1, 1, 1, 5, 10, 20, 40, 100} + return []int{0, 1, 1, 1, 1, 1, 5, 10, 20, 40, 100, 200} } } diff --git a/pkg/integration/components/actions.go b/pkg/integration/components/common.go similarity index 67% rename from pkg/integration/components/actions.go rename to pkg/integration/components/common.go index 5e37fc966..7be48e4bd 100644 --- a/pkg/integration/components/actions.go +++ b/pkg/integration/components/common.go @@ -1,12 +1,12 @@ package components // for running common actions -type Actions struct { +type Common struct { t *TestDriver } -func (self *Actions) ContinueMerge() { - self.t.Views().current().Press(self.t.keys.Universal.CreateRebaseOptionsMenu) +func (self *Common) ContinueMerge() { + self.t.GlobalPress(self.t.keys.Universal.CreateRebaseOptionsMenu) self.t.ExpectPopup().Menu(). Title(Equals("Rebase Options")). @@ -14,32 +14,32 @@ func (self *Actions) ContinueMerge() { Confirm() } -func (self *Actions) ContinueRebase() { +func (self *Common) ContinueRebase() { self.ContinueMerge() } -func (self *Actions) AcknowledgeConflicts() { +func (self *Common) AcknowledgeConflicts() { self.t.ExpectPopup().Confirmation(). Title(Equals("Auto-merge failed")). Content(Contains("Conflicts!")). Confirm() } -func (self *Actions) ContinueOnConflictsResolved() { +func (self *Common) ContinueOnConflictsResolved() { self.t.ExpectPopup().Confirmation(). Title(Equals("continue")). Content(Contains("all merge conflicts resolved. Continue?")). Confirm() } -func (self *Actions) ConfirmDiscardLines() { +func (self *Common) ConfirmDiscardLines() { self.t.ExpectPopup().Confirmation(). Title(Equals("Unstage lines")). Content(Contains("Are you sure you want to delete the selected lines")). Confirm() } -func (self *Actions) SelectPatchOption(matcher *Matcher) { +func (self *Common) SelectPatchOption(matcher *Matcher) { self.t.GlobalPress(self.t.keys.Universal.CreatePatchOptionsMenu) self.t.ExpectPopup().Menu().Title(Equals("Patch Options")).Select(matcher).Confirm() diff --git a/pkg/integration/components/menu_driver.go b/pkg/integration/components/menu_driver.go index 326435f52..4092879da 100644 --- a/pkg/integration/components/menu_driver.go +++ b/pkg/integration/components/menu_driver.go @@ -31,7 +31,7 @@ func (self *MenuDriver) Cancel() { } func (self *MenuDriver) Select(option *Matcher) *MenuDriver { - self.getViewDriver().NavigateToListItem(option) + self.getViewDriver().NavigateToLine(option) return self } diff --git a/pkg/integration/components/paths.go b/pkg/integration/components/paths.go index 43468f509..bacc96f81 100644 --- a/pkg/integration/components/paths.go +++ b/pkg/integration/components/paths.go @@ -3,9 +3,9 @@ package components import "path/filepath" // convenience struct for easily getting directories within our test directory. -// We have one test directory for each test, found in test/integration. +// We have one test directory for each test, found in test/results. type Paths struct { - // e.g. test/integration/test_name + // e.g. test/results/test_name root string } diff --git a/pkg/integration/components/prompt_driver.go b/pkg/integration/components/prompt_driver.go index 58051bc70..d21d6f95e 100644 --- a/pkg/integration/components/prompt_driver.go +++ b/pkg/integration/components/prompt_driver.go @@ -79,6 +79,6 @@ func (self *PromptDriver) ConfirmSuggestion(matcher *Matcher) { self.t.press(self.t.keys.Universal.TogglePanel) self.t.Views().Suggestions(). IsFocused(). - NavigateToListItem(matcher). + NavigateToLine(matcher). PressEnter() } diff --git a/pkg/integration/components/runner.go b/pkg/integration/components/runner.go index 394ac00df..43e4f9304 100644 --- a/pkg/integration/components/runner.go +++ b/pkg/integration/components/runner.go @@ -11,14 +11,16 @@ import ( "github.com/jesseduffield/lazygit/pkg/commands/oscommands" ) -// this is the integration runner for the new and improved integration interface - const ( TEST_NAME_ENV_VAR = "TEST_NAME" SANDBOX_ENV_VAR = "SANDBOX" GIT_CONFIG_GLOBAL_ENV_VAR = "GIT_CONFIG_GLOBAL" ) +// This function lets you run tests either from within `go test` or from a regular binary. +// The reason for having two separate ways of testing is that `go test` isn't great at +// showing what's actually happening during the test, but it's still good at running +// tests in telling you about their results. func RunTests( tests []*IntegrationTest, logf func(format string, formatArgs ...interface{}), @@ -34,7 +36,7 @@ func RunTests( return err } - testDir := filepath.Join(projectRootDir, "test", "integration_new") + testDir := filepath.Join(projectRootDir, "test", "results") if err := buildLazygit(); err != nil { return err diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go index 2f2d4b719..3c5177949 100644 --- a/pkg/integration/components/shell.go +++ b/pkg/integration/components/shell.go @@ -38,6 +38,15 @@ func (self *Shell) RunCommand(cmdStr string) *Shell { return self } +// Help files are located at test/files from the root the lazygit repo. +// E.g. You may want to create a pre-commit hook file there, then call this +// function to copy it into your test repo. +func (self *Shell) CopyHelpFile(source string, destination string) *Shell { + self.RunCommand(fmt.Sprintf("cp ../../../../../files/%s %s", source, destination)) + + return self +} + func (self *Shell) runCommandWithOutput(cmdStr string) (string, error) { args := str.ToArgv(cmdStr) cmd := secureexec.Command(args[0], args[1:]...) @@ -190,13 +199,27 @@ func (self *Shell) SetConfig(key string, value string) *Shell { // creates a clone of the repo in a sibling directory and adds the clone // as a remote, then fetches it. func (self *Shell) CloneIntoRemote(name string) *Shell { - self.RunCommand(fmt.Sprintf("git clone --bare . ../%s", name)) + self.Clone(name) self.RunCommand(fmt.Sprintf("git remote add %s ../%s", name, name)) self.RunCommand(fmt.Sprintf("git fetch %s", name)) return self } +func (self *Shell) CloneIntoSubmodule(submoduleName string) *Shell { + self.Clone("other_repo") + self.RunCommand(fmt.Sprintf("git submodule add ../other_repo %s", submoduleName)) + + return self +} + +// clones repo into a sibling directory +func (self *Shell) Clone(repoName string) *Shell { + self.RunCommand(fmt.Sprintf("git clone --bare . ../%s", repoName)) + + return self +} + // e.g. branch: 'master', upstream: 'origin/master' func (self *Shell) SetBranchUpstream(branch string, upstream string) *Shell { self.RunCommand(fmt.Sprintf("git branch --set-upstream-to=%s %s", upstream, branch)) diff --git a/pkg/integration/components/test.go b/pkg/integration/components/test.go index 9291cf329..e1767f475 100644 --- a/pkg/integration/components/test.go +++ b/pkg/integration/components/test.go @@ -11,7 +11,7 @@ import ( "github.com/jesseduffield/lazygit/pkg/utils" ) -// Test describes an integration tests that will be run against the lazygit gui. +// IntegrationTest describes an integration test that will be run against the lazygit gui. // our unit tests will use this description to avoid a panic caused by attempting // to get the test's name via it's file's path. diff --git a/pkg/integration/components/test_driver.go b/pkg/integration/components/test_driver.go index d645b7f0a..c67439b54 100644 --- a/pkg/integration/components/test_driver.go +++ b/pkg/integration/components/test_driver.go @@ -48,8 +48,8 @@ func (self *TestDriver) typeContent(content string) { } } -func (self *TestDriver) Actions() *Actions { - return &Actions{t: self} +func (self *TestDriver) Common() *Common { + return &Common{t: self} } // for when you want to allow lazygit to process something before continuing diff --git a/pkg/integration/components/test_test.go b/pkg/integration/components/test_test.go index c40fc3368..4216b8130 100644 --- a/pkg/integration/components/test_test.go +++ b/pkg/integration/components/test_test.go @@ -11,6 +11,8 @@ import ( "github.com/stretchr/testify/assert" ) +// this file is for testing our test code (meta, I know) + type fakeGuiDriver struct { failureMessage string pressedKeys []string diff --git a/pkg/integration/components/viewDriver.go b/pkg/integration/components/viewDriver.go index 5060a4d1d..647a03851 100644 --- a/pkg/integration/components/viewDriver.go +++ b/pkg/integration/components/viewDriver.go @@ -63,6 +63,7 @@ func (self *ViewDriver) Title(expected *Matcher) *ViewDriver { // asserts that the view has lines matching the given matchers. One matcher must be passed for each line. // If you only care about the top n lines, use the TopLines method instead. +// If you only care about a subset of lines, use the ContainsLines method instead. func (self *ViewDriver) Lines(matchers ...*Matcher) *ViewDriver { self.validateMatchersPassed(matchers) self.LineCount(len(matchers)) @@ -81,6 +82,7 @@ func (self *ViewDriver) TopLines(matchers ...*Matcher) *ViewDriver { return self.assertLines(0, matchers...) } +// asserts that somewhere in the view there are consequetive lines matching the given matchers. func (self *ViewDriver) ContainsLines(matchers ...*Matcher) *ViewDriver { self.validateMatchersPassed(matchers) self.validateEnoughLines(matchers) @@ -131,7 +133,7 @@ func (self *ViewDriver) ContainsLines(matchers ...*Matcher) *ViewDriver { return self } -// asserts on the lines that are selected in the view. +// asserts on the lines that are selected in the view. Don't use the `IsSelected` matcher with this because it's redundant. func (self *ViewDriver) SelectedLines(matchers ...*Matcher) *ViewDriver { self.validateMatchersPassed(matchers) self.validateEnoughLines(matchers) @@ -373,7 +375,7 @@ func (self *ViewDriver) PressEscape() *ViewDriver { // If this changes in future, we'll need to update this code to first attempt to find the item // in the current page and failing that, jump to the top of the view and iterate through all of it, // looking for the item. -func (self *ViewDriver) NavigateToListItem(matcher *Matcher) *ViewDriver { +func (self *ViewDriver) NavigateToLine(matcher *Matcher) *ViewDriver { self.IsFocused() view := self.getView() diff --git a/pkg/integration/components/views.go b/pkg/integration/components/views.go index ceac6e8fc..667fe9471 100644 --- a/pkg/integration/components/views.go +++ b/pkg/integration/components/views.go @@ -13,16 +13,6 @@ type Views struct { t *TestDriver } -// not exporting this because I want the test to always be explicit about what -// view it's dealing with. -func (self *Views) current() *ViewDriver { - return &ViewDriver{ - context: "current view", - getView: func() *gocui.View { return self.t.gui.CurrentContext().GetView() }, - t: self.t, - } -} - func (self *Views) Main() *ViewDriver { return &ViewDriver{ context: "main view", diff --git a/pkg/integration/tests/bisect/basic.go b/pkg/integration/tests/bisect/basic.go index ca06d5fa5..68009ca98 100644 --- a/pkg/integration/tests/bisect/basic.go +++ b/pkg/integration/tests/bisect/basic.go @@ -32,14 +32,14 @@ var Basic = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Commits(). Focus(). SelectedLine(Contains("commit 10")). - NavigateToListItem(Contains("commit 09")). + NavigateToLine(Contains("commit 09")). Tap(func() { markCommitAsBad() t.Views().Information().Content(Contains("bisecting")) }). SelectedLine(Contains("<-- bad")). - NavigateToListItem(Contains("commit 02")). + NavigateToLine(Contains("commit 02")). Tap(markCommitAsGood). // lazygit will land us in the commit between our good and bad commits. SelectedLine(Contains("commit 05").Contains("<-- current")). diff --git a/pkg/integration/tests/branch/rebase.go b/pkg/integration/tests/branch/rebase.go index 211dca839..07b9037a3 100644 --- a/pkg/integration/tests/branch/rebase.go +++ b/pkg/integration/tests/branch/rebase.go @@ -35,7 +35,7 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ Content(Contains("Are you sure you want to rebase 'first-change-branch' on top of 'second-change-branch'?")). Confirm() - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -48,7 +48,7 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Information().Content(Contains("rebasing")) - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Information().Content(DoesNotContain("rebasing")) diff --git a/pkg/integration/tests/branch/rebase_and_drop.go b/pkg/integration/tests/branch/rebase_and_drop.go index 04c2246ab..298636c59 100644 --- a/pkg/integration/tests/branch/rebase_and_drop.go +++ b/pkg/integration/tests/branch/rebase_and_drop.go @@ -43,7 +43,7 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Information().Content(Contains("rebasing")) - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Files().IsFocused(). SelectedLine(MatchesRegexp("UU.*file")) @@ -75,7 +75,7 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ IsFocused(). PressPrimaryAction() - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Information().Content(DoesNotContain("rebasing")) diff --git a/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go b/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go index 3e82de065..a0030c2f9 100644 --- a/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go +++ b/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go @@ -52,7 +52,7 @@ var CherryPickConflicts = NewIntegrationTest(NewIntegrationTestArgs{ Content(Contains("Are you sure you want to cherry-pick the copied commits onto this branch?")). Confirm() - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -65,7 +65,7 @@ var CherryPickConflicts = NewIntegrationTest(NewIntegrationTestArgs{ SelectNextItem(). PressPrimaryAction() - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Files().IsEmpty() diff --git a/pkg/integration/tests/conflicts/resolve_externally.go b/pkg/integration/tests/conflicts/resolve_externally.go index 385e9ce4a..dec4ab7e2 100644 --- a/pkg/integration/tests/conflicts/resolve_externally.go +++ b/pkg/integration/tests/conflicts/resolve_externally.go @@ -25,7 +25,7 @@ var ResolveExternally = NewIntegrationTest(NewIntegrationTestArgs{ }). Press(keys.Universal.Refresh) - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Files(). IsEmpty() diff --git a/pkg/integration/tests/conflicts/resolve_multiple_files.go b/pkg/integration/tests/conflicts/resolve_multiple_files.go index 2be35148e..f32743bef 100644 --- a/pkg/integration/tests/conflicts/resolve_multiple_files.go +++ b/pkg/integration/tests/conflicts/resolve_multiple_files.go @@ -49,6 +49,6 @@ var ResolveMultipleFiles = NewIntegrationTest(NewIntegrationTestArgs{ ). PressPrimaryAction() - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() }, }) diff --git a/pkg/integration/tests/file/discard_changes.go b/pkg/integration/tests/file/discard_changes.go index 7a05f4466..2c5d2b2ea 100644 --- a/pkg/integration/tests/file/discard_changes.go +++ b/pkg/integration/tests/file/discard_changes.go @@ -99,7 +99,7 @@ var DiscardChanges = NewIntegrationTest(NewIntegrationTestArgs{ {status: "DU", label: "deleted-us.txt", menuTitle: "deleted-us.txt"}, }) - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() discardOneByOne([]statusFile{ {status: "MD", label: "change-delete.txt", menuTitle: "change-delete.txt"}, diff --git a/pkg/integration/tests/filter_by_path/select_file.go b/pkg/integration/tests/filter_by_path/select_file.go index 6722958dd..6c1243dc8 100644 --- a/pkg/integration/tests/filter_by_path/select_file.go +++ b/pkg/integration/tests/filter_by_path/select_file.go @@ -37,40 +37,3 @@ var SelectFile = NewIntegrationTest(NewIntegrationTestArgs{ postFilterTest(t) }, }) - -func commonSetup(shell *Shell) { - shell.CreateFileAndAdd("filterFile", "original filterFile content") - shell.CreateFileAndAdd("otherFile", "original otherFile content") - shell.Commit("both files") - - shell.UpdateFileAndAdd("otherFile", "new otherFile content") - shell.Commit("only otherFile") - - shell.UpdateFileAndAdd("filterFile", "new filterFile content") - shell.Commit("only filterFile") -} - -func postFilterTest(t *TestDriver) { - t.Views().Information().Content(Contains("filtering by 'filterFile'")) - - t.Views().Commits(). - IsFocused(). - Lines( - Contains(`only filterFile`).IsSelected(), - Contains(`both files`), - ). - SelectNextItem(). - PressEnter() - - // we only show the filtered file's changes in the main view - t.Views().Main(). - Content(Contains("filterFile").DoesNotContain("otherFile")) - - // when you click into the commit itself, you see all files from that commit - t.Views().CommitFiles(). - IsFocused(). - Lines( - Contains(`filterFile`), - Contains(`otherFile`), - ) -} diff --git a/pkg/integration/tests/filter_by_path/shared.go b/pkg/integration/tests/filter_by_path/shared.go new file mode 100644 index 000000000..93e5e0a3d --- /dev/null +++ b/pkg/integration/tests/filter_by_path/shared.go @@ -0,0 +1,42 @@ +package filter_by_path + +import ( + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +func commonSetup(shell *Shell) { + shell.CreateFileAndAdd("filterFile", "original filterFile content") + shell.CreateFileAndAdd("otherFile", "original otherFile content") + shell.Commit("both files") + + shell.UpdateFileAndAdd("otherFile", "new otherFile content") + shell.Commit("only otherFile") + + shell.UpdateFileAndAdd("filterFile", "new filterFile content") + shell.Commit("only filterFile") +} + +func postFilterTest(t *TestDriver) { + t.Views().Information().Content(Contains("filtering by 'filterFile'")) + + t.Views().Commits(). + IsFocused(). + Lines( + Contains(`only filterFile`).IsSelected(), + Contains(`both files`), + ). + SelectNextItem(). + PressEnter() + + // we only show the filtered file's changes in the main view + t.Views().Main(). + Content(Contains("filterFile").DoesNotContain("otherFile")) + + // when you click into the commit itself, you see all files from that commit + t.Views().CommitFiles(). + IsFocused(). + Lines( + Contains(`filterFile`), + Contains(`otherFile`), + ) +} diff --git a/pkg/integration/tests/interactive_rebase/amend_first_commit.go b/pkg/integration/tests/interactive_rebase/amend_first_commit.go index d03a880b9..483153e15 100644 --- a/pkg/integration/tests/interactive_rebase/amend_first_commit.go +++ b/pkg/integration/tests/interactive_rebase/amend_first_commit.go @@ -22,7 +22,7 @@ var AmendFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Commits.AmendToCommit). Tap(func() { t.ExpectPopup().Confirmation(). diff --git a/pkg/integration/tests/interactive_rebase/edit_first_commit.go b/pkg/integration/tests/interactive_rebase/edit_first_commit.go index def3b7fca..abf3f2be0 100644 --- a/pkg/integration/tests/interactive_rebase/edit_first_commit.go +++ b/pkg/integration/tests/interactive_rebase/edit_first_commit.go @@ -21,14 +21,14 @@ var EditFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Universal.Edit). Lines( Contains("commit 02"), MatchesRegexp("YOU ARE HERE.*commit 01").IsSelected(), ). Tap(func() { - t.Actions().ContinueRebase() + t.Common().ContinueRebase() }). Lines( Contains("commit 02"), diff --git a/pkg/integration/tests/interactive_rebase/fixup_first_commit.go b/pkg/integration/tests/interactive_rebase/fixup_first_commit.go index fe339f3e2..7f66c24de 100644 --- a/pkg/integration/tests/interactive_rebase/fixup_first_commit.go +++ b/pkg/integration/tests/interactive_rebase/fixup_first_commit.go @@ -21,7 +21,7 @@ var FixupFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Commits.MarkCommitAsFixup). Tap(func() { t.ExpectPopup().Alert(). diff --git a/pkg/integration/tests/interactive_rebase/fixup_second_commit.go b/pkg/integration/tests/interactive_rebase/fixup_second_commit.go index 007eba84f..8dc97b096 100644 --- a/pkg/integration/tests/interactive_rebase/fixup_second_commit.go +++ b/pkg/integration/tests/interactive_rebase/fixup_second_commit.go @@ -22,7 +22,7 @@ var FixupSecondCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 02")). + NavigateToLine(Contains("commit 02")). Press(keys.Commits.MarkCommitAsFixup). Tap(func() { t.ExpectPopup().Confirmation(). diff --git a/pkg/integration/tests/interactive_rebase/move_in_rebase.go b/pkg/integration/tests/interactive_rebase/move_in_rebase.go index daeedbf87..160a2c823 100644 --- a/pkg/integration/tests/interactive_rebase/move_in_rebase.go +++ b/pkg/integration/tests/interactive_rebase/move_in_rebase.go @@ -22,7 +22,7 @@ var MoveInRebase = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Universal.Edit). Lines( Contains("commit 04"), @@ -84,7 +84,7 @@ var MoveInRebase = NewIntegrationTest(NewIntegrationTestArgs{ Contains("YOU ARE HERE").Contains("commit 01"), ). Tap(func() { - t.Actions().ContinueRebase() + t.Common().ContinueRebase() }). Lines( Contains("commit 04"), diff --git a/pkg/integration/tests/interactive_rebase/rebase.go b/pkg/integration/tests/interactive_rebase/rebase.go index 3951d7826..95fd185cb 100644 --- a/pkg/integration/tests/interactive_rebase/rebase.go +++ b/pkg/integration/tests/interactive_rebase/rebase.go @@ -31,7 +31,7 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ Contains("first commit to edit"), Contains("initial commit"), ). - NavigateToListItem(Contains("first commit to edit")). + NavigateToLine(Contains("first commit to edit")). Press(keys.Universal.Edit). Lines( MatchesRegexp("pick.*commit to fixup"), @@ -82,7 +82,7 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ Contains("initial commit"), ). Tap(func() { - t.Actions().ContinueRebase() + t.Common().ContinueRebase() }). Lines( MatchesRegexp("fixup.*commit to fixup").IsSelected(), @@ -92,7 +92,7 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ Contains("initial commit"), ). Tap(func() { - t.Actions().ContinueRebase() + t.Common().ContinueRebase() }). Lines( Contains("second commit to edit").IsSelected(), diff --git a/pkg/integration/tests/interactive_rebase/reword_first_commit.go b/pkg/integration/tests/interactive_rebase/reword_first_commit.go index d4835fcd8..c85293cec 100644 --- a/pkg/integration/tests/interactive_rebase/reword_first_commit.go +++ b/pkg/integration/tests/interactive_rebase/reword_first_commit.go @@ -24,7 +24,7 @@ var RewordFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Commits.RenameCommit). Tap(func() { t.ExpectPopup().Prompt(). diff --git a/pkg/integration/tests/interactive_rebase/shared.go b/pkg/integration/tests/interactive_rebase/shared.go new file mode 100644 index 000000000..db45f42e3 --- /dev/null +++ b/pkg/integration/tests/interactive_rebase/shared.go @@ -0,0 +1,68 @@ +package interactive_rebase + +import ( + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +func handleConflictsFromSwap(t *TestDriver) { + t.Common().AcknowledgeConflicts() + + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU myfile"), + ). + PressEnter() + + t.Views().MergeConflicts(). + IsFocused(). + TopLines( + Contains("<<<<<<< HEAD"), + Contains("one"), + Contains("======="), + Contains("three"), + Contains(">>>>>>>"), + ). + SelectNextItem(). + PressPrimaryAction() // pick "three" + + t.Common().ContinueOnConflictsResolved() + + t.Common().AcknowledgeConflicts() + + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU myfile"), + ). + PressEnter() + + t.Views().MergeConflicts(). + IsFocused(). + TopLines( + Contains("<<<<<<< HEAD"), + Contains("three"), + Contains("======="), + Contains("two"), + Contains(">>>>>>>"), + ). + SelectNextItem(). + PressPrimaryAction() // pick "two" + + t.Common().ContinueOnConflictsResolved() + + t.Views().Commits(). + Focus(). + Lines( + Contains("commit two").IsSelected(), + Contains("commit three"), + Contains("commit one"), + ). + Tap(func() { + t.Views().Main().Content(Contains("-three").Contains("+two")) + }). + SelectNextItem(). + Tap(func() { + t.Views().Main().Content(Contains("-one").Contains("+three")) + }) +} diff --git a/pkg/integration/tests/interactive_rebase/squash_down_first_commit.go b/pkg/integration/tests/interactive_rebase/squash_down_first_commit.go index 0ec334a6c..7d6182081 100644 --- a/pkg/integration/tests/interactive_rebase/squash_down_first_commit.go +++ b/pkg/integration/tests/interactive_rebase/squash_down_first_commit.go @@ -21,7 +21,7 @@ var SquashDownFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Commits.SquashDown). Tap(func() { t.ExpectPopup().Alert(). diff --git a/pkg/integration/tests/interactive_rebase/squash_down_second_commit.go b/pkg/integration/tests/interactive_rebase/squash_down_second_commit.go index ffa54584f..385145743 100644 --- a/pkg/integration/tests/interactive_rebase/squash_down_second_commit.go +++ b/pkg/integration/tests/interactive_rebase/squash_down_second_commit.go @@ -22,7 +22,7 @@ var SquashDownSecondCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 02")). + NavigateToLine(Contains("commit 02")). Press(keys.Commits.SquashDown). Tap(func() { t.ExpectPopup().Confirmation(). diff --git a/pkg/integration/tests/interactive_rebase/squash_fixups_above_first_commit.go b/pkg/integration/tests/interactive_rebase/squash_fixups_above_first_commit.go index ece1e5fae..34d325726 100644 --- a/pkg/integration/tests/interactive_rebase/squash_fixups_above_first_commit.go +++ b/pkg/integration/tests/interactive_rebase/squash_fixups_above_first_commit.go @@ -22,7 +22,7 @@ var SquashFixupsAboveFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit 02"), Contains("commit 01"), ). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Commits.CreateFixupCommit). Tap(func() { t.ExpectPopup().Confirmation(). @@ -30,7 +30,7 @@ var SquashFixupsAboveFirstCommit = NewIntegrationTest(NewIntegrationTestArgs{ Content(Contains("Are you sure you want to create a fixup! commit for commit")). Confirm() }). - NavigateToListItem(Contains("commit 01")). + NavigateToLine(Contains("commit 01")). Press(keys.Commits.SquashAboveCommits). Tap(func() { t.ExpectPopup().Confirmation(). diff --git a/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go b/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go index 96b490a7f..8c109fb51 100644 --- a/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go +++ b/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go @@ -26,7 +26,7 @@ var SwapInRebaseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{ Contains("commit two"), Contains("commit one"), ). - NavigateToListItem(Contains("commit one")). + NavigateToLine(Contains("commit one")). Press(keys.Universal.Edit). Lines( Contains("commit three"), @@ -41,72 +41,9 @@ var SwapInRebaseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{ Contains("YOU ARE HERE").Contains("commit one"), ). Tap(func() { - t.Actions().ContinueRebase() + t.Common().ContinueRebase() }) handleConflictsFromSwap(t) }, }) - -func handleConflictsFromSwap(t *TestDriver) { - t.Actions().AcknowledgeConflicts() - - t.Views().Files(). - IsFocused(). - Lines( - Contains("UU myfile"), - ). - PressEnter() - - t.Views().MergeConflicts(). - IsFocused(). - TopLines( - Contains("<<<<<<< HEAD"), - Contains("one"), - Contains("======="), - Contains("three"), - Contains(">>>>>>>"), - ). - SelectNextItem(). - PressPrimaryAction() // pick "three" - - t.Actions().ContinueOnConflictsResolved() - - t.Actions().AcknowledgeConflicts() - - t.Views().Files(). - IsFocused(). - Lines( - Contains("UU myfile"), - ). - PressEnter() - - t.Views().MergeConflicts(). - IsFocused(). - TopLines( - Contains("<<<<<<< HEAD"), - Contains("three"), - Contains("======="), - Contains("two"), - Contains(">>>>>>>"), - ). - SelectNextItem(). - PressPrimaryAction() // pick "two" - - t.Actions().ContinueOnConflictsResolved() - - t.Views().Commits(). - Focus(). - Lines( - Contains("commit two").IsSelected(), - Contains("commit three"), - Contains("commit one"), - ). - Tap(func() { - t.Views().Main().Content(Contains("-three").Contains("+two")) - }). - SelectNextItem(). - Tap(func() { - t.Views().Main().Content(Contains("-one").Contains("+three")) - }) -} diff --git a/pkg/integration/tests/patch_building/apply.go b/pkg/integration/tests/patch_building/apply.go index 4fbc235c2..3dd598a26 100644 --- a/pkg/integration/tests/patch_building/apply.go +++ b/pkg/integration/tests/patch_building/apply.go @@ -50,7 +50,7 @@ var Apply = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().PatchBuildingSecondary().Content(Contains("second line")) - t.Actions().SelectPatchOption(MatchesRegexp(`apply patch$`)) + t.Common().SelectPatchOption(MatchesRegexp(`apply patch$`)) t.Views().Files(). Focus(). diff --git a/pkg/integration/tests/patch_building/apply_in_reverse.go b/pkg/integration/tests/patch_building/apply_in_reverse.go index ec7b94fbc..1c6f56c30 100644 --- a/pkg/integration/tests/patch_building/apply_in_reverse.go +++ b/pkg/integration/tests/patch_building/apply_in_reverse.go @@ -35,7 +35,7 @@ var ApplyInReverse = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().PatchBuildingSecondary().Content(Contains("+file1 content")) - t.Actions().SelectPatchOption(Contains("apply patch in reverse")) + t.Common().SelectPatchOption(Contains("apply patch in reverse")) t.Views().Files(). Focus(). diff --git a/pkg/integration/tests/patch_building/copy_patch_to_clipboard.go b/pkg/integration/tests/patch_building/copy_patch_to_clipboard.go index ad65f63e9..0dea2c36b 100644 --- a/pkg/integration/tests/patch_building/copy_patch_to_clipboard.go +++ b/pkg/integration/tests/patch_building/copy_patch_to_clipboard.go @@ -40,7 +40,7 @@ var CopyPatchToClipboard = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Information().Content(Contains("building patch")) - t.Actions().SelectPatchOption(Contains("copy patch to clipboard")) + t.Common().SelectPatchOption(Contains("copy patch to clipboard")) t.ExpectToast(Contains("Patch copied to clipboard")) diff --git a/pkg/integration/tests/patch_building/move_to_index.go b/pkg/integration/tests/patch_building/move_to_index.go index 0ba8fcf43..2eea9f07b 100644 --- a/pkg/integration/tests/patch_building/move_to_index.go +++ b/pkg/integration/tests/patch_building/move_to_index.go @@ -35,7 +35,7 @@ var MoveToIndex = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().PatchBuildingSecondary().Content(Contains("+file1 content")) - t.Actions().SelectPatchOption(Contains("move patch out into index")) + t.Common().SelectPatchOption(Contains("move patch out into index")) t.Views().Files(). Lines( diff --git a/pkg/integration/tests/patch_building/move_to_index_partial.go b/pkg/integration/tests/patch_building/move_to_index_partial.go index 772c6ed23..ffe8f06ee 100644 --- a/pkg/integration/tests/patch_building/move_to_index_partial.go +++ b/pkg/integration/tests/patch_building/move_to_index_partial.go @@ -28,7 +28,7 @@ var MoveToIndexPartial = NewIntegrationTest(NewIntegrationTestArgs{ Contains("second commit"), Contains("first commit"), ). - NavigateToListItem(Contains("second commit")). + NavigateToLine(Contains("second commit")). PressEnter() t.Views().CommitFiles(). @@ -61,7 +61,7 @@ var MoveToIndexPartial = NewIntegrationTest(NewIntegrationTestArgs{ Contains(` third line`), ) - t.Actions().SelectPatchOption(Contains("move patch out into index")) + t.Common().SelectPatchOption(Contains("move patch out into index")) t.Views().Files(). Lines( diff --git a/pkg/integration/tests/patch_building/move_to_index_with_conflict.go b/pkg/integration/tests/patch_building/move_to_index_with_conflict.go index 6f9b961d0..bdeb321c4 100644 --- a/pkg/integration/tests/patch_building/move_to_index_with_conflict.go +++ b/pkg/integration/tests/patch_building/move_to_index_with_conflict.go @@ -40,9 +40,9 @@ var MoveToIndexWithConflict = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Information().Content(Contains("building patch")) - t.Actions().SelectPatchOption(Contains("move patch out into index")) + t.Common().SelectPatchOption(Contains("move patch out into index")) - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -62,7 +62,7 @@ var MoveToIndexWithConflict = NewIntegrationTest(NewIntegrationTestArgs{ ). PressPrimaryAction() - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.ExpectPopup().Alert(). Title(Equals("Error")). diff --git a/pkg/integration/tests/patch_building/move_to_new_commit.go b/pkg/integration/tests/patch_building/move_to_new_commit.go index 3ef9f7df6..483a1ab53 100644 --- a/pkg/integration/tests/patch_building/move_to_new_commit.go +++ b/pkg/integration/tests/patch_building/move_to_new_commit.go @@ -40,7 +40,7 @@ var MoveToNewCommit = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Information().Content(Contains("building patch")) - t.Actions().SelectPatchOption(Contains("move patch into new commit")) + t.Common().SelectPatchOption(Contains("move patch into new commit")) t.Views().CommitFiles(). IsFocused(). diff --git a/pkg/integration/tests/patch_building/remove_from_commit.go b/pkg/integration/tests/patch_building/remove_from_commit.go index 0d920c2a5..f2bc701a4 100644 --- a/pkg/integration/tests/patch_building/remove_from_commit.go +++ b/pkg/integration/tests/patch_building/remove_from_commit.go @@ -35,7 +35,7 @@ var RemoveFromCommit = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().PatchBuildingSecondary().Content(Contains("+file1 content")) - t.Actions().SelectPatchOption(Contains("remove patch from original commit")) + t.Common().SelectPatchOption(Contains("remove patch from original commit")) t.Views().Files().IsEmpty() diff --git a/pkg/integration/tests/patch_building/specific_selection.go b/pkg/integration/tests/patch_building/specific_selection.go index 1823f24f2..1f5f56bc1 100644 --- a/pkg/integration/tests/patch_building/specific_selection.go +++ b/pkg/integration/tests/patch_building/specific_selection.go @@ -43,7 +43,7 @@ var SpecificSelection = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Secondary().Content(Contains("direct file content")) }). - NavigateToListItem(Contains("hunk-file")). + NavigateToLine(Contains("hunk-file")). PressEnter() t.Views().PatchBuilding(). @@ -92,7 +92,7 @@ var SpecificSelection = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().CommitFiles(). IsFocused(). - NavigateToListItem(Contains("line-file")). + NavigateToLine(Contains("line-file")). PressEnter() t.Views().PatchBuilding(). @@ -106,11 +106,11 @@ var SpecificSelection = NewIntegrationTest(NewIntegrationTestArgs{ Contains("+2a"), ). PressPrimaryAction(). - NavigateToListItem(Contains("+2c")). + NavigateToLine(Contains("+2c")). Press(keys.Main.ToggleDragSelect). - NavigateToListItem(Contains("+2e")). + NavigateToLine(Contains("+2e")). PressPrimaryAction(). - NavigateToListItem(Contains("+2g")). + NavigateToLine(Contains("+2g")). PressPrimaryAction(). Tap(func() { t.Views().Information().Content(Contains("building patch")) diff --git a/pkg/integration/tests/patch_building/start_new_patch.go b/pkg/integration/tests/patch_building/start_new_patch.go index d020a561c..53d870b12 100644 --- a/pkg/integration/tests/patch_building/start_new_patch.go +++ b/pkg/integration/tests/patch_building/start_new_patch.go @@ -41,7 +41,7 @@ var StartNewPatch = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Commits(). IsFocused(). - NavigateToListItem(Contains("first commit")). + NavigateToLine(Contains("first commit")). PressEnter() t.Views().CommitFiles(). diff --git a/pkg/integration/tests/staging/discard_all_changes.go b/pkg/integration/tests/staging/discard_all_changes.go index 48cd0b62d..ce9f22aae 100644 --- a/pkg/integration/tests/staging/discard_all_changes.go +++ b/pkg/integration/tests/staging/discard_all_changes.go @@ -33,13 +33,13 @@ var DiscardAllChanges = NewIntegrationTest(NewIntegrationTestArgs{ // discard the line Press(keys.Universal.Remove). Tap(func() { - t.Actions().ConfirmDiscardLines() + t.Common().ConfirmDiscardLines() }). SelectedLines(Contains("+four")). // discard the other line Press(keys.Universal.Remove). Tap(func() { - t.Actions().ConfirmDiscardLines() + t.Common().ConfirmDiscardLines() // because there are no more changes in file1 we switch to file2 t.Views().Files(). diff --git a/pkg/integration/tests/staging/stage_hunks.go b/pkg/integration/tests/staging/stage_hunks.go index c2f85661a..2dd07371c 100644 --- a/pkg/integration/tests/staging/stage_hunks.go +++ b/pkg/integration/tests/staging/stage_hunks.go @@ -139,7 +139,7 @@ var StageHunks = NewIntegrationTest(NewIntegrationTestArgs{ ). Press(keys.Universal.Remove). Tap(func() { - t.Actions().ConfirmDiscardLines() + t.Common().ConfirmDiscardLines() }). Content(DoesNotContain("-3a").DoesNotContain("+3b")). SelectedLines( diff --git a/pkg/integration/tests/staging/stage_ranges.go b/pkg/integration/tests/staging/stage_ranges.go index ea886ccda..7458a5ea5 100644 --- a/pkg/integration/tests/staging/stage_ranges.go +++ b/pkg/integration/tests/staging/stage_ranges.go @@ -30,7 +30,7 @@ var StageRanges = NewIntegrationTest(NewIntegrationTestArgs{ Contains("+three"), ). Press(keys.Main.ToggleDragSelect). - NavigateToListItem(Contains("+five")). + NavigateToLine(Contains("+five")). SelectedLines( Contains("+three"), Contains("+four"), @@ -61,7 +61,7 @@ var StageRanges = NewIntegrationTest(NewIntegrationTestArgs{ Contains("+three"), ). Press(keys.Main.ToggleDragSelect). - NavigateToListItem(Contains("+five")). + NavigateToLine(Contains("+five")). SelectedLines( Contains("+three"), Contains("+four"), @@ -96,7 +96,7 @@ var StageRanges = NewIntegrationTest(NewIntegrationTestArgs{ ). Press(keys.Universal.Remove). Tap(func() { - t.Actions().ConfirmDiscardLines() + t.Common().ConfirmDiscardLines() }). ContainsLines( Contains("+three"), diff --git a/pkg/integration/tests/submodule/add.go b/pkg/integration/tests/submodule/add.go index e04141499..1fd79a781 100644 --- a/pkg/integration/tests/submodule/add.go +++ b/pkg/integration/tests/submodule/add.go @@ -12,7 +12,7 @@ var Add = NewIntegrationTest(NewIntegrationTestArgs{ SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") - shell.RunCommand("git clone --bare . ../other_repo") + shell.Clone("other_repo") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Submodules().Focus(). diff --git a/pkg/integration/tests/submodule/enter.go b/pkg/integration/tests/submodule/enter.go index 8dbbb73b4..d877a4e29 100644 --- a/pkg/integration/tests/submodule/enter.go +++ b/pkg/integration/tests/submodule/enter.go @@ -20,8 +20,7 @@ var Enter = NewIntegrationTest(NewIntegrationTestArgs{ }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") - shell.RunCommand("git clone --bare . ../other_repo") - shell.RunCommand("git submodule add ../other_repo my_submodule") + shell.CloneIntoSubmodule("my_submodule") shell.GitAddAll() shell.Commit("add submodule") }, diff --git a/pkg/integration/tests/submodule/remove.go b/pkg/integration/tests/submodule/remove.go index 0a8884e15..5888aa1cf 100644 --- a/pkg/integration/tests/submodule/remove.go +++ b/pkg/integration/tests/submodule/remove.go @@ -12,8 +12,7 @@ var Remove = NewIntegrationTest(NewIntegrationTestArgs{ SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") - shell.RunCommand("git clone --bare . ../other_repo") - shell.RunCommand("git submodule add ../other_repo my_submodule") + shell.CloneIntoSubmodule("my_submodule") shell.GitAddAll() shell.Commit("add submodule") }, diff --git a/pkg/integration/tests/submodule/reset.go b/pkg/integration/tests/submodule/reset.go index 474780f1b..98147b044 100644 --- a/pkg/integration/tests/submodule/reset.go +++ b/pkg/integration/tests/submodule/reset.go @@ -20,8 +20,7 @@ var Reset = NewIntegrationTest(NewIntegrationTestArgs{ }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("first commit") - shell.RunCommand("git clone --bare . ../other_repo") - shell.RunCommand("git submodule add ../other_repo my_submodule") + shell.CloneIntoSubmodule("my_submodule") shell.GitAddAll() shell.Commit("add submodule") }, diff --git a/pkg/integration/tests/sync/force_push_multiple_upstream.go b/pkg/integration/tests/sync/force_push_multiple_upstream.go index d8833c12f..c2b50c4fa 100644 --- a/pkg/integration/tests/sync/force_push_multiple_upstream.go +++ b/pkg/integration/tests/sync/force_push_multiple_upstream.go @@ -5,25 +5,6 @@ import ( . "github.com/jesseduffield/lazygit/pkg/integration/components" ) -func createTwoBranchesReadyToForcePush(shell *Shell) { - shell.EmptyCommit("one") - shell.EmptyCommit("two") - - shell.NewBranch("other_branch") - - shell.CloneIntoRemote("origin") - - shell.SetBranchUpstream("master", "origin/master") - shell.SetBranchUpstream("other_branch", "origin/other_branch") - - // remove the 'two' commit so that we have something to pull from the remote - shell.HardReset("HEAD^") - - shell.Checkout("master") - // doing the same for master - shell.HardReset("HEAD^") -} - var ForcePushMultipleUpstream = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Force push to only the upstream branch of the current branch because the user has push.default upstream", ExtraCmdArgs: "", diff --git a/pkg/integration/tests/sync/pull_merge_conflict.go b/pkg/integration/tests/sync/pull_merge_conflict.go index 447c11135..2b4247584 100644 --- a/pkg/integration/tests/sync/pull_merge_conflict.go +++ b/pkg/integration/tests/sync/pull_merge_conflict.go @@ -40,7 +40,7 @@ var PullMergeConflict = NewIntegrationTest(NewIntegrationTestArgs{ IsFocused(). Press(keys.Universal.Pull) - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -60,7 +60,7 @@ var PullMergeConflict = NewIntegrationTest(NewIntegrationTestArgs{ ). PressPrimaryAction() // choose 'content4' - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Contains("↑2 repo → master")) diff --git a/pkg/integration/tests/sync/pull_rebase_conflict.go b/pkg/integration/tests/sync/pull_rebase_conflict.go index 4ea419a74..ebe7b3fd9 100644 --- a/pkg/integration/tests/sync/pull_rebase_conflict.go +++ b/pkg/integration/tests/sync/pull_rebase_conflict.go @@ -40,7 +40,7 @@ var PullRebaseConflict = NewIntegrationTest(NewIntegrationTestArgs{ IsFocused(). Press(keys.Universal.Pull) - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -61,7 +61,7 @@ var PullRebaseConflict = NewIntegrationTest(NewIntegrationTestArgs{ SelectNextItem(). PressPrimaryAction() // choose 'content4' - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Contains("↑1 repo → master")) diff --git a/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go b/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go index da45f70ed..37deb8a40 100644 --- a/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go +++ b/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go @@ -42,7 +42,7 @@ var PullRebaseInteractiveConflict = NewIntegrationTest(NewIntegrationTestArgs{ IsFocused(). Press(keys.Universal.Pull) - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Commits(). Lines( @@ -71,7 +71,7 @@ var PullRebaseInteractiveConflict = NewIntegrationTest(NewIntegrationTestArgs{ SelectNextItem(). PressPrimaryAction() // choose 'content4' - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Contains("↑2 repo → master")) diff --git a/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go b/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go index 580a2af5b..a51d0d4b6 100644 --- a/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go +++ b/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go @@ -42,7 +42,7 @@ var PullRebaseInteractiveConflictDrop = NewIntegrationTest(NewIntegrationTestArg IsFocused(). Press(keys.Universal.Pull) - t.Actions().AcknowledgeConflicts() + t.Common().AcknowledgeConflicts() t.Views().Commits(). Focus(). @@ -79,7 +79,7 @@ var PullRebaseInteractiveConflictDrop = NewIntegrationTest(NewIntegrationTestArg SelectNextItem(). PressPrimaryAction() // choose 'content4' - t.Actions().ContinueOnConflictsResolved() + t.Common().ContinueOnConflictsResolved() t.Views().Status().Content(Contains("↑1 repo → master")) diff --git a/pkg/integration/tests/sync/push.go b/pkg/integration/tests/sync/push.go index 9fa095697..92c0d0881 100644 --- a/pkg/integration/tests/sync/push.go +++ b/pkg/integration/tests/sync/push.go @@ -30,28 +30,3 @@ var Push = NewIntegrationTest(NewIntegrationTestArgs{ assertSuccessfullyPushed(t) }, }) - -func assertSuccessfullyPushed(t *TestDriver) { - t.Views().Status().Content(Contains("✓ repo → master")) - - t.Views().Remotes(). - Focus(). - Lines( - Contains("origin"), - ). - PressEnter() - - t.Views().RemoteBranches(). - IsFocused(). - Lines( - Contains("master"), - ). - PressEnter() - - t.Views().SubCommits(). - IsFocused(). - Lines( - Contains("two"), - Contains("one"), - ) -} diff --git a/pkg/integration/tests/sync/push_with_credential_prompt.go b/pkg/integration/tests/sync/push_with_credential_prompt.go index 8c5341716..ee45a03b0 100644 --- a/pkg/integration/tests/sync/push_with_credential_prompt.go +++ b/pkg/integration/tests/sync/push_with_credential_prompt.go @@ -23,8 +23,7 @@ var PushWithCredentialPrompt = NewIntegrationTest(NewIntegrationTestArgs{ // actually getting a password prompt is tricky: it requires SSH'ing into localhost under a newly created, restricted, user. // This is not easy to do in a cross-platform way, nor is it easy to do in a docker container. // If you can think of a way to do it, please let me know! - shell.RunCommand("cp ../../../../../hooks/pre-push .git/hooks/pre-push") - shell.RunCommand("chmod +x .git/hooks/pre-push") + shell.CopyHelpFile("pre-push", ".git/hooks/pre-push") }, Run: func(t *TestDriver, keys config.KeybindingConfig) { t.Views().Status().Content(Contains("↑1 repo → master")) diff --git a/pkg/integration/tests/sync/shared.go b/pkg/integration/tests/sync/shared.go new file mode 100644 index 000000000..8ea9a6c25 --- /dev/null +++ b/pkg/integration/tests/sync/shared.go @@ -0,0 +1,49 @@ +package sync + +import ( + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +func createTwoBranchesReadyToForcePush(shell *Shell) { + shell.EmptyCommit("one") + shell.EmptyCommit("two") + + shell.NewBranch("other_branch") + + shell.CloneIntoRemote("origin") + + shell.SetBranchUpstream("master", "origin/master") + shell.SetBranchUpstream("other_branch", "origin/other_branch") + + // remove the 'two' commit so that we have something to pull from the remote + shell.HardReset("HEAD^") + + shell.Checkout("master") + // doing the same for master + shell.HardReset("HEAD^") +} + +func assertSuccessfullyPushed(t *TestDriver) { + t.Views().Status().Content(Contains("✓ repo → master")) + + t.Views().Remotes(). + Focus(). + Lines( + Contains("origin"), + ). + PressEnter() + + t.Views().RemoteBranches(). + IsFocused(). + Lines( + Contains("master"), + ). + PressEnter() + + t.Views().SubCommits(). + IsFocused(). + Lines( + Contains("two"), + Contains("one"), + ) +} diff --git a/pkg/integration/tests/tests_gen.go b/pkg/integration/tests/test_list.go similarity index 100% rename from pkg/integration/tests/tests_gen.go rename to pkg/integration/tests/test_list.go diff --git a/pkg/integration/tests/tests_generator.go b/pkg/integration/tests/test_list_generator.go similarity index 95% rename from pkg/integration/tests/tests_generator.go rename to pkg/integration/tests/test_list_generator.go index ef702221e..294165cca 100644 --- a/pkg/integration/tests/tests_generator.go +++ b/pkg/integration/tests/test_list_generator.go @@ -1,7 +1,7 @@ //go:build ignore -// This file is invoked with `go generate ./...` and it generates the tests_gen.go file -// The tests_gen.go file is a list of all the integration tests. +// This file is invoked with `go generate ./...` and it generates the test_list.go file +// The test_list.go file is a list of all the integration tests. // It's annoying to have to manually add an entry in that file for each test you // create, so this generator is here to make the process easier. @@ -26,7 +26,7 @@ func main() { if err != nil { panic(err) } - if err := ioutil.WriteFile("tests_gen.go", formattedCode, 0o644); err != nil { + if err := ioutil.WriteFile("test_list.go", formattedCode, 0o644); err != nil { panic(err) } } diff --git a/pkg/integration/tests/tests.go b/pkg/integration/tests/tests.go index 4af3cb459..2134aa302 100644 --- a/pkg/integration/tests/tests.go +++ b/pkg/integration/tests/tests.go @@ -1,4 +1,4 @@ -//go:generate go run tests_generator.go +//go:generate go run test_list_generator.go package tests @@ -30,7 +30,7 @@ func GetTests() []*components.IntegrationTest { if err := filepath.Walk(filepath.Join(utils.GetLazyRootDirectory(), "pkg/integration/tests"), func(path string, info os.FileInfo, err error) error { if !info.IsDir() && strings.HasSuffix(path, ".go") { // ignoring non-test files - if filepath.Base(path) == "tests.go" || filepath.Base(path) == "tests_gen.go" || filepath.Base(path) == "tests_generator.go" { + if filepath.Base(path) == "tests.go" || filepath.Base(path) == "test_list.go" || filepath.Base(path) == "test_list_generator.go" { return nil } @@ -39,6 +39,11 @@ func GetTests() []*components.IntegrationTest { return nil } + // any file named shared.go will also be ignored, because those files are only used for shared helper functions + if filepath.Base(path) == "shared.go" { + return nil + } + nameFromPath := components.TestNameFromFilePath(path) if !testNamesSet.Includes(nameFromPath) { missingTestNames = append(missingTestNames, nameFromPath) @@ -51,13 +56,13 @@ func GetTests() []*components.IntegrationTest { } if len(missingTestNames) > 0 { - panic(fmt.Sprintf("The following tests are missing from the list of tests: %s. You need to add them to `pkg/integration/tests/tests_gen.go`. Use `go generate ./...` to regenerate the tests list.", strings.Join(missingTestNames, ", "))) + panic(fmt.Sprintf("The following tests are missing from the list of tests: %s. You need to add them to `pkg/integration/tests/test_list.go`. Use `go generate ./...` to regenerate the tests list.", strings.Join(missingTestNames, ", "))) } if testCount > len(tests) { - panic("you have not added all of the tests to the tests list in `pkg/integration/tests/tests_gen.go`. Use `go generate ./...` to regenerate the tests list.") + panic("you have not added all of the tests to the tests list in `pkg/integration/tests/test_list.go`. Use `go generate ./...` to regenerate the tests list.") } else if testCount < len(tests) { - panic("There are more tests in `pkg/integration/tests/tests_gen.go` than there are test files in the tests directory. Ensure that you only have one test per file and you haven't included the same test twice in the tests list. Use `go generate ./...` to regenerate the tests list.") + panic("There are more tests in `pkg/integration/tests/test_list.go` than there are test files in the tests directory. Ensure that you only have one test per file and you haven't included the same test twice in the tests list. Use `go generate ./...` to regenerate the tests list.") } return tests diff --git a/test/README.md b/test/README.md new file mode 100644 index 000000000..524429894 --- /dev/null +++ b/test/README.md @@ -0,0 +1,2 @@ +This directory contains some files used by out integration tests. The tests themselves live in [/pkg/integration/](/pkg/integration/). See [here](/pkg/integration/README.md) for more info + diff --git a/test/hooks/pre-push b/test/files/pre-push old mode 100644 new mode 100755 similarity index 100% rename from test/hooks/pre-push rename to test/files/pre-push diff --git a/test/global_git_config b/test/global_git_config index bfd11875c..f4f47c003 100644 --- a/test/global_git_config +++ b/test/global_git_config @@ -1,3 +1,5 @@ +# This is the global git config we use for all our integration tests + [user] name = CI email = CI@example.com From 45d45d2397f16b3b99596a1ce4b32890c51ec42f Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 26 Feb 2023 12:56:08 +1100 Subject: [PATCH 5/5] show file tree by default in integration tests --- pkg/integration/tests/file/dir_with_untracked_file.go | 4 +--- pkg/integration/tests/file/discard_staged_changes.go | 6 +++--- pkg/integration/tests/sync/fetch_prune.go | 4 +--- pkg/integration/tests/ui/switch_tab_from_menu.go | 4 +--- test/default_test_config/config.yml | 2 -- 5 files changed, 6 insertions(+), 14 deletions(-) diff --git a/pkg/integration/tests/file/dir_with_untracked_file.go b/pkg/integration/tests/file/dir_with_untracked_file.go index 39da6e157..3b45e634c 100644 --- a/pkg/integration/tests/file/dir_with_untracked_file.go +++ b/pkg/integration/tests/file/dir_with_untracked_file.go @@ -10,9 +10,7 @@ var DirWithUntrackedFile = NewIntegrationTest(NewIntegrationTestArgs{ Description: "When selecting a directory that contains an untracked file, we should not get an error", ExtraCmdArgs: "", Skip: false, - SetupConfig: func(config *config.AppConfig) { - config.UserConfig.Gui.ShowFileTree = true - }, + SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { shell.CreateDir("dir") shell.CreateFile("dir/file", "foo") diff --git a/pkg/integration/tests/file/discard_staged_changes.go b/pkg/integration/tests/file/discard_staged_changes.go index 728df8898..9b40ee72d 100644 --- a/pkg/integration/tests/file/discard_staged_changes.go +++ b/pkg/integration/tests/file/discard_staged_changes.go @@ -25,15 +25,15 @@ var DiscardStagedChanges = NewIntegrationTest(NewIntegrationTestArgs{ IsFocused(). Lines( Contains(` M file2`).IsSelected(), - Contains(` M fileToRemove`), Contains(`?? file3`), + Contains(` M fileToRemove`), ). - SelectNextItem(). + NavigateToLine(Contains(`fileToRemove`)). PressPrimaryAction(). Lines( Contains(` M file2`), - Contains(`M fileToRemove`).IsSelected(), Contains(`?? file3`), + Contains(`M fileToRemove`).IsSelected(), ). Press(keys.Files.ViewResetOptions) diff --git a/pkg/integration/tests/sync/fetch_prune.go b/pkg/integration/tests/sync/fetch_prune.go index 765a4ad36..c650947c1 100644 --- a/pkg/integration/tests/sync/fetch_prune.go +++ b/pkg/integration/tests/sync/fetch_prune.go @@ -9,9 +9,7 @@ var FetchPrune = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Fetch from the remote with the 'prune' option set in the git config", ExtraCmdArgs: "", Skip: false, - SetupConfig: func(config *config.AppConfig) { - config.UserConfig.Git.AutoFetch = false - }, + SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { // This option makes it so that git checks for deleted branches in the remote // upon fetching. diff --git a/pkg/integration/tests/ui/switch_tab_from_menu.go b/pkg/integration/tests/ui/switch_tab_from_menu.go index 0a5b56c23..1a9067a28 100644 --- a/pkg/integration/tests/ui/switch_tab_from_menu.go +++ b/pkg/integration/tests/ui/switch_tab_from_menu.go @@ -9,9 +9,7 @@ var SwitchTabFromMenu = NewIntegrationTest(NewIntegrationTestArgs{ Description: "Switch tab via the options menu", ExtraCmdArgs: "", Skip: false, - SetupConfig: func(config *config.AppConfig) { - config.UserConfig.Git.AutoFetch = false - }, + SetupConfig: func(config *config.AppConfig) {}, SetupRepo: func(shell *Shell) { }, Run: func(t *TestDriver, keys config.KeybindingConfig) { diff --git a/test/default_test_config/config.yml b/test/default_test_config/config.yml index 77a9ad237..36df9937b 100644 --- a/test/default_test_config/config.yml +++ b/test/default_test_config/config.yml @@ -8,8 +8,6 @@ gui: - bold SelectedRangeBgcolor: - reverse - # TODO: we should update most tests to use a file tree now that it's the default - showFileTree: false git: # We don't want to run any periodic background git commands because it'll introduce race conditions and flakiness. # If we need to refresh something from within the test (which should only really happen if we've invoked a