From c39a6f27d47f4ea0f67e8a58d31ae717902c6794 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Sun, 18 Sep 2022 06:59:44 +0100 Subject: [PATCH 1/2] test(git): add basic parsing test for cherry-pick Currently, cherry-pick in gitGraphs only has e2e tests, no parsing unit tests. --- src/diagrams/git/gitGraphParserV2.spec.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/diagrams/git/gitGraphParserV2.spec.js b/src/diagrams/git/gitGraphParserV2.spec.js index b6c9c2459..8db1d6074 100644 --- a/src/diagrams/git/gitGraphParserV2.spec.js +++ b/src/diagrams/git/gitGraphParserV2.spec.js @@ -611,6 +611,22 @@ describe('when parsing a gitGraph', function () { ]); }); + it('should support cherry-picking commits', function () { + const str = `gitGraph + commit id: "ZERO" + branch develop + commit id:"A" + checkout main + cherry-pick id:"A" + `; + + parser.parse(str); + const commits = parser.yy.getCommits(); + const cherryPickCommitID = Object.keys(commits)[2]; + expect(commits[cherryPickCommitID].tag).toBe('cherry-pick:A'); + expect(commits[cherryPickCommitID].branch).toBe('main'); + }); + it('should throw error when try to branch existing branch: main', function () { const str = `gitGraph commit From aba458b832bd85f25d5c5b205500c16bb93c6eb3 Mon Sep 17 00:00:00 2001 From: Alois Klink Date: Sun, 18 Sep 2022 07:00:55 +0100 Subject: [PATCH 2/2] fix(git): fix cherry-pick regex parsing error I forgot to escape the `-` character in a regex statement. Fixes: 152795666932cf92af33635d2f98dcbe93e911ba --- src/diagrams/git/parser/gitGraph.jison | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/diagrams/git/parser/gitGraph.jison b/src/diagrams/git/parser/gitGraph.jison index f35dbcde3..a7a10912b 100644 --- a/src/diagrams/git/parser/gitGraph.jison +++ b/src/diagrams/git/parser/gitGraph.jison @@ -47,7 +47,7 @@ commit(?=\s|$) return 'COMMIT'; branch(?=\s|$) return 'BRANCH'; "order:" return 'ORDER'; merge(?=\s|$) return 'MERGE'; -cherry-pick(?=\s|$) return 'CHERRY_PICK'; +cherry\-pick(?=\s|$) return 'CHERRY_PICK'; // "reset" return 'RESET'; checkout(?=\s|$) return 'CHECKOUT'; "LR" return 'DIR';