unit separator (#17730)

* use the ASCII Unit Separator so that error messages can be handled precisely by the tooling
* updated testament
This commit is contained in:
Andreas Rumpf 2021-04-20 16:30:17 +02:00 • committed by GitHub
commit 0b116310bf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 55 additions and 39 deletions

View file

@ -74,7 +74,7 @@ pkg "gnuplot", "nim c gnuplot.nim"
pkg "hts", "nim c -o:htss src/hts.nim"
pkg "httpauth"
pkg "illwill", "nimble examples"
pkg "inim"
pkg "inim", allowFailure=true
pkg "itertools", "nim doc src/itertools.nim"
pkg "iterutils"
pkg "karax", "nim c -r tests/tester.nim"

View file

@ -202,7 +202,7 @@ proc extractSpec(filename: string; spec: var TSpec): string =
# look for """ only in the first section
if a >= 0 and b > a and a < 40:
result = s.substr(a+3, b-1).replace("'''", tripleQuote)
result = s.substr(a+3, b-1).multiReplace({"'''": tripleQuote, "\\31": "\31"})
else:
#echo "warning: file does not contain spec: " & filename
result = ""

View file

@ -18,6 +18,11 @@ import compiler/nodejs
import lib/stdtest/testutils
from lib/stdtest/specialpaths import splitTestFile
proc trimUnitSep(x: var string) =
let L = x.len
if L > 0 and x[^1] == '\31':
setLen x, L-1
var useColors = true
var backendLogging = true
var simulate = false
@ -172,6 +177,7 @@ proc callNimCompiler(cmdTemplate, filename, options, nimcache: string,
result.nimout = ""
while true:
if outp.readLine(x):
trimUnitSep x
result.nimout.add(x & '\n')
if x =~ pegOfInterest:
# `err` should contain the last error/warning message
@ -196,6 +202,7 @@ proc callNimCompiler(cmdTemplate, filename, options, nimcache: string,
result.msg = matches[0]
elif suc.isSuccess:
result.err = reSuccess
trimUnitSep result.msg
proc callCCompiler(cmdTemplate, filename, options: string,
target: TTarget): TSpec =