Merge remote-tracking branch 'origin/devel' into appveyor
This commit is contained in:
commit
e2dbf222e6
59 changed files with 1127 additions and 324 deletions
|
|
@ -24,4 +24,3 @@ var
|
|||
"D": action4}.toTable
|
||||
|
||||
actionTable["C"]("arg")
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
import json, tables
|
||||
import json, tables, sequtils
|
||||
|
||||
proc run(json_params: TTable) =
|
||||
let json_elems = json_params["files"].elems
|
||||
|
|
|
|||
11
tests/collections/tapply.nim
Normal file
11
tests/collections/tapply.nim
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
discard """
|
||||
output: '''true'''
|
||||
"""
|
||||
|
||||
import sequtils
|
||||
|
||||
var x = @[1, 2, 3]
|
||||
x.apply(proc(x: var int) = x = x+10)
|
||||
x.apply(proc(x: int): int = x+100)
|
||||
x.applyIt(it+5000)
|
||||
echo x == @[5111, 5112, 5113]
|
||||
33
tests/collections/tmapit.nim
Normal file
33
tests/collections/tmapit.nim
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
discard """
|
||||
output: '''true
|
||||
true'''
|
||||
"""
|
||||
|
||||
import sequtils
|
||||
|
||||
var x = @[1, 2, 3]
|
||||
# This mapIt call will run with preallocation because ``len`` is available.
|
||||
var y = x.mapIt($(it+10))
|
||||
echo y == @["11", "12", "13"]
|
||||
|
||||
type structureWithoutLen = object
|
||||
a: array[5, int]
|
||||
|
||||
iterator items(s: structureWithoutLen): int {.inline.} =
|
||||
yield s.a[0]
|
||||
yield s.a[1]
|
||||
yield s.a[2]
|
||||
yield s.a[3]
|
||||
yield s.a[4]
|
||||
|
||||
var st: structureWithoutLen
|
||||
st.a[0] = 0
|
||||
st.a[1] = 1
|
||||
st.a[2] = 2
|
||||
st.a[3] = 3
|
||||
st.a[4] = 4
|
||||
|
||||
# this will run without preallocating the result
|
||||
# since ``len`` is not available
|
||||
var r = st.mapIt($(it+10))
|
||||
echo r == @["10", "11", "12", "13", "14"]
|
||||
|
|
@ -60,8 +60,12 @@ block tableTest2:
|
|||
t["123"] = 1.5 # test overwriting
|
||||
|
||||
assert t["123"] == 1.5
|
||||
assert t["111"] == 0.0 # deleted
|
||||
try:
|
||||
echo t["111"] # deleted
|
||||
except KeyError:
|
||||
discard
|
||||
assert(not hasKey(t, "111"))
|
||||
|
||||
assert "123" in t
|
||||
assert("111" notin t)
|
||||
|
||||
|
|
|
|||
|
|
@ -60,8 +60,10 @@ block tableTest2:
|
|||
t["123"] = 1.5 # test overwriting
|
||||
|
||||
assert t["123"] == 1.5
|
||||
assert t["111"] == 0.0 # deleted
|
||||
assert "123" in t
|
||||
try:
|
||||
echo t["111"] # deleted
|
||||
except KeyError:
|
||||
discard
|
||||
assert(not hasKey(t, "111"))
|
||||
assert "111" notin t
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ discard """
|
|||
3'''
|
||||
"""
|
||||
|
||||
import sequtils
|
||||
# https://github.com/Araq/Nim/issues/797
|
||||
proc foo[T](s:T):string = $s
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import future
|
||||
import future, sequtils
|
||||
|
||||
let x = map(@[1, 2, 3], x => x+10)
|
||||
assert x == @[11, 12, 13]
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ proc on*(emitter: var EventEmitter, event: string,
|
|||
if not hasKey(emitter.events, event):
|
||||
var list: DoublyLinkedList[proc(e: EventArgs) {.nimcall.}]
|
||||
add(emitter.events, event, list) #if not, add it.
|
||||
append(emitter.events.mget(event), fn)
|
||||
append(emitter.events[event], fn)
|
||||
|
||||
proc initEmitter(emitter: var EventEmitter) =
|
||||
emitter.events = initTable[string,
|
||||
|
|
@ -30,4 +30,3 @@ var
|
|||
initEmitter(ee)
|
||||
ee.on("print", proc(e: EventArgs) = echo("pie"))
|
||||
ee.emit("print", args)
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@ mode = ScriptMode.Whatif
|
|||
|
||||
exec "gcc -v"
|
||||
|
||||
# test that ospaths actually compiles:
|
||||
import ospaths
|
||||
|
||||
--forceBuild
|
||||
|
||||
task listDirs, "lists every subdirectory":
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ yay'''
|
|||
|
||||
# Test overloading of procs when used as function pointers
|
||||
|
||||
import strutils
|
||||
import strutils, sequtils
|
||||
|
||||
proc parseInt(x: float): int {.noSideEffect.} = discard
|
||||
proc parseInt(x: bool): int {.noSideEffect.} = discard
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ discard """
|
|||
77'''
|
||||
"""
|
||||
#import math
|
||||
import sequtils
|
||||
|
||||
proc optarg(x:int, y:int = 0):int = x + 3 * y
|
||||
proc singlearg(x:int):int = 20*x
|
||||
|
|
|
|||
141
tests/stdlib/tmget.nim
Normal file
141
tests/stdlib/tmget.nim
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
discard """
|
||||
output: '''Can't access 6
|
||||
10
|
||||
11
|
||||
Can't access 6
|
||||
10
|
||||
11
|
||||
Can't access 6
|
||||
10
|
||||
11
|
||||
Can't access 6
|
||||
10
|
||||
11
|
||||
Can't access 6
|
||||
10
|
||||
11
|
||||
Can't access 6
|
||||
10
|
||||
11
|
||||
Can't access 6
|
||||
5
|
||||
Can't access 6
|
||||
10
|
||||
11
|
||||
Can't access 6
|
||||
10
|
||||
11'''
|
||||
"""
|
||||
|
||||
import tables
|
||||
|
||||
block:
|
||||
var x = initTable[int, int]()
|
||||
x[5] = 10
|
||||
try:
|
||||
echo x[6]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x[5]
|
||||
x[5] += 1
|
||||
var c = x[5]
|
||||
echo c
|
||||
|
||||
block:
|
||||
var x = newTable[int, int]()
|
||||
x[5] = 10
|
||||
try:
|
||||
echo x[6]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x[5]
|
||||
x[5] += 1
|
||||
var c = x[5]
|
||||
echo c
|
||||
|
||||
block:
|
||||
var x = initOrderedTable[int, int]()
|
||||
x[5] = 10
|
||||
try:
|
||||
echo x[6]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x[5]
|
||||
x[5] += 1
|
||||
var c = x[5]
|
||||
echo c
|
||||
|
||||
block:
|
||||
var x = newOrderedTable[int, int]()
|
||||
x[5] = 10
|
||||
try:
|
||||
echo x[6]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x[5]
|
||||
x[5] += 1
|
||||
var c = x[5]
|
||||
echo c
|
||||
|
||||
block:
|
||||
var x = initCountTable[int]()
|
||||
x[5] = 10
|
||||
try:
|
||||
echo x[6]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x[5]
|
||||
x[5] += 1
|
||||
var c = x[5]
|
||||
echo c
|
||||
|
||||
block:
|
||||
var x = newCountTable[int]()
|
||||
x[5] = 10
|
||||
try:
|
||||
echo x[6]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x[5]
|
||||
x[5] += 1
|
||||
var c = x[5]
|
||||
echo c
|
||||
|
||||
import sets
|
||||
|
||||
block:
|
||||
var x = initSet[int]()
|
||||
x.incl 5
|
||||
try:
|
||||
echo x[6]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x[5]
|
||||
|
||||
import critbits
|
||||
|
||||
block:
|
||||
var x: CritBitTree[int]
|
||||
x["5"] = 10
|
||||
try:
|
||||
echo x["6"]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x["5"]
|
||||
x["5"] += 1
|
||||
var c = x["5"]
|
||||
echo c
|
||||
|
||||
import strtabs
|
||||
|
||||
block:
|
||||
var x = newStringTable()
|
||||
x["5"] = "10"
|
||||
try:
|
||||
echo x["6"]
|
||||
except KeyError:
|
||||
echo "Can't access 6"
|
||||
echo x["5"]
|
||||
x["5"][1] = '1'
|
||||
var c = x["5"]
|
||||
echo c
|
||||
|
|
@ -132,5 +132,5 @@ block:
|
|||
</Students>""")
|
||||
for x in d.mitems:
|
||||
x = <>Student(Name=x.attrs["Name"] & "foo")
|
||||
d.mget(1).attrs["Name"] = "bar"
|
||||
d[1].attrs["Name"] = "bar"
|
||||
echo d
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import unittest
|
||||
import unittest, sequtils
|
||||
|
||||
|
||||
proc doThings(spuds: var int): int =
|
||||
|
|
|
|||
|
|
@ -27,6 +27,6 @@ when ATTEMPT == 0:
|
|||
# bug #1543
|
||||
import sequtils
|
||||
|
||||
(var i = @[""];i).mapIt(it)
|
||||
(var i = @[""];i).applyIt(it)
|
||||
# now works:
|
||||
echo "##", i[0], "##"
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
import strutils, db_sqlite, os, osproc
|
||||
|
||||
var db: TDbConn
|
||||
var db: DbConn
|
||||
|
||||
proc createDb() =
|
||||
db.exec(sql"""
|
||||
|
|
@ -61,7 +61,7 @@ var
|
|||
|
||||
proc `()`(cmd: string{lit}): string = cmd.execProcess.string.strip
|
||||
|
||||
proc getMachine*(db: TDbConn): MachineId =
|
||||
proc getMachine*(db: DbConn): MachineId =
|
||||
var name = "hostname"()
|
||||
if name.len == 0:
|
||||
name = when defined(posix): getenv"HOSTNAME".string
|
||||
|
|
@ -76,7 +76,7 @@ proc getMachine*(db: TDbConn): MachineId =
|
|||
result = db.insertId(sql"insert into Machine(name, os, cpu) values (?,?,?)",
|
||||
name, system.hostOS, system.hostCPU).MachineId
|
||||
|
||||
proc getCommit(db: TDbConn): CommitId =
|
||||
proc getCommit(db: DbConn): CommitId =
|
||||
const commLen = "commit ".len
|
||||
let hash = "git log -n 1"()[commLen..commLen+10]
|
||||
let branch = "git symbolic-ref --short HEAD"()
|
||||
|
|
|
|||
|
|
@ -119,12 +119,21 @@ proc gcTests(r: var TResults, cat: Category, options: string) =
|
|||
testSpec r, makeTest("tests/gc" / filename, options &
|
||||
" -d:release -d:useRealtimeGC", cat, actionRun)
|
||||
|
||||
template test(filename: expr): stmt =
|
||||
template testWithoutBoehm(filename: expr): stmt =
|
||||
testWithoutMs filename
|
||||
testSpec r, makeTest("tests/gc" / filename, options &
|
||||
" --gc:markAndSweep", cat, actionRun)
|
||||
testSpec r, makeTest("tests/gc" / filename, options &
|
||||
" -d:release --gc:markAndSweep", cat, actionRun)
|
||||
template test(filename: expr): stmt =
|
||||
testWithoutBoehm filename
|
||||
when not defined(windows):
|
||||
# AR: cannot find any boehm.dll on the net, right now, so disabled
|
||||
# for windows:
|
||||
testSpec r, makeTest("tests/gc" / filename, options &
|
||||
" --gc:boehm", cat, actionRun)
|
||||
testSpec r, makeTest("tests/gc" / filename, options &
|
||||
" -d:release --gc:boehm", cat, actionRun)
|
||||
|
||||
test "gcemscripten"
|
||||
test "growobjcrash"
|
||||
|
|
@ -136,9 +145,9 @@ proc gcTests(r: var TResults, cat: Category, options: string) =
|
|||
test "gcleak4"
|
||||
# Disabled because it works and takes too long to run:
|
||||
#test "gcleak5"
|
||||
test "weakrefs"
|
||||
testWithoutBoehm "weakrefs"
|
||||
test "cycleleak"
|
||||
test "closureleak"
|
||||
testWithoutBoehm "closureleak"
|
||||
testWithoutMs "refarrayleak"
|
||||
|
||||
test "stackrefleak"
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ div.tabContent.hide { display: none; }
|
|||
proc td(s: string): string =
|
||||
result = "<td>" & s.substr(0, 200).xmlEncode & "</td>"
|
||||
|
||||
proc getCommit(db: TDbConn, c: int): string =
|
||||
proc getCommit(db: DbConn, c: int): string =
|
||||
var commit = c
|
||||
for thisCommit in db.rows(sql"select id from [Commit] order by id desc"):
|
||||
if commit == 0: result = thisCommit[0]
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ proc callCompiler(cmdTemplate, filename, options: string,
|
|||
let c = parseCmdLine(cmdTemplate % ["target", targetToCmd[target],
|
||||
"options", options, "file", filename.quoteShell])
|
||||
var p = startProcess(command=c[0], args=c[1.. ^1],
|
||||
options={poStdErrToStdOut, poUseShell})
|
||||
options={poStdErrToStdOut, poUsePath})
|
||||
let outp = p.outputStream
|
||||
var suc = ""
|
||||
var err = ""
|
||||
|
|
@ -215,7 +215,7 @@ proc generatedFile(path, name: string, target: TTarget): string =
|
|||
|
||||
proc codegenCheck(test: TTest, check: string, given: var TSpec) =
|
||||
try:
|
||||
let (path, name, ext2) = test.name.splitFile
|
||||
let (path, name, _) = test.name.splitFile
|
||||
let genFile = generatedFile(path, name, test.target)
|
||||
let contents = readFile(genFile).string
|
||||
if check[0] == '\\':
|
||||
|
|
@ -307,7 +307,7 @@ proc testSpec(r: var TResults, test: TTest) =
|
|||
let isJsTarget = test.target == targetJS
|
||||
var exeFile: string
|
||||
if isJsTarget:
|
||||
let (dir, file, ext) = splitFile(tname)
|
||||
let (dir, file, _) = splitFile(tname)
|
||||
exeFile = dir / "nimcache" / file & ".js" # *TODO* hardcoded "nimcache"
|
||||
else:
|
||||
exeFile = changeFileExt(tname, ExeExt)
|
||||
|
|
@ -352,7 +352,7 @@ proc testSpec(r: var TResults, test: TTest) =
|
|||
|
||||
proc testNoSpec(r: var TResults, test: TTest) =
|
||||
# does not extract the spec because the file is not supposed to have any
|
||||
let tname = test.name.addFileExt(".nim")
|
||||
#let tname = test.name.addFileExt(".nim")
|
||||
inc(r.total)
|
||||
let given = callCompiler(cmdTemplate, test.name, test.options, test.target)
|
||||
r.addResult(test, "", given.msg, given.err)
|
||||
|
|
@ -368,7 +368,7 @@ proc testC(r: var TResults, test: TTest) =
|
|||
r.addResult(test, "", given.msg, given.err)
|
||||
elif test.action == actionRun:
|
||||
let exeFile = changeFileExt(test.name, ExeExt)
|
||||
var (buf, exitCode) = execCmdEx(exeFile, options = {poStdErrToStdOut, poUseShell})
|
||||
var (_, exitCode) = execCmdEx(exeFile, options = {poStdErrToStdOut, poUsePath})
|
||||
if exitCode != 0: given.err = reExitCodesDiffer
|
||||
if given.err == reSuccess: inc(r.passed)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue