From 673b0b22a58aa15268e52f4482e462a199f551c8 Mon Sep 17 00:00:00 2001 From: Eyal Ben Moshe Date: Fri, 30 Jun 2023 13:41:28 +0300 Subject: [PATCH 1/4] Fix the Frogbot badge link in the README (#375) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3bdb4a08..564f63839 100644 --- a/README.md +++ b/README.md @@ -268,7 +268,7 @@ The following alert types are supported: You can show people that your repository is scanned by Frogbot by adding a badge to the README of your Git repository. -[![Scanned by Frogbot](https://raw.github.com/jfrog/frogbot/master/images/frogbot-badge.svg)](https://github.com/jfrog/frogbot#readme) +![](./images/frogbot-badge.svg) You can add this badge by copying the following markdown snippet and pasting it into your repository's README.md file. ``` From e5249ce4e6c880e3f04014e9b8467f2850934523 Mon Sep 17 00:00:00 2001 From: Eyal Ben Moshe Date: Fri, 30 Jun 2023 13:41:28 +0300 Subject: [PATCH 2/4] Fix the Frogbot badge link in the README (#375) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3bdb4a08..564f63839 100644 --- a/README.md +++ b/README.md @@ -268,7 +268,7 @@ The following alert types are supported: You can show people that your repository is scanned by Frogbot by adding a badge to the README of your Git repository. -[![Scanned by Frogbot](https://raw.github.com/jfrog/frogbot/master/images/frogbot-badge.svg)](https://github.com/jfrog/frogbot#readme) +![](./images/frogbot-badge.svg) You can add this badge by copying the following markdown snippet and pasting it into your repository's README.md file. ``` From 8fd980e7f4558e8f272753f0300321ebab41d13f Mon Sep 17 00:00:00 2001 From: Eyal Delarea Date: Mon, 3 Jul 2023 11:59:40 +0300 Subject: [PATCH 3/4] Add local Git operations tests (#345) --- commands/createfixpullrequests.go | 134 ++++---- commands/createfixpullrequests_test.go | 208 +++++++++++- commands/scanandfixrepos.go | 15 +- commands/scanandfixrepos_test.go | 18 +- commands/scanpullrequest.go | 27 +- commands/scanpullrequest_test.go | 56 +++- .../frogbot-config-test-proj-no-vul.yml | 9 + .../frogbot-config-test-same-branch-fail.yml | 9 + .../aggregate-cant-fix/git/COMMIT_EDITMSG | 1 + .../aggregate-cant-fix/git/HEAD | 1 + .../aggregate-cant-fix/git/config | 7 + .../aggregate-cant-fix/git/description | 1 + .../aggregate-cant-fix/git/index | Bin 0 -> 137 bytes .../aggregate-cant-fix/git/info/exclude | 6 + .../aggregate-cant-fix/git/logs/HEAD | 2 + .../git/logs/refs/heads/main | 2 + .../0f/92c954fd5509efcd33e5428eb612e70fbb51f4 | 2 + .../35/44e60850c36f3e1f3ef5c70eb8b56f3dd3db6f | Bin 0 -> 142 bytes .../50/7b7438c9841212e97657e20e41ef932fd33502 | Bin 0 -> 53 bytes .../8f/2ca47cd37b1e0084d5bf87077937dbf249de8a | Bin 0 -> 161 bytes .../d7/c187b9bba3e43f1d0b8c45a3856ebee13b30d7 | 3 + .../e4/2c8b3455eef90ae65bad2a3f24a9980bac74c3 | Bin 0 -> 53 bytes .../aggregate-cant-fix/git/refs/heads/main | 1 + .../aggregate-cant-fix/setup.py | 9 + .../git/COMMIT_EDITMSG | 1 + .../aggregate-dont-update-pr/git/HEAD | 1 + .../aggregate-dont-update-pr/git/config | 7 + .../aggregate-dont-update-pr/git/description | 1 + .../aggregate-dont-update-pr/git/index | Bin 0 -> 225 bytes .../aggregate-dont-update-pr/git/info/exclude | 6 + .../aggregate-dont-update-pr/git/logs/HEAD | 21 ++ .../refs/heads/frogbot-update-dependencies-0 | 3 + .../git/logs/refs/heads/main | 4 + .../00/4163f8859d17d79059d6596737dfd4019aa9dc | Bin 0 -> 217 bytes .../12/2a0b679fab5d00a1ea3313733e402eee81233f | Bin 0 -> 479 bytes .../1a/4f13d84cd5037f0ced095ff6768303e00e1ccb | Bin 0 -> 205 bytes .../27/3d9e5b579dec4cb75bade720c6521c202a3d0a | Bin 0 -> 152 bytes .../3c/dcbd6c5243406e1cba7cb773ac691ef46c6223 | Bin 0 -> 120 bytes .../5a/322ee37b9de0a98c723d7ac4cb580a36d0651b | Bin 0 -> 152 bytes .../63/769970902d90ba18b384c503847f84a6af95f1 | Bin 0 -> 86 bytes .../65/e79da3d61db9abf11d4b0d18d6020c9258ee19 | Bin 0 -> 4132 bytes .../7e/cf1c417f2a35167b7cee8a298779a8dc053e23 | 1 + .../87/12df906b3842a8c9f3b4aa9ea3566b8b60e021 | Bin 0 -> 57 bytes .../a6/ac563174f69aeeda08c168df3ff3e9ec83c542 | Bin 0 -> 152 bytes .../ba/dec7533fceaf2e8607d39a15cde3adb50857f1 | Bin 0 -> 155 bytes .../c5/85fe71f6275b786c8a2836cca8d10aa6480462 | Bin 0 -> 87 bytes .../cb/890d58b400e49e1ded583dde26822f2410c0f4 | 2 + .../da/8ddd8a58701fce64f21b0944e2b73c1031adf4 | 1 + .../df/038a44930d2bbd645c1d71e6e318c33de56e28 | Bin 0 -> 157 bytes .../f4/2dd5743bb64b0337924ae667cab1cb6ea8a955 | Bin 0 -> 155 bytes .../aggregate-dont-update-pr/git/packed-refs | 1 + .../refs/heads/frogbot-update-dependencies-0 | 1 + .../git/refs/heads/main | 1 + .../package-lock.json | 33 ++ .../aggregate-dont-update-pr/package.json | 15 + .../aggregate-no-vul/git/COMMIT_EDITMSG | 1 + .../aggregate-no-vul/git/HEAD | 1 + .../aggregate-no-vul/git/config | 7 + .../aggregate-no-vul/git/description | 1 + .../aggregate-no-vul/git/index | Bin 0 -> 145 bytes .../aggregate-no-vul/git/info/exclude | 6 + .../aggregate-no-vul/git/logs/HEAD | 1 + .../aggregate-no-vul/git/logs/refs/heads/main | 1 + .../49/a00e6f645bdc847b9d91154e45f851d40232b4 | Bin 0 -> 57 bytes .../6e/a5e6ad52f49a83069bc8b09413433004ce9738 | 2 + .../8f/0367ad4ed1c130c1bec08705a8c997918bc7a8 | 1 + .../aggregate-no-vul/git/refs/heads/main | 1 + .../aggregate-no-vul/package.json | 14 + .../aggregate-update-pr/git/COMMIT_EDITMSG | 1 + .../aggregate-update-pr/git/HEAD | 1 + .../aggregate-update-pr/git/config | 7 + .../aggregate-update-pr/git/description | 1 + .../aggregate-update-pr/git/index | Bin 0 -> 225 bytes .../aggregate-update-pr/git/info/exclude | 6 + .../aggregate-update-pr/git/logs/HEAD | 21 ++ .../git/logs/refs/heads/main | 3 + .../git/logs/refs/heads/remoteMain | 2 + .../0f/bfcbac4babd6ca6c521127abaabe1f089e5ed3 | 2 + .../38/32481a1352307a34809d2c757b1572d2c86685 | Bin 0 -> 57 bytes .../3e/5d456e92b5b5c0d8073e40e2633b0162925de0 | Bin 0 -> 57 bytes .../6e/236ba620d558ca9c0d38e90e52e583dc6b068d | Bin 0 -> 87 bytes .../96/189cf41a9a64f26338e7304534527aff720b55 | 2 + .../97/31dc6ab34396124273cf33951a2b16d07c6e53 | 4 + .../a7/2f5a7f57c612877bbbb2eedd38be987c17540d | 6 + .../af/0324bc49930a9d7e00235710708c27f1d3cd35 | 2 + .../b1/0241932e37d9d3b83bcc0d9ffcc50ee52ba289 | Bin 0 -> 155 bytes .../bd/c086c4716a38c0389fef76c7e67de85e21ec1b | Bin 0 -> 87 bytes .../bf/eba850904d0be1ffe9f2abbcb9b0f00790fc18 | Bin 0 -> 152 bytes .../c0/d0a2b713387839bd9c14e4b8c32af71ed1847f | Bin 0 -> 4011 bytes .../cf/91c35ff27fc94a0e385eebb7df0f4db7f35947 | 3 + .../e4/84040f1740819be64f0d9dc271e1a69b834460 | 2 + .../ea/356f69cc1d8b762acb8c1e37e420b439801683 | Bin 0 -> 57 bytes .../ee/bc9b16779e091b8411a80e022960650ae0d6d7 | Bin 0 -> 189 bytes .../f8/5c500e07238dcff711e5f4fe5e8906389c55ea | Bin 0 -> 154 bytes .../fa/22b783c64d2aecec0a17179d501d18dbaf00c8 | Bin 0 -> 189 bytes .../aggregate-update-pr/git/packed-refs | 1 + .../aggregate-update-pr/git/refs/heads/main | 1 + .../git/refs/heads/remoteMain | 1 + .../aggregate-update-pr/package-lock.json | 292 +++++++++++++++++ .../aggregate-update-pr/package.json | 15 + .../aggregate/git/COMMIT_EDITMSG | 1 + .../createfixpullrequests/aggregate/git/HEAD | 1 + .../aggregate/git/config | 7 + .../aggregate/git/description | 1 + .../createfixpullrequests/aggregate/git/index | Bin 0 -> 145 bytes .../aggregate/git/info/exclude | 6 + .../aggregate/git/logs/HEAD | 1 + .../aggregate/git/logs/refs/heads/main | 1 + .../1a/4f13d84cd5037f0ced095ff6768303e00e1ccb | Bin 0 -> 205 bytes .../48/9bbb4e8d38d8fdc0ad145e95c0cbcb056207da | 2 + .../49/a00e6f645bdc847b9d91154e45f851d40232b4 | Bin 0 -> 57 bytes .../4f/8cb57f89f9abfb6f00fa751db57e2b9b9191e3 | Bin 0 -> 4124 bytes .../6e/a5e6ad52f49a83069bc8b09413433004ce9738 | 2 + .../8f/0367ad4ed1c130c1bec08705a8c997918bc7a8 | 1 + .../9f/096a4259c970222bc8287ab53038851b2b9879 | Bin 0 -> 87 bytes .../aggregate/git/refs/heads/main | 1 + .../aggregate/package-lock.json | 301 ++++++++++++++++++ .../aggregate/package.json | 16 + .../non-aggregate/git/COMMIT_EDITMSG | 1 + .../non-aggregate/git/HEAD | 1 + .../non-aggregate/git/config | 7 + .../non-aggregate/git/description | 1 + .../non-aggregate/git/index | Bin 0 -> 145 bytes .../non-aggregate/git/info/exclude | 6 + .../non-aggregate/git/logs/HEAD | 2 + .../non-aggregate/git/logs/refs/heads/main | 2 + .../0b/b00a51656f0f37fffa341307939f0ce2a6f710 | 3 + .../1e/65421dbebea0a4f4a2ff6223d1943868de364b | Bin 0 -> 153 bytes .../6b/1cecf8c1903b6d8cf414457818cb9b92f9b8a0 | Bin 0 -> 57 bytes .../be/2ac309d07d949b362883168a920f27eb046076 | Bin 0 -> 343 bytes .../d6/63c36588e0906b96de4a2eb190b8cecb252c3a | Bin 0 -> 57 bytes .../e0/16d1bccf9581d380b5245ac0042769f66bfa4a | Bin 0 -> 186 bytes .../non-aggregate/git/refs/heads/main | 1 + .../non-aggregate/package.json | 14 + .../clean-test-proj/git/COMMIT_EDITMSG | 1 + .../scanpullrequest/clean-test-proj/git/HEAD | 1 + .../clean-test-proj/git/config | 7 + .../clean-test-proj/git/description | 1 + .../scanpullrequest/clean-test-proj/git/index | Bin 0 -> 145 bytes .../clean-test-proj/git/info/exclude | 6 + .../clean-test-proj/git/logs/HEAD | 1 + .../clean-test-proj/git/logs/refs/heads/main | 1 + .../35/0c38ebf1a9b77b101a355be46a6294aef763c7 | Bin 0 -> 57 bytes .../b7/761f99d321222c411d187405cc8354bdd1f696 | 2 + .../d1/9c36d673cc1654f310962d4ff97e23b9ff471b | Bin 0 -> 83 bytes .../clean-test-proj/git/refs/heads/main | 1 + .../multi-dir-test-proj/git/COMMIT_EDITMSG | 1 + .../multi-dir-test-proj/git/HEAD | 1 + .../multi-dir-test-proj/git/config | 7 + .../multi-dir-test-proj/git/description | 1 + .../multi-dir-test-proj/git/index | Bin 0 -> 9148 bytes .../multi-dir-test-proj/git/info/exclude | 6 + .../multi-dir-test-proj/git/logs/HEAD | 1 + .../git/logs/refs/heads/main | 1 + .../00/6ad0541dc967f47aee76cd59e1c6183598a1a5 | Bin 0 -> 83 bytes .../01/c87b876718ae3180c55528b36d9e98a325c025 | Bin 0 -> 81 bytes .../04/832e74bdfc41bcbaad009655fe7078cf167332 | 2 + .../08/37672d2319537596cef5a302eb3217829aa44d | Bin 0 -> 83 bytes .../10/fa14c5ab0134436e2ae435138bf921eb477c60 | Bin 0 -> 784 bytes .../10/fcf211c78a7f37965675b72ef5887058298f2c | Bin 0 -> 76 bytes .../16/a0255ee376b23a13f0663cdf6f9ed4ba88de24 | Bin 0 -> 139 bytes .../18/4cf0187c0f45b6a6a6ee102bfa91aeef4cc0cc | Bin 0 -> 47 bytes .../18/a78263f3a41fa30954a6b10c823776dfb8e09f | 2 + .../18/e5cedb4c64cc1599e43f345f658f658a2cc4bb | Bin 0 -> 76 bytes .../19/828baca3d92975c5056559c81ba5be93d9da54 | Bin 0 -> 79 bytes .../1a/b57990b53d8262b9fed8886d437bb4677d0982 | Bin 0 -> 83 bytes .../23/63d921c26161f1c010f3df560f2cb8874824a8 | Bin 0 -> 49 bytes .../23/aa033f78d0526de3f5615fc7e5349fe3bd4b61 | Bin 0 -> 328 bytes .../23/e856f5deeb7f564afc22f2beed54449c2d3afb | Bin 0 -> 1972 bytes .../28/ffb8240d13a74cef810501f69f4f1406349905 | Bin 0 -> 48 bytes .../2b/3ff217be2080ab3ec4c86758d015bacf5e0e5e | Bin 0 -> 63 bytes .../39/9eab1924e39da570b389b0bef1ca713b3b05c3 | 3 + .../3a/da079162b11ad3f77297e3cef7c02f93307fab | Bin 0 -> 49 bytes .../41/42082bcb939bbc17985a69ba748491ac6b62a5 | Bin 0 -> 281 bytes .../48/ab0354c18809f637b0df7cdfa5637c31ef5074 | Bin 0 -> 328 bytes .../49/8b267a8c7812490d6479839c5577eaaec79d62 | Bin 0 -> 77 bytes .../4a/939517f9bfe9ab67dd8d90cfb58d13fe0f4258 | Bin 0 -> 80 bytes .../4c/77be157a8e72e7ac5c7452d15e65383c89bb68 | Bin 0 -> 180 bytes .../4c/8a8549be996f11b2072fef68eb6491325fa02e | Bin 0 -> 80 bytes .../4c/e688d32b7532862767345f2b991ae856f7d4a8 | Bin 0 -> 740 bytes .../56/2efa0cb29c12078f94f6a6271a178bfd29bc91 | Bin 0 -> 47 bytes .../58/19fb8cf31384f08910df4571feddcd064af02c | Bin 0 -> 57 bytes .../5a/4bc8f4f16d62651783f414a454dd08fc69b86f | Bin 0 -> 329 bytes .../5e/de5c1ee80bf222c94a3e596e534d877d41266a | Bin 0 -> 141 bytes .../60/7ddb4e7656129da6f4bdbbc769fa04f647a403 | Bin 0 -> 91 bytes .../62/8bd54b7d63855841890b3b8277d1e4ba71be85 | Bin 0 -> 49 bytes .../64/ccd694a0965a2c7f958005fe2d8360c18d94f7 | Bin 0 -> 96 bytes .../65/c96377f2ad26e3ebe7179e95f73202e3ea7666 | 2 + .../6c/9406b7d9320db083eca69b3f8bee9a6c7b50d4 | Bin 0 -> 114 bytes .../6c/bef5c370d8c3486ca85423dd70440c5e0a2aa2 | Bin 0 -> 2176 bytes .../70/59c9ae1159581daefeef8fdb1152ba7b10d549 | Bin 0 -> 79 bytes .../73/ca9e6c4904275d3c8b761f07fc36ccf3601f3d | Bin 0 -> 448 bytes .../79/c8f644e0547f2eeb56144f2813c928bb89d18f | Bin 0 -> 118 bytes .../81/b35f6b33100db3b04d5cf9f1ad8d8ad558d341 | Bin 0 -> 48 bytes .../85/7247ab66122b18d726ea2a3a14fe6c3ca6f3fe | Bin 0 -> 83 bytes .../86/f4413dbc6161e6ed1649290d27f796e8ca0e75 | Bin 0 -> 86 bytes .../8c/ac4fe2a62f587d57d569abfd41e77869e2968f | 3 + .../8e/42fa779e5d1c955df94f3873bb53c83739b0ed | Bin 0 -> 118 bytes .../90/96f772441a7e776ebeebe0d5ce11a2995f608a | Bin 0 -> 97 bytes .../91/79d1949a5fbfaa2024bc06d8f7b3ef7ec3610d | Bin 0 -> 150 bytes .../93/aa7d63beebce296c8c86acdaa9f0411cf2a4ce | Bin 0 -> 124 bytes .../94/87da2f9e488f9814920be16d0af4b671feede9 | Bin 0 -> 141 bytes .../9f/2d684abdca56a22cea43121b9668d6d76f2767 | Bin 0 -> 97 bytes .../a1/fd29ec14823d8bc4a8d1a2cfe35451580f5118 | 3 + .../a5/196d1be8fb59edf8062bef36d3a602e0812139 | 1 + .../a5/d7b84a673458d14d9aab082183a1968c2c7492 | Bin 0 -> 299 bytes .../a8/5294c8052d3596ffbb5edc49e1cd0d7f9d28e1 | Bin 0 -> 86 bytes .../aa/1b74656043001f37a610a6f988e9c63bba6f4e | Bin 0 -> 47 bytes .../ab/a1aab5a69d27668622f93189f7f9e7ccc62e1f | Bin 0 -> 48 bytes .../af/5a0c0018b5e9c04b56ac52f21b4d28f48d99ea | Bin 0 -> 1338 bytes .../b0/737146b9269eaebd285320f1d939a2a3b3588b | Bin 0 -> 47 bytes .../b1/b716105590454bfc4c0247f193a04088f39c7f | Bin 0 -> 20 bytes .../b5/8d1184a9d43a39c0d95f32453efc78581877d6 | Bin 0 -> 529 bytes .../b8/70d82622c1a9ca6bcaf5df639680424a1904b0 | Bin 0 -> 35 bytes .../bb/8646f09ac436b9f303e439a097abd43c817eba | Bin 0 -> 46 bytes .../be/395946f46e946e096ecf4f31bf869d54ac71e8 | Bin 0 -> 49 bytes .../c2/f19dcaf3209fa0330f7a1986eb5193735dd991 | Bin 0 -> 82 bytes .../c4/d426bc6ee9430ee7813263ce6d5da7ec78c3c6 | Bin 0 -> 1278 bytes .../c8/8b2a15165058d5921a3ffd7cdffe9fd5c73f48 | Bin 0 -> 52 bytes .../cb/edc202b3998c809f7be4e52de280babb5785f2 | Bin 0 -> 139 bytes .../d0/3840cb4e4cab5bd0526dce1e35e2ed0e8fd0d6 | Bin 0 -> 49 bytes .../d4/f1807e301c3b96b02b3beeceab720789db5d90 | Bin 0 -> 116 bytes .../db/36a28856dd23a36d88db7b73ad38770fc89e9e | Bin 0 -> 83 bytes .../e1/44712c85c055bcf3248ab342592b440a477062 | Bin 0 -> 950 bytes .../e7/2f2147a0ccf0b7cad5a73fa4b241676b64e745 | Bin 0 -> 60 bytes .../e7/905292c5e1159574427f6645c8da60f64a1909 | Bin 0 -> 57 bytes .../e9/162c80c140fa69bd4d2306357cf972501228f9 | Bin 0 -> 79 bytes .../ec/17ec1939b7c3e86b7cb6c0c4de6b0818a7e75e | 2 + .../f1/0f53253a76ffbb59f56bf3746507b9e5c88985 | Bin 0 -> 154 bytes .../f4/613cb98ea7ac3adcb446aeb2a0523ad3476ecf | Bin 0 -> 83 bytes .../f9/5e34847d032c1b1440cbfa854f235484d58e85 | Bin 0 -> 54 bytes .../f9/9690a1d6f831b243cced0ec0d683f422a18615 | Bin 0 -> 81 bytes .../fd/9f6fa59134f2900f583d35a3387a064e0b661d | Bin 0 -> 140 bytes .../multi-dir-test-proj/git/refs/heads/main | 1 + .../scanpullrequest/test-proj-no-vul.tar.gz | Bin 0 -> 13419 bytes .../test-proj-pip/git/COMMIT_EDITMSG | 1 + .../scanpullrequest/test-proj-pip/git/HEAD | 1 + .../scanpullrequest/test-proj-pip/git/config | 7 + .../test-proj-pip/git/description | 1 + .../scanpullrequest/test-proj-pip/git/index | Bin 0 -> 137 bytes .../test-proj-pip/git/info/exclude | 6 + .../test-proj-pip/git/logs/HEAD | 1 + .../test-proj-pip/git/logs/refs/heads/main | 1 + .../54/b376eb402cf9ef89447f23afb5ef0f6de96d7e | 2 + .../5e/dae408cad286ea89e241d46ca1a958d1e420db | 1 + .../90/2d499e48521e7f329f0387e4da6bbfbba0d0b2 | Bin 0 -> 53 bytes .../test-proj-pip/git/refs/heads/main | 1 + .../test-proj-subdir/git/COMMIT_EDITMSG | 1 + .../scanpullrequest/test-proj-subdir/git/HEAD | 1 + .../test-proj-subdir/git/config | 7 + .../test-proj-subdir/git/description | 1 + .../test-proj-subdir/git/index | Bin 0 -> 184 bytes .../test-proj-subdir/git/info/exclude | 6 + .../test-proj-subdir/git/logs/HEAD | 1 + .../test-proj-subdir/git/logs/refs/heads/main | 1 + .../90/42489fc531a41457e0ade414da57b2bc9bd8bc | Bin 0 -> 119 bytes .../9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 | 1 + .../a8/23985885ee12bf657a581dda6a1450cb480143 | Bin 0 -> 48 bytes .../c6/37dbf31c89559c8c4040d740b8abe554404e8d | Bin 0 -> 57 bytes .../test-proj-subdir/git/refs/heads/main | 1 + .../test-proj/git/COMMIT_EDITMSG | 1 + .../scanpullrequest/test-proj/git/HEAD | 1 + .../scanpullrequest/test-proj/git/config | 7 + .../scanpullrequest/test-proj/git/description | 1 + .../scanpullrequest/test-proj/git/index | Bin 0 -> 145 bytes .../test-proj/git/info/exclude | 6 + .../scanpullrequest/test-proj/git/logs/HEAD | 1 + .../test-proj/git/logs/refs/heads/main | 1 + .../9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 | 1 + .../9f/19e8e214da2ec75e3191980f30b567c7558ff7 | Bin 0 -> 118 bytes .../c6/37dbf31c89559c8c4040d740b8abe554404e8d | Bin 0 -> 57 bytes .../test-proj/git/refs/heads/main | 1 + .../test-same-branch-fail.tar.gz | Bin 0 -> 13160 bytes .../test-same-branch-fail/git/COMMIT_EDITMSG | 1 + .../test-same-branch-fail/git/HEAD | 1 + .../test-same-branch-fail/git/config | 7 + .../test-same-branch-fail/git/description | 1 + .../test-same-branch-fail/git/index | Bin 0 -> 145 bytes .../test-same-branch-fail/git/info/exclude | 6 + .../test-same-branch-fail/git/logs/HEAD | 2 + .../git/logs/refs/heads/main | 2 + .../04/0abf2a9d8a9f4aeaede3b8431d988d57fddf36 | Bin 0 -> 119 bytes .../41/0fc517e03bad9856571ee01247417d91a5405d | 1 + .../9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 | 1 + .../b8/5f31622acb022542282ac7cdd5ff7880c4cbf7 | Bin 0 -> 57 bytes .../c6/37dbf31c89559c8c4040d740b8abe554404e8d | Bin 0 -> 57 bytes .../eb/e022f659464ddc9f973bce7d5c491a6484d210 | Bin 0 -> 149 bytes .../test-same-branch-fail/git/refs/heads/main | 1 + .../test-same-branch-fail/package.json | 8 + commands/utils/consts.go | 3 +- commands/utils/git.go | 18 +- commands/utils/params.go | 50 +-- commands/utils/params_test.go | 52 +-- commands/utils/testsutils.go | 13 +- commands/utils/utils.go | 9 +- commands/utils/utils_test.go | 2 +- go.mod | 2 - 297 files changed, 1542 insertions(+), 156 deletions(-) create mode 100644 commands/testdata/config/frogbot-config-test-proj-no-vul.yml create mode 100644 commands/testdata/config/frogbot-config-test-same-branch-fail.yml create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/COMMIT_EDITMSG create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/config create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/description create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/index create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/info/exclude create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/0f/92c954fd5509efcd33e5428eb612e70fbb51f4 create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/35/44e60850c36f3e1f3ef5c70eb8b56f3dd3db6f create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/50/7b7438c9841212e97657e20e41ef932fd33502 create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/8f/2ca47cd37b1e0084d5bf87077937dbf249de8a create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/d7/c187b9bba3e43f1d0b8c45a3856ebee13b30d7 create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/e4/2c8b3455eef90ae65bad2a3f24a9980bac74c3 create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/git/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-cant-fix/setup.py create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/COMMIT_EDITMSG create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/config create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/description create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/index create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/info/exclude create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/frogbot-update-dependencies-0 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/00/4163f8859d17d79059d6596737dfd4019aa9dc create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/12/2a0b679fab5d00a1ea3313733e402eee81233f create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/1a/4f13d84cd5037f0ced095ff6768303e00e1ccb create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/27/3d9e5b579dec4cb75bade720c6521c202a3d0a create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/3c/dcbd6c5243406e1cba7cb773ac691ef46c6223 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/5a/322ee37b9de0a98c723d7ac4cb580a36d0651b create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/63/769970902d90ba18b384c503847f84a6af95f1 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/65/e79da3d61db9abf11d4b0d18d6020c9258ee19 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/7e/cf1c417f2a35167b7cee8a298779a8dc053e23 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/87/12df906b3842a8c9f3b4aa9ea3566b8b60e021 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/a6/ac563174f69aeeda08c168df3ff3e9ec83c542 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/ba/dec7533fceaf2e8607d39a15cde3adb50857f1 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/c5/85fe71f6275b786c8a2836cca8d10aa6480462 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/cb/890d58b400e49e1ded583dde26822f2410c0f4 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/da/8ddd8a58701fce64f21b0944e2b73c1031adf4 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/df/038a44930d2bbd645c1d71e6e318c33de56e28 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/f4/2dd5743bb64b0337924ae667cab1cb6ea8a955 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/packed-refs create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/frogbot-update-dependencies-0 create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package-lock.json create mode 100644 commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package.json create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/COMMIT_EDITMSG create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/config create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/description create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/index create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/info/exclude create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/logs/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/logs/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/49/a00e6f645bdc847b9d91154e45f851d40232b4 create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/6e/a5e6ad52f49a83069bc8b09413433004ce9738 create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/8f/0367ad4ed1c130c1bec08705a8c997918bc7a8 create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/git/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-no-vul/package.json create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/COMMIT_EDITMSG create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/config create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/description create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/index create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/info/exclude create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/remoteMain create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/0f/bfcbac4babd6ca6c521127abaabe1f089e5ed3 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/38/32481a1352307a34809d2c757b1572d2c86685 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/3e/5d456e92b5b5c0d8073e40e2633b0162925de0 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/6e/236ba620d558ca9c0d38e90e52e583dc6b068d create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/96/189cf41a9a64f26338e7304534527aff720b55 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/97/31dc6ab34396124273cf33951a2b16d07c6e53 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/a7/2f5a7f57c612877bbbb2eedd38be987c17540d create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/af/0324bc49930a9d7e00235710708c27f1d3cd35 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/b1/0241932e37d9d3b83bcc0d9ffcc50ee52ba289 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/bd/c086c4716a38c0389fef76c7e67de85e21ec1b create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/bf/eba850904d0be1ffe9f2abbcb9b0f00790fc18 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/c0/d0a2b713387839bd9c14e4b8c32af71ed1847f create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/cf/91c35ff27fc94a0e385eebb7df0f4db7f35947 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/e4/84040f1740819be64f0d9dc271e1a69b834460 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/ea/356f69cc1d8b762acb8c1e37e420b439801683 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/ee/bc9b16779e091b8411a80e022960650ae0d6d7 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/f8/5c500e07238dcff711e5f4fe5e8906389c55ea create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/fa/22b783c64d2aecec0a17179d501d18dbaf00c8 create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/packed-refs create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/remoteMain create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/package-lock.json create mode 100644 commands/testdata/createfixpullrequests/aggregate-update-pr/package.json create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/COMMIT_EDITMSG create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/config create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/description create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/index create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/info/exclude create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/logs/HEAD create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/logs/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/objects/1a/4f13d84cd5037f0ced095ff6768303e00e1ccb create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/objects/48/9bbb4e8d38d8fdc0ad145e95c0cbcb056207da create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/objects/49/a00e6f645bdc847b9d91154e45f851d40232b4 create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/objects/4f/8cb57f89f9abfb6f00fa751db57e2b9b9191e3 create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/objects/6e/a5e6ad52f49a83069bc8b09413433004ce9738 create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/objects/8f/0367ad4ed1c130c1bec08705a8c997918bc7a8 create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/objects/9f/096a4259c970222bc8287ab53038851b2b9879 create mode 100644 commands/testdata/createfixpullrequests/aggregate/git/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/aggregate/package-lock.json create mode 100644 commands/testdata/createfixpullrequests/aggregate/package.json create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/COMMIT_EDITMSG create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/HEAD create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/config create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/description create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/index create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/info/exclude create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/logs/HEAD create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/logs/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/objects/0b/b00a51656f0f37fffa341307939f0ce2a6f710 create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/objects/1e/65421dbebea0a4f4a2ff6223d1943868de364b create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/objects/6b/1cecf8c1903b6d8cf414457818cb9b92f9b8a0 create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/objects/be/2ac309d07d949b362883168a920f27eb046076 create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/objects/d6/63c36588e0906b96de4a2eb190b8cecb252c3a create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/objects/e0/16d1bccf9581d380b5245ac0042769f66bfa4a create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/git/refs/heads/main create mode 100644 commands/testdata/createfixpullrequests/non-aggregate/package.json create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/COMMIT_EDITMSG create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/HEAD create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/config create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/description create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/index create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/info/exclude create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/logs/HEAD create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/logs/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/objects/35/0c38ebf1a9b77b101a355be46a6294aef763c7 create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/objects/b7/761f99d321222c411d187405cc8354bdd1f696 create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/objects/d1/9c36d673cc1654f310962d4ff97e23b9ff471b create mode 100644 commands/testdata/scanpullrequest/clean-test-proj/git/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/COMMIT_EDITMSG create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/HEAD create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/config create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/description create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/index create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/info/exclude create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/HEAD create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/00/6ad0541dc967f47aee76cd59e1c6183598a1a5 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/01/c87b876718ae3180c55528b36d9e98a325c025 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/04/832e74bdfc41bcbaad009655fe7078cf167332 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/08/37672d2319537596cef5a302eb3217829aa44d create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/10/fa14c5ab0134436e2ae435138bf921eb477c60 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/10/fcf211c78a7f37965675b72ef5887058298f2c create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/16/a0255ee376b23a13f0663cdf6f9ed4ba88de24 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/4cf0187c0f45b6a6a6ee102bfa91aeef4cc0cc create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/a78263f3a41fa30954a6b10c823776dfb8e09f create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/e5cedb4c64cc1599e43f345f658f658a2cc4bb create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/19/828baca3d92975c5056559c81ba5be93d9da54 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/1a/b57990b53d8262b9fed8886d437bb4677d0982 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/23/63d921c26161f1c010f3df560f2cb8874824a8 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/23/aa033f78d0526de3f5615fc7e5349fe3bd4b61 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/23/e856f5deeb7f564afc22f2beed54449c2d3afb create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/28/ffb8240d13a74cef810501f69f4f1406349905 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/2b/3ff217be2080ab3ec4c86758d015bacf5e0e5e create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/39/9eab1924e39da570b389b0bef1ca713b3b05c3 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/3a/da079162b11ad3f77297e3cef7c02f93307fab create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/41/42082bcb939bbc17985a69ba748491ac6b62a5 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/48/ab0354c18809f637b0df7cdfa5637c31ef5074 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/49/8b267a8c7812490d6479839c5577eaaec79d62 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4a/939517f9bfe9ab67dd8d90cfb58d13fe0f4258 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4c/77be157a8e72e7ac5c7452d15e65383c89bb68 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4c/8a8549be996f11b2072fef68eb6491325fa02e create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4c/e688d32b7532862767345f2b991ae856f7d4a8 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/56/2efa0cb29c12078f94f6a6271a178bfd29bc91 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/58/19fb8cf31384f08910df4571feddcd064af02c create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/5a/4bc8f4f16d62651783f414a454dd08fc69b86f create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/5e/de5c1ee80bf222c94a3e596e534d877d41266a create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/60/7ddb4e7656129da6f4bdbbc769fa04f647a403 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/62/8bd54b7d63855841890b3b8277d1e4ba71be85 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/64/ccd694a0965a2c7f958005fe2d8360c18d94f7 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/65/c96377f2ad26e3ebe7179e95f73202e3ea7666 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/6c/9406b7d9320db083eca69b3f8bee9a6c7b50d4 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/6c/bef5c370d8c3486ca85423dd70440c5e0a2aa2 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/70/59c9ae1159581daefeef8fdb1152ba7b10d549 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/73/ca9e6c4904275d3c8b761f07fc36ccf3601f3d create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/79/c8f644e0547f2eeb56144f2813c928bb89d18f create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/81/b35f6b33100db3b04d5cf9f1ad8d8ad558d341 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/85/7247ab66122b18d726ea2a3a14fe6c3ca6f3fe create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/86/f4413dbc6161e6ed1649290d27f796e8ca0e75 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/8c/ac4fe2a62f587d57d569abfd41e77869e2968f create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/8e/42fa779e5d1c955df94f3873bb53c83739b0ed create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/90/96f772441a7e776ebeebe0d5ce11a2995f608a create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/91/79d1949a5fbfaa2024bc06d8f7b3ef7ec3610d create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/93/aa7d63beebce296c8c86acdaa9f0411cf2a4ce create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/94/87da2f9e488f9814920be16d0af4b671feede9 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/9f/2d684abdca56a22cea43121b9668d6d76f2767 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a1/fd29ec14823d8bc4a8d1a2cfe35451580f5118 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a5/196d1be8fb59edf8062bef36d3a602e0812139 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a5/d7b84a673458d14d9aab082183a1968c2c7492 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a8/5294c8052d3596ffbb5edc49e1cd0d7f9d28e1 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/aa/1b74656043001f37a610a6f988e9c63bba6f4e create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/ab/a1aab5a69d27668622f93189f7f9e7ccc62e1f create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/af/5a0c0018b5e9c04b56ac52f21b4d28f48d99ea create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b0/737146b9269eaebd285320f1d939a2a3b3588b create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b1/b716105590454bfc4c0247f193a04088f39c7f create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b5/8d1184a9d43a39c0d95f32453efc78581877d6 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b8/70d82622c1a9ca6bcaf5df639680424a1904b0 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/bb/8646f09ac436b9f303e439a097abd43c817eba create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/be/395946f46e946e096ecf4f31bf869d54ac71e8 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/c2/f19dcaf3209fa0330f7a1986eb5193735dd991 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/c4/d426bc6ee9430ee7813263ce6d5da7ec78c3c6 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/c8/8b2a15165058d5921a3ffd7cdffe9fd5c73f48 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/cb/edc202b3998c809f7be4e52de280babb5785f2 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/d0/3840cb4e4cab5bd0526dce1e35e2ed0e8fd0d6 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/d4/f1807e301c3b96b02b3beeceab720789db5d90 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/db/36a28856dd23a36d88db7b73ad38770fc89e9e create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e1/44712c85c055bcf3248ab342592b440a477062 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e7/2f2147a0ccf0b7cad5a73fa4b241676b64e745 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e7/905292c5e1159574427f6645c8da60f64a1909 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e9/162c80c140fa69bd4d2306357cf972501228f9 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/ec/17ec1939b7c3e86b7cb6c0c4de6b0818a7e75e create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f1/0f53253a76ffbb59f56bf3746507b9e5c88985 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f4/613cb98ea7ac3adcb446aeb2a0523ad3476ecf create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f9/5e34847d032c1b1440cbfa854f235484d58e85 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f9/9690a1d6f831b243cced0ec0d683f422a18615 create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/fd/9f6fa59134f2900f583d35a3387a064e0b661d create mode 100644 commands/testdata/scanpullrequest/multi-dir-test-proj/git/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-proj-no-vul.tar.gz create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/COMMIT_EDITMSG create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/HEAD create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/config create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/description create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/index create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/info/exclude create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/logs/HEAD create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/logs/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/objects/54/b376eb402cf9ef89447f23afb5ef0f6de96d7e create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/objects/5e/dae408cad286ea89e241d46ca1a958d1e420db create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/objects/90/2d499e48521e7f329f0387e4da6bbfbba0d0b2 create mode 100644 commands/testdata/scanpullrequest/test-proj-pip/git/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/COMMIT_EDITMSG create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/HEAD create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/config create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/description create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/index create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/info/exclude create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/logs/HEAD create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/logs/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/objects/90/42489fc531a41457e0ade414da57b2bc9bd8bc create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/objects/a8/23985885ee12bf657a581dda6a1450cb480143 create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/objects/c6/37dbf31c89559c8c4040d740b8abe554404e8d create mode 100644 commands/testdata/scanpullrequest/test-proj-subdir/git/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-proj/git/COMMIT_EDITMSG create mode 100644 commands/testdata/scanpullrequest/test-proj/git/HEAD create mode 100644 commands/testdata/scanpullrequest/test-proj/git/config create mode 100644 commands/testdata/scanpullrequest/test-proj/git/description create mode 100644 commands/testdata/scanpullrequest/test-proj/git/index create mode 100644 commands/testdata/scanpullrequest/test-proj/git/info/exclude create mode 100644 commands/testdata/scanpullrequest/test-proj/git/logs/HEAD create mode 100644 commands/testdata/scanpullrequest/test-proj/git/logs/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-proj/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 create mode 100644 commands/testdata/scanpullrequest/test-proj/git/objects/9f/19e8e214da2ec75e3191980f30b567c7558ff7 create mode 100644 commands/testdata/scanpullrequest/test-proj/git/objects/c6/37dbf31c89559c8c4040d740b8abe554404e8d create mode 100644 commands/testdata/scanpullrequest/test-proj/git/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail.tar.gz create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/COMMIT_EDITMSG create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/HEAD create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/config create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/description create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/index create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/info/exclude create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/logs/HEAD create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/logs/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/04/0abf2a9d8a9f4aeaede3b8431d988d57fddf36 create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/41/0fc517e03bad9856571ee01247417d91a5405d create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/b8/5f31622acb022542282ac7cdd5ff7880c4cbf7 create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/c6/37dbf31c89559c8c4040d740b8abe554404e8d create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/eb/e022f659464ddc9f973bce7d5c491a6484d210 create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/git/refs/heads/main create mode 100644 commands/testdata/scanpullrequest/test-same-branch-fail/package.json diff --git a/commands/createfixpullrequests.go b/commands/createfixpullrequests.go index 5badde684..16448ef4d 100644 --- a/commands/createfixpullrequests.go +++ b/commands/createfixpullrequests.go @@ -20,10 +20,6 @@ import ( "strings" ) -const ( - PullRequestNotFound = -1 -) - type CreateFixPullRequestsCmd struct { // The interface that Frogbot utilizes to format and style the displayed messages on the Git providers utils.OutputWriter @@ -81,11 +77,11 @@ func (cfp *CreateFixPullRequestsCmd) scanAndFixRepository(repository *utils.Repo } cfp.OutputWriter.SetEntitledForJas(scanResults.ExtendedScanResults.EntitledForJas) - err = utils.UploadScanToGitProvider(scanResults, repository, cfp.details.Branch(), cfp.details.Client()) - if err != nil { - log.Warn(err) + if !cfp.dryRun { + if err = utils.UploadScanToGitProvider(scanResults, repository, cfp.details.Branch(), cfp.details.Client()); err != nil { + log.Warn(err) + } } - // Update the working directory to the project current working directory cfp.projectWorkingDir = utils.GetRelativeWd(fullPathWd, baseWd) // Fix and create PRs @@ -129,14 +125,17 @@ func (cfp *CreateFixPullRequestsCmd) fixVulnerablePackages(vulnerabilitiesMap ma if err != nil { return } - clonedRepoDir, restoreBaseDir, err := cfp.cloneRepository() if err != nil { return } defer func() { - err = errors.Join(err, restoreBaseDir(), fileutils.RemoveTempDir(clonedRepoDir)) + // On dry run don't delete the folder as we want to validate results. + if !cfp.dryRun { + err = errors.Join(err, restoreBaseDir(), fileutils.RemoveTempDir(clonedRepoDir)) + } }() + if cfp.aggregateFixes { return cfp.fixIssuesSinglePR(vulnerabilitiesMap) } @@ -174,22 +173,28 @@ func (cfp *CreateFixPullRequestsCmd) fixIssuesSinglePR(vulnerabilityDetails map[ if err != nil { return } - existingPullRequestId, err := cfp.getOpenPullRequestIdBySourceBranch(aggregatedFixBranchName) + existingPullRequestDetails, err := cfp.getOpenPullRequestBySourceBranch(aggregatedFixBranchName) if err != nil { return } - if existingPullRequestId != PullRequestNotFound { - if identicalScanResults, err := cfp.compareScanResults(vulnerabilityDetails, aggregatedFixBranchName); identicalScanResults || err != nil { - log.Info("The scan results have not changed since the last Frogbot run.") + if existingPullRequestDetails != nil { + log.Info("Aggregated pull request already exists, verifying if update is needed...") + identicalScanResults, err := cfp.compareScanResults(vulnerabilityDetails, existingPullRequestDetails) + if err != nil { return err } + if identicalScanResults { + log.Info("The existing pull request is in sync with the latest Xray scan, and no further updates are required.") + return err + } + log.Info("The existing pull request is not in sync with the latest Xray scan, updating pull request...") } - return cfp.aggregateFixAndOpenPullRequest(vulnerabilityDetails, aggregatedFixBranchName, existingPullRequestId) + return cfp.aggregateFixAndOpenPullRequest(vulnerabilityDetails, aggregatedFixBranchName, existingPullRequestDetails) } // Handles possible error of update package operation // When the expected custom error occurs, log to debug. -// else, append to errList string +// else, append to errList string. func (cfp *CreateFixPullRequestsCmd) handleUpdatePackageErrors(err error, errList strings.Builder) { if _, isCustomError := err.(*utils.ErrUnsupportedFix); isCustomError { log.Debug(err.Error()) @@ -215,7 +220,6 @@ func (cfp *CreateFixPullRequestsCmd) fixSinglePackageAndCreatePR(vulnDetails *ut log.Info(fmt.Sprintf("A Pull Request updating dependency '%s' to version '%s' already exists.", vulnDetails.ImpactedDependencyName, vulnDetails.FixVersion)) return } - log.Debug("Creating branch", fixBranchName, "...") if err = cfp.gitManager.CreateBranchAndCheckout(fixBranchName); err != nil { return fmt.Errorf("failed while creating new branch: \n%s", err.Error()) } @@ -239,58 +243,60 @@ func (cfp *CreateFixPullRequestsCmd) openFixingPullRequest(fixBranchName string, if isClean { return fmt.Errorf("there were no changes to commit after fixing the package '%s'", vulnDetails.ImpactedDependencyName) } - commitMessage := cfp.gitManager.GenerateCommitMessage(vulnDetails.ImpactedDependencyName, vulnDetails.FixVersion) - log.Debug("Running git add all and commit...") if err = cfp.gitManager.AddAllAndCommit(commitMessage); err != nil { return } - - log.Debug("Pushing branch:", fixBranchName, "...") if err = cfp.gitManager.Push(false, fixBranchName); err != nil { return } - - pullRequestTitle := cfp.gitManager.GeneratePullRequestTitle(vulnDetails.ImpactedDependencyName, vulnDetails.FixVersion) + pullRequestTitle, prBody := cfp.preparePullRequestDetails([]formats.VulnerabilityOrViolationRow{*vulnDetails.VulnerabilityOrViolationRow}) log.Debug("Creating Pull Request form:", fixBranchName, " to:", cfp.details.Branch()) - - prBody := cfp.OutputWriter.VulnerabilitiesContent([]formats.VulnerabilityOrViolationRow{*vulnDetails.VulnerabilityOrViolationRow}) return cfp.details.Client().CreatePullRequest(context.Background(), cfp.details.RepoOwner, cfp.details.RepoName, fixBranchName, cfp.details.Branch(), pullRequestTitle, prBody) } // openAggregatedPullRequest handles the opening or updating of a pull request when the aggregate mode is active. // If a pull request is already open, Frogbot will update the branch and the pull request body. -func (cfp *CreateFixPullRequestsCmd) openAggregatedPullRequest(fixBranchName string, existingPullRequestId int64, vulnerabilities []formats.VulnerabilityOrViolationRow) (err error) { - log.Debug("Checking if there are changes to commit") - isClean, err := cfp.gitManager.IsClean() - if err != nil { +func (cfp *CreateFixPullRequestsCmd) openAggregatedPullRequest(fixBranchName string, pullRequestInfo *vcsclient.PullRequestInfo, vulnerabilities []formats.VulnerabilityOrViolationRow) (err error) { + commitMessage := cfp.gitManager.GenerateAggregatedCommitMessage() + if err = cfp.gitManager.AddAllAndCommit(commitMessage); err != nil { return } - if !isClean { - commitMessage := cfp.gitManager.GenerateAggregatedCommitMessage() - log.Debug("Running git add all and commit...") - if err = cfp.gitManager.AddAllAndCommit(commitMessage); err != nil { - return - } - log.Debug("Pushing branch:", fixBranchName, "...") - if err = cfp.gitManager.Push(true, fixBranchName); err != nil { - return - } + if err = cfp.gitManager.Push(true, fixBranchName); err != nil { + return } - // Even if the git state is clean, there are cases where we still need to update the pull request body. - prBody := cfp.OutputWriter.VulnerabiltiesTitle(false) + "\n" + cfp.OutputWriter.VulnerabilitiesContent(vulnerabilities) - pullRequestTitle := utils.AggregatedPullRequestTitleTemplate - if existingPullRequestId == PullRequestNotFound { + pullRequestTitle, prBody := cfp.preparePullRequestDetails(vulnerabilities) + if pullRequestInfo == nil { log.Info("Creating Pull Request from:", fixBranchName, "to:", cfp.details.Branch()) return cfp.details.Client().CreatePullRequest(context.Background(), cfp.details.RepoOwner, cfp.details.RepoName, fixBranchName, cfp.details.Branch(), pullRequestTitle, prBody) } log.Info("Updating Pull Request from:", fixBranchName, "to:", cfp.details.Branch()) - return cfp.details.Client().UpdatePullRequest(context.Background(), cfp.details.RepoOwner, cfp.details.RepoName, pullRequestTitle, prBody, "", int(existingPullRequestId), vcsutils.Open) + return cfp.details.Client().UpdatePullRequest(context.Background(), cfp.details.RepoOwner, cfp.details.RepoName, pullRequestTitle, prBody, "", int(pullRequestInfo.ID), vcsutils.Open) +} + +func (cfp *CreateFixPullRequestsCmd) preparePullRequestDetails(vulnerabilities []formats.VulnerabilityOrViolationRow) (pullRequestTitle string, prBody string) { + if cfp.dryRun && cfp.aggregateFixes { + // For testings, don't compare pull request body as scan results order may change. + return utils.AggregatedPullRequestTitleTemplate, "" + } + prBody = cfp.OutputWriter.VulnerabiltiesTitle(false) + "\n" + cfp.OutputWriter.VulnerabilitiesContent(vulnerabilities) + if cfp.aggregateFixes { + pullRequestTitle = utils.AggregatedPullRequestTitleTemplate + } else { + vulnDetails := vulnerabilities[0] + pullRequestTitle = cfp.gitManager.GeneratePullRequestTitle(vulnDetails.ImpactedDependencyName, vulnDetails.FixedVersions[0]) + } + return } func (cfp *CreateFixPullRequestsCmd) cloneRepository() (tempWd string, restoreDir func() error, err error) { - // Create temp working directory - tempWd, err = fileutils.CreateTempDir() + if cfp.dryRunRepoPath != "" { + // On dry run, create the temp folder nested in the current folder + tempWd, err = os.MkdirTemp(cfp.dryRunRepoPath, "nested-temp.") + } else { + // Create temp working directory + tempWd, err = fileutils.CreateTempDir() + } if err != nil { return } @@ -386,11 +392,15 @@ func (cfp *CreateFixPullRequestsCmd) updatePackageToFixedVersion(vulnDetails *ut return cfp.handlers[vulnDetails.Technology].UpdateDependency(vulnDetails) } -// Computes the MD5 hash of a FixVersionMap object originated from the remote branch scan results +// Computes the MD5 hash of a vulnerabilitiesMap originated from the remote branch scan results func (cfp *CreateFixPullRequestsCmd) getRemoteBranchScanHash(remoteBranchName string) (hash string, err error) { + log.Debug("Scanning remote branch", remoteBranchName) if err = cfp.gitManager.CheckoutRemoteBranch(remoteBranchName); err != nil { return } + defer func() { + err = cfp.gitManager.CheckoutLocalBranch(cfp.details.Branch()) + }() wd, err := os.Getwd() if err != nil { return @@ -399,34 +409,35 @@ func (cfp *CreateFixPullRequestsCmd) getRemoteBranchScanHash(remoteBranchName st if err != nil { return } - targetFixVersionMap, err := cfp.createVulnerabilitiesMap(res.ExtendedScanResults, res.IsMultipleRootProject) + vulnerabilitiesMap, err := cfp.createVulnerabilitiesMap(res.ExtendedScanResults, res.IsMultipleRootProject) if err != nil { return } - return utils.FixVersionsMapToMd5Hash(targetFixVersionMap) + return utils.VulnerabilityDetailsToMD5Hash(vulnerabilitiesMap) } // Retrieves the ID of an open pull request by source branch name. // Returns -1 if there is no open pull request. -func (cfp *CreateFixPullRequestsCmd) getOpenPullRequestIdBySourceBranch(branchName string) (pullRequestId int64, err error) { +func (cfp *CreateFixPullRequestsCmd) getOpenPullRequestBySourceBranch(branchName string) (prInfo *vcsclient.PullRequestInfo, err error) { list, err := cfp.details.Client().ListOpenPullRequests(context.Background(), cfp.details.RepoOwner, cfp.details.RepoName) if err != nil { return } for _, pr := range list { if pr.Source.Name == branchName { - return pr.ID, nil + log.Debug("Found pull request from source branch ", branchName) + return &pr, nil } } - return PullRequestNotFound, nil + log.Debug("No pull request found from source branch ", branchName) + return nil, nil } -func (cfp *CreateFixPullRequestsCmd) aggregateFixAndOpenPullRequest(vulnerabilities map[string]*utils.VulnerabilityDetails, aggregatedFixBranchName string, existingPullRequestId int64) (err error) { +func (cfp *CreateFixPullRequestsCmd) aggregateFixAndOpenPullRequest(vulnerabilities map[string]*utils.VulnerabilityDetails, aggregatedFixBranchName string, pullRequestInfo *vcsclient.PullRequestInfo) (err error) { var errList strings.Builder var atLeastOneFix bool log.Info("-----------------------------------------------------------------") log.Info("Starting aggregated dependencies fix") - log.Debug("Creating branch", aggregatedFixBranchName, "...") if err = cfp.gitManager.CreateBranchAndCheckout(aggregatedFixBranchName); err != nil { return } @@ -435,6 +446,8 @@ func (cfp *CreateFixPullRequestsCmd) aggregateFixAndOpenPullRequest(vulnerabilit for _, vulnDetails := range vulnerabilities { if err = cfp.updatePackageToFixedVersion(vulnDetails); err != nil { cfp.handleUpdatePackageErrors(err, errList) + // Clear the error after handling it. + err = nil } else { vulnDetails.FixedVersions = []string{vulnDetails.FixVersion} fixedVulnerabilities = append(fixedVulnerabilities, *vulnDetails.VulnerabilityOrViolationRow) @@ -443,22 +456,23 @@ func (cfp *CreateFixPullRequestsCmd) aggregateFixAndOpenPullRequest(vulnerabilit } } if atLeastOneFix { - if err = cfp.openAggregatedPullRequest(aggregatedFixBranchName, existingPullRequestId, fixedVulnerabilities); err != nil { + if err = cfp.openAggregatedPullRequest(aggregatedFixBranchName, pullRequestInfo, fixedVulnerabilities); err != nil { return fmt.Errorf("failed while creating aggreagted pull request. Error: \n%s", err.Error()) } } logAppendedErrorsIfExists(errList) log.Info("-----------------------------------------------------------------") - return err + return } -// Compares the scan results of a remote branch by computing the MD5 hash of the created FixVersionMap. -func (cfp *CreateFixPullRequestsCmd) compareScanResults(fixVersionsMap map[string]*utils.VulnerabilityDetails, aggregatedFixBranchName string) (identical bool, err error) { - currentScanHash, err := utils.FixVersionsMapToMd5Hash(fixVersionsMap) +// Performs a comparison of the Xray scan results between an existing pull request's remote source branch +// and the current source branch to identify any differences. +func (cfp *CreateFixPullRequestsCmd) compareScanResults(vulnerabilityDetails map[string]*utils.VulnerabilityDetails, prInfo *vcsclient.PullRequestInfo) (identical bool, err error) { + currentScanHash, err := utils.VulnerabilityDetailsToMD5Hash(vulnerabilityDetails) if err != nil { return } - remoteBranchScanHash, err := cfp.getRemoteBranchScanHash(aggregatedFixBranchName) + remoteBranchScanHash, err := cfp.getRemoteBranchScanHash(prInfo.Target.Name) if err != nil { return } diff --git a/commands/createfixpullrequests_test.go b/commands/createfixpullrequests_test.go index d55d73524..709a58b64 100644 --- a/commands/createfixpullrequests_test.go +++ b/commands/createfixpullrequests_test.go @@ -1,19 +1,30 @@ package commands import ( + "context" + "fmt" + "github.com/jfrog/frogbot/commands/utils" + "github.com/jfrog/froggit-go/vcsclient" + "github.com/jfrog/froggit-go/vcsutils" + "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" "github.com/jfrog/jfrog-cli-core/v2/xray/formats" xrayutils "github.com/jfrog/jfrog-cli-core/v2/xray/utils" "github.com/jfrog/jfrog-client-go/utils/io/fileutils" "github.com/jfrog/jfrog-client-go/utils/log" + "github.com/jfrog/jfrog-client-go/xray/services" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "net/http/httptest" "os" + "os/exec" "path/filepath" + "runtime" + "strings" "testing" +) - "github.com/jfrog/frogbot/commands/utils" - "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" - "github.com/jfrog/jfrog-client-go/xray/services" +const ( + aggregatedBranchConstName = "frogbot-update-dependencies-0" ) var testPackagesData = []struct { @@ -56,6 +67,179 @@ var testPackagesData = []struct { }, } +// These tests utilize pre-prepared git folders that correspond to specific use cases. +// To modify these tests, you can change the folder name from "git" +// to ".git",make the necessary changes,and then rename it back to "git". +// Afterward, add the changes to the main repository. +// It is crucial to maintain the desired state of the git repository. +// Make sure it is checked out to the main branch, replicating an actual run. +func TestCreateFixPullRequestsCmd_Run(t *testing.T) { + tests := []struct { + repoName string + testDir string + configPath string + expectedBranchName string + expectedDiff string + dependencyFileName string + aggregateFixes bool + }{ + { + repoName: "aggregate", + testDir: "createfixpullrequests/aggregate", + expectedBranchName: aggregatedBranchConstName, + expectedDiff: "diff --git a/package.json b/package.json\nindex 8f0367a..62133f2 100644\n--- a/package.json\n+++ b/package.json\n@@ -14,15 +14,16 @@\n \"json5\": \"^1.0.2\",\n \"jsonwebtoken\": \"^9.0.0\",\n \"ldapjs\": \"^3.0.1\",\n+ \"lodash\": \"4.16.4\",\n+ \"moment\": \"2.29.1\",\n+ \"mongoose\": \"^5.13.15\",\n+ \"mpath\": \"^0.8.4\",\n \"primeflex\": \"^3.3.0\",\n \"primeicons\": \"^6.0.1\",\n \"primereact\": \"^9.2.1\",\n \"sass\": \"^1.59.3\",\n \"scss\": \"^0.2.4\",\n \"typescript\": \"5.0.2\",\n- \"uuid\": \"^9.0.0\",\n- \"moment\": \"2.29.1\",\n- \"lodash\": \"4.16.4\",\n- \"mongoose\":\"5.10.10\"\n+ \"uuid\": \"^9.0.0\"\n }\n-}\n\\ No newline at end of file\n+}\n", + dependencyFileName: "package.json", + aggregateFixes: true, + }, + { + repoName: "aggregate-no-vul", + testDir: "createfixpullrequests/aggregate-no-vul", + expectedBranchName: "main", // No branch should be created + expectedDiff: "", + dependencyFileName: "package.json", + aggregateFixes: true, + }, + { + repoName: "aggregate-cant-fix", + testDir: "createfixpullrequests/aggregate-cant-fix", + expectedBranchName: aggregatedBranchConstName, + expectedDiff: "", // No diff expected + dependencyFileName: "setup.py", // This is a build tool dependency which should not be fixed + aggregateFixes: true, + }, + { + repoName: "non-aggregate", + testDir: "createfixpullrequests/non-aggregate", + expectedBranchName: "frogbot-mongoose-8ed82a82c26133b1bcf556d6dc2db0d3", + expectedDiff: "diff --git a/package.json b/package.json\nindex e016d1b..a4bf5ed 100644\n--- a/package.json\n+++ b/package.json\n@@ -9,6 +9,6 @@\n \"author\": \"\",\n \"license\": \"ISC\",\n \"dependencies\": {\n- \"mongoose\":\"5.10.10\"\n+ \"mongoose\": \"^5.13.15\"\n }\n-}\n\\ No newline at end of file\n+}\n", + dependencyFileName: "package.json", + aggregateFixes: false, + }, + } + for _, test := range tests { + t.Run(test.repoName, func(t *testing.T) { + // Prepare + serverParams, restoreEnv := verifyEnv(t) + var port string + server := httptest.NewServer(createHttpHandler(t, &port, test.repoName)) + port = server.URL[strings.LastIndex(server.URL, ":")+1:] + gitTestParams := utils.Git{ + ClientInfo: utils.ClientInfo{ + GitProvider: vcsutils.GitHub, + VcsInfo: vcsclient.VcsInfo{ + Token: "123456", + APIEndpoint: server.URL, + }, + RepoName: test.repoName, + }, + AggregateFixes: test.aggregateFixes, + } + client, err := vcsclient.NewClientBuilder(vcsutils.GitHub).ApiEndpoint(server.URL).Token("123456").Build() + assert.NoError(t, err) + + // Read config or resolve to default + var configData []byte + if test.configPath != "" { + configData, err = utils.ReadConfigFromFileSystem(test.configPath) + assert.NoError(t, err) + } else { + configData = []byte{} + // Manual set of "JF_GIT_BASE_BRANCH" + gitTestParams.Branches = []string{"main"} + } + + envPath, cleanUp := utils.PrepareTestEnvironment(t, "", test.testDir) + defer cleanUp() + configAggregator, err := utils.BuildRepoAggregator(configData, &gitTestParams, &serverParams) + assert.NoError(t, err) + // Run + var cmd = CreateFixPullRequestsCmd{dryRun: true, dryRunRepoPath: envPath} + err = cmd.Run(configAggregator, client) + // Validate + assert.NoError(t, err) + resultDiff, err := verifyDependencyFileDiff("main", test.expectedBranchName, test.dependencyFileName) + assert.NoError(t, err) + assert.Equal(t, test.expectedDiff, string(resultDiff)) + // Defers + restoreEnv() + server.Close() + }) + } +} + +// Tests the lifecycle of aggregated pull request +// No open pull request -> Open +// If Pull request already active, compare scan results for current and remote branch +// Same scan results -> do nothing. +// Different scan results -> Update the pull request branch & body. +func TestAggregatePullRequestLifecycle(t *testing.T) { + mockPrId := int64(1) + tests := []struct { + repoName string + testDir string + expectedUpdate bool + mockPullRequestResponse []vcsclient.PullRequestInfo + }{ + { + repoName: "aggregate-dont-update-pr", + testDir: "createfixpullrequests/aggregate-dont-update-pr", + expectedUpdate: false, + mockPullRequestResponse: []vcsclient.PullRequestInfo{{ID: mockPrId, + Source: vcsclient.BranchInfo{Name: aggregatedBranchConstName}, + Target: vcsclient.BranchInfo{Name: "main"}, + }}, + }, + { + repoName: "aggregate-update-pr", + testDir: "createfixpullrequests/aggregate-update-pr", + expectedUpdate: true, + mockPullRequestResponse: []vcsclient.PullRequestInfo{{ID: mockPrId, + Source: vcsclient.BranchInfo{Name: aggregatedBranchConstName}, + Target: vcsclient.BranchInfo{Name: "remoteMain"}, + }}, + }, + } + for _, test := range tests { + t.Run(test.repoName, func(t *testing.T) { + // Prepare + serverParams, restoreEnv := verifyEnv(t) + defer restoreEnv() + var port string + server := httptest.NewServer(createHttpHandler(t, &port, test.repoName)) + defer func() { + server.Close() + }() + port = server.URL[strings.LastIndex(server.URL, ":")+1:] + gitTestParams := utils.Git{ClientInfo: utils.ClientInfo{ + GitProvider: vcsutils.GitHub, + VcsInfo: vcsclient.VcsInfo{ + Token: "123456", + APIEndpoint: server.URL, + }, RepoName: test.repoName, + }, AggregateFixes: true, + } + // Set up mock VCS responses + client := mockVcsClient(t) + client.EXPECT().ListOpenPullRequests(context.Background(), "", gitTestParams.RepoName).Return(test.mockPullRequestResponse, nil) + if test.expectedUpdate { + client.EXPECT().UpdatePullRequest(context.Background(), "", gitTestParams.RepoName, utils.AggregatedPullRequestTitleTemplate, "", "", int(mockPrId), vcsutils.Open).Return(nil) + } + // Load default configurations + var configData []byte + // Manual set of "JF_GIT_BASE_BRANCH" + gitTestParams.Branches = []string{"main"} + envPath, cleanUp := utils.PrepareTestEnvironment(t, "", test.testDir) + defer cleanUp() + configAggregator, err := utils.BuildRepoAggregator(configData, &gitTestParams, &serverParams) + assert.NoError(t, err) + // Run + var cmd = CreateFixPullRequestsCmd{dryRun: true, dryRunRepoPath: envPath} + err = cmd.Run(configAggregator, client) + assert.NoError(t, err) + }) + } +} + // / 1.0 --> 1.0 ≤ x // / (,1.0] --> x ≤ 1.0 // / (,1.0) --> x < 1.0 @@ -123,10 +307,10 @@ func TestPackageTypeFromScan(t *testing.T) { projectPath := filepath.Join("testdata", "projects", pkg.packageType.ToString()) t.Run(pkg.packageType.ToString(), func(t *testing.T) { tmpDir, err := fileutils.CreateTempDir() - assert.NoError(t, err) defer func() { - assert.NoError(t, fileutils.RemoveTempDir(tmpDir)) + err = fileutils.RemoveTempDir(tmpDir) }() + assert.NoError(t, err) assert.NoError(t, fileutils.CopyDir(projectPath, tmpDir, true, nil)) if pkg.packageType == coreutils.Gradle { assert.NoError(t, os.Chmod(filepath.Join(tmpDir, "gradlew"), 0777)) @@ -325,3 +509,17 @@ func verifyTechnologyNaming(t *testing.T, scanResponse []services.ScanResponse, } } } + +// Executing git diff to ensure that the intended changes to the dependent file have been made +func verifyDependencyFileDiff(baseBranch string, fixBranch string, dependencyFilename string) ([]byte, error) { + var cmd *exec.Cmd + log.Debug(fmt.Sprintf("Checking differance in the file %s between branches %s and %s", dependencyFilename, baseBranch, fixBranch)) + // Suppress condition always false warning + //goland:noinspection ALL + if runtime.GOOS == "windows" { + cmd = exec.Command("cmd", "/c", "git", "diff", baseBranch, fixBranch, "--", dependencyFilename) + } else { + cmd = exec.Command("git", "diff", baseBranch, fixBranch, "--", dependencyFilename) + } + return cmd.Output() +} diff --git a/commands/scanandfixrepos.go b/commands/scanandfixrepos.go index 885616582..1d166efb5 100644 --- a/commands/scanandfixrepos.go +++ b/commands/scanandfixrepos.go @@ -5,7 +5,6 @@ import ( "github.com/jfrog/frogbot/commands/utils" "github.com/jfrog/froggit-go/vcsclient" "github.com/jfrog/jfrog-client-go/utils/log" - "path/filepath" ) type ScanAndFixRepositories struct { @@ -43,13 +42,10 @@ func (saf *ScanAndFixRepositories) scanAndFixSingleRepository(repoConfig *utils. func (saf *ScanAndFixRepositories) downloadAndRunScanAndFix(repository *utils.Repository, branch string, client vcsclient.VcsClient) (err error) { wd, cleanup, err := utils.DownloadRepoToTempDir(client, branch, &repository.Git) if err != nil { - return err + return } defer func() { - e := cleanup() - if err == nil { - err = e - } + err = errors.Join(err, cleanup()) }() restoreDir, err := utils.Chdir(wd) @@ -57,12 +53,9 @@ func (saf *ScanAndFixRepositories) downloadAndRunScanAndFix(repository *utils.Re return err } defer func() { - e := restoreDir() - if err == nil { - err = e - } + err = errors.Join(err, restoreDir()) }() - cfp := CreateFixPullRequestsCmd{dryRun: saf.dryRun, dryRunRepoPath: filepath.Join(saf.dryRunRepoPath, repository.RepoName)} + cfp := CreateFixPullRequestsCmd{dryRun: saf.dryRun, dryRunRepoPath: saf.dryRunRepoPath} return cfp.scanAndFixRepository(repository, branch, client) } diff --git a/commands/scanandfixrepos_test.go b/commands/scanandfixrepos_test.go index 4fdc28f53..646865a32 100644 --- a/commands/scanandfixrepos_test.go +++ b/commands/scanandfixrepos_test.go @@ -37,12 +37,14 @@ func TestScanAndFixRepos(t *testing.T) { defer server.Close() port = server.URL[strings.LastIndex(server.URL, ":")+1:] - gitTestParams := &utils.ClientInfo{ - GitProvider: vcsutils.GitHub, - RepoOwner: "jfrog", - VcsInfo: vcsclient.VcsInfo{ - Token: "123456", - APIEndpoint: server.URL, + gitTestParams := utils.Git{ + ClientInfo: utils.ClientInfo{ + GitProvider: vcsutils.GitHub, + RepoOwner: "jfrog", + VcsInfo: vcsclient.VcsInfo{ + Token: "123456", + APIEndpoint: server.URL, + }, }, } @@ -56,10 +58,10 @@ func TestScanAndFixRepos(t *testing.T) { defer cleanUp() createReposGitEnvironment(t, tmpDir, port, testRepositories...) - configAggregator, err := utils.BuildRepoAggregator(configData, gitTestParams, &serverParams) + configAggregator, err := utils.BuildRepoAggregator(configData, &gitTestParams, &serverParams) assert.NoError(t, err) - var cmd = ScanAndFixRepositories{dryRun: true, dryRunRepoPath: filepath.Join("testdata", "scanandfixrepos")} + var cmd = ScanAndFixRepositories{dryRun: true, dryRunRepoPath: tmpDir} assert.NoError(t, cmd.Run(configAggregator, client)) } diff --git a/commands/scanpullrequest.go b/commands/scanpullrequest.go index 0d20f0a0e..d9133151b 100644 --- a/commands/scanpullrequest.go +++ b/commands/scanpullrequest.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "github.com/go-git/go-git/v5" "github.com/jfrog/gofrog/datastructures" "os" "os/exec" @@ -40,9 +41,32 @@ func (cmd *ScanPullRequestCmd) Run(configAggregator utils.RepoAggregator, client return err } } + if err := cmd.verifyDifferentBranches(repoConfig); err != nil { + return err + } return scanPullRequest(repoConfig, client) } +// Verifies current branch and target branch are not the same. +// The Current branch is the branch the action is triggered on. +// The Target branch is the branch to open pull request to. +func (cmd *ScanPullRequestCmd) verifyDifferentBranches(repoConfig *utils.Repository) error { + repo, err := git.PlainOpen(".") + if err != nil { + return err + } + ref, err := repo.Head() + if err != nil { + return err + } + currentBranch := ref.Name().Short() + defaultBranch := repoConfig.Branches[0] + if currentBranch == defaultBranch { + return fmt.Errorf(utils.ErrScanPullRequestSameBranches, currentBranch) + } + return nil +} + // By default, includeAllVulnerabilities is set to false and the scan goes as follows: // a. Audit the dependencies of the source and the target branches. // b. Compare the vulnerabilities found in source and target branches, and show only the new vulnerabilities added by the pull request. @@ -77,6 +101,7 @@ func scanPullRequest(repoConfig *utils.Repository, client vcsclient.VcsClient) e func auditPullRequest(repoConfig *utils.Repository, client vcsclient.VcsClient) ([]formats.VulnerabilityOrViolationRow, []formats.IacSecretsRow, error) { var vulnerabilitiesRows []formats.VulnerabilityOrViolationRow var iacRows []formats.IacSecretsRow + targetBranch := repoConfig.Branches[0] for i := range repoConfig.Projects { scanDetails := utils.NewScanDetails(client, &repoConfig.Server, &repoConfig.Git). SetProject(&repoConfig.Projects[i]). @@ -100,7 +125,7 @@ func auditPullRequest(repoConfig *utils.Repository, client vcsclient.VcsClient) continue } // Audit target code - scanDetails.SetFailOnInstallationErrors(*repoConfig.FailOnSecurityIssues).SetBranch(repoConfig.Branches[0]) + scanDetails.SetFailOnInstallationErrors(*repoConfig.FailOnSecurityIssues).SetBranch(targetBranch) targetResults, err := auditTarget(scanDetails) if err != nil { return nil, nil, err diff --git a/commands/scanpullrequest_test.go b/commands/scanpullrequest_test.go index f60b7ca9c..1926cb766 100644 --- a/commands/scanpullrequest_test.go +++ b/commands/scanpullrequest_test.go @@ -33,6 +33,7 @@ const ( testCleanProjConfigPath = "testdata/config/frogbot-config-clean-test-proj.yml" testProjConfigPath = "testdata/config/frogbot-config-test-proj.yml" testProjConfigPathNoFail = "testdata/config/frogbot-config-test-proj-no-fail.yml" + testSameBranchProjConfigPath = "testdata/config/frogbot-config-test-same-branch-fail.yml" ) func TestCreateVulnerabilitiesRows(t *testing.T) { @@ -463,6 +464,10 @@ func TestRunInstallIfNeeded(t *testing.T) { assert.NoError(t, runInstallIfNeeded(&scanSetup, "")) tmpDir, err := fileutils.CreateTempDir() assert.NoError(t, err) + defer func() { + err = fileutils.RemoveTempDir(tmpDir) + assert.NoError(t, err) + }() params := &utils.Project{ InstallCommandName: "echo", InstallCommandArgs: []string{"Hello"}, @@ -488,6 +493,32 @@ func TestScanPullRequest(t *testing.T) { testScanPullRequest(t, testProjConfigPath, "test-proj", true) } +func TestScanPullRequestSameBranchFail(t *testing.T) { + params, restoreEnv := verifyEnv(t) + defer restoreEnv() + + // Create mock GitLab server + projectName := "test-same-branch-fail" + + server := httptest.NewServer(createGitLabHandler(t, projectName)) + defer server.Close() + + configAggregator, client := prepareConfigAndClient(t, testSameBranchProjConfigPath, server, params) + _, cleanUp := utils.PrepareTestEnvironment(t, projectName, "scanpullrequest") + defer cleanUp() + + // Run "frogbot scan pull request" + var scanPullRequest ScanPullRequestCmd + err := scanPullRequest.Run(configAggregator, client) + exceptedError := fmt.Errorf(utils.ErrScanPullRequestSameBranches, "main") + assert.Equal(t, exceptedError, err) + + // Check env sanitize + err = utils.SanitizeEnv() + assert.NoError(t, err) + utils.AssertSanitizedEnv(t) +} + func TestScanPullRequestNoFail(t *testing.T) { testScanPullRequest(t, testProjConfigPathNoFail, "test-proj", false) } @@ -591,19 +622,21 @@ func TestVerifyGitHubFrogbotEnvironmentOnPrem(t *testing.T) { } func prepareConfigAndClient(t *testing.T, configPath string, server *httptest.Server, serverParams coreconfig.ServerDetails) (utils.RepoAggregator, vcsclient.VcsClient) { - git := &utils.ClientInfo{ - GitProvider: vcsutils.GitHub, - RepoOwner: "jfrog", - VcsInfo: vcsclient.VcsInfo{ - Token: "123456", - APIEndpoint: server.URL, + gitTestParams := &utils.Git{ + ClientInfo: utils.ClientInfo{ + GitProvider: vcsutils.GitHub, + RepoOwner: "jfrog", + VcsInfo: vcsclient.VcsInfo{ + Token: "123456", + APIEndpoint: server.URL, + }, }, } utils.SetEnvAndAssert(t, map[string]string{utils.GitPullRequestIDEnv: "1"}) configData, err := utils.ReadConfigFromFileSystem(configPath) assert.NoError(t, err) - configAggregator, err := utils.BuildRepoAggregator(configData, git, &serverParams) + configAggregator, err := utils.BuildRepoAggregator(configData, gitTestParams, &serverParams) assert.NoError(t, err) client, err := vcsclient.NewClientBuilder(vcsutils.GitLab).ApiEndpoint(server.URL).Token("123456").Build() @@ -688,10 +721,11 @@ func verifyEnv(t *testing.T) (server coreconfig.ServerDetails, restoreFunc func( server.AccessToken = token restoreFunc = func() { utils.SetEnvAndAssert(t, map[string]string{ - utils.JFrogUrlEnv: url, - utils.JFrogTokenEnv: token, - utils.JFrogUserEnv: username, - utils.JFrogPasswordEnv: password, + utils.JFrogUrlEnv: url, + utils.JFrogTokenEnv: token, + utils.JFrogUserEnv: username, + utils.JFrogPasswordEnv: password, + utils.GitAggregateFixesEnv: "FALSE", }) } return diff --git a/commands/testdata/config/frogbot-config-test-proj-no-vul.yml b/commands/testdata/config/frogbot-config-test-proj-no-vul.yml new file mode 100644 index 000000000..89a964d43 --- /dev/null +++ b/commands/testdata/config/frogbot-config-test-proj-no-vul.yml @@ -0,0 +1,9 @@ +- params: + git: + repoName: test-proj-no-vul + branches: + - master + scan: + projects: + - workingDirs: + - . diff --git a/commands/testdata/config/frogbot-config-test-same-branch-fail.yml b/commands/testdata/config/frogbot-config-test-same-branch-fail.yml new file mode 100644 index 000000000..309cd93fa --- /dev/null +++ b/commands/testdata/config/frogbot-config-test-same-branch-fail.yml @@ -0,0 +1,9 @@ +- params: + git: + repoName: test-same-branch-fail + branches: + - main + scan: + projects: + - workingDirs: + - . diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/COMMIT_EDITMSG b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/COMMIT_EDITMSG new file mode 100644 index 000000000..4979bfd49 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +only non fixable vul diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/HEAD b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/config b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/description b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/index b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/index new file mode 100644 index 0000000000000000000000000000000000000000..2cd81374974cdb0ec4f0b6206fdde7fc613b36dd GIT binary patch literal 137 zcmZ?q402{*U|<4b#*|qXth99PxnVRT0|P&kReCA|L*o*l^mm{d5g=Y<>hg>u;Bda3 zyxrI1d^@)0+g`q%&%jZfT2fk|S5V2o5EA6-3REY_V5nfg6;NGbak527=w(^>BRg2rPIw<7Ht5;FDaG) literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/info/exclude b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/HEAD b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/HEAD new file mode 100644 index 000000000..24f7b3230 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/HEAD @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 0f92c954fd5509efcd33e5428eb612e70fbb51f4 delarea 1686141162 +0300 commit (initial): init +0f92c954fd5509efcd33e5428eb612e70fbb51f4 8f2ca47cd37b1e0084d5bf87077937dbf249de8a delarea 1687867502 +0300 commit: only non fixable vul diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/refs/heads/main new file mode 100644 index 000000000..24f7b3230 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/logs/refs/heads/main @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 0f92c954fd5509efcd33e5428eb612e70fbb51f4 delarea 1686141162 +0300 commit (initial): init +0f92c954fd5509efcd33e5428eb612e70fbb51f4 8f2ca47cd37b1e0084d5bf87077937dbf249de8a delarea 1687867502 +0300 commit: only non fixable vul diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/0f/92c954fd5509efcd33e5428eb612e70fbb51f4 b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/0f/92c954fd5509efcd33e5428eb612e70fbb51f4 new file mode 100644 index 000000000..c9c99bd00 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/0f/92c954fd5509efcd33e5428eb612e70fbb51f4 @@ -0,0 +1,2 @@ +xM +B!Ʈ̃*D~qM{[vZ XC29F.qlcfY1` +_u%~#WV),k?%ڻ-&(2 \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/35/44e60850c36f3e1f3ef5c70eb8b56f3dd3db6f b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/35/44e60850c36f3e1f3ef5c70eb8b56f3dd3db6f new file mode 100644 index 0000000000000000000000000000000000000000..3f7adde4f0a117f7b709ce7a438c7c494c0622cc GIT binary patch literal 142 zcmV;90CE3#0WFNn4uUWcMP2tR8a8NB8bM>+^h=B(0}f4NUrqQ0~j(8a>weNXtB9bqxI)&1q_j7!FmjXCS9KGs|1uEarn0P99Guc)m>qW}N^ literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/50/7b7438c9841212e97657e20e41ef932fd33502 b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/50/7b7438c9841212e97657e20e41ef932fd33502 new file mode 100644 index 0000000000000000000000000000000000000000..881c1a2736281115e08405fcda50e8bd1222c646 GIT binary patch literal 53 zcmb#28TX-YeI>^YSP5fPtG$TTg?&;$!v^6Qm?e}+5sg}iO$OG97dKhYIc?a=V@q< zlC#rdRoeT#Z7_2kFu|F>sm^?T%GPeD(v}P8Dflq?F%CyGh-#$cTj&3jYHR(%+E$Rq PC*{iU-mCfnr}RYtRs>WQ literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/d7/c187b9bba3e43f1d0b8c45a3856ebee13b30d7 b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/d7/c187b9bba3e43f1d0b8c45a3856ebee13b30d7 new file mode 100644 index 000000000..690c8243e --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-cant-fix/git/objects/d7/c187b9bba3e43f1d0b8c45a3856ebee13b30d7 @@ -0,0 +1,3 @@ +x- D]jKin:3gjxByo7CR޸[{X֌q0*@ս*/x +)vb%kۈDL]p +ؑRшm,'!u2fcTV%JvL`1&PVoiRr1jIr+)idRfK!c?>{vCTMDJd<&x?=6Rc-n#ZVc zx|26z3&WFnvTq}7@2NHEs|XzU!oUMH4`LM1Y6gaoAXir)CCOlRTR-(9!{zLcC*~cJoX5D<-TRi?gzk!I)d2H9Nh|;W literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/info/exclude b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/HEAD b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/HEAD new file mode 100644 index 000000000..8d00e94c8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/HEAD @@ -0,0 +1,21 @@ +0000000000000000000000000000000000000000 3cdcbd6c5243406e1cba7cb773ac691ef46c6223 delarea 1687873552 +0300 commit (initial): init +3cdcbd6c5243406e1cba7cb773ac691ef46c6223 3cdcbd6c5243406e1cba7cb773ac691ef46c6223 delarea 1687873561 +0300 checkout: moving from main to frogbot-update-depedencies-0 +3cdcbd6c5243406e1cba7cb773ac691ef46c6223 a6ac563174f69aeeda08c168df3ff3e9ec83c542 delarea 1687873569 +0300 commit: just empty +a6ac563174f69aeeda08c168df3ff3e9ec83c542 3cdcbd6c5243406e1cba7cb773ac691ef46c6223 delarea 1687873572 +0300 checkout: moving from frogbot-update-depedencies-0 to main +3cdcbd6c5243406e1cba7cb773ac691ef46c6223 df038a44930d2bbd645c1d71e6e318c33de56e28 delarea 1687873662 +0300 commit: change repo name +df038a44930d2bbd645c1d71e6e318c33de56e28 a6ac563174f69aeeda08c168df3ff3e9ec83c542 delarea 1687873667 +0300 checkout: moving from main to frogbot-update-depedencies-0 +a6ac563174f69aeeda08c168df3ff3e9ec83c542 5a322ee37b9de0a98c723d7ac4cb580a36d0651b delarea 1687873686 +0300 commit: update name +5a322ee37b9de0a98c723d7ac4cb580a36d0651b df038a44930d2bbd645c1d71e6e318c33de56e28 delarea 1687873688 +0300 checkout: moving from frogbot-update-depedencies-0 to main +df038a44930d2bbd645c1d71e6e318c33de56e28 5a322ee37b9de0a98c723d7ac4cb580a36d0651b delarea 1687873794 +0300 checkout: moving from main to frogbot-update-depedencies-0 +5a322ee37b9de0a98c723d7ac4cb580a36d0651b 5a322ee37b9de0a98c723d7ac4cb580a36d0651b delarea 1687873810 +0300 checkout: moving from frogbot-update-depedencies-0 to frogbot-update-dependencies-0 +5a322ee37b9de0a98c723d7ac4cb580a36d0651b df038a44930d2bbd645c1d71e6e318c33de56e28 delarea 1687873818 +0300 checkout: moving from frogbot-update-dependencies-0 to main +df038a44930d2bbd645c1d71e6e318c33de56e28 da8ddd8a58701fce64f21b0944e2b73c1031adf4 delarea 1688039501 +0300 commit: add lock +da8ddd8a58701fce64f21b0944e2b73c1031adf4 5a322ee37b9de0a98c723d7ac4cb580a36d0651b delarea 1688039580 +0300 checkout: moving from main to frogbot-update-dependencies-0 +5a322ee37b9de0a98c723d7ac4cb580a36d0651b 273d9e5b579dec4cb75bade720c6521c202a3d0a delarea 1688039600 +0300 commit: add lock +273d9e5b579dec4cb75bade720c6521c202a3d0a da8ddd8a58701fce64f21b0944e2b73c1031adf4 delarea 1688039601 +0300 checkout: moving from frogbot-update-dependencies-0 to main +da8ddd8a58701fce64f21b0944e2b73c1031adf4 273d9e5b579dec4cb75bade720c6521c202a3d0a delarea 1688128531 +0300 checkout: moving from main to frogbot-update-dependencies-0 +273d9e5b579dec4cb75bade720c6521c202a3d0a da8ddd8a58701fce64f21b0944e2b73c1031adf4 delarea 1688128539 +0300 checkout: moving from frogbot-update-dependencies-0 to main +da8ddd8a58701fce64f21b0944e2b73c1031adf4 f42dd5743bb64b0337924ae667cab1cb6ea8a955 delarea 1688368777 +0300 commit: remove mquery +f42dd5743bb64b0337924ae667cab1cb6ea8a955 273d9e5b579dec4cb75bade720c6521c202a3d0a delarea 1688368780 +0300 checkout: moving from main to frogbot-update-dependencies-0 +273d9e5b579dec4cb75bade720c6521c202a3d0a badec7533fceaf2e8607d39a15cde3adb50857f1 delarea 1688368808 +0300 commit: remove mquery +badec7533fceaf2e8607d39a15cde3adb50857f1 f42dd5743bb64b0337924ae667cab1cb6ea8a955 delarea 1688368810 +0300 checkout: moving from frogbot-update-dependencies-0 to main diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/frogbot-update-dependencies-0 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/frogbot-update-dependencies-0 new file mode 100644 index 000000000..2402fe171 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/frogbot-update-dependencies-0 @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 5a322ee37b9de0a98c723d7ac4cb580a36d0651b delarea 1687873810 +0300 branch: Created from HEAD +5a322ee37b9de0a98c723d7ac4cb580a36d0651b 273d9e5b579dec4cb75bade720c6521c202a3d0a delarea 1688039600 +0300 commit: add lock +273d9e5b579dec4cb75bade720c6521c202a3d0a badec7533fceaf2e8607d39a15cde3adb50857f1 delarea 1688368808 +0300 commit: remove mquery diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/main new file mode 100644 index 000000000..28137a313 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/logs/refs/heads/main @@ -0,0 +1,4 @@ +0000000000000000000000000000000000000000 3cdcbd6c5243406e1cba7cb773ac691ef46c6223 delarea 1687873552 +0300 commit (initial): init +3cdcbd6c5243406e1cba7cb773ac691ef46c6223 df038a44930d2bbd645c1d71e6e318c33de56e28 delarea 1687873662 +0300 commit: change repo name +df038a44930d2bbd645c1d71e6e318c33de56e28 da8ddd8a58701fce64f21b0944e2b73c1031adf4 delarea 1688039501 +0300 commit: add lock +da8ddd8a58701fce64f21b0944e2b73c1031adf4 f42dd5743bb64b0337924ae667cab1cb6ea8a955 delarea 1688368777 +0300 commit: remove mquery diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/00/4163f8859d17d79059d6596737dfd4019aa9dc b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/00/4163f8859d17d79059d6596737dfd4019aa9dc new file mode 100644 index 0000000000000000000000000000000000000000..3f23e24e0f762f0622f4b42b661af20ae54ce8d7 GIT binary patch literal 217 zcmV;~04D!<0ZmU$O9L?w_1s@EI-urjwLz}SF0KHlh1&e4L`jO#a_BnIjLS&Fq87K)oeG-O)f%O{jN&>y9 z*4xs@%`$RUe~Z76$5@sj?;pG0b_r{T=n4Pboo5Q_JHGwxsBI>W1G5I07u$FBEg8xr TC!-oV`&xHvgVpU02kcj&L1|~w literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/12/2a0b679fab5d00a1ea3313733e402eee81233f b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/12/2a0b679fab5d00a1ea3313733e402eee81233f new file mode 100644 index 0000000000000000000000000000000000000000..06d5ce7c44800b04a211b1a5161a95f546d05e8d GIT binary patch literal 479 zcmV<50U-W(0gaPcZ{jc%h3A=H5#^Q1N?2Nnk*YzUNI=;-r98~Y#Kv)xI3acrNyUF3 z+vx&TrSfFw-kaldzBt=B-D)>(=f_J!({u_Fq~B^fz&J-3aAd%ga-+zg+-JG|Q%)UF z&PYn-pkvymU035Yh;}4Kf8M(-HJzhOy7-d*cLz4fIN z)rm=fC{tnl~z&hGQdNb$u_&MnPgq~DGCB*eWyh zCdbuBES(T-t;(gf=6I=puL(W0K4U)S1m`Iha|K4aEkl=k5duFgnkAoQAiiR`rehi zUIBlFt43Z!7MQQZB?Sd7xfn{}dsvfouw0>hHv?X=FRLZrF47g|?X{0u$9B_mn|p^1 zin6t6PXX+9`Je?Y+#(zY@1Grn3@OJ^lxbU!t%<0XBHz&mVkb_i3teQj!C*ZN@#AE%H#F^$Yw)43 zA**>YqyjmU8Y6}%b!a<=TJ61OzXit-LvkPtXz4=O)Cv|0zz0PrRf@hQ9y7*{z2tNK zjV!t_kspq`FWrEN!CAt;yW>cW1t$8@DZ#I2N-7maibgg9{b_7;9VfPnr6z)BFJLhcanw*ElZ# literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/5a/322ee37b9de0a98c723d7ac4cb580a36d0651b b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/5a/322ee37b9de0a98c723d7ac4cb580a36d0651b new file mode 100644 index 0000000000000000000000000000000000000000..b9717a6bd203a90ea5dd09f548ece20dd244943e GIT binary patch literal 152 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 literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/7e/cf1c417f2a35167b7cee8a298779a8dc053e23 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/7e/cf1c417f2a35167b7cee8a298779a8dc053e23 new file mode 100644 index 000000000..bacc00574 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/7e/cf1c417f2a35167b7cee8a298779a8dc053e23 @@ -0,0 +1 @@ +x+)JMU01`040031Q(HLNLO*cs-gf|2gOW \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/87/12df906b3842a8c9f3b4aa9ea3566b8b60e021 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/87/12df906b3842a8c9f3b4aa9ea3566b8b60e021 new file mode 100644 index 0000000000000000000000000000000000000000..56a05e03c73eced07df27ef12183a035614f6a24 GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#V_Z P_pdO{T6qTmc+?VYa4H!C literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/a6/ac563174f69aeeda08c168df3ff3e9ec83c542 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/a6/ac563174f69aeeda08c168df3ff3e9ec83c542 new file mode 100644 index 0000000000000000000000000000000000000000..726ec409c8bdb6e098b0506cccaab6eb04cb31e9 GIT binary patch literal 152 zcmV;J0B8Sr0hNwP3IZ_@06pgwxeJoL6A_vUgf# z4Vp{=610tb>$31VA;~lEv=+WTm)>rt-0DRtAETLpD34$O#9ZgM!T%}IxwbFM`q{Ye J;s*%ILltF{MBe}a literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/c5/85fe71f6275b786c8a2836cca8d10aa6480462 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/c5/85fe71f6275b786c8a2836cca8d10aa6480462 new file mode 100644 index 0000000000000000000000000000000000000000..01cb43069b73d8ea082a89f42dde9e8ff402bb2b GIT binary patch literal 87 zcmV-d0I2_X0V^p=O;xZkWiT`_Ff%bxC`e4sPE1eL&B;&B*2^l+&tph^K6mjo*`2FD t%6jukTw~&y6!A_HRWU>zgJbfK*16)>Cq!P0OgF!Og>lx(I{@*;BZXl%C^!HB literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/cb/890d58b400e49e1ded583dde26822f2410c0f4 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/cb/890d58b400e49e1ded583dde26822f2410c0f4 new file mode 100644 index 000000000..f7a0bac15 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/cb/890d58b400e49e1ded583dde26822f2410c0f4 @@ -0,0 +1,2 @@ +xMO +0v) NZ?88=IH"nQq;~7j5z (48VTXw⼪)`ifGbpT}܀) 4t!G *K_Cs 4 vsgrNߎܦ [jIfQy \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/da/8ddd8a58701fce64f21b0944e2b73c1031adf4 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/da/8ddd8a58701fce64f21b0944e2b73c1031adf4 new file mode 100644 index 000000000..aae71ede6 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/da/8ddd8a58701fce64f21b0944e2b73c1031adf4 @@ -0,0 +1 @@ +x]1 @a e2 V2I:cwli7|0B*Ʃ,GJ(¤1dݞkD@("A`h)V"9~{^m!}xUn'i$4 ur&@ \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/df/038a44930d2bbd645c1d71e6e318c33de56e28 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/df/038a44930d2bbd645c1d71e6e318c33de56e28 new file mode 100644 index 0000000000000000000000000000000000000000..3b5aaee82ba94fd54f684c22d03d4ec244171595 GIT binary patch literal 157 zcmV;O0Al}m0hP`{3d0}}K+&!}#q0}39WxpzrB@lpNz#(UAa>E)H&^KP!-Fq%+g=^K ziH2mpHZBTSQA;Vq2ycT`Fr&i~i)a?O|QcMwvJX|eWYtDMUb^T8nS$LlnnjRH) L-qid6WUoYTIpj;C literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/f4/2dd5743bb64b0337924ae667cab1cb6ea8a955 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/objects/f4/2dd5743bb64b0337924ae667cab1cb6ea8a955 new file mode 100644 index 0000000000000000000000000000000000000000..66b530784dba79cba9ecc595da18704364c62b44 GIT binary patch literal 155 zcmV;M0A&Ao0hNwP3Iib!0CV;g-UFdsMq3CWUum_?!Wa{A0`vR$goW5?Ly~9SY0Z3nmfmis)apelhiDvn@8uB;fS7i^4gRkZoooBDte=hh JE`AbuLn9+OMqU5_ literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/packed-refs b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/packed-refs new file mode 100644 index 000000000..250f18738 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/packed-refs @@ -0,0 +1 @@ +# pack-refs with: peeled fully-peeled sorted diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/frogbot-update-dependencies-0 b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/frogbot-update-dependencies-0 new file mode 100644 index 000000000..9f0d5f52b --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/frogbot-update-dependencies-0 @@ -0,0 +1 @@ +badec7533fceaf2e8607d39a15cde3adb50857f1 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/main new file mode 100644 index 000000000..c3fe00a97 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/git/refs/heads/main @@ -0,0 +1 @@ +f42dd5743bb64b0337924ae667cab1cb6ea8a955 diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package-lock.json b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package-lock.json new file mode 100644 index 000000000..122a0b679 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package-lock.json @@ -0,0 +1,33 @@ +{ + "name": "aggregate-dont-update-pr", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "aggregate-dont-update-pr", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "mpath": "0.7.0", + "uuid": "^9.0.0" + } + }, + "node_modules/mpath": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", + "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + } + } +} diff --git a/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package.json b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package.json new file mode 100644 index 000000000..cb890d58b --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-dont-update-pr/package.json @@ -0,0 +1,15 @@ +{ + "name": "aggregate-dont-update-pr", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no tsest specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "uuid": "^9.0.0", + "mpath": "0.7.0" + } +} \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/COMMIT_EDITMSG b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/COMMIT_EDITMSG new file mode 100644 index 000000000..b1b716105 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +init diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/HEAD b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/config b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/description b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/index b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/index new file mode 100644 index 0000000000000000000000000000000000000000..f10258e09da28542ac67a492e676be708037b627 GIT binary patch literal 145 zcmZ?q402{*U|<4b#*_v}BhE9wF2HC;1_mL 1686127433 +0300 commit (initial): init diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/logs/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/logs/refs/heads/main new file mode 100644 index 000000000..58827056f --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/logs/refs/heads/main @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 6ea5e6ad52f49a83069bc8b09413433004ce9738 delarea 1686127433 +0300 commit (initial): init diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/49/a00e6f645bdc847b9d91154e45f851d40232b4 b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/49/a00e6f645bdc847b9d91154e45f851d40232b4 new file mode 100644 index 0000000000000000000000000000000000000000..cd266b06bbbf29aed45490d6499c7cf251c79042 GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#W9Vm2U+Z`Apuxd?2ijRz PoSZ(f`}hg~g7OngX-F8S literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/6e/a5e6ad52f49a83069bc8b09413433004ce9738 b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/6e/a5e6ad52f49a83069bc8b09413433004ce9738 new file mode 100644 index 000000000..4e132d916 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/6e/a5e6ad52f49a83069bc8b09413433004ce9738 @@ -0,0 +1,2 @@ +xI +1@Q9EJ*CWPH@ oo_ϣ?)EDqձM%i+ea[¨Ng=DŽ"{*߸K#8ATG=^KSR?N1 \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/8f/0367ad4ed1c130c1bec08705a8c997918bc7a8 b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/8f/0367ad4ed1c130c1bec08705a8c997918bc7a8 new file mode 100644 index 000000000..8ffec7b3b --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/objects/8f/0367ad4ed1c130c1bec08705a8c997918bc7a8 @@ -0,0 +1 @@ +x]QN0ܯr &}8pZUrmxB꿳pٙiܱU0VCfh[PGWh"Se/a`2 i>yГA\C|v ;d9tkfO +h6NT`eAs#C^+ Ƨoc: H7{EAj&%#/$`{[j(KYfnP.;r!FX:Bt~Yca4PDRMQ2B5>+J|r)3_hbmQ5)՟"=*^׭8t˂MB%UMοP! \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/git/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/refs/heads/main new file mode 100644 index 000000000..c3f6edebe --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/git/refs/heads/main @@ -0,0 +1 @@ +6ea5e6ad52f49a83069bc8b09413433004ce9738 diff --git a/commands/testdata/createfixpullrequests/aggregate-no-vul/package.json b/commands/testdata/createfixpullrequests/aggregate-no-vul/package.json new file mode 100644 index 000000000..a1cb6f66a --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-no-vul/package.json @@ -0,0 +1,14 @@ +{ + "name": "aggregate-no-vul", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no tsest specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "mongoose":"5.13.15" + } +} \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/COMMIT_EDITMSG b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/COMMIT_EDITMSG new file mode 100644 index 000000000..50b703043 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +add lock diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/HEAD b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/config b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/description b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/index b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/index new file mode 100644 index 0000000000000000000000000000000000000000..fba1141fc66062c733c4d01b7153fe323ae5d3f5 GIT binary patch literal 225 zcmZ?q402{*U|<5_lzDq%^gh|>!DvPX1|g=ZGg}!L8kaCIFn$NB5n*7^op|8FqV2*K z6_$JFh&157az}Q9!F17(#+vU4fJ&gOP#(7ytg#YrI!qJCze8 jsJ?pDK6#FLahDC4TU-k&6{IVwPdqt#=6PC+=9YE<4DwMj literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/info/exclude b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/HEAD b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/HEAD new file mode 100644 index 000000000..d7b01b19d --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/HEAD @@ -0,0 +1,21 @@ +0000000000000000000000000000000000000000 af0324bc49930a9d7e00235710708c27f1d3cd35 delarea 1687874376 +0300 commit (initial): init +af0324bc49930a9d7e00235710708c27f1d3cd35 af0324bc49930a9d7e00235710708c27f1d3cd35 delarea 1687874396 +0300 checkout: moving from main to frogbot-update-dependencies-0 +af0324bc49930a9d7e00235710708c27f1d3cd35 e484040f1740819be64f0d9dc271e1a69b834460 delarea 1687874448 +0300 commit: mimic open pr +e484040f1740819be64f0d9dc271e1a69b834460 af0324bc49930a9d7e00235710708c27f1d3cd35 delarea 1687874451 +0300 checkout: moving from frogbot-update-dependencies-0 to main +af0324bc49930a9d7e00235710708c27f1d3cd35 f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1687874479 +0300 commit: add new vul +f85c500e07238dcff711e5f4fe5e8906389c55ea e484040f1740819be64f0d9dc271e1a69b834460 delarea 1688021625 +0300 checkout: moving from main to frogbot-update-dependencies-0 +e484040f1740819be64f0d9dc271e1a69b834460 f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1688021648 +0300 checkout: moving from frogbot-update-dependencies-0 to main +f85c500e07238dcff711e5f4fe5e8906389c55ea f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1688021656 +0300 checkout: moving from main to main +f85c500e07238dcff711e5f4fe5e8906389c55ea e484040f1740819be64f0d9dc271e1a69b834460 delarea 1688027256 +0300 checkout: moving from main to frogbot-update-dependencies-0 +e484040f1740819be64f0d9dc271e1a69b834460 f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1688027263 +0300 checkout: moving from frogbot-update-dependencies-0 to main +f85c500e07238dcff711e5f4fe5e8906389c55ea f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1688027274 +0300 checkout: moving from main to remoteMain +f85c500e07238dcff711e5f4fe5e8906389c55ea 96189cf41a9a64f26338e7304534527aff720b55 delarea 1688027304 +0300 commit: mimic remote main +96189cf41a9a64f26338e7304534527aff720b55 f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1688027306 +0300 checkout: moving from remoteMain to main +f85c500e07238dcff711e5f4fe5e8906389c55ea b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 delarea 1688027327 +0300 commit: add packagelock +b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 e484040f1740819be64f0d9dc271e1a69b834460 delarea 1688027332 +0300 checkout: moving from main to frogbot-update-dependencies-0 +e484040f1740819be64f0d9dc271e1a69b834460 bfeba850904d0be1ffe9f2abbcb9b0f00790fc18 delarea 1688027348 +0300 commit: add lock +bfeba850904d0be1ffe9f2abbcb9b0f00790fc18 b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 delarea 1688027350 +0300 checkout: moving from frogbot-update-dependencies-0 to main +b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 bfeba850904d0be1ffe9f2abbcb9b0f00790fc18 delarea 1688027792 +0300 checkout: moving from main to frogbot-update-dependencies-0 +bfeba850904d0be1ffe9f2abbcb9b0f00790fc18 b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 delarea 1688027804 +0300 checkout: moving from frogbot-update-dependencies-0 to main +b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 96189cf41a9a64f26338e7304534527aff720b55 delarea 1688123682 +0300 checkout: moving from main to remoteMain +96189cf41a9a64f26338e7304534527aff720b55 b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 delarea 1688124508 +0300 checkout: moving from remoteMain to main diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/main new file mode 100644 index 000000000..7876cf87a --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/main @@ -0,0 +1,3 @@ +0000000000000000000000000000000000000000 af0324bc49930a9d7e00235710708c27f1d3cd35 delarea 1687874376 +0300 commit (initial): init +af0324bc49930a9d7e00235710708c27f1d3cd35 f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1687874479 +0300 commit: add new vul +f85c500e07238dcff711e5f4fe5e8906389c55ea b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 delarea 1688027327 +0300 commit: add packagelock diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/remoteMain b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/remoteMain new file mode 100644 index 000000000..3ec795936 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/logs/refs/heads/remoteMain @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 f85c500e07238dcff711e5f4fe5e8906389c55ea delarea 1688027274 +0300 branch: Created from HEAD +f85c500e07238dcff711e5f4fe5e8906389c55ea 96189cf41a9a64f26338e7304534527aff720b55 delarea 1688027304 +0300 commit: mimic remote main diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/0f/bfcbac4babd6ca6c521127abaabe1f089e5ed3 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/0f/bfcbac4babd6ca6c521127abaabe1f089e5ed3 new file mode 100644 index 000000000..87f5aab0e --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/0f/bfcbac4babd6ca6c521127abaabe1f089e5ed3 @@ -0,0 +1,2 @@ +x+)JMU0e040031Q(HLNLOO*c8pava +˽sD8]bK=b?gz}~#JI% \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/38/32481a1352307a34809d2c757b1572d2c86685 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/38/32481a1352307a34809d2c757b1572d2c86685 new file mode 100644 index 0000000000000000000000000000000000000000..26c157f005b962ca564d6247977ea0137e631161 GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#V|ce`wpjT*PU#lG6?{yZ P38`EUu3ZNJZr>1|K%Eu2 literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/3e/5d456e92b5b5c0d8073e40e2633b0162925de0 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/3e/5d456e92b5b5c0d8073e40e2633b0162925de0 new file mode 100644 index 0000000000000000000000000000000000000000..e8038276ad77e585e338b0c22e8eb7638a1a6ae0 GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#WB8@Cz4@50)|)q6;^K1y PWF>B|XE*@>eK-+MaX}Xt literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/6e/236ba620d558ca9c0d38e90e52e583dc6b068d b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/6e/236ba620d558ca9c0d38e90e52e583dc6b068d new file mode 100644 index 0000000000000000000000000000000000000000..de10053ceb4e1252a56474df85e74f72ba62c9fd GIT binary patch literal 87 zcmV-d0I2_X0V^p=O;xZkWiT`_Ff%bxC`e4sPE1eL&B;&B*2^l+&tsTwcqePK^E4r+ t;`7E+rL@H^)Z_)DDu$^0rL?{In6K8GH(cW4a|2{0Zm(xJ0RY6MA(6CTDbfG{ literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/96/189cf41a9a64f26338e7304534527aff720b55 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/96/189cf41a9a64f26338e7304534527aff720b55 new file mode 100644 index 000000000..a4e7d847d --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/96/189cf41a9a64f26338e7304534527aff720b55 @@ -0,0 +1,2 @@ +xA +0Fa94M2WI' q>iu4Y9В%mHN J bxLjNAEzfpd-%Z _9sؽzdg 921xMk8=KއyŸͦ>p 8ν9>Fr{Hz^dqYaiV?O }.u +Eqo^W(_8 \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/a7/2f5a7f57c612877bbbb2eedd38be987c17540d b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/a7/2f5a7f57c612877bbbb2eedd38be987c17540d new file mode 100644 index 000000000..9fb76001c --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/a7/2f5a7f57c612877bbbb2eedd38be987c17540d @@ -0,0 +1,6 @@ +x]O0W,}!8B@HܘmGm^|9icY6CCFp HSXWa\М]ͦylh ++)%/ +%^4U} a*) stqoLC bS +$c}CdYP9,e +8"Ѵ픚S,TH^ȶ9i=p%OI J sGw~/q.7N*N2 |my{ɪ;Ir?d5"ȻcHzԋ%+|9] +Mq;/to* \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/af/0324bc49930a9d7e00235710708c27f1d3cd35 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/af/0324bc49930a9d7e00235710708c27f1d3cd35 new file mode 100644 index 000000000..e382347ea --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/af/0324bc49930a9d7e00235710708c27f1d3cd35 @@ -0,0 +1,2 @@ +x +B!E[Bu&xD2T3Al/Z"Pd8- 3E-ɯ)q4>.C6^8.S@JphYt}M2]q0 \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/b1/0241932e37d9d3b83bcc0d9ffcc50ee52ba289 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/b1/0241932e37d9d3b83bcc0d9ffcc50ee52ba289 new file mode 100644 index 0000000000000000000000000000000000000000..ada8fd0ef3cfa959c91f415cca2af6b91f9a978b GIT binary patch literal 155 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 R(n81l>$kst`#(Z}Ji8h>;5YyP literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/cf/91c35ff27fc94a0e385eebb7df0f4db7f35947 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/cf/91c35ff27fc94a0e385eebb7df0f4db7f35947 new file mode 100644 index 000000000..18e54a591 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/cf/91c35ff27fc94a0e385eebb7df0f4db7f35947 @@ -0,0 +1,3 @@ +xMO +0vS:ihQ\%MB }wppw͓O PAsةmӲNĩe%#KE3L|f)0:!١n#EMw&,G +P(>zvIퟤkg1v0/w*IXGl3阓ɺ3gQ& \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/e4/84040f1740819be64f0d9dc271e1a69b834460 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/e4/84040f1740819be64f0d9dc271e1a69b834460 new file mode 100644 index 000000000..34651f0aa --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/e4/84040f1740819be64f0d9dc271e1a69b834460 @@ -0,0 +1,2 @@ +xI +1@Q9ETeZ[: q+:9!,$R=A!ǜQ;dӐ ȘbHlF_tR٪>vWn]cQ))ֶ軼aA \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/ea/356f69cc1d8b762acb8c1e37e420b439801683 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/ea/356f69cc1d8b762acb8c1e37e420b439801683 new file mode 100644 index 0000000000000000000000000000000000000000..3beac736fe38beb37f33f013bf83439a590def0f GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#V>mzYaQvtGlU{rlaj&=E P=l9+IIno^fj#?85ZhaWU literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/ee/bc9b16779e091b8411a80e022960650ae0d6d7 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/ee/bc9b16779e091b8411a80e022960650ae0d6d7 new file mode 100644 index 0000000000000000000000000000000000000000..88b6edd1f16325f5196b650d638770541d164bc4 GIT binary patch literal 189 zcmV;u07CzG0ZorF4}vfdg`N2omkvzYfP*Hi#=+T@rL-rUfwpOjAu;@STdIlECGXz* z?p-&U4vwdK_bvdK789}tnCN?ly$E=itxCf>woir^I!{I?Pt7Y{WmTb!AK0~L&BjP47BX(oN*0k1Hs1)c#D!AgsNpwmVgTds9B7zTOTop r!MK#q_>m-Pzx{B#Uw-W@#tvE%{@tCd2tx{1{2c#C#A5vbn*U1dLmyj_ literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/f8/5c500e07238dcff711e5f4fe5e8906389c55ea b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/f8/5c500e07238dcff711e5f4fe5e8906389c55ea new file mode 100644 index 0000000000000000000000000000000000000000..d5a15180380b7a0f460aa27af8215d8fab7ca8f3 GIT binary patch literal 154 zcmV;L0A>Gp0hNwh3c@fD0R7G>_Fs@qHti-L;#Ibrtq=N;kSgBZUcuji8AjK6el!R^ z99lI46YBc0&#Jzpf%_mjB=tsYG2jp>C-i+H_mXN$0~wJ*95m)kD7mm92I|-&W75E* zFQkP!CtJI(6^c!}C~&r~OvSFxv97n1uJZ-0HsQ>@~ literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/fa/22b783c64d2aecec0a17179d501d18dbaf00c8 b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/objects/fa/22b783c64d2aecec0a17179d501d18dbaf00c8 new file mode 100644 index 0000000000000000000000000000000000000000..30f80e64f582e489ee484594a86482b1ba7f682f GIT binary patch literal 189 zcmV;u07CzG0ZorT3&JoE#hv>pjtreNv?3y1#lhLNOPZeTiA_S1N*)|$pXdP)4JvFa*mDL`dv}F8ulf_9; z@{#Is;SZP9Y;*w-4+f$~=OYf~sG(&SYqf1aY49#=z!{WuC+u4WWeK>Dhnj`xn)-;@ rkJ`q3#y?4-a_NWb?fh$JFmzCo@bB(qgdbzD;wOGc#A5vbn<+~1tQT9O literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/packed-refs b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/packed-refs new file mode 100644 index 000000000..250f18738 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/packed-refs @@ -0,0 +1 @@ +# pack-refs with: peeled fully-peeled sorted diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/main new file mode 100644 index 000000000..06a87d4d8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/main @@ -0,0 +1 @@ +b10241932e37d9d3b83bcc0d9ffcc50ee52ba289 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/remoteMain b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/remoteMain new file mode 100644 index 000000000..b0648afb7 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/git/refs/heads/remoteMain @@ -0,0 +1 @@ +96189cf41a9a64f26338e7304534527aff720b55 diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/package-lock.json b/commands/testdata/createfixpullrequests/aggregate-update-pr/package-lock.json new file mode 100644 index 000000000..c0d0a2b71 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/package-lock.json @@ -0,0 +1,292 @@ +{ + "name": "aggregate-update-pr", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "aggregate-update-pr", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "mongoose": "5.10.10", + "mpath": "0.7.0" + } + }, + "node_modules/bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "node_modules/bson": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", + "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/kareem": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", + "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/mongodb": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.2.tgz", + "integrity": "sha512-sSZOb04w3HcnrrXC82NEh/YGCmBuRgR+C1hZgmmv4L6dBz4BkRse6Y8/q/neXer9i95fKUBbFi4KgeceXmbsOA==", + "dependencies": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2" + }, + "engines": { + "node": ">=4" + }, + "optionalDependencies": { + "saslprep": "^1.0.0" + } + }, + "node_modules/mongoose": { + "version": "5.10.10", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.10.tgz", + "integrity": "sha512-KjCbWXTJ36RHMe0g31UG0/sANpJ9ekCIena7FkrCFlq5E9gJj/B2SgE5XQzIEiR1h4xMOVGKzyenCnyTw9UHZQ==", + "dependencies": { + "bson": "^1.1.4", + "kareem": "2.3.1", + "mongodb": "3.6.2", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.7.0", + "mquery": "3.2.2", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.2.1", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==", + "peerDependencies": { + "mongoose": "*" + } + }, + "node_modules/mpath": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", + "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", + "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", + "dependencies": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "node_modules/require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "dependencies": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "node_modules/resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, + "node_modules/sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + } + } +} diff --git a/commands/testdata/createfixpullrequests/aggregate-update-pr/package.json b/commands/testdata/createfixpullrequests/aggregate-update-pr/package.json new file mode 100644 index 000000000..cf91c35ff --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate-update-pr/package.json @@ -0,0 +1,15 @@ +{ + "name": "aggregate-update-pr", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no tsest specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "mpath": "0.7.0", + "mongoose":"5.10.10" + } +} \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate/git/COMMIT_EDITMSG b/commands/testdata/createfixpullrequests/aggregate/git/COMMIT_EDITMSG new file mode 100644 index 000000000..b1b716105 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +init diff --git a/commands/testdata/createfixpullrequests/aggregate/git/HEAD b/commands/testdata/createfixpullrequests/aggregate/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/createfixpullrequests/aggregate/git/config b/commands/testdata/createfixpullrequests/aggregate/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/createfixpullrequests/aggregate/git/description b/commands/testdata/createfixpullrequests/aggregate/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/createfixpullrequests/aggregate/git/index b/commands/testdata/createfixpullrequests/aggregate/git/index new file mode 100644 index 0000000000000000000000000000000000000000..f10258e09da28542ac67a492e676be708037b627 GIT binary patch literal 145 zcmZ?q402{*U|<4b#*_v}BhE9wF2HC;1_mL 1686127433 +0300 commit (initial): init diff --git a/commands/testdata/createfixpullrequests/aggregate/git/logs/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate/git/logs/refs/heads/main new file mode 100644 index 000000000..58827056f --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/git/logs/refs/heads/main @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 6ea5e6ad52f49a83069bc8b09413433004ce9738 delarea 1686127433 +0300 commit (initial): init diff --git a/commands/testdata/createfixpullrequests/aggregate/git/objects/1a/4f13d84cd5037f0ced095ff6768303e00e1ccb b/commands/testdata/createfixpullrequests/aggregate/git/objects/1a/4f13d84cd5037f0ced095ff6768303e00e1ccb new file mode 100644 index 0000000000000000000000000000000000000000..cde6c7d28d004fb322c67e00450019703da051fa GIT binary patch literal 205 zcmV;;05bo00ZorV3&JoAg+2Q#LJyv#Y=X$ViU-eLhfuq?MO-u5P6YA4+pH==PVeQt zd^z9v46CY|J?8+*nI6>^lxbU!t%<0XBHz&mVkb_i3teQj!C*ZN@#AE%H#F^$Yw)43 zA**>YqyjmU8Y6}%b!a<=TJ61OzXit-LvkPtXz4=O)Cv|0zz0PrRf@hQ9y7*{z2tNK zjV!t_kspq`FWrEN!CAt;yW>cW4U@$Z=Ff%bxC`e4sPE1eL%PP*#W9Vm2U+Z`Apuxd?2ijRz PoSZ(f`}hg~g7OngX-F8S literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate/git/objects/4f/8cb57f89f9abfb6f00fa751db57e2b9b9191e3 b/commands/testdata/createfixpullrequests/aggregate/git/objects/4f/8cb57f89f9abfb6f00fa751db57e2b9b9191e3 new file mode 100644 index 0000000000000000000000000000000000000000..118fc9c8c74136f352ba15aaa319a81701540992 GIT binary patch literal 4124 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ГA\C|v ;d9tkfO +h6NT`eAs#C^+ Ƨoc: H7{EAj&%#/$`{[j(KYfnP.;r!FX:Bt~Yca4PDRMQ2B5>+J|r)3_hbmQ5)՟"=*^׭8t˂MB%UMοP! \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/aggregate/git/objects/9f/096a4259c970222bc8287ab53038851b2b9879 b/commands/testdata/createfixpullrequests/aggregate/git/objects/9f/096a4259c970222bc8287ab53038851b2b9879 new file mode 100644 index 0000000000000000000000000000000000000000..421fbb660ff89e37cca824de2b608c17fd050db6 GIT binary patch literal 87 zcmV-d0I2_X0V^p=O;xZkWiT`_Ff%bxC`e4sPE1eL&B;&B*2^l+&tvfK*;?QEbM^0h thF_(!TkEuEPn`G|RWU@Jl)vx|pR3IEJa0MUzm+vJKj4!&4FEV?BWd{gDewRQ literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/aggregate/git/refs/heads/main b/commands/testdata/createfixpullrequests/aggregate/git/refs/heads/main new file mode 100644 index 000000000..c3f6edebe --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/git/refs/heads/main @@ -0,0 +1 @@ +6ea5e6ad52f49a83069bc8b09413433004ce9738 diff --git a/commands/testdata/createfixpullrequests/aggregate/package-lock.json b/commands/testdata/createfixpullrequests/aggregate/package-lock.json new file mode 100644 index 000000000..4f8cb57f8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/package-lock.json @@ -0,0 +1,301 @@ +{ + "name": "aggregate", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "aggregate", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "mongoose": "5.10.10", + "mpath": "0.7.0", + "uuid": "^9.0.0" + } + }, + "node_modules/bl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + }, + "node_modules/bson": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.6.tgz", + "integrity": "sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==", + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/denque": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.1.tgz", + "integrity": "sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/kareem": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz", + "integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw==" + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/mongodb": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.2.tgz", + "integrity": "sha512-sSZOb04w3HcnrrXC82NEh/YGCmBuRgR+C1hZgmmv4L6dBz4BkRse6Y8/q/neXer9i95fKUBbFi4KgeceXmbsOA==", + "dependencies": { + "bl": "^2.2.1", + "bson": "^1.1.4", + "denque": "^1.4.1", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2" + }, + "engines": { + "node": ">=4" + }, + "optionalDependencies": { + "saslprep": "^1.0.0" + } + }, + "node_modules/mongoose": { + "version": "5.10.10", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.10.10.tgz", + "integrity": "sha512-KjCbWXTJ36RHMe0g31UG0/sANpJ9ekCIena7FkrCFlq5E9gJj/B2SgE5XQzIEiR1h4xMOVGKzyenCnyTw9UHZQ==", + "dependencies": { + "bson": "^1.1.4", + "kareem": "2.3.1", + "mongodb": "3.6.2", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.7.0", + "mquery": "3.2.2", + "ms": "2.1.2", + "regexp-clone": "1.0.0", + "safe-buffer": "5.2.1", + "sift": "7.0.1", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==", + "peerDependencies": { + "mongoose": "*" + } + }, + "node_modules/mpath": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz", + "integrity": "sha512-Aiq04hILxhz1L+f7sjGyn7IxYzWm1zLNNXcfhDtx04kZ2Gk7uvFdgZ8ts1cWa/6d0TQmag2yR8zSGZUmp0tFNg==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.2.2.tgz", + "integrity": "sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q==", + "dependencies": { + "bluebird": "3.5.1", + "debug": "3.1.0", + "regexp-clone": "^1.0.0", + "safe-buffer": "5.1.2", + "sliced": "1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/regexp-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", + "integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==" + }, + "node_modules/require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "dependencies": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "node_modules/resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha512-qpFcKaXsq8+oRoLilkwyc7zHGF5i9Q2/25NIgLQQ/+VVv9rU4qvr6nXVAw1DsnXJyQkZsR4Ytfbtg5ehfcUssQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sift": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz", + "integrity": "sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==" + }, + "node_modules/sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==" + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + } + } +} diff --git a/commands/testdata/createfixpullrequests/aggregate/package.json b/commands/testdata/createfixpullrequests/aggregate/package.json new file mode 100644 index 000000000..1a4f13d84 --- /dev/null +++ b/commands/testdata/createfixpullrequests/aggregate/package.json @@ -0,0 +1,16 @@ +{ + "name": "aggregate", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no tsest specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "uuid": "^9.0.0", + "mongoose":"5.10.10", + "mpath": "0.7.0" + } +} \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/COMMIT_EDITMSG b/commands/testdata/createfixpullrequests/non-aggregate/git/COMMIT_EDITMSG new file mode 100644 index 000000000..c80f4016b --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +change deps diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/HEAD b/commands/testdata/createfixpullrequests/non-aggregate/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/config b/commands/testdata/createfixpullrequests/non-aggregate/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/description b/commands/testdata/createfixpullrequests/non-aggregate/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/index b/commands/testdata/createfixpullrequests/non-aggregate/git/index new file mode 100644 index 0000000000000000000000000000000000000000..c00dfa2f33e96ad18ac628cb87b803c6c206a574 GIT binary patch literal 145 zcmZ?q402{*U|<4b#*~I$4-xHlSs2a8z#znUE*wZTE&)n^2dWVP(##LUF77!$wefPp zR+Xp&Eb5uxvVVCo@DwB_XD6no>SYz@=K)m$K}e9RE0B_8FjO$$%9eTa 1686146283 +0300 commit (initial): init +0bb00a51656f0f37fffa341307939f0ce2a6f710 1e65421dbebea0a4f4a2ff6223d1943868de364b delarea 1686146496 +0300 commit: change deps diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/logs/refs/heads/main b/commands/testdata/createfixpullrequests/non-aggregate/git/logs/refs/heads/main new file mode 100644 index 000000000..56714918a --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/git/logs/refs/heads/main @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 0bb00a51656f0f37fffa341307939f0ce2a6f710 delarea 1686146283 +0300 commit (initial): init +0bb00a51656f0f37fffa341307939f0ce2a6f710 1e65421dbebea0a4f4a2ff6223d1943868de364b delarea 1686146496 +0300 commit: change deps diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/objects/0b/b00a51656f0f37fffa341307939f0ce2a6f710 b/commands/testdata/createfixpullrequests/non-aggregate/git/objects/0b/b00a51656f0f37fffa341307939f0ce2a6f710 new file mode 100644 index 000000000..6beb0eca7 --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/git/objects/0b/b00a51656f0f37fffa341307939f0ce2a6f710 @@ -0,0 +1,3 @@ +x +!>buRUq*cM;+_zku Px +1*&NMdx6>Cyn`)]E zD52S2} \ No newline at end of file diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/objects/1e/65421dbebea0a4f4a2ff6223d1943868de364b b/commands/testdata/createfixpullrequests/non-aggregate/git/objects/1e/65421dbebea0a4f4a2ff6223d1943868de364b new file mode 100644 index 0000000000000000000000000000000000000000..d8da49657889bc7ba68cf63f5e9cf3edf80bdad0 GIT binary patch literal 153 zcmV;K0A~Mq0hNwH3c@fD06pgwxeKzJq}v2U{K{s#+bXRsH6HxE{estlVMf+vc{Cp| zoZ7DHsiLS@7Az1e4OuKXB?jdy)D548etht!dQ#oo*~CXCRRSPVo1 zll2IWKW$ofKj?gj?63OedC>dQ_I13-y4*ZcCQOtH`7=ZSchKXl>3^1!iC?20rS0v0 H2Vp{S^F>J& literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/objects/6b/1cecf8c1903b6d8cf414457818cb9b92f9b8a0 b/commands/testdata/createfixpullrequests/non-aggregate/git/objects/6b/1cecf8c1903b6d8cf414457818cb9b92f9b8a0 new file mode 100644 index 0000000000000000000000000000000000000000..cc339374e95b51e4912171a456aba28bde476917 GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#V|XBTanJdwjh7p?sze=N PQP2FA{mTmgk3SP1QlA$F literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/objects/be/2ac309d07d949b362883168a920f27eb046076 b/commands/testdata/createfixpullrequests/non-aggregate/git/objects/be/2ac309d07d949b362883168a920f27eb046076 new file mode 100644 index 0000000000000000000000000000000000000000..8db1ca4b1862e741dad83907ec8db7c7146a13d6 GIT binary patch literal 343 zcmV-d0jU0X0bNncPQx$|tm#E_C)(CQD*_a^k@^7V6`IJFe8y)PZNN*XY#5jf z_ClpOWg0l~gU@Il^kfiMkz)WKq8-Q%*`|1Q4&9m=WWf`|yalQD3Yty9rc(wd6c?$3EREv z=)Emhd^MCM=HSsRGfp?CMnQx>VHfZXQt@qlxe$qTBP<;uy3Gl{tg%k@u-9-JC?ZG0 zL@9|T%P7G=nFAqn^qN;!&I_LvC12KjKH7OXz?7LUMl^ic;rC*I4U@$Z=Ff%bxC`e4sPE1eL%PP*#W7wy4nDavIl-Xt)&0<}X P_|;#tB$NRFbI1^OZEqMv literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/objects/e0/16d1bccf9581d380b5245ac0042769f66bfa4a b/commands/testdata/createfixpullrequests/non-aggregate/git/objects/e0/16d1bccf9581d380b5245ac0042769f66bfa4a new file mode 100644 index 0000000000000000000000000000000000000000..bbea699efb25b19c9f68945a2340a7549117a3de GIT binary patch literal 186 zcmV;r07d_J0ZooE3&JoEg`N8=jtreNv_c2Fii5Ljmoz=wlQvh9C52XmF>()m-{lGTf oC;UhnjoaE^Z|7gT8AAu73IG01YnKZB`CIpI}R4FCWD literal 0 HcmV?d00001 diff --git a/commands/testdata/createfixpullrequests/non-aggregate/git/refs/heads/main b/commands/testdata/createfixpullrequests/non-aggregate/git/refs/heads/main new file mode 100644 index 000000000..7e2b2ca20 --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/git/refs/heads/main @@ -0,0 +1 @@ +1e65421dbebea0a4f4a2ff6223d1943868de364b diff --git a/commands/testdata/createfixpullrequests/non-aggregate/package.json b/commands/testdata/createfixpullrequests/non-aggregate/package.json new file mode 100644 index 000000000..e016d1bcc --- /dev/null +++ b/commands/testdata/createfixpullrequests/non-aggregate/package.json @@ -0,0 +1,14 @@ +{ + "name": "non-aggregate", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no tsest specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "mongoose":"5.10.10" + } +} \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/COMMIT_EDITMSG b/commands/testdata/scanpullrequest/clean-test-proj/git/COMMIT_EDITMSG new file mode 100644 index 000000000..b1b716105 --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +init diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/HEAD b/commands/testdata/scanpullrequest/clean-test-proj/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/config b/commands/testdata/scanpullrequest/clean-test-proj/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/description b/commands/testdata/scanpullrequest/clean-test-proj/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/index b/commands/testdata/scanpullrequest/clean-test-proj/git/index new file mode 100644 index 0000000000000000000000000000000000000000..ca79d9fa6cdbf196c5e76e55655e5b0958062d58 GIT binary patch literal 145 zcmZ?q402{*U|<4b#*~`ddB$RT5-^&PfkB9ItK=L8hQ=j8>F+=_B0%haagN!w;xl3) zp9QAr`v0s`-ud5Mnt`VvF*!RiJykEOI6n`l3J5}iTwQ^bB!i)X0hcL{#p{nNw^s{D knMOa!N}96nd-Cz}Kb}*p7s<3f@bz}P@kw|_l&H>109`IFRR910 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/info/exclude b/commands/testdata/scanpullrequest/clean-test-proj/git/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/logs/HEAD b/commands/testdata/scanpullrequest/clean-test-proj/git/logs/HEAD new file mode 100644 index 000000000..3081617f0 --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/logs/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 b7761f99d321222c411d187405cc8354bdd1f696 delarea 1686051624 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/logs/refs/heads/main b/commands/testdata/scanpullrequest/clean-test-proj/git/logs/refs/heads/main new file mode 100644 index 000000000..3081617f0 --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/logs/refs/heads/main @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 b7761f99d321222c411d187405cc8354bdd1f696 delarea 1686051624 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/objects/35/0c38ebf1a9b77b101a355be46a6294aef763c7 b/commands/testdata/scanpullrequest/clean-test-proj/git/objects/35/0c38ebf1a9b77b101a355be46a6294aef763c7 new file mode 100644 index 0000000000000000000000000000000000000000..2465393129b6720eb49c7bbd4c70ff262b95252d GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#W4JiS>{{^|v5?OK({%lR P)+z7&?=B4hggX)=Yq%H{ literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/objects/b7/761f99d321222c411d187405cc8354bdd1f696 b/commands/testdata/scanpullrequest/clean-test-proj/git/objects/b7/761f99d321222c411d187405cc8354bdd1f696 new file mode 100644 index 000000000..00c5c96ef --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/objects/b7/761f99d321222c411d187405cc8354bdd1f696 @@ -0,0 +1,2 @@ +xA + @Ѯ= e&@)h+]ZUzLv֘IB$$Gu,<-N4)W.]}{{R =x =Laڢ2= \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/objects/d1/9c36d673cc1654f310962d4ff97e23b9ff471b b/commands/testdata/scanpullrequest/clean-test-proj/git/objects/d1/9c36d673cc1654f310962d4ff97e23b9ff471b new file mode 100644 index 0000000000000000000000000000000000000000..41c9f1a4940342d5348627a72bfdfa3685338384 GIT binary patch literal 83 zcmV-Z0IdIb0ZYosPf{?qWT@s+P*BQC%uQ9YQcz0HNlnbtElDjd(Jd&-&r;F>NtUG+ p6=&w>f#ePK%=HW)qA95bsd*`>dC8fn#Xu>LF|}N^TmVI?7;sZhCQSeU literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/clean-test-proj/git/refs/heads/main b/commands/testdata/scanpullrequest/clean-test-proj/git/refs/heads/main new file mode 100644 index 000000000..b9860f41a --- /dev/null +++ b/commands/testdata/scanpullrequest/clean-test-proj/git/refs/heads/main @@ -0,0 +1 @@ +b7761f99d321222c411d187405cc8354bdd1f696 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/COMMIT_EDITMSG b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/COMMIT_EDITMSG new file mode 100644 index 000000000..b1b716105 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +init diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/HEAD b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/config b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/description b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/index b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/index new file mode 100644 index 0000000000000000000000000000000000000000..f51bcf2776b6a8d86e36932460cb66455ff665ef GIT binary patch literal 9148 zcmb7}2~^Wq`-kJcBFZA5qf&7J5!$3}+Tenyh#+VMWY8JGG))0nT4-6^7esLzcSaor zTtG+E&(V)@XK>tb*Q4mDqo}B$xUndMqxiqQO=}Zc{(hd~dyX;BbMxNZ=9kN8|KL#w zg0uub6BP4$1`b#zN6@i6bsk$@;s_>G{=1?_q1 z+p<;+)~-eR8M)CaRjh_js?~8b)TEY*_K4R+d1}abbsTNtsmkd9J)kn4XKYWa`GqUH zE&BDA7g2mS67wDYDJ|SF^)}+n@ldMx_!uqA0l6QuX+vfBFW7vW6qm}d_YbS)g#~=- zTT}Epbo3SvuYVC&4qvH>S0%(~RY@MHx{HY?6O7lQ<4ao5BMp`DykdKhldl|JIT43X zSH{l%z4*+-*!GUQDk2ab$D>whv>wT71*xSC0?2I}``Az!{u?&G#crRG?cFb}`{jhg z#wjt!w2Rj4jg{v$nGbam?eTR^3<@|QIzC>T+s;rKPX*fp1~NKva7OW@6Se)89U3{= zeRM}ZwYv?ogKp>d~DeIu6=ywogg4oYWYnTfhE3 zw-P`;s0{xlo8QuT+h?~|b_<6sKePMB_G{T_`1IySwZK%bImijGM!3Ly83WT2rk z{3bphsCO&aIA$@-I6{qsrZ(N)G%&GvLG z`_Gilh-2Z4;&EYngKK&Qxz?@R^s?!EgE{cfsywJ@nu=8=YdP~F=~U?fJ)kn4cWh6W zk!NlVIFayTRF{ec7aJI5r_UkZaps%7^o;9*m^5LPj!%S~U8LuKYzO$J&zCi8 zX53i6Ir5J^&izib{j2`a+qtJnE2N8&ACsV<({w=C_a_Uc87ed0Cmi0pJg4}cmH$qD z{ZCu>xA@KcmX8+j2*lomr&RIjG%7Axq5ndK2$OR%ofuUkbj0vSm1u38fa;XB7W3)&PCzrWCY3RIVx^YOy**|3btvUV~5f6Xt zUD>Io?}dQjlM_OMmdx=PFx`w_O7Tfbq@*zt$CP5JL?H$roFL^&g$Si35-Cp57=cTb zrhX#0JQ4OGaKRkL-+|*N9G_jiAE>x&zv-#BD3V@9FB^R3xEVho;*)?b7ZNy)(YO#5 z%Q3N>5}`suA;c+4LZY-lNegh6U%jvf`eVoVGkzP6->qVG@Y=JF?Kfyg&Qto9+?)0x zz^Mb`XzYKJsa4FrpCIftpwLhux6o+^hr4*i-U(0g`QdZEFO4bq>{F2z^CW8((hYLe zBo#|W(Vo*aAe?~l$y~HQ@C}t2C+H*V{=mC}S__ICDeo`RhgUay1%c5zYn#p-h`P`f*>@%H_mQ4951L0ZzzXn zIp-O8O>>^iC1cGdI8IO*E(lYsac-DV@?rF&(0QI!VRjQ-Z7;YUUwUH|%z1jQxtu3+ zS@M28Y@O#09+T5GrQyl)Vz-1Z!MVnOJ4z}aJjjmFx z!6I`#Vb0O>4LJ`Z_zIy&C|A%D0YwrRK}k@BK!lNUffyH2QbHk8qH?L!H0R0suJhBq z-^%)~NUmi35gfl;1)t}ad->hri>14~cOLYKid9tjn(^aeK1JX{iA0H!3Jj-(w49cp z5`regN{J8?VBlX!367iQESbyPA-7*=i1L(!UbgR)L(5dzw~l2# z>}SSL2>4Qz!o(D7f>z_HP1C{wgK>sPr?}rSRA#(?a=7O6p6G{0=eN+*D~A#9IpBN zr`wk^;Tl7rf$K6tx1SY)gUWC>aJc4kpc9*G8U`V6(48tnWw@IG_y5my06VWoRd2*E*RJio9#7V@BnIZrd8(BQ-77C|4Vj4zw* zvycmQ`&uURt?!?iaA@#|!+wDtP#I4y+hZXgnw=-}n}Lw;8nVJr8P6uR$3i|dJ5Odd z0}a$QfX#T!yx>;!O2x@Jh2UNzhmF=;RBh9X- zW;P8CK4SAz=mVAU>GlmwzK<;AN%QxG#ySIil;9+~l{|CqK>F!TtJJgDv^N<|-<{6euZ>U{a9+Cq+sHr6dWdLZYNaI4%~7#S)Z~D-3?cKHa`z zh;-@(E5?6@<4?Wx`p=e!Hm#VSGwbOyk02}fuh3~Xho9lNYavy;v(JtWq4~dcUMNW^JMt(8>Hd|^+T;Y| z4h{AN@93@1AQHk^*l~4MebVS2b5j$FsvebI?Y4bW^ToL#$5i9tmOkXVP%m8sjP1AEcobg5mxvH_N^$x2`rNE3gXe9S-=@(cecGv&>+8iR98^YoI-nr_H%PJ|)a%Yku9y!JAUjXU}m_a_AKP#rn+ z=uf-$dj0+1G5ZhZ27BG~OSq<6F$g9Bci{2GW8Q5(gCDJJ^_0l{x!~5&1#^#qqayv$ z#dSWzPLSmD*WLZytOnL+RbK3p3?~K$Yhr9ctI$)K9X?17l+7;7qh_OTW!i6>81>`} z`@2mJ@3p`2?W+6Tf{)GWTIz4?uIra0{j6+v1-@O-rp1Sx33hEoo7#NsuGhVGYvjN6 zxLKd{bNSW!V*Wb8yaMB?3l2rb3cFezIuP_@L-oFu%Syv<`g}dLVB4O;{H+6(i~Ba9 zOY0jdE}!%4^NkZDau#)5w`UGjRCU!YZpGrg_kMln^Igr(tEd#V_&&ZpGwgxOj`+;` zvo!mpsn#Xg*&_X+9)&Yj7YrxW zb(*Pn*GLo)7_e@GL&G003ZfpYTz#!@rER12$nZX*V&8s#7xKm{p0^%z+CTLf(wg^w D7~C(v literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/info/exclude b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/HEAD b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/HEAD new file mode 100644 index 000000000..33ea9a093 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 8e42fa779e5d1c955df94f3873bb53c83739b0ed delarea 1686051824 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/refs/heads/main b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/refs/heads/main new file mode 100644 index 000000000..33ea9a093 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/logs/refs/heads/main @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 8e42fa779e5d1c955df94f3873bb53c83739b0ed delarea 1686051824 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/00/6ad0541dc967f47aee76cd59e1c6183598a1a5 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/00/6ad0541dc967f47aee76cd59e1c6183598a1a5 new file mode 100644 index 0000000000000000000000000000000000000000..c50e97cccd68850cc39415a9393584be4a06971f GIT binary patch literal 83 zcmV-Z0IdIb0V^p=O;s>6V=y!@Ff%bxNHI1sPD)8NH%LyjG_p)KH%u`wF-lA_Ff}tt pwy;bwNi$5cut;L?>1y@dH#1*w6TANVjMpg>jp7&R0Ra817Yj839y$O3 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/01/c87b876718ae3180c55528b36d9e98a325c025 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/01/c87b876718ae3180c55528b36d9e98a325c025 new file mode 100644 index 0000000000000000000000000000000000000000..01d13d0a3578b5267add2a660ae2c2bcd3204650 GIT binary patch literal 81 zcmV-X0IvUd0V^p=O;s>6V=y!@Ff%bxNVYUHHaAZ*N=z{_OEpeSN;Nk$w@kG(O*1z( nGB5&)B$}H6RX^8PbYF1h!}e2Gm)kGdG q*Sg^XnV>߁B uc}׵J;a) \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/08/37672d2319537596cef5a302eb3217829aa44d b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/08/37672d2319537596cef5a302eb3217829aa44d new file mode 100644 index 0000000000000000000000000000000000000000..bcf11e8419ff0b8f1364a704b5b332cd4c9465b4 GIT binary patch literal 83 zcmb$)J@TEv_h8VmBU2=u-N+i_&7nWUB7FlBnQo z;i(obtRTM6+Gm_lWt1|PF=MD&a#SOYUZ;s6i0y;Mj+|+2!5PsUA)yDXHLY!oW0ELk zh)by3w6Te%pbC*kQDX<75>mO?gCK2mdd=35^TM}og3wK#kXpw1yNCh5}#@E#BmA2D{Is0Jr6u8;P>SuxKWin#wA&o+sPkKhfO+F^O^9$C0QsInxPc^d&q2y+I05 zU@Ct(v OU4)Rel7nBha@t(wn|DV5 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/10/fcf211c78a7f37965675b72ef5887058298f2c b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/10/fcf211c78a7f37965675b72ef5887058298f2c new file mode 100644 index 0000000000000000000000000000000000000000..ec48be88dc2be8087c699887c7579b6f51b9dc46 GIT binary patch literal 76 zcmV-S0JHyi0Rce(zW-uuZ(<-dHvo76D=A7%RWLDNFf=eQGci#pNKDR7Oi$IzD$dVi ikXYW7{CSD|V$P6d8+n?{%kJ-ZFdqPS!xB38_Zq|;4K)FQv^(A>uh0(SSg!aqh@r53i{w`%Ir2>QYwl*>p3Q{>@TLMQ+L literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/4cf0187c0f45b6a6a6ee102bfa91aeef4cc0cc b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/4cf0187c0f45b6a6a6ee102bfa91aeef4cc0cc new file mode 100644 index 0000000000000000000000000000000000000000..16dfd793b9f5bf190b895f6684bf00f032eafe78 GIT binary patch literal 47 zcmV+~0MP$<0V^p=O;s>9VlXiP0)>p!#FS!&r0%QUwaKj!j-A}rP30G#>?+*X3IGLc F4@J+A6utle literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/a78263f3a41fa30954a6b10c823776dfb8e09f b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/a78263f3a41fa30954a6b10c823776dfb8e09f new file mode 100644 index 000000000..9487da2f9 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/a78263f3a41fa30954a6b10c823776dfb8e09f @@ -0,0 +1,2 @@ +x% P +g!mыӖUjbL]μ9 ޟ>1SBH{ld۰6Y Kj׻ܐBX+Ԗj/H]Fw7&Z \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/e5cedb4c64cc1599e43f345f658f658a2cc4bb b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/18/e5cedb4c64cc1599e43f345f658f658a2cc4bb new file mode 100644 index 0000000000000000000000000000000000000000..ab64bc15d5b79315e39efc01128c70f775de90d3 GIT binary patch literal 76 zcmV-S0JHyi0Rce(zW-uuZ(<-dHvo76D=A7%RWLDNFf=eQGci#pNKDR7Oi$IzD$dVi i=vm|cXqkRQZTQv9)qfqIS7bh#)(-%R7!#QG<{BLrgdV5> literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/19/828baca3d92975c5056559c81ba5be93d9da54 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/19/828baca3d92975c5056559c81ba5be93d9da54 new file mode 100644 index 0000000000000000000000000000000000000000..c4a43d582a60c348fa3e119f5a4c3db8681d5c26 GIT binary patch literal 79 zcmV-V0I>gf0V^p=O;s>6W-v4`Ff%bx@Nji>VW>Ru&E-Kzz256E5q}NglN!4_FZP=l l0D(eLYFaUagwF?w8h+Pp%a*+p(Ec@X-Fu${X8>Wp86V=y!@Ff%bxFfy<(u}m~cO0q~aO*1yPv@}dgPE9p6GE7Rd pFi15pGe}HLN;PEAw*Mr)PoZJ8-H{XN5f?;vosZ*-0|5Od7kW(}9d`f# literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/23/63d921c26161f1c010f3df560f2cb8874824a8 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/23/63d921c26161f1c010f3df560f2cb8874824a8 new file mode 100644 index 0000000000000000000000000000000000000000..3142c46f61b4d8efd08e746acb59e4740fa4741d GIT binary patch literal 49 zcmb9wq!6gFfcPQQE>M6_4N#icXja$@eOuo*tlIxAasJO_a7f7 z_m7hoICOlTQx8??;p*tZu%qCHn$p3Qr?O9dy`Ma-!O2UKWdl?`IX^EgGo2x43fuOZ zM!XxE-z=ML-~Db@PIbT)sEU--;^d;tf|AVqJO74xZVg|{k?lp^VYL*^l zO^rMuy>#E?o3}zB()meQsmUe94D)p}y!M_7Tcq>KSx9gf;_MX71U3}Je| acs9)uV(*{wZJD~1c=un;Jre=Wc8Dvln5usO literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/23/e856f5deeb7f564afc22f2beed54449c2d3afb b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/23/e856f5deeb7f564afc22f2beed54449c2d3afb new file mode 100644 index 0000000000000000000000000000000000000000..1f7c30fe3837b10dc714010bb80236230d014393 GIT binary patch literal 1972 zcmV;l2TS;P0i{@NZyUK0?pNtoOx6M<1$y!Minfqr_YTS3HO0X(^3oKDa>8ntk~UtE z>m@ge;M4u~duGU$B{`0b)*oz%oEZ-1<#~pl=4MKN{rkz^{&MtWSlMzo&GfKPW!`L7 zR*`jOmbg>-yoyVm>ACgaUS2*Qjb0T>pPV+ENA#m6^(9^wxuS(JS7ehiD;zmPnRaSk z#!k`u*d>c)tRdc6I9J%wa5#$-HHE@pp1DOe9b{&>3Sz@9t*}VgVLP@^Dy6ERR5_J6 zcmg|Gtti$hElrxuGVIT?T-ibM2zzfA!I#WZ5nGGhm_Do0W=2ydsmfAmm#^uhD<<;T zI+#z{Q)jLeyE!xEGIowNEtEMLdM?tYaz*8=IObA(!!|p!Yk&n|B+hg17P&?2Xc2!_ zG*wF9I&CwZ;86Ixt3II1*extAE9+ops;E?X>@uh$94uWL42!O(f^y-LD}!hLnz{SaJ&lh?CaC0XklW6^~V>l{+b<#E$&q?w}Vowij`n399)Z*_ZNu~t`CyLO~Kz_~PNHV8k_&nN}X(KKck zP|``PxupgJ7CUWjnjD%ILO0=bP9&FSG*|vRBqwQBcDlF-%azKNYlP~%@colDdQx1? zPn+sadTB8K{C^|%E5ir@A}NgZ<7>KjbNOr1N#zAze2 zoYD1{Em*T-DC%gxc%vaslh*k;2Arf^^r+?_oTUULZttsXJErkKyAZ0S^-p?oM#mfr zG(%Nt+Lm|!9B|w}=iv6wQNwO1070u@%r~U}WUB%mz};P>mheRI-Tm9Fg}Na~ErA3hvV2ky&Y$av)bP zpf*oc3E(qn1+zn@sj(hZ7m((>y zN#sH6u9P%hba#C$2Q>CJ!qL~)A5c6##;BxS=Y%tRAK}`@d+tl-jGjG<8b4jUV5b`& zJdZOx?Kd1&ZuZRaflz4FNf^OuJgstu9>!I<<$&od;OZ@Wwqy_2J^)NFA^rUFg0@l~RKqf~Jh^URju|mP=J1rB z)o^gm#D^2^Ba7|5Q2O51?Y-_Li(2%ad)3=_uO@)=K8(&I6!sF6c8a4J7SaFO1k$P} zk_RwI;I%$Z%9+dPp;I!A$%AoS#$(iJZQ*giN0r9-Zg17-><=3LHogIm{Lc{owTU7C zJthcowB~-vyedn8*BPc1*~5q-E6BFAei*yX=~$qu<;6MH;UipL4y!O*8&1B-F|*6C zK6nad01^ToF#`{tb_ugLqpz@uO7Z5oLEHE<`h6UESd6=zD@u3znK}26beHkfPLp}P zdx`fEv+5rC!ry?)2wFW}KE%IJ`bMA+3(d>crTeJSK&*4we4|Ar5a^TbJohNz@t55W zbcY~=@9#q&;sJ}tU!1SvwGFMf^BlzR!x%BkO1wNhW?Qfm^usVCyZkJT6kZl<@GiI( z1%ncD>xgD~4C=*11%BlE15QCh3~U|nW+$?nak5|%&pu~qg)x$e7>p@(x;NL$L@0Cpw^9ww15o+Da_w{T z)dxZ+8b)27!1wu8*i+hl`9VlXiP0)>p!#FSzNt6S_7lQv3S{$4cw@wx8@^d}qCuLb}V GzYu?}aT84d literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/2b/3ff217be2080ab3ec4c86758d015bacf5e0e5e b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/2b/3ff217be2080ab3ec4c86758d015bacf5e0e5e new file mode 100644 index 0000000000000000000000000000000000000000..3e70859b57906bf6bbdf5eb48c7cb5b949d22a0c GIT binary patch literal 63 zcmV-F0Korv0ZYosPf{>3W2j)%*7WiXH84vtFl1nAeRN4hxXpnvR9VlXr?Ff%bx$W6@5W4Q9Mq0T_YdfEnU>v!i?7qNHVj-3Di H3?L6t+gB77 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/41/42082bcb939bbc17985a69ba748491ac6b62a5 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/41/42082bcb939bbc17985a69ba748491ac6b62a5 new file mode 100644 index 0000000000000000000000000000000000000000..dba982899e55860a4eb9fd52adc3deaa74d41f11 GIT binary patch literal 281 zcmV+!0p|XA0acJ&P6IIvMfuJuF6pQOL0Wamv=Q^!XXiH1wk zg=vZz}Pal`Ndeue!ODiC}gn+foU}Oq=ooe=^kN1UoO^YsFL< f<^bLNA~fc6c>uNl!{+PhK{s#uTfL|spbC+Vc>jt5 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/48/ab0354c18809f637b0df7cdfa5637c31ef5074 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/48/ab0354c18809f637b0df7cdfa5637c31ef5074 new file mode 100644 index 0000000000000000000000000000000000000000..e742e87926a4eb096b09444ec4feb82c19f96e5b GIT binary patch literal 328 zcmV-O0k{5m0V^p=O;s>9wq!6gFfcPQQE>M6_4N#icXja$@eOuo*tlIxAasJO_a7f7 z_m7hoICOlTQx8??;p*tZu%qCHn$p3Qr?O9dy`Ma-!O2UKWdl?`IX^EgGo2x43fuOZ zM!XxE-z=ML-~Db@PIbT)sEU--;^d;tf|AVqJOBn7pbsdEe`EnmIjfYi_Ol;3)HH$vKFMqSUlvhQ`hD a*~S9An>YBz{QS7Kx9e)eWk&#e2#Sl6zpO+6 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/49/8b267a8c7812490d6479839c5577eaaec79d62 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/49/8b267a8c7812490d6479839c5577eaaec79d62 new file mode 100644 index 0000000000000000000000000000000000000000..b558235fa77fbc9e56902bc61148d32e42a70755 GIT binary patch literal 77 zcmV-T0J8sh0ZYosPf{>9W(dv8OUzA8Q7B3+$S=+;$uFw3R!B|BEKw-Q$ShV!%gjkt jP)|uMPA9Zjg literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4a/939517f9bfe9ab67dd8d90cfb58d13fe0f4258 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4a/939517f9bfe9ab67dd8d90cfb58d13fe0f4258 new file mode 100644 index 0000000000000000000000000000000000000000..837d21ce00c1c86d63dd8273056d1390351a58da GIT binary patch literal 80 zcmV-W0I&ae0V^p=O;s>6V=y!@Ff%bxNJ&miN=`Ph03y?*lw`ByWJ3!hAWAY!Ni#A| mGD}P}w@683IQ{kz)8?5y4fCs?Jk@>FuxodC>n8w8og08CR~|tC literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4c/77be157a8e72e7ac5c7452d15e65383c89bb68 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/4c/77be157a8e72e7ac5c7452d15e65383c89bb68 new file mode 100644 index 0000000000000000000000000000000000000000..eff215d0a064a43479bbdad86f897df83ff6f542 GIT binary patch literal 180 zcmV;l089UP0ZYosPf{>6H(_w`402{*U|<4b#*~`ddBzGSPQqwL1_mL42BAZTpkK7v%GgK{aiV5&$}S$AAD?FuOEW603{8$0tIxX*fo5!{O|mlas8iL is%f~)Uha9@{rKbML>=xsu87;aYFltshX4S_Gd|TU5Fp>(CTHr{hwbaN zh>vI1cOjGq9-`Q5dva zPq!S*`kwkmCo++A>AM^+nc6NkTrY_(w6$DQc~8a0B*4i@L3*7ykV(|&NL9nt4KAgI zDe%@OrkHf<;vtnlEP3q%lXmy1F>aHel+11f%V{pxcnuCCIleO~Qg2d2nw)owpB(%M ziv57o8*2f+V$zQ7?M6fp1Y? z)GFL+PkSG3glQZ6Cg9@1QmG;TSur~{Qw@OARn506*ForClmg8^A1z+$#rn&f=121brC=^* zD6p=<3MzayD~t*?L7h%bCR2I~`H`Y# zi{3=!m71`Pvf4xJu^(XUK!9?^J(WSbsyWP)5043xuoD+(6P#`svh4XFI;H}`bz5r; zF$}^W#w7juFQ7w`(XGD$_w1I-hv;jgaB)f(^0B}u27-Sh1P%tQ(H?Zg!Xhy(9LZ$D z*p}vB@n8}= literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/56/2efa0cb29c12078f94f6a6271a178bfd29bc91 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/56/2efa0cb29c12078f94f6a6271a178bfd29bc91 new file mode 100644 index 0000000000000000000000000000000000000000..6bc3820d32b8a57e09ba688fec911147b49592c4 GIT binary patch literal 47 zcmbAGDSS5fyZN2_X67lr54joG?fAU_ DyXg~r literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/58/19fb8cf31384f08910df4571feddcd064af02c b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/58/19fb8cf31384f08910df4571feddcd064af02c new file mode 100644 index 0000000000000000000000000000000000000000..f02a9c7a7e8609e5f5e112a7e3ed3e766dad8cd0 GIT binary patch literal 57 zcmbdm!%aSZzFuY~=4M95rl#8rOiVU;82Naa Nct2xeu&d9wq!6gFfcPQQE>M6_4N#icXja$@eOuo*tlIxAasJO_a7f7 z_m7hoICOlTQx8??;p*tZu%qCHn$p3Qr?O9dy`Ma-!O2UKWdl?`IX^EgGo2x43fuOZ zM!XxE-z=ML-~Db@PIbT)sEU--;^d;tf|AVqJOOhD`~T)&J#Oy-kO<6E4N~eBm1M5HC=7fX2Q@%q~6s4vWGi)d> bbla&mZ{1#vV1Nz&+t}tx9c~yM v#+k5iC0A?%MG9k`-=cfg!(Vf=FP>f>vkHdJcJ={0In}9tUfm{Tg7-Ty$Cy8k literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/60/7ddb4e7656129da6f4bdbbc769fa04f647a403 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/60/7ddb4e7656129da6f4bdbbc769fa04f647a403 new file mode 100644 index 0000000000000000000000000000000000000000..9d6644f3602a695d2cefe3620dd7edbbb75007a6 GIT binary patch literal 91 zcmV-h0HptT0V^p=O;s>AVK6ZO0)_O<5(ec}%=Q%*f^r{!O^iSO)MWnSz21q21_ov( xCJIHVg{7HAsky0nCB=Fr6(tO*CzH!RtyO#c`nmYLso#y59=|F}0|5R9VlXr?Ff%bx$W6@5W2ijw&E-Kzz256E5q}NglN!4_FZKff H3bPLS#|;zT literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/64/ccd694a0965a2c7f958005fe2d8360c18d94f7 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/64/ccd694a0965a2c7f958005fe2d8360c18d94f7 new file mode 100644 index 0000000000000000000000000000000000000000..05bc0814e460709d4eea031c1f2491d05e31b702 GIT binary patch literal 96 zcmV-m0H6PO0V^p=O;xZkXD~4U0tHh;hSnnY)oDW764%vUX<3Q<%duJZ`5#2mBAMam zvcSW@=z$7sE|wjb73&%sOtf!|_U`Ki U?AIJ_Y5s+)Q~BHc07G9gA$trp-T(jq literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/6c/bef5c370d8c3486ca85423dd70440c5e0a2aa2 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/6c/bef5c370d8c3486ca85423dd70440c5e0a2aa2 new file mode 100644 index 0000000000000000000000000000000000000000..b098b0b66e206a72124d32206debad73e240f4ee GIT binary patch literal 2176 zcmV-`2!Ho@0hL($Z`;Tb?yursF{h}tlCB;Yhx@e zWu`QQ*14r9WUSEE&`Rai8XM-g{#7lQ)WrG?_S= zrZ!efQMwx=buJBUg&|n<5xN)>Hlo2IE?8<&r5o7HdcCzP8Y)e)tnH4r8(I0s{N7pD zXw8=Tg`)@?4m6^y3rS|9wgz6^l2v=Zs5(!>8bGoeVM)Nrq5#^}4v*~jG=-(S13YX)b+asTv%x-_+*qY|(Q_}l>|bvkKJ9O zV414;J*kXJVPL|P=%qn^(Cc3~mOfy(KjA&jm5aR$DiQjkaCu?y-Z>1kan73jcW>v- z4Sj({=|<7BzbvT#3MtbtXFYX;JA%#g&051a`XQ$U_DQnZ9R-t)X>j`H$A7;&ygUle zOS5JVKaLU`v<+@$-0PzC`#f?Xj}`st`>G$*4FBALK7zth)SSM(-t5Eh-QnbWG086f zI-(iN_lD?P$Ioa!;=5Zib&=cQ?0q#G2YB;K_X_Qc7`rTFNyApowI1Re%5BmJPlu-S-w@gZX7}VUNY|J!p%~zQ8b~{{FV5o-6iqm;FEd@c#Vu z+0~0z=Sgyb9v7Rkn<e(vSGPS7bphRB9JIo>9+PAH{DF!_N<5*-I0 zGC5Cc-feF&)VOBBT_M`)<{mgXkioA`H=NZvvHQR9>rZf<9jG#;05qjEZe%(^FMt z`MS|!iIEg9lfjQKFRspCzM1(qz{+8mIocn=@Mx@c47DPxyQepn` zam*($YbN?9ALc-I3?>LXvLVPGH{B)xfIMA%@L=Na^v9HFe_T+Hs|8e*=UGn zzY#Tf>=}*I81jZVc}9pGPDUGFfuY&052Yr8Kp_4h?SY|!55+j6xuggg3hwuMAds3& zCV%)1S?X5In0ENY{|~NNieCz7=I@eDS?2Bn2(e68$ya3f5k65eg|_xf&;3h&pRgr- z(fPUu?$7)7G75I(mJZ_C9mycq731su$E%z4W}ExdCQ{(pGsnp@Q0qWps)P_04HBQ z|HC7^tE_NB(qb)>=MOf%;09gR4JLM!ZYHt+VJ95+;(6wS_a=9&Z%Bk#IthP{KtfB@ z1!VR(WI8*)V<6@h7T=rK1+#bv#yfU8by$ED^}uByyy||BiACVsr7(%(-~Rym!v%V@ C_Bz%8 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/70/59c9ae1159581daefeef8fdb1152ba7b10d549 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/70/59c9ae1159581daefeef8fdb1152ba7b10d549 new file mode 100644 index 0000000000000000000000000000000000000000..09f76180fbd452d23caf548446c5b4e2bac0ca88 GIT binary patch literal 79 zcmV-V0I>gf0V^p=O;s>6W-v4`Ff%bx@Nji>VYu?Kq0T_YdfEnU>v!i?7qNHVj-6m) l00as}scFRw8vl2w@Cq;YdEdy&_-($w2%E`FRsdw+7~(V3B#Zz6 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/73/ca9e6c4904275d3c8b761f07fc36ccf3601f3d b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/73/ca9e6c4904275d3c8b761f07fc36ccf3601f3d new file mode 100644 index 0000000000000000000000000000000000000000..0d32213571bfca6a70ac9461f50bd9164ec20be2 GIT binary patch literal 448 zcmV;x0YCnD0V^p=O;s>6G-oh0FfcbYRY)u-$f+zyEJ@DL%`HyXD^AQU$Vp{bdVPmi zx=F-E-&w0U6q^@L>(MEh1l5q7pPQRmf~g@{6#q_g>eBdHqrPwC`<*%N$*+-%w2j`Nbu=r3ER8C8;pg zZ^Yk7T5do5BD-eWfg|^_IV6@pkAtZ$O4UVp0;a*yi9`GJ4;S1x z?2)q~MEP!k3r`%E)*=+e$*GxTaMcU{YQ7O^vh6;y;^Lz7k3#|@_yZ*nstXc4C#u4XiG&eM8gD%|~3@wIzR0!$Oo*}5h9y2%--$=Ug(B``0nkK$pF*!uE-ci5Vs qPtv{`UwUW0f@(pHrz2O?_T;^E=6l{~lzc8XcKMr%!^Z$~N%#KM;M~Fh literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/79/c8f644e0547f2eeb56144f2813c928bb89d18f b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/79/c8f644e0547f2eeb56144f2813c928bb89d18f new file mode 100644 index 0000000000000000000000000000000000000000..e18aee3567bf8b08151cc55a2b6f9c72e614ac12 GIT binary patch literal 118 zcmV-+0Ez#20ga473c@fD0KMuf_NWN5n>5=*MEuHTvz16{p!DMJtv_&1!yG2Jo`Ht6 z!#{z9k<R!g}#f&c&j literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/81/b35f6b33100db3b04d5cf9f1ad8d8ad558d341 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/81/b35f6b33100db3b04d5cf9f1ad8d8ad558d341 new file mode 100644 index 0000000000000000000000000000000000000000..5ee2cf0fcf03c889a5986f048c72e458fc8b15f7 GIT binary patch literal 48 zcmV-00MGw;0V^p=O;s>9VlXiP0)>p!#FS!&)eBc`T{c%etxf5tVdwXs&(9pwlLr7E GhY;JbeG~Km literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/85/7247ab66122b18d726ea2a3a14fe6c3ca6f3fe b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/85/7247ab66122b18d726ea2a3a14fe6c3ca6f3fe new file mode 100644 index 0000000000000000000000000000000000000000..2a19c8ade4aaedfc2344a996b1cf3e7e297328b3 GIT binary patch literal 83 zcmbFfsStw8h8BV55(rk%_OFsnIqMZ%-2sQ;$s^ nhF(Tqrk+VZtnKSxx=i*L{-K=XD;^!P@n_-klS~Z1AU@$QN0)_O<5(bae%pnImIKP>1xLyI>`+yQd0|PS? s6NQ4re7`ya%vsjCptRW@DAcrQWhqub{dg83R4Cii`B6Ug&n z4pm5)LS?qjk+3ocz3T#t&q^dVC0_$ZG4h$uKA`9(Lj^ASm96OQRY!lEa^J5&AqMmm Yt%D<;5zVseHTA#Bw0E242jN39R*`%-6#xJL literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/90/96f772441a7e776ebeebe0d5ce11a2995f608a b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/90/96f772441a7e776ebeebe0d5ce11a2995f608a new file mode 100644 index 0000000000000000000000000000000000000000..c056639ec446ea2094839021c522842bad2054fa GIT binary patch literal 97 zcmV-n0G|JN0V^p=O;xZoW-u`T0)^tzBtwQ3K~qk!>Y7gbzdP=Z=fktS^>Z~I!ljKE z5^8Vzm4yk-UG`<~?&F!iSiZS0VTMZ^Gwg12`!MT>+0M_*Pb?QqUwy@6F=cS^402{*U|<4b#*~`ddB(D8TVXUK1A`FbR>{Q-42?^G z(%*q7G-EI^00IR=3x?Zfi#o#YDlg9MxLsYm)}oyM#JqVBNfQeO zsjZb0w%Rr&?fiG6BiFflOL{G56GYO~km1nBxu-rW%wJ&4UnSZ0I&gAv?9GV~N%Is2 eugO!zf9`*|I{j|%g!5Z_h5zw8MF0SuCo|I~)1%n1tz!g-aolW~K~` zC#u`iCDs`>91YdjoI7vEV$}nx5J^h|hA)XWJNuTevAVOxZQZ5?K~|UD^UebRZjL2v DG`cA= literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a1/fd29ec14823d8bc4a8d1a2cfe35451580f5118 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a1/fd29ec14823d8bc4a8d1a2cfe35451580f5118 new file mode 100644 index 000000000..b72c5f771 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a1/fd29ec14823d8bc4a8d1a2cfe35451580f5118 @@ -0,0 +1,3 @@ +xuPMO0 GV1lc.LEB`ĸ!Mi*a]R5!;N{+t;̍z-:K zQ"hEcRK\z5\~/7~ڑ_h|PMnXf]RvTVh$mSԄׂD+dUF\%Z}VJ{nPA@S"[z2=̧wv~5}IHLv,nu"CF_?dDг 9){e/,$axZugm +(jc~[+9%.N"s<=V +~LbYeM$ \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a5/196d1be8fb59edf8062bef36d3a602e0812139 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a5/196d1be8fb59edf8062bef36d3a602e0812139 new file mode 100644 index 000000000..62de872c7 --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a5/196d1be8fb59edf8062bef36d3a602e0812139 @@ -0,0 +1 @@ +x-j0;)< SJB@A ۿlI_Y쑃޳S)|nѶYoe&SWǭ5r:EVfC _Y .Zu\\Tz"GdQօW*)f<=ƂD%ˣYSC \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a5/d7b84a673458d14d9aab082183a1968c2c7492 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a5/d7b84a673458d14d9aab082183a1968c2c7492 new file mode 100644 index 0000000000000000000000000000000000000000..cafdfdb17e9787527c11fe6accc32992a7eaef93 GIT binary patch literal 299 zcmV+`0o49@0acJ)P6IIvgn7;>OuDK-kgbrAKuAb%2QHA^dN)z?r`Std5O*i(wxzt< z<8Q{(x!A$u)AQBhdezymA|n=J0q+5Dr+sn=CdLg=pKW5`2))6618flb=)GldaRiS< zdPHEo!2sR95OhjzpEUOdh8#WULR4N`cM`V;qmKfb9Za0uy0{kP*0O;RgZjc8fmriI zpa;ebmT0nJEV$Vt$CRyRJW;_8PzgFP)wsklU8HRR&W@HU!nwG`b(P|}99}$jdTOu^ zk70`_=&qE)#?m48J>)X-$4Qk|l>GZ%c^YLaL<^&3MMe?wl*C+K*}clt!8Zn-Acho3~C3mIU^)2m!&xD{|}q*hdbH4$sh3|egWDEqwx$qkTC!N literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a8/5294c8052d3596ffbb5edc49e1cd0d7f9d28e1 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/a8/5294c8052d3596ffbb5edc49e1cd0d7f9d28e1 new file mode 100644 index 0000000000000000000000000000000000000000..8b4e8f8488c3baa3735c9e1d49e719232021530f GIT binary patch literal 86 zcmV-c0IC0Y0V^p=O;s>AU@$QN0)_O<5{4-66JI{&CZ&oue-T*{a+l*z=8k+r0|PS? s6NQ4r9VlXr?Ff%bx$W6@5WB3_o(o)N;BQ4@^`d6#Ja!AY7zE%MC G5e?9|kQB`T literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/af/5a0c0018b5e9c04b56ac52f21b4d28f48d99ea b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/af/5a0c0018b5e9c04b56ac52f21b4d28f48d99ea new file mode 100644 index 0000000000000000000000000000000000000000..e05e3b67a8f1ce8742a6596fbf601296af3a3ded GIT binary patch literal 1338 zcmV-A1;zS!0fkmwbK5o$>}&KZE{dnMJElB#AKFQpbR5SW=b<0dy3_Va1CmD(H3=~I zkgRt4-@6Auvf}YHPqs*4aksm-U_IEHF24TetIu9MKdZGl^Zji0f-Vj5y&9*1skioy zeB<;KC|HV9s{)gvrsw94+sZ~fcg$oBp00GDDf)gfdjXi+Ui%DyzuK%VHc-8lRh8q0 z^_r_mHFwA7C$#C=5OzCOP4IFQRsloMNSU^r?6II@$EM+9e*#eKk!O?jI#{!4#r|YlzJB}o9$Iz`!*vq)^vIm zoeCNptd-NM264djESzC;KK8xwfmNHidAp^SI~9j;NL1?_?dm!7q#_?z&%L5P8E05}Ni0%qs)HypQ#C@*-C_1KY8#|6VyvkbCHV8Za zcRr0OG(A9MSplUCaw^ZZq#T##!K2OV(`v&TP%Yx3(V(Y?R;f3K$`dd{8b3>yy)dugD0eV|6kh+5Do^6!cOha_M8?n~12a30+GH_$` z0ozMc+q6Epi_r69{ZAINRx=%+&_Al4)GIZPgs z)iB}St}zilidmp;c8^v9rIKaqQN$5 z*lS$c_$b3to2}%c*bd{xP9iGzB?TR1R?T6=q-^MUx~GE$gTUxMTd0bda-hqY;B~CLU@6T35+L~;Gaa0$Ms#>_;_#HCB-0GQKTi+Dtrmx zu>>N5RW%J94eH}4kUKvr<#~OJXp)8&u)Ewg@1x%UQGs&X)Zxs%-JY+PZS4-9C#m+6y;s7E|3aXT;Z zaU@?XFv@o{mynp#OS=By=i5J*x4&FpFMqwcJYU{i{~;8mVN@YCKo#dqxp;Hd^7_og zVJJll_G^Kf@!)y(Ed4$@mfbk9uWbDnQiQ7V$yQZ9KqmTjk8|<_X+@DeX^jHS?UU>s w$$@zDX%3%aaBqdjsWm^!*WdgQ_sYhhO$kyy>JE)7PL*^|v`SC^0XQwZ3&gjQ0ssI2 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b0/737146b9269eaebd285320f1d939a2a3b3588b b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b0/737146b9269eaebd285320f1d939a2a3b3588b new file mode 100644 index 0000000000000000000000000000000000000000..472430848054a1a9b838da3e2e0fecec719c561c GIT binary patch literal 47 zcmbU@|L2;~bfdHwI3PI2tDpB`}kZNs@?N#kvcX!=# z2=C6U-H3n?H&HU4`43;5);h(@S1+E7pT?Skk)oml@JP|ZH;b? z6poIOAq#i~p&UDEKGm&vW|blO>cmsBW?kzC?#HW?^Wh1I$B^(nm;@^%yre|R5M9N$ zKKBxaM_js}_*E|z4qj1X%WxI&<+bt?#?%|6#HM~vLt={uxbsp!cg=(5Nq|o`L@x9z%<+64vz literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b8/70d82622c1a9ca6bcaf5df639680424a1904b0 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/b8/70d82622c1a9ca6bcaf5df639680424a1904b0 new file mode 100644 index 0000000000000000000000000000000000000000..2c626bf20575fbaea7bd87fd34162320dada68dd GIT binary patch literal 35 rcmbsLZML%D868hin?NQBrK@5N7`T78Z Cvl8|I literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/be/395946f46e946e096ecf4f31bf869d54ac71e8 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/be/395946f46e946e096ecf4f31bf869d54ac71e8 new file mode 100644 index 0000000000000000000000000000000000000000..6b03a800e4aad7336a13a80e5bdc476a1e0cdc9f GIT binary patch literal 49 zcmV-10M7q-0V^p=O;s>9VlXr?Ff%bx$W6@5V~CLa-Sb(vT&ch9nUeb4~_ H5N{9O@mv;9 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/c2/f19dcaf3209fa0330f7a1986eb5193735dd991 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/c2/f19dcaf3209fa0330f7a1986eb5193735dd991 new file mode 100644 index 0000000000000000000000000000000000000000..8c51f8f95013ccd7362d303bf8765644e51cc579 GIT binary patch literal 82 zcmbrU@Wb(U|fyG;V4glZ~8=3$B literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/c4/d426bc6ee9430ee7813263ce6d5da7ec78c3c6 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/c4/d426bc6ee9430ee7813263ce6d5da7ec78c3c6 new file mode 100644 index 0000000000000000000000000000000000000000..ad94907ad6d3b7382b31aea21511f3253e3398ab GIT binary patch literal 1278 zcmVCQ7EmIa3ne;?D zuDb5O?~s&iTF#tgT@WCO$oqZnxmVLdP3g^d-%h?cdNrO3Io5e}6dln!N&FLAEDKJ# zQun0OQY;M_Mbkp1_q38sN@bYgGcs(hDJ#{2xHP;Jaz28FD^?UZoK_Uig`twCTs-h( z$Z# za(WP=kT8v_PEW~~N(-aPYDDy7MKhkURe{XqyrQ*|Jp)mjpTL(HFSy}I;}f2^dq}U( z_`Vxo<-|hGL{>fR1hdv@!77^qCnS&qmZ9>LmYf-(tYdl%-LJXJ% zf)@)WXH*Euqq;{f;_gWtp+`#ofalXVLYw&KH*q8QJIlC%cR5e*BazVuNbCn#we!CyqC3c<|tZx$HMLKLI)?Q6{1wj5-rBCCbO;rMLfk zC3|76G@J9Y16KEqHg#}J(k70J?rTeJspA)XDnfyN z)Q0L)D%$sVyg)BMB_H^V+qLwDEuJO4x!tz_b*Q9Fl_VAT(W4El5iLvg2TzTC1+^Nq zl5pys{Mp+=cO2Z0`%%g?$6+8CgN~#4R@&h(3tBE7&=-m!QbT?)7|^fYUg!h4QIa$5 ziJH4vunUXM`FX@OOPgN1vQ0*|_8P&VAG#iXwxuWd8I4Bv&ya-ap~+o00X3KzzOHx$ zK#!u&yi|2IVLwmQ)FuP4(q<+ky+!B`W4XfY`9h|o-iJx@Jxj8WJ?c$*ecv8&Z9Aq5 zq{V6sn!vkt=TPcRN4(HH>VyY1q?t)vCKA(x(|1i+C%oyvVPnu~b-C~0Opk#SJsu1# za|nZ^caAVelbxLbFLka;b5|?7=>And9UX0T{Ecglz~XMZ{bG8BC{4NIL6DuGzBk~m zw$&kZcdVi;8aOl!`vN|m1h;Hmmp{~e3)uB+@7q}ja%HGVq6xLIu(rW(SkV?5_*}9% zHj{=uq019nrvqy1SV-;U&6mgLtwsrywo>5_@czj}T-yc1E)ITpzaZj+Uc$6@v0c}& zV4L3G@sf^@$*+YESP4s{vs)LRE@_MO)63%%MD1r)Sb!Vkz1N8JP&{lNvkE(_&_)MY zcH_*Zks*=8_pyAe={yKPE#?Ro&nS8lIz_45{90@}mg zKZ3M&5WxWOM>~~lHi@u00p9*EfBnYQ&bKM?Ibn;s@p;opTY*PH+?NX>>jhpOYfI}_ z6=~o*>z%Byk|99L)Y!JPU8PEVdxY-$&(7Zp-J~dVf|=Ke_6{iVRK$ ItC<3+0Nh#>6aWAK literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/cb/edc202b3998c809f7be4e52de280babb5785f2 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/cb/edc202b3998c809f7be4e52de280babb5785f2 new file mode 100644 index 0000000000000000000000000000000000000000..50b64293f532af91360fb905aa7e44091cf3cb19 GIT binary patch literal 139 zcmV;60CfL&0ReyjfB#}^Z(<-ZF*yKu0hP^53IZ_@MN!9DMdpH3b>|BrZl#ib(MZQY zhy!!_B?5IyGB=ngh@#EEG%>lTr{{Rv#m$4A_NJ2?TN^NMI$O`Rqe)*kwTU t6<^sm++St%$0hf6)9ivH%g%Xyrj|JEr&N8{sebH)GJ7S(IgMQ~J+%M; literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/d0/3840cb4e4cab5bd0526dce1e35e2ed0e8fd0d6 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/d0/3840cb4e4cab5bd0526dce1e35e2ed0e8fd0d6 new file mode 100644 index 0000000000000000000000000000000000000000..a6246e38323ac983431e1889beacb63dd2badf79 GIT binary patch literal 49 zcmb`Gu4xv3_`E? FB>}&J6W0I$ literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/d4/f1807e301c3b96b02b3beeceab720789db5d90 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/d4/f1807e301c3b96b02b3beeceab720789db5d90 new file mode 100644 index 0000000000000000000000000000000000000000..d658863a653b5fc6a6ff4d54cc80bebcb7a9b4d9 GIT binary patch literal 116 zcmV-)0E_>40gZ@B3IZ_@0KMuf`ltxfJxeEwh+pX?BazGmhPn8A;}0zAP?VOcK*M#1 ze*(eXM9qfS9Mz4@D0WRHpSoUIBt#eRRAfy8_wG_`4`np)1A3z)#M`8|e#vXCs W?wmI`<|S`g%IOBbI(z|L!z%_Rc{T|E literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/db/36a28856dd23a36d88db7b73ad38770fc89e9e b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/db/36a28856dd23a36d88db7b73ad38770fc89e9e new file mode 100644 index 0000000000000000000000000000000000000000..85453052494bfa0f34776ad6ad79a52cb0b1110a GIT binary patch literal 83 zcmV-Z0IdIb0V^p=O;s>6V=y!@Ff%bxNHn)FGBZvyPBbx0OEfmHG&M;yOENS_wlFd_ pH#bX3OR`8cuuNl^(tb;So=5)-kxASSbGg23EByENB>?mN7~u_h9*qD1 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e1/44712c85c055bcf3248ab342592b440a477062 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e1/44712c85c055bcf3248ab342592b440a477062 new file mode 100644 index 0000000000000000000000000000000000000000..dc915f89296935a5940af0fa2d7ff1cf2b97cbad GIT binary patch literal 950 zcmV;n14;aN0d15)Z`(!?g?kl$#Y8sj7!YMUEqZVx1A^%#~+Sfofp=fhbBA9j%e+OpG?=cOpVAR zh0@zTQWV;v2yuii%Es^2Iv@KUu>}kHSaXOpR&c=qEknx+L zV;94c=%G1OX=G?CT;?ZSnL=Iug}qRSCJv}qNA@Tj2J1Ft9GSlN(tB$nQ^z5g4U?^r zLo*l@P|+buPZ4ECiO`3D2O)N*K#Q?KC)($NJU(^Pm)h!?(7gAYk2mMbEVDIfN1nHN zZ+u|N^U0LoZ`Z%l^?AkHb2qdty}3TQ%uv>4GqW+)g}Bm?jN8E3?1=81jn=f2sw=8& zUDFh)y>ZvaJw?w;|)-Q3_^+rEJ*qf?nHr8Z?RakN!Rnu)10h9Hd@6Isb!?VBTs?`4>7qkpDHC5#8VXy}rL+ z-DuN!MW-Jq|M%0!i&OeayOQ$qOl`cFwyVTY-oE{K`|h{w)_d_+w8lGx?Mcv7>fKA= zNtIxi9~Aczt5zCy9l!zmF5m@uu`@gIkKE+Yll12ay~ljWO`F|Rn`1TlwJL&@~T6Qq_^Sn5tJa{D$6LnM$SeF{s*&=ZxW3m8lQ literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e7/905292c5e1159574427f6645c8da60f64a1909 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/e7/905292c5e1159574427f6645c8da60f64a1909 new file mode 100644 index 0000000000000000000000000000000000000000..fa259a90d73d879d7ef9563521d7ef02bbd21400 GIT binary patch literal 57 zcmbgf0V^p=O;s>6W-v4`Ff%bx@Nji>VPI+2E7|+UanG)`4AVmY6;zxTD>gDQ l00M=g)U;xTRnjG?3C;}i=F0?@{p@&o%z9V89{@{P8P)H9B0>NF literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/ec/17ec1939b7c3e86b7cb6c0c4de6b0818a7e75e b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/ec/17ec1939b7c3e86b7cb6c0c4de6b0818a7e75e new file mode 100644 index 000000000..d7558de5f --- /dev/null +++ b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/ec/17ec1939b7c3e86b7cb6c0c4de6b0818a7e75e @@ -0,0 +1,2 @@ +x-K0P9E [rK&0H +Ȥ&7~]/q\!vyrqִ0&א &HʉAHGp0ZYosPf{>6F=cS^402{*U|<4b#*~`ddB$=V4#H?g1_mLdEBtPixg4zkV)0Z|Zj=rpK?!(ijAaQVUBni&Aq_^Gb^KN-9bi7(#+v zU4iN)84MK+xHK<2?|sg*QuDYhi`IrPpUx{EcXX?>J@cN;vb&Ohqp9}$Hsg+iYqZt_ I0N&m<8$p>y%m4rY literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f4/613cb98ea7ac3adcb446aeb2a0523ad3476ecf b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f4/613cb98ea7ac3adcb446aeb2a0523ad3476ecf new file mode 100644 index 0000000000000000000000000000000000000000..c0fb4e2216ba487900c9f8f696c85478b5707d7b GIT binary patch literal 83 zcmV-Z0IdIb0V^p=O;s>6V=y!@Ff%bxurN$EGBq?aOiMO5OEI!cPEATSG&eRfGc`4~ pFf=r>NHR=HG)ra>Tc8^ExNMV^@P{;;`}y;(?CQ9u0s!S)7o!Z;9-IIG literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f9/5e34847d032c1b1440cbfa854f235484d58e85 b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/f9/5e34847d032c1b1440cbfa854f235484d58e85 new file mode 100644 index 0000000000000000000000000000000000000000..234a9fd6460e8d9d5bad2be596ca4a446b6417d9 GIT binary patch literal 54 zcmb6V=y!@Ff%bxNK7_KOEpR~GfFeHFi$ZBA~Vaxq_h+h!&Gx~ n3p2}9BTF-jG={i)F>)`sKPjE`vWv_M_HD0qRLcSY2?!R302~|U literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/fd/9f6fa59134f2900f583d35a3387a064e0b661d b/commands/testdata/scanpullrequest/multi-dir-test-proj/git/objects/fd/9f6fa59134f2900f583d35a3387a064e0b661d new file mode 100644 index 0000000000000000000000000000000000000000..6602fc3240629a2dade2e367297190cc960c5cda GIT binary patch literal 140 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 OL0VA(7)UQrkp2&OW~Uth literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/COMMIT_EDITMSG b/commands/testdata/scanpullrequest/test-proj-pip/git/COMMIT_EDITMSG new file mode 100644 index 000000000..b1b716105 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-pip/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +init diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/HEAD b/commands/testdata/scanpullrequest/test-proj-pip/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-pip/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/config b/commands/testdata/scanpullrequest/test-proj-pip/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-pip/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/description b/commands/testdata/scanpullrequest/test-proj-pip/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-pip/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/index b/commands/testdata/scanpullrequest/test-proj-pip/git/index new file mode 100644 index 0000000000000000000000000000000000000000..17fab6172ea22b5c0610a76be4ff62d3b9040f42 GIT binary patch literal 137 zcmZ?q402{*U|<4b#*~`ddB#ew%V9Jl1A`FbR>{>242?^G(%*qU`vQC1>Hvh>K4YZZmKcr 1686051583 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/logs/refs/heads/main b/commands/testdata/scanpullrequest/test-proj-pip/git/logs/refs/heads/main new file mode 100644 index 000000000..5c617aac6 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-pip/git/logs/refs/heads/main @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 54b376eb402cf9ef89447f23afb5ef0f6de96d7e delarea 1686051583 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/objects/54/b376eb402cf9ef89447f23afb5ef0f6de96d7e b/commands/testdata/scanpullrequest/test-proj-pip/git/objects/54/b376eb402cf9ef89447f23afb5ef0f6de96d7e new file mode 100644 index 000000000..996726d30 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-pip/git/objects/54/b376eb402cf9ef89447f23afb5ef0f6de96d7e @@ -0,0 +1,2 @@ +xM +1 @a=E-xdjejԅwFmd4,.y%VkrEB2d賞cB\K{l@k,"%)md2y \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/objects/5e/dae408cad286ea89e241d46ca1a958d1e420db b/commands/testdata/scanpullrequest/test-proj-pip/git/objects/5e/dae408cad286ea89e241d46ca1a958d1e420db new file mode 100644 index 000000000..5c29931cf --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-pip/git/objects/5e/dae408cad286ea89e241d46ca1a958d1e420db @@ -0,0 +1 @@ +x- D]4DԤ%4-PogyT4f i佉T[!RQ[jx;DB%tSd(:G~CbRtYCX$噷Ki>o`ypɎ|J6/ \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/test-proj-pip/git/objects/90/2d499e48521e7f329f0387e4da6bbfbba0d0b2 b/commands/testdata/scanpullrequest/test-proj-pip/git/objects/90/2d499e48521e7f329f0387e4da6bbfbba0d0b2 new file mode 100644 index 0000000000000000000000000000000000000000..2215b8b9b32856ca054ff233983ea6b1578ef9bd GIT binary patch literal 53 zcmb}1Y42?^G(%*q*|Rp*Xr$~nID5(eSo(xjBkBK?BI=BMk` S=dZoh;VBNgfAK0toXD?ye3 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-proj-subdir/git/info/exclude b/commands/testdata/scanpullrequest/test-proj-subdir/git/info/exclude new file mode 100644 index 000000000..a5196d1be --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-subdir/git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/commands/testdata/scanpullrequest/test-proj-subdir/git/logs/HEAD b/commands/testdata/scanpullrequest/test-proj-subdir/git/logs/HEAD new file mode 100644 index 000000000..44b258ac5 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-subdir/git/logs/HEAD @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 9042489fc531a41457e0ade414da57b2bc9bd8bc delarea 1686051515 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/test-proj-subdir/git/logs/refs/heads/main b/commands/testdata/scanpullrequest/test-proj-subdir/git/logs/refs/heads/main new file mode 100644 index 000000000..44b258ac5 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-subdir/git/logs/refs/heads/main @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 9042489fc531a41457e0ade414da57b2bc9bd8bc delarea 1686051515 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/test-proj-subdir/git/objects/90/42489fc531a41457e0ade414da57b2bc9bd8bc b/commands/testdata/scanpullrequest/test-proj-subdir/git/objects/90/42489fc531a41457e0ade414da57b2bc9bd8bc new file mode 100644 index 0000000000000000000000000000000000000000..5154ec862e5014e01b7cfe4bbd0a7128f9a6bb6a GIT binary patch literal 119 zcmV--0Eqv10hNtG3c@fD06pgwdlzK4$)+n5@hjV8tC7|~hzEafz94fO7$()@C>@CB zQ*UOVGWn~p2%FKgZjonYp`0};1;(@nK?>gKr$1|hY`Zp7SnR8Nw)<;q^>In{xB*3p Z$TWa6dPFzucy;@)a^+pR`vH`9W-u`T0)^tzq?F7ehGXWpKg)E6&gpS*xbCoH_0tdszg_?& GkPr{xiWKqy literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-proj-subdir/git/objects/c6/37dbf31c89559c8c4040d740b8abe554404e8d b/commands/testdata/scanpullrequest/test-proj-subdir/git/objects/c6/37dbf31c89559c8c4040d740b8abe554404e8d new file mode 100644 index 0000000000000000000000000000000000000000..7f8949b4c17e813ce27d07cc68e02a0a341396ce GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#W0<$*&n3%`I|SF}$4=F` PW14b~FTDf+kr)!GWzQF+ literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-proj-subdir/git/refs/heads/main b/commands/testdata/scanpullrequest/test-proj-subdir/git/refs/heads/main new file mode 100644 index 000000000..036e02399 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj-subdir/git/refs/heads/main @@ -0,0 +1 @@ +9042489fc531a41457e0ade414da57b2bc9bd8bc diff --git a/commands/testdata/scanpullrequest/test-proj/git/COMMIT_EDITMSG b/commands/testdata/scanpullrequest/test-proj/git/COMMIT_EDITMSG new file mode 100644 index 000000000..b1b716105 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +init diff --git a/commands/testdata/scanpullrequest/test-proj/git/HEAD b/commands/testdata/scanpullrequest/test-proj/git/HEAD new file mode 100644 index 000000000..b870d8262 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj/git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/main diff --git a/commands/testdata/scanpullrequest/test-proj/git/config b/commands/testdata/scanpullrequest/test-proj/git/config new file mode 100644 index 000000000..6c9406b7d --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj/git/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true + precomposeunicode = true diff --git a/commands/testdata/scanpullrequest/test-proj/git/description b/commands/testdata/scanpullrequest/test-proj/git/description new file mode 100644 index 000000000..498b267a8 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj/git/description @@ -0,0 +1 @@ +Unnamed repository; edit this file 'description' to name the repository. diff --git a/commands/testdata/scanpullrequest/test-proj/git/index b/commands/testdata/scanpullrequest/test-proj/git/index new file mode 100644 index 0000000000000000000000000000000000000000..e494fd60a7208c3bb3e7ccd1c82dc24a678d1bb9 GIT binary patch literal 145 zcmZ?q402{*U|<4b#*~`ddB&P2Cc8W~I#rb(aRX`9D 1685960481 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/test-proj/git/logs/refs/heads/main b/commands/testdata/scanpullrequest/test-proj/git/logs/refs/heads/main new file mode 100644 index 000000000..6c0aa2211 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj/git/logs/refs/heads/main @@ -0,0 +1 @@ +0000000000000000000000000000000000000000 9f19e8e214da2ec75e3191980f30b567c7558ff7 delarea 1685960481 +0300 commit (initial): init diff --git a/commands/testdata/scanpullrequest/test-proj/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 b/commands/testdata/scanpullrequest/test-proj/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 new file mode 100644 index 000000000..7746afa2c --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 @@ -0,0 +1 @@ +x%@0Eͬi!#:-a{ι_}+[gs!,2):<"!)9H#&G!5'q+MWH ֈIG=H%"P \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/test-proj/git/objects/9f/19e8e214da2ec75e3191980f30b567c7558ff7 b/commands/testdata/scanpullrequest/test-proj/git/objects/9f/19e8e214da2ec75e3191980f30b567c7558ff7 new file mode 100644 index 0000000000000000000000000000000000000000..08754d71658f9f915592946cff5a67eb19de4ce1 GIT binary patch literal 118 zcmV-+0Ez#20hNtW3PK?e0Q>e7`ya%LuC5T#Rdn4~#(N23AKgB$(B}*cBmFqq1WWNW zhbl;Lv6jtQ;Y5^##iPd>Jr>SIiTq;aYVv13`+%x@9-85*-@I47zqZjI7wN|hY+y4U@$Z=Ff%bxC`e4sPE1eL%PP*#W0<$*&n3%`I|SF}$4=F` PW14b~FTDf+kr)!GWzQF+ literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-proj/git/refs/heads/main b/commands/testdata/scanpullrequest/test-proj/git/refs/heads/main new file mode 100644 index 000000000..368f5f0d7 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-proj/git/refs/heads/main @@ -0,0 +1 @@ +9f19e8e214da2ec75e3191980f30b567c7558ff7 diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail.tar.gz b/commands/testdata/scanpullrequest/test-same-branch-fail.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3fd3c0f7bf878f92c571014b494f63a1b41b26cd GIT binary patch literal 13160 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 qI?bf&q@i{E?A8Aj4M$FY-?wLXNWkw$k_IA 1684934822 +0300 commit (initial): init +040abf2a9d8a9f4aeaede3b8431d988d57fddf36 ebe022f659464ddc9f973bce7d5c491a6484d210 delarea 1685959812 +0300 commit: init diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/logs/refs/heads/main b/commands/testdata/scanpullrequest/test-same-branch-fail/git/logs/refs/heads/main new file mode 100644 index 000000000..83bc3f710 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-same-branch-fail/git/logs/refs/heads/main @@ -0,0 +1,2 @@ +0000000000000000000000000000000000000000 040abf2a9d8a9f4aeaede3b8431d988d57fddf36 delarea 1684934822 +0300 commit (initial): init +040abf2a9d8a9f4aeaede3b8431d988d57fddf36 ebe022f659464ddc9f973bce7d5c491a6484d210 delarea 1685959812 +0300 commit: init diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/04/0abf2a9d8a9f4aeaede3b8431d988d57fddf36 b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/04/0abf2a9d8a9f4aeaede3b8431d988d57fddf36 new file mode 100644 index 0000000000000000000000000000000000000000..3780e20e3cd42da0443d8649ddbebc7769782f1b GIT binary patch literal 119 zcmV--0Eqv10hNtG4gw(z06p`H-c3w*DN9L=@heceidiHfc<}e~1&=eyWTe$v1}x5> zMpp&dtj}q;i*Rr*2n!)$_JoOJQs-#0ayIcZo~=XHBX*5&)o(nq-d}rfkBhW=gJok1 ZmUvy^j26*MJ6}Wpt4w*9VSdbLGAJuHHY5N5 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/41/0fc517e03bad9856571ee01247417d91a5405d b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/41/0fc517e03bad9856571ee01247417d91a5405d new file mode 100644 index 000000000..833b1ab88 --- /dev/null +++ b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/41/0fc517e03bad9856571ee01247417d91a5405d @@ -0,0 +1 @@ +x%0a}m]|vciĘ˚}O_=pW !-tKg#o܄V6.vv'<&{S%i^B'<v,& \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 new file mode 100644 index 000000000..7746afa2c --- /dev/null +++ b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/9e/acfcd239f1b811ad6f5d952cdc3564ce0e6774 @@ -0,0 +1 @@ +x%@0Eͬi!#:-a{ι_}+[gs!,2):<"!)9H#&G!5'q+MWH ֈIG=H%"P \ No newline at end of file diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/b8/5f31622acb022542282ac7cdd5ff7880c4cbf7 b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/b8/5f31622acb022542282ac7cdd5ff7880c4cbf7 new file mode 100644 index 0000000000000000000000000000000000000000..6b1b32184665f58f8a6c6acfddab5e52411da55a GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#V{qg@D*nKF?ToN+xd%e- PjZ71Yf2DVS}zv5 literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/c6/37dbf31c89559c8c4040d740b8abe554404e8d b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/c6/37dbf31c89559c8c4040d740b8abe554404e8d new file mode 100644 index 0000000000000000000000000000000000000000..7f8949b4c17e813ce27d07cc68e02a0a341396ce GIT binary patch literal 57 zcmV-90LK4#0V^p=O;s>4U@$Z=Ff%bxC`e4sPE1eL%PP*#W0<$*&n3%`I|SF}$4=F` PW14b~FTDf+kr)!GWzQF+ literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/eb/e022f659464ddc9f973bce7d5c491a6484d210 b/commands/testdata/scanpullrequest/test-same-branch-fail/git/objects/eb/e022f659464ddc9f973bce7d5c491a6484d210 new file mode 100644 index 0000000000000000000000000000000000000000..6959f5e00e5ffd17a27ec1d0a3fbd844611ba5c6 GIT binary patch literal 149 zcmV;G0BZku0hNwH3c@fD06pgwxeJnRl6C_ker1#0)k@n)hzEafzTj;b7?@J`eeD)p zJoP4GGe-5(3_vA2fEWO9@KTtg>VoJ>C|MWtrY1+XE;z~xlo%;#AR%G#8H1lVA#z-l zS^aG2)1S3jmTiP&ukxjh<^IxEAD2@1o1JEiDJGo2o}G8j3_ISs{8yRvSiAWF$QwZ< D7bQiR literal 0 HcmV?d00001 diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/git/refs/heads/main b/commands/testdata/scanpullrequest/test-same-branch-fail/git/refs/heads/main new file mode 100644 index 000000000..bfd27406d --- /dev/null +++ b/commands/testdata/scanpullrequest/test-same-branch-fail/git/refs/heads/main @@ -0,0 +1 @@ +ebe022f659464ddc9f973bce7d5c491a6484d210 diff --git a/commands/testdata/scanpullrequest/test-same-branch-fail/package.json b/commands/testdata/scanpullrequest/test-same-branch-fail/package.json new file mode 100644 index 000000000..410fc517e --- /dev/null +++ b/commands/testdata/scanpullrequest/test-same-branch-fail/package.json @@ -0,0 +1,8 @@ +{ + "name": "test-same-branch-fail", + "version": "1.0.0", + "dependencies": { + "minimist": "1.2.5", + "uglify-js": "2.2.5" + } +} diff --git a/commands/utils/consts.go b/commands/utils/consts.go index 655ef5c5f..2f5f38b18 100644 --- a/commands/utils/consts.go +++ b/commands/utils/consts.go @@ -8,7 +8,8 @@ const ( baseResourceUrl = "https://raw.githubusercontent.com/jfrog/frogbot/master/resources/" // Errors - errUnsupportedMultiRepo = "multi repository configuration isn't supported. only one repository configuration is allowed" + errUnsupportedMultiRepo = "multi repository configuration isn't supported. Only one repository configuration is allowed" + ErrScanPullRequestSameBranches = "scan pull request command triggered on the same branch: %s, Please check your configuration" // Images NoVulnerabilityPrBannerSource ImageSource = "v2/noVulnerabilityBannerPR.png" diff --git a/commands/utils/git.go b/commands/utils/git.go index 998bc5c97..0e80a55e0 100644 --- a/commands/utils/git.go +++ b/commands/utils/git.go @@ -11,6 +11,7 @@ import ( "github.com/jfrog/jfrog-client-go/utils/io/fileutils" "net/http" "os" + "path/filepath" "strings" "time" @@ -85,6 +86,7 @@ func (gm *GitManager) CheckoutLocalBranch(branchName string) error { if err != nil { err = fmt.Errorf("'git checkout %s' failed with error: %s", branchName, err.Error()) } + log.Debug("Running git checkout to local branch:", branchName) return err } @@ -138,8 +140,13 @@ func (gm *GitManager) getRemoteUrl() (string, error) { } func (gm *GitManager) CreateBranchAndCheckout(branchName string) error { + log.Debug("Creating branch", branchName, "...") err := gm.createBranchAndCheckout(branchName, true) if err != nil { + // Don't fail on dryRuns as we operate on local repositories,branch could be existing. + if gm.dryRun { + return nil + } err = fmt.Errorf("git create and checkout failed with error: %s", err.Error()) } return err @@ -159,6 +166,7 @@ func (gm *GitManager) createBranchAndCheckout(branchName string, create bool) er } func (gm *GitManager) AddAllAndCommit(commitMessage string) error { + log.Debug("Running git add all and commit...") err := gm.addAll() if err != nil { return err @@ -218,6 +226,9 @@ func (gm *GitManager) commit(commitMessage string) error { } func (gm *GitManager) BranchExistsInRemote(branchName string) (bool, error) { + if gm.dryRun { + return false, nil + } remote, err := gm.repository.Remote(gm.remoteName) if err != nil { return false, errorutils.CheckError(err) @@ -236,6 +247,7 @@ func (gm *GitManager) BranchExistsInRemote(branchName string) (bool, error) { } func (gm *GitManager) Push(force bool, branchName string) error { + log.Debug("Pushing branch:", branchName, "...") if gm.dryRun { // On dry run do not push to any remote return nil @@ -342,8 +354,9 @@ func (gm *GitManager) dryRunClone(destination string) error { return err } // Copy all the current directory content to the destination path - err = fileutils.CopyDir(baseWd, destination, true, nil) - if err != nil { + // In order to avoid an endless loop when copying into the current directory, exclude the target folder. + exclude := []string{filepath.Base(destination)} + if err = fileutils.CopyDir(baseWd, destination, true, exclude); err != nil { return err } // Set the git repository to the new destination .git folder @@ -388,6 +401,7 @@ func (gm *GitManager) CheckoutRemoteBranch(branchName string) error { Force: true, } } + log.Debug("Running git checkout to remote branch:", branchName) worktree, err := gm.repository.Worktree() if err != nil { return err diff --git a/commands/utils/params.go b/commands/utils/params.go index c9a00762e..18274c0f7 100644 --- a/commands/utils/params.go +++ b/commands/utils/params.go @@ -51,8 +51,8 @@ type Params struct { JFrogPlatform `yaml:"jfrogPlatform,omitempty"` } -func (p *Params) setDefaultsIfNeeded(clientInfo *ClientInfo) error { - if err := p.Git.setDefaultsIfNeeded(clientInfo); err != nil { +func (p *Params) setDefaultsIfNeeded(git *Git) error { + if err := p.Git.setDefaultsIfNeeded(git); err != nil { return err } if err := p.JFrogPlatform.setDefaultsIfNeeded(); err != nil { @@ -195,18 +195,18 @@ type Git struct { PullRequestID int } -func (g *Git) setDefaultsIfNeeded(clientInfo *ClientInfo) (err error) { - g.RepoOwner = clientInfo.RepoOwner - g.GitProvider = clientInfo.GitProvider - g.VcsInfo = clientInfo.VcsInfo +func (g *Git) setDefaultsIfNeeded(git *Git) (err error) { + g.RepoOwner = git.RepoOwner + g.GitProvider = git.GitProvider + g.VcsInfo = git.VcsInfo if g.RepoName == "" { - if clientInfo.RepoName == "" { + if git.RepoName == "" { return fmt.Errorf("repository name is missing. please set the repository name in your %s file or as the %s environment variable", FrogbotConfigFile, GitRepoEnv) } - g.RepoName = clientInfo.RepoName + g.RepoName = git.RepoName } if len(g.Branches) == 0 { - g.Branches = append(g.Branches, clientInfo.Branches...) + g.Branches = append(g.Branches, git.Branches...) } if g.BranchNameTemplate == "" { branchTemplate := getTrimmedEnv(BranchNameTemplateEnv) @@ -221,6 +221,7 @@ func (g *Git) setDefaultsIfNeeded(clientInfo *ClientInfo) (err error) { if g.PullRequestTitleTemplate == "" { g.PullRequestTitleTemplate = getTrimmedEnv(PullRequestTitleTemplateEnv) } + g.AggregateFixes = git.AggregateFixes if !g.AggregateFixes { g.AggregateFixes, err = getBoolEnv(GitAggregateFixesEnv, false) } @@ -242,7 +243,7 @@ func validateHashPlaceHolder(template string) error { func GetFrogbotUtils() (frogbotUtils *FrogbotUtils, err error) { // Get server and git details - server, clientInfo, err := extractClientServerParams() + server, gitParams, err := extractClientServerParams() if err != nil { return nil, err } @@ -252,18 +253,18 @@ func GetFrogbotUtils() (frogbotUtils *FrogbotUtils, err error) { // Build a version control client for REST API requests client, err := vcsclient. - NewClientBuilder(clientInfo.GitProvider). - ApiEndpoint(clientInfo.APIEndpoint). - Token(clientInfo.Token). - Project(clientInfo.Project). + NewClientBuilder(gitParams.GitProvider). + ApiEndpoint(gitParams.APIEndpoint). + Token(gitParams.Token). + Project(gitParams.Project). Logger(log.GetLogger()). - Username(clientInfo.Username). + Username(gitParams.Username). Build() if err != nil { return nil, err } - configAggregator, err := getConfigAggregator(client, clientInfo, server) + configAggregator, err := getConfigAggregator(client, gitParams, server) if err != nil { return nil, err } @@ -271,14 +272,14 @@ func GetFrogbotUtils() (frogbotUtils *FrogbotUtils, err error) { } // getConfigAggregator returns a RepoAggregator based on frogbot-config.yml and environment variables. -func getConfigAggregator(client vcsclient.VcsClient, clientInfo *ClientInfo, server *coreconfig.ServerDetails) (RepoAggregator, error) { - configFileContent, err := getConfigFileContent(client, clientInfo) +func getConfigAggregator(client vcsclient.VcsClient, gitParams *Git, server *coreconfig.ServerDetails) (RepoAggregator, error) { + configFileContent, err := getConfigFileContent(client, &gitParams.ClientInfo) // Don't return error in case of a missing frogbot-config.yml file // If an error occurs due to a missing file, attempt to generate an environment variable-based configuration aggregator as an alternative. if _, missingConfigErr := err.(*ErrMissingConfig); !missingConfigErr && len(configFileContent) == 0 { return nil, err } - return BuildRepoAggregator(configFileContent, clientInfo, server) + return BuildRepoAggregator(configFileContent, gitParams, server) } // The getConfigFileContent function retrieves the frogbot-config.yml file content. @@ -300,7 +301,7 @@ func getConfigFileContent(client vcsclient.VcsClient, clientInfo *ClientInfo) (c // BuildRepoAggregator receive a frogbot-config.yml file content along with the ClientInfo and ServerDetails parameters. // Returns a RepoAggregator instance with all the defaults and necessary fields. -func BuildRepoAggregator(configFileContent []byte, clientInfo *ClientInfo, server *coreconfig.ServerDetails) (resultAggregator RepoAggregator, err error) { +func BuildRepoAggregator(configFileContent []byte, gitParams *Git, server *coreconfig.ServerDetails) (resultAggregator RepoAggregator, err error) { var cleanAggregator RepoAggregator // Unmarshal the frogbot-config.yml file if exists if cleanAggregator, err = unmarshalFrogbotConfigYaml(configFileContent); err != nil { @@ -308,8 +309,8 @@ func BuildRepoAggregator(configFileContent []byte, clientInfo *ClientInfo, serve } for _, repository := range cleanAggregator { repository.Server = *server - repository.OutputWriter = GetCompatibleOutputWriter(clientInfo.GitProvider) - if err = repository.Params.setDefaultsIfNeeded(clientInfo); err != nil { + repository.OutputWriter = GetCompatibleOutputWriter(gitParams.GitProvider) + if err = repository.Params.setDefaultsIfNeeded(gitParams); err != nil { return } resultAggregator = append(resultAggregator, repository) @@ -467,7 +468,7 @@ func SanitizeEnv() error { return nil } -func extractClientServerParams() (*coreconfig.ServerDetails, *ClientInfo, error) { +func extractClientServerParams() (*coreconfig.ServerDetails, *Git, error) { clientInfo, err := extractClientInfo() if err != nil { return nil, nil, err @@ -476,7 +477,8 @@ func extractClientServerParams() (*coreconfig.ServerDetails, *ClientInfo, error) if err != nil { return nil, nil, err } - return &server, clientInfo, nil + git := Git{ClientInfo: *clientInfo} + return &server, &git, nil } // ReadConfigFromFileSystem looks for .frogbot/frogbot-config.yml from the given path and return its content. The path is relative and starts from the root of the project. diff --git a/commands/utils/params_test.go b/commands/utils/params_test.go index 2971eec3d..bfbc15fbd 100644 --- a/commands/utils/params_test.go +++ b/commands/utils/params_test.go @@ -306,15 +306,17 @@ func TestGenerateConfigAggregatorFromEnv(t *testing.T) { assert.NoError(t, SanitizeEnv()) }() - clientInfo := &ClientInfo{ - GitProvider: vcsutils.GitHub, - VcsInfo: vcsclient.VcsInfo{ - APIEndpoint: "endpoint.com", - Token: "123456789", + gitParams := Git{ + ClientInfo: ClientInfo{ + GitProvider: vcsutils.GitHub, + VcsInfo: vcsclient.VcsInfo{ + APIEndpoint: "endpoint.com", + Token: "123456789", + }, + RepoName: "repoName", + Branches: []string{"master"}, + RepoOwner: "jfrog", }, - RepoName: "repoName", - Branches: []string{"master"}, - RepoOwner: "jfrog", } server := config.ServerDetails{ ArtifactoryUrl: "http://127.0.0.1:8081/artifactory", @@ -322,7 +324,7 @@ func TestGenerateConfigAggregatorFromEnv(t *testing.T) { User: "admin", Password: "password", } - repoAggregator, err := BuildRepoAggregator(nil, clientInfo, &server) + repoAggregator, err := BuildRepoAggregator(nil, &gitParams, &server) assert.NoError(t, err) repo := repoAggregator[0] assert.Equal(t, "repoName", repo.RepoName) @@ -330,12 +332,12 @@ func TestGenerateConfigAggregatorFromEnv(t *testing.T) { assert.Equal(t, false, *repo.FailOnSecurityIssues) assert.Equal(t, "Medium", repo.MinSeverity) assert.Equal(t, true, repo.FixableOnly) - assert.Equal(t, clientInfo.RepoOwner, repo.RepoOwner) - assert.Equal(t, clientInfo.Token, repo.Token) - assert.Equal(t, clientInfo.APIEndpoint, repo.APIEndpoint) - assert.ElementsMatch(t, clientInfo.Branches, repo.Branches) + assert.Equal(t, gitParams.RepoOwner, repo.RepoOwner) + assert.Equal(t, gitParams.Token, repo.Token) + assert.Equal(t, gitParams.APIEndpoint, repo.APIEndpoint) + assert.ElementsMatch(t, gitParams.Branches, repo.Branches) assert.Equal(t, repo.PullRequestID, repo.PullRequestID) - assert.Equal(t, clientInfo.GitProvider, repo.GitProvider) + assert.Equal(t, gitParams.GitProvider, repo.GitProvider) assert.Equal(t, repo.BranchNameTemplate, repo.BranchNameTemplate) assert.Equal(t, repo.CommitMessageTemplate, repo.CommitMessageTemplate) assert.Equal(t, repo.PullRequestTitleTemplate, repo.PullRequestTitleTemplate) @@ -454,15 +456,17 @@ func TestBuildMergedRepoAggregator(t *testing.T) { testFilePath := filepath.Join("..", "testdata", "config", "frogbot-config-test-params-merge.yml") fileContent, err := os.ReadFile(testFilePath) assert.NoError(t, err) - clientInfo := &ClientInfo{ - GitProvider: vcsutils.GitHub, - VcsInfo: vcsclient.VcsInfo{ - APIEndpoint: "endpoint.com", - Token: "123456789", + gitParams := Git{ + ClientInfo: ClientInfo{ + GitProvider: vcsutils.GitHub, + VcsInfo: vcsclient.VcsInfo{ + APIEndpoint: "endpoint.com", + Token: "123456789", + }, + RepoName: "repoName", + Branches: []string{"master"}, + RepoOwner: "jfrog", }, - RepoName: "repoName", - Branches: []string{"master"}, - RepoOwner: "jfrog", } server := config.ServerDetails{ ArtifactoryUrl: "http://127.0.0.1:8081/artifactory", @@ -470,10 +474,10 @@ func TestBuildMergedRepoAggregator(t *testing.T) { User: "admin", Password: "password", } - repoAggregator, err := BuildRepoAggregator(fileContent, clientInfo, &server) + repoAggregator, err := BuildRepoAggregator(fileContent, &gitParams, &server) assert.NoError(t, err) repo := repoAggregator[0] - assert.True(t, repo.AggregateFixes) + assert.Equal(t, repo.AggregateFixes, false) assert.True(t, repo.IncludeAllVulnerabilities) assert.True(t, repo.FixableOnly) assert.True(t, *repo.FailOnSecurityIssues) diff --git a/commands/utils/testsutils.go b/commands/utils/testsutils.go index c3808214c..5e88619c7 100644 --- a/commands/utils/testsutils.go +++ b/commands/utils/testsutils.go @@ -39,7 +39,18 @@ func PrepareTestEnvironment(t *testing.T, projectName, testDir string) (string, err = fileutils.CopyDir(filepath.Join("testdata", testDir), tmpDir, true, []string{}) assert.NoError(t, err) - restoreDir, err := Chdir(filepath.Join(tmpDir, projectName)) + // Renames test git folder to .git + currentDir := filepath.Join(tmpDir, projectName) + testGitFolderPath := filepath.Join(currentDir, "git") + exists, err := fileutils.IsDirExists(testGitFolderPath, false) + assert.NoError(t, err) + if exists { + err = fileutils.CopyDir(testGitFolderPath, filepath.Join(currentDir, ".git"), true, []string{}) + assert.NoError(t, err) + err = fileutils.RemoveTempDir(testGitFolderPath) + assert.NoError(t, err) + } + restoreDir, err := Chdir(currentDir) assert.NoError(t, err) return tmpDir, func() { assert.NoError(t, restoreDir()) diff --git a/commands/utils/utils.go b/commands/utils/utils.go index 7f7f7dc8f..ce1a993c0 100644 --- a/commands/utils/utils.go +++ b/commands/utils/utils.go @@ -172,13 +172,12 @@ func Md5Hash(values ...string) (string, error) { return hex.EncodeToString(hash.Sum(nil)), nil } -// Generates MD5Hash from a FixVersionMap object +// Generates MD5Hash from a vulnerabilityDetails // The map can be returned in different order from Xray, so we need to sort the strings before hashing. -func FixVersionsMapToMd5Hash(versionsMap map[string]*VulnerabilityDetails) (string, error) { +func VulnerabilityDetailsToMD5Hash(vulnerabilityDetails map[string]*VulnerabilityDetails) (string, error) { h := crypto.MD5.New() - // Sort the package names - keys := make([]string, 0, len(versionsMap)) - for k, v := range versionsMap { + keys := make([]string, 0, len(vulnerabilityDetails)) + for k, v := range vulnerabilityDetails { keys = append(keys, k+v.FixVersion) } sort.Strings(keys) diff --git a/commands/utils/utils_test.go b/commands/utils/utils_test.go index 166ed2306..de4482477 100644 --- a/commands/utils/utils_test.go +++ b/commands/utils/utils_test.go @@ -157,7 +157,7 @@ func TestFixVersionsMapToMd5Hash(t *testing.T) { } for _, test := range tests { t.Run(test.expectedHash, func(t *testing.T) { - hash, err := FixVersionsMapToMd5Hash(test.fixVersionMap) + hash, err := VulnerabilityDetailsToMD5Hash(test.fixVersionMap) assert.NoError(t, err) assert.Equal(t, test.expectedHash, hash) }) diff --git a/go.mod b/go.mod index c9787e1ee..c71aecbc9 100644 --- a/go.mod +++ b/go.mod @@ -115,6 +115,4 @@ require ( // replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20230626054221-18f70e4c045e -// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20230518114837-fe6a826d5001 - // replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20230611131847-a3b84a9004c3 From 8e4278f722d8fe4c9f2862f256bc92988abab743 Mon Sep 17 00:00:00 2001 From: Eyal Delarea Date: Mon, 3 Jul 2023 16:34:19 +0300 Subject: [PATCH 4/4] Fix identification of existing pull request on Bitbucket Server (#376) --- commands/createfixpullrequests.go | 2 -- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/commands/createfixpullrequests.go b/commands/createfixpullrequests.go index 16448ef4d..2097bfecd 100644 --- a/commands/createfixpullrequests.go +++ b/commands/createfixpullrequests.go @@ -416,8 +416,6 @@ func (cfp *CreateFixPullRequestsCmd) getRemoteBranchScanHash(remoteBranchName st return utils.VulnerabilityDetailsToMD5Hash(vulnerabilitiesMap) } -// Retrieves the ID of an open pull request by source branch name. -// Returns -1 if there is no open pull request. func (cfp *CreateFixPullRequestsCmd) getOpenPullRequestBySourceBranch(branchName string) (prInfo *vcsclient.PullRequestInfo, err error) { list, err := cfp.details.Client().ListOpenPullRequests(context.Background(), cfp.details.RepoOwner, cfp.details.RepoName) if err != nil { diff --git a/go.mod b/go.mod index c71aecbc9..f336967af 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/go-git/go-git/v5 v5.7.0 github.com/golang/mock v1.6.0 github.com/jfrog/build-info-go v1.9.6 - github.com/jfrog/froggit-go v1.8.0 + github.com/jfrog/froggit-go v1.8.1 github.com/jfrog/gofrog v1.3.0 github.com/jfrog/jfrog-cli-core/v2 v2.36.0 github.com/jfrog/jfrog-client-go v1.30.1 diff --git a/go.sum b/go.sum index 727b2a7da..dc8092f16 100644 --- a/go.sum +++ b/go.sum @@ -220,8 +220,8 @@ github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1R github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jfrog/build-info-go v1.9.6 h1:lCJ2j5uXAlJsSwDe5J8WD7Co1f/hUlZvMfwfb5AzLJU= github.com/jfrog/build-info-go v1.9.6/go.mod h1:GbuFS+viHCKZYx9nWHYu7ab1DgQkFdtVN3BJPUNb2D4= -github.com/jfrog/froggit-go v1.8.0 h1:pto08wTiPTF+B2JB9yI+fEA1A4D7cKq34p/7g8ZlTSU= -github.com/jfrog/froggit-go v1.8.0/go.mod h1:XTFf4RqWwZsF9pdERt0Ra5gO1O3iqIq7Npx2tEQSGAQ= +github.com/jfrog/froggit-go v1.8.1 h1:3eT1gQ7/Snft181Ig7EZlZSaXlr++tskdxgoCJKmAmw= +github.com/jfrog/froggit-go v1.8.1/go.mod h1:XTFf4RqWwZsF9pdERt0Ra5gO1O3iqIq7Npx2tEQSGAQ= github.com/jfrog/gofrog v1.3.0 h1:o4zgsBZE4QyDbz2M7D4K6fXPTBJht+8lE87mS9bw7Gk= github.com/jfrog/gofrog v1.3.0/go.mod h1:IFMc+V/yf7rA5WZ74CSbXe+Lgf0iApEQLxRZVzKRUR0= github.com/jfrog/jfrog-cli-core/v2 v2.36.0 h1:SRS41DL34VkCZMxdIamQ/jUhM2lI72LGxLgLV+EouNs=