JS codegen enhancements; still unusable

This commit is contained in:
Araq 2012-07-01 19:35:19 +02:00
commit fe285b354d
9 changed files with 223 additions and 59 deletions

View file

@ -261,7 +261,10 @@ proc compileSingleTest(r: var TResults, test, options: string) =
r.addResult(t, given.msg, if given.err: reFailure else: reSuccess)
if not given.err: inc(r.passed)
proc runSingleTest(r: var TResults, test, options: string) =
type
TTarget = enum targetC, targetJS
proc runSingleTest(r: var TResults, test, options: string, target: TTarget) =
var test = test.addFileExt(".nim")
var t = extractFilename(test)
echo t
@ -275,9 +278,16 @@ proc runSingleTest(r: var TResults, test, options: string) =
if given.err:
r.addResult(t, "", given.msg, reFailure)
else:
var exeFile = changeFileExt(test, ExeExt)
var exeFile: string
if target == targetC:
exeFile = changeFileExt(test, ExeExt)
else:
let (dir, file, ext) = splitFile(test)
exeFile = dir / "nimcache" / file & ".js"
if existsFile(exeFile):
var (buf, exitCode) = execCmdEx(exeFile)
var (buf, exitCode) = execCmdEx(
(if target==targetJS: "node " else: "") & exeFile)
if exitCode != expected.ExitCode:
r.addResult(t, "exitcode: " & $expected.ExitCode,
"exitcode: " & $exitCode, reFailure)
@ -291,6 +301,9 @@ proc runSingleTest(r: var TResults, test, options: string) =
else:
r.addResult(t, expected.outp, "executable not found", reFailure)
proc runSingleTest(r: var TResults, test, options: string) =
runSingleTest(r, test, options, targetC)
proc run(r: var TResults, dir, options: string) =
for test in os.walkFiles(dir / "t*.nim"): runSingleTest(r, test, options)
@ -350,6 +363,12 @@ proc main() =
run(runRes, "tests/run", p.cmdLineRest.string)
runSpecialTests(runRes, p.cmdLineRest.string)
writeResults(runJson, runRes)
of "js":
var runRes = initResults()
if existsFile(runJSon):
runRes = readResults(runJson)
runJsTests(runRes, p.cmdLineRest.string)
writeResults(runJson, runRes)
of "merge":
var rejectRes = readResults(rejectJson)
var compileRes = readResults(compileJson)