make runnableExamples use a private nimcache so that they can be tested in parallel (#8281)

* make runnableExamples use a private nimcache so that they can be tested in parallel
This commit is contained in:
skilchen 2018-07-12 11:06:20 +02:00 • committed by Andreas Rumpf
commit 6de52d2b74

View file

@ -610,14 +610,21 @@ proc myProcess(context: PPassContext, n: PNode): PNode =
proc testExamples(c: PContext) = proc testExamples(c: PContext) =
let inp = toFullPath(c.config, c.module.info) let inp = toFullPath(c.config, c.module.info)
let outp = inp.changeFileExt"" & "_examples.nim" let outp = inp.changeFileExt"" & "_examples.nim"
let nimcache = outp.changeFileExt"" & "_nimcache"
renderModule(c.runnableExamples, inp, outp) renderModule(c.runnableExamples, inp, outp)
let backend = if isDefined(c.config, "js"): "js" let backend = if isDefined(c.config, "js"): "js"
elif isDefined(c.config, "cpp"): "cpp" elif isDefined(c.config, "cpp"): "cpp"
elif isDefined(c.config, "objc"): "objc" elif isDefined(c.config, "objc"): "objc"
else: "c" else: "c"
if os.execShellCmd(os.getAppFilename() & " " & backend & " -r " & outp) != 0: if os.execShellCmd(os.getAppFilename() & " " & backend & " --nimcache:" & nimcache & " -r " & outp) != 0:
quit "[Examples] failed" quit "[Examples] failed"
removeFile(outp) else:
removeFile(outp)
removeFile(outp.changeFileExt(ExeExt))
try:
removeDir(nimcache)
except OSError:
discard
proc myClose(graph: ModuleGraph; context: PPassContext, n: PNode): PNode = proc myClose(graph: ModuleGraph; context: PPassContext, n: PNode): PNode =
var c = PContext(context) var c = PContext(context)