44 lines
1.5 KiB
Nim
Raw Normal View History

## Makefile language validator tests.
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 "Makefile Validator":
test "valid Makefile code":
let result = validateSource(MakefileGoodCode, flavor = lfMakefile)
checkValid(result)
test "invalid Makefile code returns errors":
let result = validateSource(MakefileBadCode, flavor = lfMakefile)
checkInvalid(result)
test "valid .Makefile file":
let result = validateFile("tests/fixtures/makefile/valid.Makefile")
checkValid(result)
test "invalid .Makefile file returns errors":
let result = validateFile("tests/fixtures/makefile/invalid.Makefile")
check result.errors.len > 0
test "detectFlavor detects Makefile":
check $detectFlavor(MakefileGoodCode) == "makefile"
test "inspectSource returns JSON":
let json = inspectSource(MakefileGoodCode, flavor = lfMakefile)
check json.kind == JObject
test "supportedFlavors contains makefile":
check "makefile" in supportedFlavors()