fix partially #13115 (now works for cpp; but still fails for js on openbsd) (#16167)

* fix partially #13115 properly (works for c,js,cpp,vm; still fails for js on openbsd)
* address comment: also test with -d:danger, -d:debug
This commit is contained in:
Timothee Cour 2020-12-11 01:35:05 -08:00 • committed by GitHub
commit bb1c962286
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 58 additions and 20 deletions

View file

@ -1,12 +1,38 @@
discard """
exitcode: 1
targets: "c"
matrix: "-d:debug; -d:release"
outputsub: ''' and works fine! [Exception]'''
"""
const msg = "This char is `" & '\0' & "` and works fine!"
# bug #13115
# xxx bug: doesn't yet work for cpp
when defined nim_t13115:
# bug #13115
template fn =
raise newException(Exception, msg)
when defined nim_t13115_static:
static: fn()
fn()
else:
import std/[osproc,strformat,os,strutils]
proc main =
const nim = getCurrentCompilerExe()
const file = currentSourcePath
for b in "c js cpp".split:
when defined(openbsd):
if b == "js":
# xxx bug: pending #13115
# remove special case once nodejs updated >= 12.16.2
# refs https://github.com/nim-lang/Nim/pull/16167#issuecomment-738270751
continue
var msg = "This char is `" & '\0' & "` and works fine!"
raise newException(Exception, msg)
# save CI time by avoiding mostly redundant combinations as far as this bug is concerned
var opts = case b
of "c": @["", "-d:nim_t13115_static", "-d:danger", "-d:debug"]
of "js": @["", "-d:nim_t13115_static"]
else: @[""]
for opt in opts:
let cmd = fmt"{nim} r -b:{b} -d:nim_t13115 {opt} --hints:off {file}"
let (outp, exitCode) = execCmdEx(cmd)
when defined windows:
# `\0` not preserved on windows
doAssert "` and works fine!" in outp, cmd & "\n" & msg
else:
doAssert msg in outp, cmd & "\n" & msg
doAssert exitCode == 1
main()