diff options
24 files changed, 42 insertions, 7 deletions
diff --git a/site/spec.html b/site/spec.html index 706e019..0222acc 100644 --- a/site/spec.html +++ b/site/spec.html @@ -674,16 +674,19 @@ and for my.nephews.car.id is String (no schema key matches, so the default of St Returns an empty configuration if there are no descendants of <code>key</code> defined. </li> <li> - <code>check_against_schema(conf: Configuration, schema: Configuration) -> Configuration</code> (<i>optional</i>)<br> - Check that <code>schema</code> - is a valid schema and that <code>conf</code> follows it, - returning an error with detailed information - if not. If successful, returns a configuration with default values filled out. - </li> - <li> <code>merge(conf_a: Configuration, conf_b: Configuration) -> Configuration</code><br> Returns the result of merging <code>conf_b</code> into <code>conf_a</code>. </li> + <li> + <code>parse_schema(conf: Configuration) -> Schema</code> (<i>optional</i>)<br> + Parse <code>conf</code> as a schema, returning an error if it is invalid. + </li> + <li> + <code>check_against_schema(conf: Configuration, schema: Schema) -> Configuration</code> (<i>optional</i>)<br> + Check <code>conf</code> follows <code>schema</code>, + returning an error with detailed information + if not. If successful, returns a configuration with default values filled out. + </li> </ul> <h2>Examples</h2> diff --git a/tests/errors/bad_escape1.pom b/tests/errors/bad_escape1.pom new file mode 100644 index 0000000..f02020b --- /dev/null +++ b/tests/errors/bad_escape1.pom @@ -0,0 +1 @@ +no_trigraph = "a?\?=b" diff --git a/tests/errors/bad_escape2.pom b/tests/errors/bad_escape2.pom new file mode 100644 index 0000000..ae183cb --- /dev/null +++ b/tests/errors/bad_escape2.pom @@ -0,0 +1 @@ +vtab = "\v" diff --git a/tests/errors/bad_escape_surrogate_half.pom b/tests/errors/bad_escape_surrogate_half.pom new file mode 100644 index 0000000..d208923 --- /dev/null +++ b/tests/errors/bad_escape_surrogate_half.pom @@ -0,0 +1 @@ +x = "\u{D812}" diff --git a/tests/errors/bad_escape_unicode_empty.pom b/tests/errors/bad_escape_unicode_empty.pom new file mode 100644 index 0000000..eacd36d --- /dev/null +++ b/tests/errors/bad_escape_unicode_empty.pom @@ -0,0 +1 @@ +x = "\u{}" diff --git a/tests/errors/bad_escape_unicode_too_long.pom b/tests/errors/bad_escape_unicode_too_long.pom new file mode 100644 index 0000000..7a3374a --- /dev/null +++ b/tests/errors/bad_escape_unicode_too_long.pom @@ -0,0 +1 @@ +x = "\u{0000030}" diff --git a/tests/errors/bad_hex_escape.pom b/tests/errors/bad_hex_escape.pom new file mode 100644 index 0000000..c40ba2f --- /dev/null +++ b/tests/errors/bad_hex_escape.pom @@ -0,0 +1 @@ +capital_beta = "\xCE\x92" diff --git a/tests/errors/bad_key6.pom b/tests/errors/bad_key6.pom new file mode 100644 index 0000000..b690d02 --- /dev/null +++ b/tests/errors/bad_key6.pom @@ -0,0 +1 @@ +test key = 5 diff --git a/tests/errors/bad_key7.pom b/tests/errors/bad_key7.pom new file mode 100644 index 0000000..7647aca --- /dev/null +++ b/tests/errors/bad_key7.pom @@ -0,0 +1 @@ + = 4 diff --git a/tests/errors/bad_section1.pom b/tests/errors/bad_section1.pom new file mode 100644 index 0000000..310e60b --- /dev/null +++ b/tests/errors/bad_section1.pom @@ -0,0 +1,2 @@ +[ foo ] +x = 5 diff --git a/tests/errors/bad_section2.pom b/tests/errors/bad_section2.pom new file mode 100644 index 0000000..54f44c9 --- /dev/null +++ b/tests/errors/bad_section2.pom @@ -0,0 +1,2 @@ +[.foo] +x = 5 diff --git a/tests/errors/bad_section3.pom b/tests/errors/bad_section3.pom new file mode 100644 index 0000000..1e98c39 --- /dev/null +++ b/tests/errors/bad_section3.pom @@ -0,0 +1,2 @@ +[+] +x = 5 diff --git a/tests/errors/bad_section4.pom b/tests/errors/bad_section4.pom new file mode 100644 index 0000000..820d148 --- /dev/null +++ b/tests/errors/bad_section4.pom @@ -0,0 +1,2 @@ +[foo.] +x = 5 diff --git a/tests/errors/bad_section5.pom b/tests/errors/bad_section5.pom new file mode 100644 index 0000000..9b4815d --- /dev/null +++ b/tests/errors/bad_section5.pom @@ -0,0 +1,2 @@ +[foo..bar] +x = 5 diff --git a/tests/errors/bad_section6.pom b/tests/errors/bad_section6.pom new file mode 100644 index 0000000..4d97247 --- /dev/null +++ b/tests/errors/bad_section6.pom @@ -0,0 +1,2 @@ +[.] +x = 5 diff --git a/tests/errors/missing_equals.pom b/tests/errors/missing_equals.pom new file mode 100644 index 0000000..7e0466a --- /dev/null +++ b/tests/errors/missing_equals.pom @@ -0,0 +1 @@ +music is on diff --git a/tests/errors/no_closing_backtick.pom b/tests/errors/no_closing_backtick.pom new file mode 100644 index 0000000..09f5dde --- /dev/null +++ b/tests/errors/no_closing_backtick.pom @@ -0,0 +1 @@ +foo = `x diff --git a/tests/errors/no_closing_bracket.pom b/tests/errors/no_closing_bracket.pom new file mode 100644 index 0000000..2abea67 --- /dev/null +++ b/tests/errors/no_closing_bracket.pom @@ -0,0 +1 @@ +[foo diff --git a/tests/errors/no_closing_quote.pom b/tests/errors/no_closing_quote.pom new file mode 100644 index 0000000..42d51a4 --- /dev/null +++ b/tests/errors/no_closing_quote.pom @@ -0,0 +1 @@ +foo = "x diff --git a/tests/errors/stray_chars_backtick.pom b/tests/errors/stray_chars_backtick.pom new file mode 100644 index 0000000..7463874 --- /dev/null +++ b/tests/errors/stray_chars_backtick.pom @@ -0,0 +1 @@ +name = `Andy` B diff --git a/tests/errors/stray_chars_quote.pom b/tests/errors/stray_chars_quote.pom new file mode 100644 index 0000000..d384fd8 --- /dev/null +++ b/tests/errors/stray_chars_quote.pom @@ -0,0 +1 @@ +name = "Andy" B diff --git a/tests/errors/stray_cr.pom b/tests/errors/stray_cr.pom new file mode 100644 index 0000000..858e526 --- /dev/null +++ b/tests/errors/stray_cr.pom @@ -0,0 +1 @@ +# Two CRs:
diff --git a/tests/parsing/long_key.flat.pom b/tests/parsing/long_key.flat.pom new file mode 100644 index 0000000..21739bd --- /dev/null +++ b/tests/parsing/long_key.flat.pom @@ -0,0 +1,2 @@ +A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z = 50 +A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = a diff --git a/tests/parsing/long_key.pom b/tests/parsing/long_key.pom new file mode 100644 index 0000000..4168306 --- /dev/null +++ b/tests/parsing/long_key.pom @@ -0,0 +1,3 @@ +[A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z] +a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z = 50 +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = a |