From 962b311727bb460daa92f7a3e1d0e7ce0b7fc16d Mon Sep 17 00:00:00 2001
From: Simon Hafner <hafnersimon@gmail.com>
Date: Fri, 15 Feb 2013 20:27:54 -0600
Subject: UTC weekday in JS

---
 lib/pure/times.nim | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/pure/times.nim b/lib/pure/times.nim
index 1d6ca2646..da8d86363 100755
--- a/lib/pure/times.nim
+++ b/lib/pure/times.nim
@@ -78,6 +78,7 @@ elif defined(JS):
       getUTCMinutes: proc (): int
       getUTCMonth: proc (): int
       getUTCSeconds: proc (): int
+      getUTCDay: proc (): int
       getYear: proc (): int
       parse: proc (s: cstring): TTime
       setDate: proc (x: int)
@@ -452,7 +453,7 @@ else:
     result.monthday = t.getUTCDate()
     result.month = TMonth(t.getUTCMonth())
     result.year = t.getUTCFullYear()
-    result.weekday = weekDays[t.getDay()]
+    result.weekday = weekDays[t.getUTCDay()]
     result.yearday = 0
   
   proc TimeInfoToTime*(timeInfo: TTimeInfo): TTime =
-- 
cgit 1.4.1-2-gfad0


From a50393af78074449047b146229626d2196441ef2 Mon Sep 17 00:00:00 2001
From: Simon Hafner <hafnersimon@gmail.com>
Date: Fri, 15 Feb 2013 20:28:13 -0600
Subject: elif on JS instead of generic else

---
 lib/pure/times.nim | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/pure/times.nim b/lib/pure/times.nim
index da8d86363..6a73303d9 100755
--- a/lib/pure/times.nim
+++ b/lib/pure/times.nim
@@ -428,7 +428,7 @@ when not defined(JS):
     proc cpuTime(): float = 
       result = toFloat(int(clock())) / toFloat(clocksPerSec)
     
-else:
+elif defined(JS):
   proc newDate(): TTime {.importc: "new Date", nodecl.}
   proc getTime(): TTime = return newDate()
 
-- 
cgit 1.4.1-2-gfad0


From 260ddd735a684392de7bb41e6c576ad5af7e163f Mon Sep 17 00:00:00 2001
From: Simon Hafner <hafnersimon@gmail.com>
Date: Sat, 9 Feb 2013 15:19:09 -0600
Subject: on the path to get unittest running from JS

---
 lib/pure/unittest.nim | 39 +++++++++++++++++++++++++++------------
 lib/system/jssys.nim  |  2 +-
 2 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/lib/pure/unittest.nim b/lib/pure/unittest.nim
index fce84bea4..dac9dedcf 100644
--- a/lib/pure/unittest.nim
+++ b/lib/pure/unittest.nim
@@ -17,7 +17,13 @@
 ## It is loosely based on C++'s boost.test and Haskell's QuickTest
 
 import
-  macros, terminal, os
+  macros
+
+when defined(stdout):
+  import os
+
+when not defined(ECMAScript):
+  import terminal
 
 type
   TTestStatus* = enum OK, FAILED
@@ -52,12 +58,15 @@ proc testDone(name: string, s: TTestStatus) =
     program_result += 1
 
   if OutputLevel != PRINT_NONE and (OutputLevel == PRINT_ALL or s == FAILED):
-    var color = (if s == OK: fgGreen else: fgRed)
-    
-    if ColorOutput:
-      styledEcho styleBright, color, "[", $s, "] ", fgWhite, name, "\n"
+    proc rawPrint() = echo("[", $s, "] ", name, "\n")
+    when not defined(ECMAScript):
+      if ColorOutput and not defined(ECMAScript):
+        var color = (if s == OK: fgGreen else: fgRed)
+        styledEcho styleBright, color, "[", $s, "] ", fgWhite, name, "\n"
+      else:
+        rawPrint()
     else:
-      echo "[", $s, "] ", name, "\n"
+      rawPrint()
   
 template test*(name: expr, body: stmt): stmt {.immediate, dirty.} =
   bind shouldRun, checkpoints, testDone
@@ -87,7 +96,8 @@ template fail* =
   for msg in items(checkpoints):
     echo msg
 
-  if AbortOnError: quit(1)
+  when not defined(ECMAScript):
+    if AbortOnError: quit(1)
   
   TestStatusIMPL = FAILED
   checkpoints = @[]
@@ -171,14 +181,19 @@ macro expect*(exceptions: varargs[expr], body: stmt): stmt {.immediate.} =
   result = getAst(expectBody(errorTypes, exp.lineinfo, body))
 
 
-## Reading settings
-var envOutLvl = os.getEnv("NIMTEST_OUTPUT_LVL").string
+when defined(stdout):
+  ## Reading settings
+  var envOutLvl = os.getEnv("NIMTEST_OUTPUT_LVL").string
+
+  AbortOnError = existsEnv("NIMTEST_ABORT_ON_ERROR")
+  ColorOutput  = not existsEnv("NIMTEST_NO_COLOR")
+
+else:
+  var envOutLvl = "" # TODO
+  ColorOutput  = false
 
 if envOutLvl.len > 0:
   for opt in countup(low(TOutputLevel), high(TOutputLevel)):
     if $opt == envOutLvl:
       OutputLevel = opt
       break
-
-AbortOnError = existsEnv("NIMTEST_ABORT_ON_ERROR")
-ColorOutput  = not existsEnv("NIMTEST_NO_COLOR")
diff --git a/lib/system/jssys.nim b/lib/system/jssys.nim
index 6040fdf53..789e39d6d 100755
--- a/lib/system/jssys.nim
+++ b/lib/system/jssys.nim
@@ -42,7 +42,7 @@ proc nimCharToStr(x: char): string {.compilerproc.} =
   result = newString(1)
   result[0] = x
 
-proc getCurrentExceptionMsg(): string =
+proc getCurrentExceptionMsg*(): string =
   if excHandler != nil: return $excHandler.exc.msg
   return ""
 
-- 
cgit 1.4.1-2-gfad0


From 71ade195d1996c0d3d9115af5c53dc8146455970 Mon Sep 17 00:00:00 2001
From: Simon Hafner <hafnersimon@gmail.com>
Date: Fri, 15 Feb 2013 20:40:07 -0600
Subject: WA for #329, caused by #335

---
 lib/pure/unittest.nim   | 2 +-
 tests/js/tunittests.nim | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)
 create mode 100644 tests/js/tunittests.nim

diff --git a/lib/pure/unittest.nim b/lib/pure/unittest.nim
index dac9dedcf..71f4d498b 100644
--- a/lib/pure/unittest.nim
+++ b/lib/pure/unittest.nim
@@ -58,7 +58,7 @@ proc testDone(name: string, s: TTestStatus) =
     program_result += 1
 
   if OutputLevel != PRINT_NONE and (OutputLevel == PRINT_ALL or s == FAILED):
-    proc rawPrint() = echo("[", $s, "] ", name, "\n")
+    template rawPrint() = echo("[", $s, "] ", name, "\n")
     when not defined(ECMAScript):
       if ColorOutput and not defined(ECMAScript):
         var color = (if s == OK: fgGreen else: fgRed)
diff --git a/tests/js/tunittests.nim b/tests/js/tunittests.nim
new file mode 100644
index 000000000..af38cd9b9
--- /dev/null
+++ b/tests/js/tunittests.nim
@@ -0,0 +1,5 @@
+import unittest
+
+suite "Bacon":
+  test ">:)":
+    check(true == true)
-- 
cgit 1.4.1-2-gfad0