summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--site/spec.html17
-rw-r--r--tests/errors/bad_escape1.pom1
-rw-r--r--tests/errors/bad_escape2.pom1
-rw-r--r--tests/errors/bad_escape_surrogate_half.pom1
-rw-r--r--tests/errors/bad_escape_unicode_empty.pom1
-rw-r--r--tests/errors/bad_escape_unicode_too_long.pom1
-rw-r--r--tests/errors/bad_hex_escape.pom1
-rw-r--r--tests/errors/bad_key6.pom1
-rw-r--r--tests/errors/bad_key7.pom1
-rw-r--r--tests/errors/bad_section1.pom2
-rw-r--r--tests/errors/bad_section2.pom2
-rw-r--r--tests/errors/bad_section3.pom2
-rw-r--r--tests/errors/bad_section4.pom2
-rw-r--r--tests/errors/bad_section5.pom2
-rw-r--r--tests/errors/bad_section6.pom2
-rw-r--r--tests/errors/missing_equals.pom1
-rw-r--r--tests/errors/no_closing_backtick.pom1
-rw-r--r--tests/errors/no_closing_bracket.pom1
-rw-r--r--tests/errors/no_closing_quote.pom1
-rw-r--r--tests/errors/stray_chars_backtick.pom1
-rw-r--r--tests/errors/stray_chars_quote.pom1
-rw-r--r--tests/errors/stray_cr.pom1
-rw-r--r--tests/parsing/long_key.flat.pom2
-rw-r--r--tests/parsing/long_key.pom3
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) -&gt; 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) -&gt; Configuration</code><br>
Returns the result of merging <code>conf_b</code> into <code>conf_a</code>.
</li>
+ <li>
+ <code>parse_schema(conf: Configuration) -&gt; 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) -&gt; 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