aboutsummaryrefslogtreecommitdiffstats
path: root/internal/revision/parser_test.go
diff options
context:
space:
mode:
authorMichael Henriksen <mchnrksn@gmail.com>2022-02-19 15:12:42 +0100
committerMichael Henriksen <mchnrksn@gmail.com>2022-02-19 15:12:42 +0100
commitb333364cf3e8cfb13c9803d718f56291d7520fbb (patch)
tree8f0d889133ea726c663be670c293659f786fb531 /internal/revision/parser_test.go
parent935af59cf64fbe49eb8baba9fe80e6b236daf593 (diff)
downloadgo-git-b333364cf3e8cfb13c9803d718f56291d7520fbb.tar.gz
revision: fix endless looping in revision parser
Fixes a bug in the revision parser which caused an endless loop when parsing revisions with opening braces "{" but no closing braces "}". Example bad revisions: - ^{/ - ~@{ - @@{{0
Diffstat (limited to 'internal/revision/parser_test.go')
-rw-r--r--internal/revision/parser_test.go7
1 files changed, 5 insertions, 2 deletions
diff --git a/internal/revision/parser_test.go b/internal/revision/parser_test.go
index 98403cc..3a77b2f 100644
--- a/internal/revision/parser_test.go
+++ b/internal/revision/parser_test.go
@@ -183,7 +183,7 @@ func (s *ParserSuite) TestParseWithValidExpression(c *C) {
}
}
-func (s *ParserSuite) TestParseWithUnValidExpression(c *C) {
+func (s *ParserSuite) TestParseWithInvalidExpression(c *C) {
datas := map[string]error{
"..": &ErrInvalidRevision{`must not start with "."`},
"master^1master": &ErrInvalidRevision{`reference must be defined once at the beginning`},
@@ -198,6 +198,9 @@ func (s *ParserSuite) TestParseWithUnValidExpression(c *C) {
"~1": &ErrInvalidRevision{`"~" or "^" statement must have a reference defined at the beginning`},
"master:/test": &ErrInvalidRevision{`":" statement is not valid, could be : :/<regexp>`},
"master:0:README": &ErrInvalidRevision{`":" statement is not valid, could be : :<n>:<path>`},
+ "^{/": &ErrInvalidRevision{`missing "}" in ^{<data>} structure`},
+ "~@{": &ErrInvalidRevision{`missing "}" in @{<data>} structure`},
+ "@@{{0": &ErrInvalidRevision{`missing "}" in @{<data>} structure`},
}
for s, e := range datas {
@@ -230,7 +233,7 @@ func (s *ParserSuite) TestParseAtWithValidExpression(c *C) {
}
}
-func (s *ParserSuite) TestParseAtWithUnValidExpression(c *C) {
+func (s *ParserSuite) TestParseAtWithInvalidExpression(c *C) {
datas := map[string]error{
"{test}": &ErrInvalidRevision{`wrong date "test" must fit ISO-8601 format : 2006-01-02T15:04:05Z`},
"{-1": &ErrInvalidRevision{`missing "}" in @{-n} structure`},