diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-23 15:40:36 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-23 15:46:32 +0000 |
| commit | 0df6725da8a0953c5643c5692c5244826e448d09 (patch) | |
| tree | ca47417bc1b6d54c29f0feb9237903892176f9aa /src/test/java | |
| parent | edfb49ff0f696829c9c4385e79dc9f206abb7952 (diff) | |
Generate nicer errors for failures to parse main namespace name
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/config/BinConfigTests.java | 27 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java | 8 |
2 files changed, 33 insertions, 2 deletions
diff --git a/src/test/java/org/shedlang/compiler/config/BinConfigTests.java b/src/test/java/org/shedlang/compiler/config/BinConfigTests.java index 925088fe..aead8546 100644 --- a/src/test/java/org/shedlang/compiler/config/BinConfigTests.java +++ b/src/test/java/org/shedlang/compiler/config/BinConfigTests.java @@ -1,10 +1,12 @@ package org.shedlang.compiler.config; import org.junit.jupiter.api.Test; +import org.shedlang.compiler.config.errors.ConfigError; import org.shedlang.compiler.config.toml.TomlTableWithSource; import org.shedlang.compiler.sources.Sources; import org.shedlang.compiler.types.NamespaceName; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.zwobble.precisely.AssertThat.assertThat; import static org.zwobble.precisely.Matchers.*; @@ -23,4 +25,29 @@ public class BinConfigTests { has("mainNamespace", x -> x.mainNamespace(), equalTo(NamespaceName.of("A", "B"))) )); } + @Test + public void whenMainNamespaceHasSyntaxErrorThenErrorIsThrown() { + var source = Sources.string(""" + name = "one" + main-namespace = "A.B" + """); + + var error = assertThrows( + ConfigError.class, + () -> BinConfig.fromToml(TomlTableWithSource.parse(source)) + ); + + assertThat(error.getMessage(), equalTo(""" + Invalid namespace name. + Expected: END + But got: SYMBOL_DOT "." + + <string>:1:2 + A.B + ^""")); + assertThat(error.source().describe(), equalTo(""" + <string>:2:1 + main-namespace = "A.B" + ^""")); + } } diff --git a/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java b/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java index 41bb3c0f..1086671c 100644 --- a/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java +++ b/src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java @@ -243,7 +243,9 @@ public class TomlTableWithSourceTests { .get(1) .getString("name"); - assertThat(result, equalTo("two")); + assertThat(result, equalTo( + new TomlString("two", source.at(42, 42)) + )); } @Test @@ -316,6 +318,8 @@ public class TomlTableWithSourceTests { .get(1) .getStringOrNone("name"); - assertThat(result, equalTo(Optional.of("two"))); + assertThat(result, equalTo(Optional.of( + new TomlString("two", source.at(42, 42)) + ))); } } |
