find the nodejs binary

upstream calls it node, debian calls it nodejs. We gotta look for both
of them.
This commit is contained in:
Simon Hafner 2015-01-24 18:02:00 -06:00
commit 2beaa7a2da
3 changed files with 13 additions and 5 deletions

View file

@ -15,7 +15,8 @@ when defined(gcc) and defined(windows):
import import
commands, lexer, condsyms, options, msgs, nversion, nimconf, ropes, commands, lexer, condsyms, options, msgs, nversion, nimconf, ropes,
extccomp, strutils, os, osproc, platform, main, parseopt, service extccomp, strutils, os, osproc, platform, main, parseopt, service,
nodejs
when hasTinyCBackend: when hasTinyCBackend:
import tccgen import tccgen
@ -67,7 +68,7 @@ proc handleCmdLine() =
else: else:
ex = quoteShell( ex = quoteShell(
completeCFilePath(changeFileExt(gProjectFull, "js").prependCurDir)) completeCFilePath(changeFileExt(gProjectFull, "js").prependCurDir))
execExternalProgram("node " & ex & ' ' & commands.arguments) execExternalProgram(findNodeJs & " " & ex & ' ' & commands.arguments)
else: else:
var binPath: string var binPath: string
if options.outFile.len > 0: if options.outFile.len > 0:

6
lib/core/nodejs.nim Normal file
View file

@ -0,0 +1,6 @@
import os
proc findNodeJs*(): string =
result = findExe("nodejs")
if result == "":
result = findExe("node")

View file

@ -12,7 +12,7 @@
import import
parseutils, strutils, pegs, os, osproc, streams, parsecfg, json, parseutils, strutils, pegs, os, osproc, streams, parsecfg, json,
marshal, backend, parseopt, specs, htmlgen, browsers, terminal, marshal, backend, parseopt, specs, htmlgen, browsers, terminal,
algorithm algorithm, nodejs
const const
resultsFile = "testresults.html" resultsFile = "testresults.html"
@ -187,12 +187,13 @@ proc testSpec(r: var TResults, test: TTest) =
else: else:
exeFile = changeFileExt(tname, ExeExt) exeFile = changeFileExt(tname, ExeExt)
if existsFile(exeFile): if existsFile(exeFile):
if test.target == targetJS and findExe("nodejs") == "": let nodejs = findNodeJs()
if test.target == targetJS and nodejs == "":
r.addResult(test, expected.outp, "nodejs binary not in PATH", r.addResult(test, expected.outp, "nodejs binary not in PATH",
reExeNotFound) reExeNotFound)
return return
var (buf, exitCode) = execCmdEx( var (buf, exitCode) = execCmdEx(
(if test.target == targetJS: "nodejs " else: "") & exeFile) (if test.target == targetJS: nodejs & " " else: "") & exeFile)
if exitCode != expected.exitCode: if exitCode != expected.exitCode:
r.addResult(test, "exitcode: " & $expected.exitCode, r.addResult(test, "exitcode: " & $expected.exitCode,
"exitcode: " & $exitCode, reExitCodesDiffer) "exitcode: " & $exitCode, reExitCodesDiffer)