diff --git a/internal/toml-test/json.go b/internal/toml-test/json.go index 4394f419..a5fa2830 100644 --- a/internal/toml-test/json.go +++ b/internal/toml-test/json.go @@ -1,6 +1,3 @@ -//go:build go1.16 -// +build go1.16 - package tomltest import ( diff --git a/internal/toml-test/runner.go b/internal/toml-test/runner.go index c0054c84..c838baf0 100644 --- a/internal/toml-test/runner.go +++ b/internal/toml-test/runner.go @@ -1,6 +1,4 @@ //go:generate ./gen-multi.py -//go:build go1.16 -// +build go1.16 package tomltest @@ -293,7 +291,7 @@ func (t Test) runValid(p Parser, fsys fs.FS) Test { } if t.Output == "" { // Special case: we expect an empty output here. - if t.Path != "valid/empty-file" { + if t.Path != "valid/empty-file" && t.Path != "valid/comment/noeol" { return t.fail("stdout is empty") } } diff --git a/internal/toml-test/tests/invalid/control/bare-cr.toml b/internal/toml-test/tests/invalid/control/bare-cr.toml new file mode 100644 index 00000000..37f4ce4c --- /dev/null +++ b/internal/toml-test/tests/invalid/control/bare-cr.toml @@ -0,0 +1,2 @@ +# The following line contains a single carriage return control character + \ No newline at end of file diff --git a/internal/toml-test/tests/invalid/control/bare-formfeed.toml b/internal/toml-test/tests/invalid/control/bare-formfeed.toml new file mode 100644 index 00000000..508a6508 --- /dev/null +++ b/internal/toml-test/tests/invalid/control/bare-formfeed.toml @@ -0,0 +1 @@ +bare-formfeed = diff --git a/internal/toml-test/tests/invalid/control/bare-vertical-tab.toml b/internal/toml-test/tests/invalid/control/bare-vertical-tab.toml new file mode 100644 index 00000000..abacefd2 --- /dev/null +++ b/internal/toml-test/tests/invalid/control/bare-vertical-tab.toml @@ -0,0 +1 @@ +bare-vertical-tab = diff --git a/internal/toml-test/tests/invalid/control/comment-cr.toml b/internal/toml-test/tests/invalid/control/comment-cr.toml index fad7b619..3ce1cb45 100644 --- a/internal/toml-test/tests/invalid/control/comment-cr.toml +++ b/internal/toml-test/tests/invalid/control/comment-cr.toml @@ -1 +1 @@ -comment-cr = "Carriage return in comment" # +comment-cr = "Carriage return in comment" # a=1 diff --git a/internal/toml-test/tests/invalid/control/control.multi b/internal/toml-test/tests/invalid/control/control.multi index 60cbf6ec..d23b6a64 100644 Binary files a/internal/toml-test/tests/invalid/control/control.multi and b/internal/toml-test/tests/invalid/control/control.multi differ diff --git a/internal/toml-test/tests/invalid/datetime/hour-over.toml b/internal/toml-test/tests/invalid/datetime/hour-over.toml new file mode 100644 index 00000000..d4b89b6a --- /dev/null +++ b/internal/toml-test/tests/invalid/datetime/hour-over.toml @@ -0,0 +1,2 @@ +# time-hour = 2DIGIT ; 00-23 +d = 2006-01-01T24:00:00-00:00 diff --git a/internal/toml-test/tests/invalid/datetime/impossible-date.toml b/internal/toml-test/tests/invalid/datetime/impossible-date.toml deleted file mode 100644 index a70a7d6f..00000000 --- a/internal/toml-test/tests/invalid/datetime/impossible-date.toml +++ /dev/null @@ -1,2 +0,0 @@ -# No months with 50 days. -d = 2006-01-50T00:00:00Z diff --git a/internal/toml-test/tests/invalid/datetime/mday-over.toml b/internal/toml-test/tests/invalid/datetime/mday-over.toml new file mode 100644 index 00000000..600a4095 --- /dev/null +++ b/internal/toml-test/tests/invalid/datetime/mday-over.toml @@ -0,0 +1,3 @@ +# date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on +# ; month/year +d = 2006-01-32T00:00:00-00:00 diff --git a/internal/toml-test/tests/invalid/datetime/mday-under.toml b/internal/toml-test/tests/invalid/datetime/mday-under.toml new file mode 100644 index 00000000..689fc98f --- /dev/null +++ b/internal/toml-test/tests/invalid/datetime/mday-under.toml @@ -0,0 +1,3 @@ +# date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on +# ; month/year +d = 2006-01-00T00:00:00-00:00 diff --git a/internal/toml-test/tests/invalid/datetime/minute-over.toml b/internal/toml-test/tests/invalid/datetime/minute-over.toml new file mode 100644 index 00000000..1532d79a --- /dev/null +++ b/internal/toml-test/tests/invalid/datetime/minute-over.toml @@ -0,0 +1,2 @@ +# time-minute = 2DIGIT ; 00-59 +d = 2006-01-01T00:60:00-00:00 diff --git a/internal/toml-test/tests/invalid/datetime/month-over.toml b/internal/toml-test/tests/invalid/datetime/month-over.toml new file mode 100644 index 00000000..c7d40c92 --- /dev/null +++ b/internal/toml-test/tests/invalid/datetime/month-over.toml @@ -0,0 +1,2 @@ +# date-month = 2DIGIT ; 01-12 +d = 2006-13-01T00:00:00-00:00 diff --git a/internal/toml-test/tests/invalid/datetime/month-under.toml b/internal/toml-test/tests/invalid/datetime/month-under.toml new file mode 100644 index 00000000..503f60a1 --- /dev/null +++ b/internal/toml-test/tests/invalid/datetime/month-under.toml @@ -0,0 +1,2 @@ +# date-month = 2DIGIT ; 01-12 +d = 2007-00-01T00:00:00-00:00 diff --git a/internal/toml-test/tests/invalid/datetime/second-over.toml b/internal/toml-test/tests/invalid/datetime/second-over.toml new file mode 100644 index 00000000..49217048 --- /dev/null +++ b/internal/toml-test/tests/invalid/datetime/second-over.toml @@ -0,0 +1,3 @@ +# time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second +# ; rules +d = 2006-01-01T00:00:61-00:00 diff --git a/internal/toml-test/tests/invalid/inline-table/add.toml b/internal/toml-test/tests/invalid/inline-table/add.toml new file mode 100644 index 00000000..bb8b3e8c --- /dev/null +++ b/internal/toml-test/tests/invalid/inline-table/add.toml @@ -0,0 +1,3 @@ +a={} +# Inline tables are immutable and can't be extended +[a.b] diff --git a/internal/toml-test/tests/invalid/inline-table/overwrite.toml b/internal/toml-test/tests/invalid/inline-table/overwrite.toml new file mode 100644 index 00000000..4da0a858 --- /dev/null +++ b/internal/toml-test/tests/invalid/inline-table/overwrite.toml @@ -0,0 +1,3 @@ +a.b=0 +# Since table "a" is already defined, it can't be replaced by an inline table. +a={} diff --git a/internal/toml-test/tests/invalid/integer/incomplete-bin.toml b/internal/toml-test/tests/invalid/integer/incomplete-bin.toml new file mode 100644 index 00000000..2d80143d --- /dev/null +++ b/internal/toml-test/tests/invalid/integer/incomplete-bin.toml @@ -0,0 +1 @@ +incomplete-bin = 0b diff --git a/internal/toml-test/tests/invalid/integer/incomplete-hex.toml b/internal/toml-test/tests/invalid/integer/incomplete-hex.toml new file mode 100644 index 00000000..691b09c7 --- /dev/null +++ b/internal/toml-test/tests/invalid/integer/incomplete-hex.toml @@ -0,0 +1 @@ +incomplete-hex = 0x diff --git a/internal/toml-test/tests/invalid/integer/incomplete-oct.toml b/internal/toml-test/tests/invalid/integer/incomplete-oct.toml new file mode 100644 index 00000000..a248b718 --- /dev/null +++ b/internal/toml-test/tests/invalid/integer/incomplete-oct.toml @@ -0,0 +1 @@ +incomplete-oct = 0o diff --git a/internal/toml-test/tests/invalid/table/duplicate-key-dotted-table.toml b/internal/toml-test/tests/invalid/table/duplicate-key-dotted-table.toml new file mode 100644 index 00000000..ade637bf --- /dev/null +++ b/internal/toml-test/tests/invalid/table/duplicate-key-dotted-table.toml @@ -0,0 +1,4 @@ +[fruit] +apple.color = "red" + +[fruit.apple] # INVALID diff --git a/internal/toml-test/tests/invalid/table/duplicate-key-dotted-table2.toml b/internal/toml-test/tests/invalid/table/duplicate-key-dotted-table2.toml new file mode 100644 index 00000000..609b660f --- /dev/null +++ b/internal/toml-test/tests/invalid/table/duplicate-key-dotted-table2.toml @@ -0,0 +1,4 @@ +[fruit] +apple.taste.sweet = true + +[fruit.apple.taste] # INVALID diff --git a/internal/toml-test/tests/valid/comment/everywhere.json b/internal/toml-test/tests/valid/comment/everywhere.json index c3dd422d..6e714d1c 100644 --- a/internal/toml-test/tests/valid/comment/everywhere.json +++ b/internal/toml-test/tests/valid/comment/everywhere.json @@ -4,10 +4,14 @@ "type": "integer", "value": "42" }, - "d": { + "dt": { "type": "datetime", "value": "1979-05-27T07:32:12-07:00" }, + "d": { + "type": "date-local", + "value": "1979-05-27" + }, "more": [ { "type": "integer", diff --git a/internal/toml-test/tests/valid/comment/everywhere.toml b/internal/toml-test/tests/valid/comment/everywhere.toml index aa9ebdc7..a5da1d77 100644 --- a/internal/toml-test/tests/valid/comment/everywhere.toml +++ b/internal/toml-test/tests/valid/comment/everywhere.toml @@ -24,4 +24,5 @@ more = [ # Comment ] # Hopefully not. # Make sure the space between the datetime and "#" isn't lexed. -d = 1979-05-27T07:32:12-07:00 # c +dt = 1979-05-27T07:32:12-07:00 # c +d = 1979-05-27 # Comment diff --git a/internal/toml-test/tests/valid/comment/noeol.json b/internal/toml-test/tests/valid/comment/noeol.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/internal/toml-test/tests/valid/comment/noeol.json @@ -0,0 +1 @@ +{} diff --git a/internal/toml-test/tests/valid/comment/noeol.toml b/internal/toml-test/tests/valid/comment/noeol.toml new file mode 100644 index 00000000..7662df8a --- /dev/null +++ b/internal/toml-test/tests/valid/comment/noeol.toml @@ -0,0 +1 @@ +# single comment without any eol characters \ No newline at end of file diff --git a/internal/toml-test/tests/valid/string/multiline-escaped-crlf.json b/internal/toml-test/tests/valid/string/multiline-escaped-crlf.json new file mode 100644 index 00000000..aa5e3eed --- /dev/null +++ b/internal/toml-test/tests/valid/string/multiline-escaped-crlf.json @@ -0,0 +1,6 @@ +{ + "0": { + "type": "string", + "value": "" + } +} diff --git a/internal/toml-test/tests/valid/string/multiline-escaped-crlf.toml b/internal/toml-test/tests/valid/string/multiline-escaped-crlf.toml new file mode 100644 index 00000000..97d697de --- /dev/null +++ b/internal/toml-test/tests/valid/string/multiline-escaped-crlf.toml @@ -0,0 +1,4 @@ +# The following line should be an unescaped backslash followed by a Windows +# newline sequence ("\r\n") +0="""\ +""" diff --git a/internal/toml-test/toml.go b/internal/toml-test/toml.go index 934e6314..346f0a96 100644 --- a/internal/toml-test/toml.go +++ b/internal/toml-test/toml.go @@ -1,6 +1,3 @@ -//go:build go1.16 -// +build go1.16 - package tomltest import ( diff --git a/toml_test.go b/toml_test.go index cea4545f..e6ed8e08 100644 --- a/toml_test.go +++ b/toml_test.go @@ -289,9 +289,14 @@ func TestToml(t *testing.T) { // TODO: fix this. "invalid/table/append-with-dotted*", - "invalid/datetime/time-no-leads", // https://github.com/BurntSushi/toml/issues/320 - "invalid/control/bare-null", // https://github.com/BurntSushi/toml/issues/317 - "invalid/control/comment-cr", // https://github.com/BurntSushi/toml/issues/321 + "invalid/inline-table/add", + "invalid/table/duplicate-key-dotted-table", + "invalid/table/duplicate-key-dotted-table2", + + "invalid/datetime/time-no-leads", // https://github.com/BurntSushi/toml/issues/320 + "invalid/control/bare-null", // https://github.com/BurntSushi/toml/issues/317 + "invalid/control/comment-cr", // https://github.com/BurntSushi/toml/issues/321 + "invalid/control/bare-cr", "invalid/string/multiline-bad-escape-3", // https://github.com/BurntSushi/toml/issues/322 }, }