feat: introduce some changes/additions from test/use-cases branch

But without introducing the use cases tests themselves nor their dependencies
in vendor.
This commit is contained in:
Michael Bradley, Jr 2021-02-04 19:38:33 -06:00 committed by Michael Bradley
parent b2442ecba8
commit a87f3f85be
7 changed files with 33 additions and 7 deletions

View File

@ -81,7 +81,7 @@ jobs:
run: |
make -j${NPROC} NIMFLAGS="--parallelBuild:${NPROC}" V=1 test
- name: Build and run channel_helgrind
- name: Build and run helgrind tasks
if: matrix.platform.os == 'ubuntu'
run: |
./env.sh nimble channel_helgrind
./env.sh nimble achannels_helgrind

View File

@ -9,6 +9,7 @@ BUILD_SYSTEM_DIR := vendor/nimbus-build-system
.PHONY: \
all \
clean \
clean-build-dirs \
deps \
test \
update

View File

@ -9,6 +9,6 @@
# Licensed under either of
# Apache License, version 2.0, (LICENSE-APACHEv2)
# MIT license (LICENSE-MIT)
import ./task_runner/achannels
import ./task_runner/achannels, ./task_runner/sys
export achannels
export achannels, sys

View File

@ -26,6 +26,7 @@ proc buildAndRunTest(name: string,
" --debugger:native" &
" --define:chronicles_line_numbers" &
" --define:debug" &
" --define:ssl" &
" --linetrace:on" &
" --nimcache:nimcache/test/" & name &
" --out:" & outDir & name &
@ -43,13 +44,13 @@ proc buildAndRunTest(name: string,
task tests, "Run all tests":
buildAndRunTest "test_all"
task channel_helgrind, "Run channel implementation through helgrind to detect threading or lock errors":
task achannels_helgrind, "Run channel implementation through helgrind to detect threading or lock errors":
rmDir "test/build/"
mkDir "test/build/"
var commands = [
"nim c" &
" --define:useMalloc" &
" --nimcache:nimcache/test/channel_helgrind" &
" --nimcache:nimcache/test/achannels_helgrind" &
" --out:test/build/test_achannels" &
" --threads:on" &
" --tlsEmulation:off" &

12
task_runner/sys.nim Normal file
View File

@ -0,0 +1,12 @@
type
ThreadSafeString* = distinct cstring
proc safe*(input: string): ThreadSafeString =
var res = cast[cstring](allocShared(input.len + 1))
copyMem(res, input.cstring, input.len)
res[input.len] = '\0'
res.ThreadSafeString
proc `$`*(input: ThreadSafeString): string =
result = $(input.cstring)
deallocShared input.cstring

12
test/test_helpers.nim Normal file
View File

@ -0,0 +1,12 @@
import chronos, unittest
template asyncTest*(name, body: untyped) =
test name:
proc scenario {.async.} = body
waitFor scenario()
template procSuite*(name, body: untyped) =
proc suitePayload =
suite name:
body
suitePayload()

@ -1 +1 @@
Subproject commit 53870bc6bccf0f09f9c50a923d1fa1fb235d2db0
Subproject commit e7694f16ceccd7c98ecb6870263025018b7d37b3