Skip to content

Commit 65c0c2c

Browse files
authored
Merge pull request #802 from inteon/fix_marker_parsing
🐛 Fix marker parsing
2 parents 6a6b7b8 + d5db06c commit 65c0c2c

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

pkg/markers/parse.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,14 @@ func guessType(scanner *sc.Scanner, raw string, allowSlice bool) *Argument {
373373

374374
// parseString parses either of the two accepted string forms (quoted, or bare tokens).
375375
func (a *Argument) parseString(scanner *sc.Scanner, raw string, out reflect.Value) {
376+
// we need to temporarily disable the scanner's int/float parsing, since we want to
377+
// prevent number parsing errors.
378+
oldMode := scanner.Mode
379+
scanner.Mode = oldMode &^ sc.ScanInts &^ sc.ScanFloats
380+
defer func() {
381+
scanner.Mode = oldMode
382+
}()
383+
376384
// strings are a bit weird -- the "easy" case is quoted strings (tokenized as strings),
377385
// the "hard" case (present for backwards compat) is a bare sequence of tokens that aren't
378386
// a comma.

pkg/markers/parse_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ var _ = Describe("Parsing", func() {
171171

172172
Context("of individual arguments", func() {
173173
It("should support bare strings", argParseTestCase{arg: Argument{Type: StringType}, raw: `some string here!`, output: "some string here!"}.Run)
174+
It("should support bare strings containing number-ish values 1", argParseTestCase{arg: Argument{Type: StringType}, raw: `aa 0Baaa aaa`, output: "aa 0Baaa aaa"}.Run)
175+
It("should support bare strings containing number-ish values 2", argParseTestCase{arg: Argument{Type: StringType}, raw: `/tmp/tmp-CHECKCRD-0B7LDeoZta`, output: "/tmp/tmp-CHECKCRD-0B7LDeoZta"}.Run)
176+
It("should support bare strings containing number-ish values 3", argParseTestCase{arg: Argument{Type: StringType}, raw: `.0B7LDeoZt`, output: ".0B7LDeoZt"}.Run)
174177
It("should support double-quoted strings", argParseTestCase{arg: Argument{Type: StringType}, raw: `"some; string, \nhere"`, output: "some; string, \nhere"}.Run)
175178
It("should support raw strings", argParseTestCase{arg: Argument{Type: StringType}, raw: "`some; string, \\nhere`", output: `some; string, \nhere`}.Run)
176179
It("should support integers", argParseTestCase{arg: Argument{Type: IntType}, raw: "42", output: 42}.Run)

0 commit comments

Comments
 (0)