blob: ee1daed26800c2f6de3e617104d167b139607321 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
const msg = "This char is `" & '\0' & "` and works fine!"
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
# 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()
|