From ac56c2e61c8d4c9af26d49f419b2193a798ae68f Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 23 Dec 2024 11:36:15 +0000 Subject: Check fields for bin config are present --- .../shedlang/compiler/config/BinConfigTests.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/test/java/org/shedlang/compiler/config/BinConfigTests.java (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 new file mode 100644 index 00000000..cbe8ee01 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/config/BinConfigTests.java @@ -0,0 +1,64 @@ +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 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.equalTo; + +public class BinConfigTests { + private static final Path PROJECT_PATH = Path.of("/projects/a"); + + @Test + public void whenBinConfigIsMissingNameThenErrorIsThrown() { + var source = Sources.string(""" + [[shed.bins]] + name = "one" + main-namespace = "One" + + [[shed.bins]] + main-namespace = "Two" + """); + + var error = assertThrows( + ConfigError.class, + () -> ProjectConfig.fromToml(PROJECT_PATH, TomlTableWithSource.parse(source)) + ); + + assertThat(error.getMessage(), equalTo("shed.bins[1] is missing name")); + assertThat(error.source().describe(), equalTo(""" + :5:1 + [[shed.bins]] + ^""" + )); + } + + @Test + public void whenBinConfigIsMissingMainNamespaceThenErrorIsThrown() { + var source = Sources.string(""" + [[shed.bins]] + name = "one" + main-namespace = "One" + + [[shed.bins]] + name = "two" + """); + + var error = assertThrows( + ConfigError.class, + () -> ProjectConfig.fromToml(PROJECT_PATH, TomlTableWithSource.parse(source)) + ); + + assertThat(error.getMessage(), equalTo("shed.bins[1] is missing main-namespace")); + assertThat(error.source().describe(), equalTo(""" + :5:1 + [[shed.bins]] + ^""" + )); + } +} -- cgit v1.2.3