Refactor: remove .sh dependency for tests

This commit is contained in:
mratsim 2018-04-03 18:09:09 +02:00
parent 1cf5e6694b
commit 3852c84841
13 changed files with 38 additions and 30 deletions

BIN
build/all_tests Executable file

Binary file not shown.

View File

@ -1,9 +1,7 @@
-p:"../src"
# TODO FIXME # TODO FIXME
# Default compiler on Mac is Clang. # Default compiler on Mac is Clang.
# Currently it does not compile due to "Flexible array member with non-trivial destruction" # Currently it does not compile due to "Flexible array member with non-trivial destruction"
# See https://github.com/status-im/nimbus/issues/2 # See https://github.com/status-im/nimbus/issues/2 and https://github.com/status-im/nim-ttmath/issues/10
# As a workaround, forces GCC-7 on Mac # As a workaround, forces GCC-7 on Mac
# GCC-7 is available through Homebrew # GCC-7 is available through Homebrew

View File

@ -7,10 +7,20 @@ description = "An Ethereum 2.0 Sharding Client for Resource-Restricted Devices
license = "Apache License 2.0" license = "Apache License 2.0"
skipDirs = @["tests"] skipDirs = @["tests"]
requires "nim >= 0.17.0", requires "nim >= 0.18.1",
"https://github.com/status-im/nim-keccak-tiny.git >= 0.1.0", "https://github.com/status-im/nim-keccak-tiny.git >= 0.1.0",
"https://github.com/alehander42/nim-rlp.git#fix-ordinal", "https://github.com/alehander42/nim-rlp#fix-ordinal", #TODO switching to the Status repo throws: "Error: undeclared identifier: 'Range'"
"https://github.com/status-im/nim-ttmath >= 0.5.0" "https://github.com/status-im/nim-ttmath#master"
proc test(name: string, lang = "cpp") =
if not dirExists "build":
mkDir "build"
if not dirExists "nimcache":
mkDir "nimcache"
--run
--nimcache: "nimcache"
switch("out", ("./build/" & name))
setCommand lang, "tests/" & name & ".nim"
task test, "Run tests":
test "all_tests"

5
tests/all_tests.nim Normal file
View File

@ -0,0 +1,5 @@
import ./test_code_stream,
./test_gas_meter,
./test_memory,
./test_stack

View File

@ -1,6 +0,0 @@
#!/bin/bash
nim cpp tests/code_stream_test.nim
nim cpp tests/gas_meter_test.nim
nim cpp tests/memory_test.nim
nim cpp tests/stack_test.nim

View File

@ -1,7 +0,0 @@
#!/bin/bash
./tests/code_stream_test
./tests/gas_meter_test
./tests/memory_test
./tests/stack_test

View File

@ -1,4 +1,5 @@
import unittest, strutils, sequtils, opcode_values, vm / code_stream import unittest, strutils, sequtils,
../src/opcode_values, ../src/vm/code_stream
suite "parse bytecode": suite "parse bytecode":
test "accepts bytes": test "accepts bytes":

View File

@ -1,4 +1,6 @@
import unittest, macros, strformat, strutils, sequtils, constants, opcode_values, errors, logging, vm / gas_meter, ttmath import unittest, macros, strformat, strutils, sequtils,
ttmath,
../src/[constants, opcode_values, errors, logging, vm/gas_meter]
# TODO: quicktest # TODO: quicktest
# PS: parametrize can be easily immitated, but still quicktests would be even more useful # PS: parametrize can be easily immitated, but still quicktests would be even more useful
@ -63,7 +65,7 @@ suite "gasMeter":
# expect(ValidationError): # expect(ValidationError):
# gasMeter.returnGas(-1.i256) # gasMeter.returnGas(-1.i256)
# TODO: -0/+0 # TODO: -0/+0
test "consume spends": test "consume spends":
all(gasMeter): all(gasMeter):
check(gasMeter.gasRemaining == gasMeter.startGas) check(gasMeter.gasRemaining == gasMeter.startGas)

View File

@ -1,4 +1,6 @@
import unittest, macros, strformat, strutils, sequtils, constants, opcode_values, errors, vm / memory, ttmath import unittest, macros, strformat, strutils, sequtils,
ttmath,
../src/[constants, opcode_values, errors, vm/memory]
proc memory32: Memory = proc memory32: Memory =
result = newMemory() result = newMemory()
@ -27,7 +29,7 @@ suite "memory":
test "write rejects invalid size": test "write rejects invalid size":
# expect(ValidationError): # expect(ValidationError):
# var mem = memory32() # var mem = memory32()
# mem.write(startPosition = 0.i256, size = -1.i256, value = @[1.byte, 0.byte]) # mem.write(startPosition = 0.i256, size = -1.i256, value = @[1.byte, 0.byte])
expect(ValidationError): expect(ValidationError):
var mem = memory32() var mem = memory32()
@ -37,7 +39,7 @@ suite "memory":
expect(ValidationError): expect(ValidationError):
var mem = memory32() var mem = memory32()
mem.write(startPosition = 0.u256, size = 4.u256, value = @[1.byte, 0.byte]) mem.write(startPosition = 0.u256, size = 4.u256, value = @[1.byte, 0.byte])
test "write rejects valyes beyond memory size": test "write rejects valyes beyond memory size":
expect(ValidationError): expect(ValidationError):
var mem = memory128() var mem = memory128()

View File

@ -1,4 +1,7 @@
import unittest, macros, strformat, strutils, sequtils, constants, opcode_values, errors, vm / [stack, value], ttmath, utils / [bytes, padding], utils_numeric import unittest, macros, strformat, strutils, sequtils,
ttmath,
../src/[constants, opcode_values, errors, utils_numeric, vm/stack, vm/value, utils/bytes, utils/padding]
template testPush(value: untyped, expected: untyped): untyped = template testPush(value: untyped, expected: untyped): untyped =
var stack = newStack() var stack = newStack()
@ -17,7 +20,7 @@ suite "stack":
testPush("ves".toBytes, "ves".toBytes.bigEndianToInt) testPush("ves".toBytes, "ves".toBytes.bigEndianToInt)
testFailPush("yzyzyzyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz".toBytes) testFailPush("yzyzyzyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz".toBytes)
test "push does not allow stack to exceed 1024": test "push does not allow stack to exceed 1024":
var stack = newStack() var stack = newStack()
for z in 0 .. < 1024: for z in 0 .. < 1024:
@ -37,7 +40,7 @@ suite "stack":
check(stack.len == 1024) check(stack.len == 1024)
expect(FullStack): expect(FullStack):
stack.dup(1) stack.dup(1)
test "pop returns latest stack item": test "pop returns latest stack item":
var stack = newStack() var stack = newStack()
for element in @[1'u, 2'u, 3'u]: for element in @[1'u, 2'u, 3'u]:
@ -78,7 +81,7 @@ suite "stack":
var stack = newStack() var stack = newStack()
expect(InsufficientStack): expect(InsufficientStack):
stack.swap(0) stack.swap(0)
test "dup raises InsufficientStack appropriately": test "dup raises InsufficientStack appropriately":
var stack = newStack() var stack = newStack()
expect(InsufficientStack): expect(InsufficientStack):