From 0df6725da8a0953c5643c5692c5244826e448d09 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 23 Dec 2024 15:40:36 +0000 Subject: Generate nicer errors for failures to parse main namespace name --- .../shedlang/compiler/config/BinConfigTests.java | 27 ++++++++++++++++++++++ .../config/toml/TomlTableWithSourceTests.java | 8 +++++-- 2 files changed, 33 insertions(+), 2 deletions(-) (limited to 'src/test/java') 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 "." + + :1:2 + A.B + ^""")); + assertThat(error.source().describe(), equalTo(""" + :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)) + ))); } } -- cgit v1.2.3