forked from nim-lang/Nim
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix partially nim-lang#13115 (now works for cpp; but still fails for …
…js on openbsd) (nim-lang#16167) * fix partially nim-lang#13115 properly (works for c,js,cpp,vm; still fails for js on openbsd) * address comment: also test with -d:danger, -d:debug
- Loading branch information
1 parent
2eaef12
commit e61ef59
Showing
2 changed files
with
58 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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() |