summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSimon Hafner <hafnersimon@gmail.com>2015-01-24 18:02:00 -0600
committerSimon Hafner <hafnersimon@gmail.com>2015-01-27 13:02:17 -0600
commit2beaa7a2da40e336b9606949ba65e0631c775767 (patch)
treeed794be15497d993fc57ecc60ac6fde138ed6174
parent9c12ad0187746d18589c655475b50571fc28fef4 (diff)
downloadNim-2beaa7a2da40e336b9606949ba65e0631c775767.tar.gz
find the nodejs binary
upstream calls it node, debian calls it nodejs. We gotta look for both
of them.
-rw-r--r--compiler/nim.nim5
-rw-r--r--lib/core/nodejs.nim6
-rw-r--r--tests/testament/tester.nim7
3 files changed, 13 insertions, 5 deletions
diff --git a/compiler/nim.nim b/compiler/nim.nim
index a87e0a1ac..553c4635f 100644
--- a/compiler/nim.nim
+++ b/compiler/nim.nim
@@ -15,7 +15,8 @@ when defined(gcc) and defined(windows):
 
 import
   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:
   import tccgen
@@ -67,7 +68,7 @@ proc handleCmdLine() =
           else:
             ex = quoteShell(
               completeCFilePath(changeFileExt(gProjectFull, "js").prependCurDir))
-          execExternalProgram("node " & ex & ' ' & commands.arguments)
+          execExternalProgram(findNodeJs & " " & ex & ' ' & commands.arguments)
         else:
           var binPath: string
           if options.outFile.len > 0:
diff --git a/lib/core/nodejs.nim b/lib/core/nodejs.nim
new file mode 100644
index 000000000..e2b79df19
--- /dev/null
+++ b/lib/core/nodejs.nim
@@ -0,0 +1,6 @@
+import os
+
+proc findNodeJs*(): string =
+  result = findExe("nodejs")
+  if result == "":
+    result = findExe("node")
diff --git a/tests/testament/tester.nim b/tests/testament/tester.nim
index ba3abd1bd..9a53f960a 100644
--- a/tests/testament/tester.nim
+++ b/tests/testament/tester.nim
@@ -12,7 +12,7 @@
 import
   parseutils, strutils, pegs, os, osproc, streams, parsecfg, json,
   marshal, backend, parseopt, specs, htmlgen, browsers, terminal,
-  algorithm
+  algorithm, nodejs
 
 const
   resultsFile = "testresults.html"
@@ -187,12 +187,13 @@ proc testSpec(r: var TResults, test: TTest) =
         else:
           exeFile = changeFileExt(tname, ExeExt)
         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",
                         reExeNotFound)
             return
           var (buf, exitCode) = execCmdEx(
-            (if test.target == targetJS: "nodejs " else: "") & exeFile)
+            (if test.target == targetJS: nodejs & " " else: "") & exeFile)
           if exitCode != expected.exitCode:
             r.addResult(test, "exitcode: " & $expected.exitCode,
                               "exitcode: " & $exitCode, reExitCodesDiffer)