## 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()