diff options
-rw-r--r-- | lib/pure/logging.nim | 2 | ||||
-rw-r--r-- | lib/pure/strutils.nim | 2 | ||||
-rw-r--r-- | lib/pure/unittest.nim | 2 | ||||
-rw-r--r-- | lib/system.nim | 1 | ||||
-rw-r--r-- | tests/osproc/ta.nim | 3 | ||||
-rw-r--r-- | tests/osproc/ta_in.nim | 5 | ||||
-rw-r--r-- | tests/osproc/ta_out.nim | 16 | ||||
-rw-r--r-- | tests/osproc/tstdin.nim | 2 | ||||
-rw-r--r-- | tests/osproc/tstdout.nim | 29 |
9 files changed, 56 insertions, 6 deletions
diff --git a/lib/pure/logging.nim b/lib/pure/logging.nim index 5544a4b3f..65724f75a 100644 --- a/lib/pure/logging.nim +++ b/lib/pure/logging.nim @@ -46,6 +46,8 @@ ## ## **Warning:** The global list of handlers is a thread var, this means that ## the handlers must be re-added in each thread. +## **Warning:** When logging on disk or console, only error and fatal messages +## are flushed out immediately. Use flushFile() where needed. import strutils, times when not defined(js): diff --git a/lib/pure/strutils.nim b/lib/pure/strutils.nim index 9c205a54f..9c9da92c6 100644 --- a/lib/pure/strutils.nim +++ b/lib/pure/strutils.nim @@ -898,7 +898,7 @@ proc toHex*(x: BiggestInt, len: Positive): string {.noSideEffect, proc toHex*[T](x: T): string = ## Shortcut for ``toHex(x, T.sizeOf * 2)`` - toHex(x, T.sizeOf * 2) + toHex(BiggestInt(x), T.sizeOf * 2) proc intToStr*(x: int, minchars: Positive = 1): string {.noSideEffect, rtl, extern: "nsuIntToStr".} = diff --git a/lib/pure/unittest.nim b/lib/pure/unittest.nim index cdca02ed7..01af0f839 100644 --- a/lib/pure/unittest.nim +++ b/lib/pure/unittest.nim @@ -24,7 +24,7 @@ ## echo "run before each test" ## ## teardown: -## echo "run after each test": +## echo "run after each test" ## ## test "essential truths": ## # give up and stop if this fails diff --git a/lib/system.nim b/lib/system.nim index bab5369f1..6388e278e 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2743,6 +2743,7 @@ when not defined(JS): #and not defined(nimscript): # we use binary mode on Windows: c_setmode(c_fileno(stdin), O_BINARY) c_setmode(c_fileno(stdout), O_BINARY) + c_setmode(c_fileno(stderr), O_BINARY) when defined(endb): proc endbStep() diff --git a/tests/osproc/ta.nim b/tests/osproc/ta.nim deleted file mode 100644 index 5ebcc7f14..000000000 --- a/tests/osproc/ta.nim +++ /dev/null @@ -1,3 +0,0 @@ -import strutils -let x = stdin.readLine() -echo x.parseInt + 5 diff --git a/tests/osproc/ta_in.nim b/tests/osproc/ta_in.nim new file mode 100644 index 000000000..b46890f6e --- /dev/null +++ b/tests/osproc/ta_in.nim @@ -0,0 +1,5 @@ +# This file is prefixed with an "a", because other tests +# depend on it and it must be compiled first. +import strutils +let x = stdin.readLine() +echo x.parseInt + 5 diff --git a/tests/osproc/ta_out.nim b/tests/osproc/ta_out.nim new file mode 100644 index 000000000..f7091a7f6 --- /dev/null +++ b/tests/osproc/ta_out.nim @@ -0,0 +1,16 @@ +# This file is prefixed with an "a", because other tests +# depend on it and it must be compiled first. +stdout.writeLine("to stdout") +stdout.flushFile() +stdout.writeLine("to stdout") +stdout.flushFile() + +stderr.writeLine("to stderr") +stderr.flushFile() +stderr.writeLine("to stderr") +stderr.flushFile() + +stdout.writeLine("to stdout") +stdout.flushFile() +stdout.writeLine("to stdout") +stdout.flushFile() diff --git a/tests/osproc/tstdin.nim b/tests/osproc/tstdin.nim index b491c2500..d94c34192 100644 --- a/tests/osproc/tstdin.nim +++ b/tests/osproc/tstdin.nim @@ -4,7 +4,7 @@ discard """ """ import osproc, os, streams -const filename = when defined(Windows): "ta.exe" else: "ta" +const filename = when defined(Windows): "ta_in.exe" else: "ta_in" doAssert fileExists(getCurrentDir() / "tests" / "osproc" / filename) diff --git a/tests/osproc/tstdout.nim b/tests/osproc/tstdout.nim new file mode 100644 index 000000000..0cb5bd9c0 --- /dev/null +++ b/tests/osproc/tstdout.nim @@ -0,0 +1,29 @@ +discard """ + output: '''-------------------------------------- +to stdout +to stdout +to stderr +to stderr +to stdout +to stdout +-------------------------------------- +''' +""" +import osproc, os, streams + +const filename = when defined(Windows): "ta_out.exe" else: "ta_out" + +doAssert fileExists(getCurrentDir() / "tests" / "osproc" / filename) + +var p = startProcess(filename, getCurrentDir() / "tests" / "osproc", + options={poStdErrToStdOut}) + +let outputStream = p.outputStream +var x = newStringOfCap(120) +var output = "" +while outputStream.readLine(x.TaintedString): + output.add(x & "\n") + +echo "--------------------------------------" +stdout.write output +echo "--------------------------------------" |