aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-12-23 09:41:01 +0000
committerMichael Williamson <mike@zwobble.org>2024-12-23 09:41:01 +0000
commitc0fb45c014d53d41f29ca47c4ea57f368e176182 (patch)
tree3c45eb6e9379b14116b567b2d6696e205e43e6e8 /src/test/java
parent3b2351332b1f8941caba89caac6add07aad11e3c (diff)
Create separate TomlSyntaxConfigError
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/config/ProjectConfigTests.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/config/ProjectConfigTests.java b/src/test/java/org/shedlang/compiler/config/ProjectConfigTests.java
index fe3bc78f..cedf2207 100644
--- a/src/test/java/org/shedlang/compiler/config/ProjectConfigTests.java
+++ b/src/test/java/org/shedlang/compiler/config/ProjectConfigTests.java
@@ -1,10 +1,12 @@
package org.shedlang.compiler.config;
import org.junit.jupiter.api.Test;
+import org.shedlang.compiler.config.errors.TomlSyntaxConfigError;
import org.shedlang.compiler.types.NamespaceName;
import java.nio.file.Path;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.zwobble.precisely.AssertThat.assertThat;
import static org.zwobble.precisely.Matchers.*;
@@ -12,6 +14,36 @@ public class ProjectConfigTests {
private static final Path PROJECT_PATH = Path.of("/projects/a");
@Test
+ public void whenProjectConfigHasSyntaxErrorsOnFirstLineThenErrorIsThrown() {
+ var error = assertThrows(
+ TomlSyntaxConfigError.class,
+ () -> ProjectConfig.fromString(PROJECT_PATH, "[x] ]x")
+ );
+
+ assertThat(error.getMessage(), equalTo("Unexpected ']', expected a newline or end-of-input"));
+ assertThat(error.source().describe(), equalTo("""
+ <string>:1:5
+ [x] ]x
+ ^"""
+ ));
+ }
+
+ @Test
+ public void whenProjectConfigHasSyntaxErrorsOnNonFirstLineThenErrorIsThrown() {
+ var error = assertThrows(
+ TomlSyntaxConfigError.class,
+ () -> ProjectConfig.fromString(PROJECT_PATH, "[a]\n[x] ]x")
+ );
+
+ assertThat(error.getMessage(), equalTo("Unexpected ']', expected a newline or end-of-input"));
+ assertThat(error.source().describe(), equalTo("""
+ <string>:2:5
+ [x] ]x
+ ^"""
+ ));
+ }
+
+ @Test
public void canParseProjectConfigWithNoBins() {
var config = ProjectConfig.fromString(PROJECT_PATH, "");