Skip to content

Commit

Permalink
fix #14242 testament r tests/js/foo now works; testament now honors…
Browse files Browse the repository at this point in the history
… --targets
  • Loading branch information
timotheecour committed Nov 28, 2020
1 parent 157e782 commit 7b47542
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 16 deletions.
14 changes: 7 additions & 7 deletions testament/categories.nim
Original file line number Diff line number Diff line change
Expand Up @@ -563,13 +563,13 @@ proc `&.?`(a, b: string): string =
# candidate for the stdlib?
result = if b.startsWith(a): b else: a & b

proc processSingleTest(r: var TResults, cat: Category, options, test: string) =
let test = testsDir &.? cat.string / test
let target = if cat.string.normalize == "js": targetJS else: targetC
if fileExists(test):
testSpec r, makeTest(test, options, cat), {target}
else:
doAssert false, test & " test does not exist"
proc processSingleTest(r: var TResults, cat: Category, options, test: string, targets: typeof(gTargets), targetsSet: bool) =
var targets = targets
if not targetsSet:
let target = if cat.string.normalize == "js": targetJS else: targetC
targets = {target}
doAssert fileExists(test), test & " test does not exist"
testSpec r, makeTest(test, options, cat), targets

proc isJoinableSpec(spec: TSpec): bool =
result = not spec.sortoutput and
Expand Down
8 changes: 4 additions & 4 deletions testament/specs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ type
reInvalidSpec # test had problems to parse the spec

TTarget* = enum
targetC = "C"
targetCpp = "C++"
targetObjC = "ObjC"
targetJS = "JS"
targetC = "c"
targetCpp = "cpp"
targetObjC = "objc"
targetJS = "js"

InlineError* = object
kind*: string
Expand Down
14 changes: 9 additions & 5 deletions testament/testament.nim
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ let
pegOfInterest = pegLineError / pegOtherError

var gTargets = {low(TTarget)..high(TTarget)}
var targetsSet = false

proc isSuccess(input: string): bool =
# not clear how to do the equivalent of pkg/regex's: re"FOO(.*?)BAR" in pegs
Expand Down Expand Up @@ -685,6 +686,7 @@ proc main() =
of "targets":
targetsStr = p.val.string
gTargets = parseTargets(targetsStr)
targetsSet = true
of "nim":
compilerPrefix = addFileExt(p.val.string, ExeExt)
of "directory":
Expand Down Expand Up @@ -794,14 +796,16 @@ proc main() =
p.next
processPattern(r, pattern, p.cmdLineRest.string, simulate)
of "r", "run":
# "/pathto/tests/stdlib/nre/captures.nim" -> "stdlib" + "tests/stdlib/nre/captures.nim"
var subPath = p.key.string
if subPath.isAbsolute: subPath = subPath.relativePath(getCurrentDir())
let nimRoot = currentSourcePath / "../.."
# makes sure points to this regardless of cwd or which nim is used to compile this.
doAssert existsDir(nimRoot/testsDir) # sanity check
if subPath.isAbsolute: subPath = subPath.relativePath(nimRoot)
# at least one directory is required in the path, to use as a category name
let pathParts = split(subPath, {DirSep, AltSep})
# "stdlib/nre/captures.nim" -> "stdlib" + "nre/captures.nim"
let pathParts = subPath.relativePath(testsDir).split({DirSep, AltSep})
let cat = Category(pathParts[0])
subPath = joinPath(pathParts[1..^1])
processSingleTest(r, cat, p.cmdLineRest.string, subPath)
processSingleTest(r, cat, p.cmdLineRest.string, subPath, gTargets, targetsSet)
of "html":
generateHtml(resultsFile, optFailing)
else:
Expand Down

0 comments on commit 7b47542

Please sign in to comment.