75 lines
2.3 KiB
Nim
Raw Normal View History

## Config file format validator tests (JSON, YAML, TOML).
import std/[unittest, strutils, strformat]
import ../src/nimcheck
import test_common
proc checkValid(result: ValidationResult, context: string = "") =
if result.errors.len > 0:
var msg = &"Expected valid, got {result.errors.len} error(s)"
if context.len > 0: msg.add(&" [{context}]")
for e in result.errors: msg.add(&"\n [{e.code}] {e.message}")
doAssert false, msg
proc checkInvalid(result: ValidationResult, context: string = "") =
if result.errors.len == 0:
doAssert false, &"Expected errors, got none [{context}]"
suite "Config Validators":
test "JSON valid":
let result = validateSource(JsonGoodCode, flavor = lfJSON)
checkValid(result)
test "JSON invalid returns errors":
let result = validateSource(JsonBadCode, flavor = lfJSON)
checkInvalid(result)
test "JSON valid file":
let result = validateFile("tests/fixtures/json/valid.json")
checkValid(result)
test "JSON invalid file returns errors":
let result = validateFile("tests/fixtures/json/invalid.json")
check result.errors.len > 0
test "JSON detect":
check $detectFlavor(JsonGoodCode) == "json"
test "YAML valid":
let result = validateSource(YamlGoodCode, flavor = lfYAML)
checkValid(result)
test "YAML invalid returns errors":
let result = validateSource(YamlBadCode, flavor = lfYAML)
checkInvalid(result)
test "YAML valid file":
let result = validateFile("tests/fixtures/yaml/valid.yaml")
checkValid(result)
test "YAML invalid file returns errors":
let result = validateFile("tests/fixtures/yaml/invalid.yaml")
check result.errors.len > 0
test "YAML detect":
check $detectFlavor(YamlGoodCode) == "yaml"
test "TOML valid":
let result = validateSource(TomlGoodCode, flavor = lfTOML)
checkValid(result)
test "TOML invalid returns errors":
let result = validateSource(TomlBadCode, flavor = lfTOML)
checkInvalid(result)
test "TOML valid file":
let result = validateFile("tests/fixtures/toml/valid.toml")
checkValid(result)
test "TOML invalid file returns errors":
let result = validateFile("tests/fixtures/toml/invalid.toml")
check result.errors.len > 0
test "TOML detect":
check $detectFlavor(TomlGoodCode) == "toml"