aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-23 15:40:36 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-23 15:46:32 +0000
commit0df6725da8a0953c5643c5692c5244826e448d09 (patch)
treeca47417bc1b6d54c29f0feb9237903892176f9aa /src/test/java
parentedfb49ff0f696829c9c4385e79dc9f206abb7952 (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.java27
-rw-r--r--src/test/java/org/shedlang/compiler/config/toml/TomlTableWithSourceTests.java8
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))
+ )));
}
}