From 1d0a52cfbb17d77eef8d89be7762203f7286e92f Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 23 Dec 2024 11:38:39 +0000 Subject: Check type of string in config --- .../shedlang/compiler/config/BinConfigTests.java | 32 ++++++++++++++++++++-- 1 file changed, 29 insertions(+), 3 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 cbe8ee01..dc61f023 100644 --- a/src/test/java/org/shedlang/compiler/config/BinConfigTests.java +++ b/src/test/java/org/shedlang/compiler/config/BinConfigTests.java @@ -38,6 +38,31 @@ public class BinConfigTests { )); } + @Test + public void whenBinConfigIsNotStringThenErrorIsThrown() { + var source = Sources.string(""" + [[shed.bins]] + name = "one" + main-namespace = "One" + + [[shed.bins]] + name = true + main-namespace = "Two" + """); + + var error = assertThrows( + ConfigError.class, + () -> ProjectConfig.fromToml(PROJECT_PATH, TomlTableWithSource.parse(source)) + ); + + assertThat(error.getMessage(), equalTo("Expected shed.bins[1].name to be a string, but was Boolean")); + assertThat(error.source().describe(), equalTo(""" + :6:1 + name = true + ^""" + )); + } + @Test public void whenBinConfigIsMissingMainNamespaceThenErrorIsThrown() { var source = Sources.string(""" @@ -47,6 +72,7 @@ public class BinConfigTests { [[shed.bins]] name = "two" + main-namespace = true """); var error = assertThrows( @@ -54,10 +80,10 @@ public class BinConfigTests { () -> ProjectConfig.fromToml(PROJECT_PATH, TomlTableWithSource.parse(source)) ); - assertThat(error.getMessage(), equalTo("shed.bins[1] is missing main-namespace")); + assertThat(error.getMessage(), equalTo("Expected shed.bins[1].main-namespace to be a string, but was Boolean")); assertThat(error.source().describe(), equalTo(""" - :5:1 - [[shed.bins]] + :7:1 + main-namespace = true ^""" )); } -- cgit v1.2.3