mirror of
https://github.com/codex-storage/nim-codex.git
synced 2025-01-11 21:44:40 +00:00
71cd35112b
* [docs] fix two client scenario: add missing collateral * [integration] separate step to wait for node to be started * [cli] add option to specify ethereum private key * Remove unused imports * Fix warnings * [integration] move type definitions to correct place * [integration] wait a bit longer for a node to start in debug mode When e.g. running against Taiko test net rpc, the node start takes longer * [integration] simplify handling of codex node and client * [integration] add Taiko integration test * [contracts] await token approval confirmation before next tx * [contracts] deployment address of marketplace on Taiko * [cli] --eth-private-key now takes a file name Instead of supplying the private key on the command line, expect the private key to be in a file with the correct permissions. * [utils] Fixes undeclared `activeChroniclesStream` on Windows * [build] update nim-ethers to include PR #52 Co-authored-by: Eric Mastro <eric.mastro@gmail.com> * [cli] Better error messages when reading eth private key Co-authored-by: Eric Mastro <eric.mastro@gmail.com> * [integration] simplify reading of cmd line arguments Co-authored-by: Eric Mastro <eric.mastro@gmail.com> * [build] update to latest version of nim-ethers * [contracts] updated contract address for Taiko L2 * [build] update codex contracts to latest version --------- Co-authored-by: Eric Mastro <eric.mastro@gmail.com>
92 lines
3.4 KiB
Nim
92 lines
3.4 KiB
Nim
mode = ScriptMode.Verbose
|
|
|
|
|
|
### Helper functions
|
|
proc buildBinary(name: string, srcDir = "./", params = "", lang = "c") =
|
|
if not dirExists "build":
|
|
mkDir "build"
|
|
# allow something like "nim nimbus --verbosity:0 --hints:off nimbus.nims"
|
|
var extra_params = params
|
|
when compiles(commandLineParams):
|
|
for param in commandLineParams():
|
|
extra_params &= " " & param
|
|
else:
|
|
for i in 2..<paramCount():
|
|
extra_params &= " " & paramStr(i)
|
|
|
|
let cmd = "nim " & lang & " --out:build/" & name & " " & extra_params & " " & srcDir & name & ".nim"
|
|
exec(cmd)
|
|
|
|
proc test(name: string, srcDir = "tests/", params = "", lang = "c") =
|
|
buildBinary name, srcDir, params
|
|
exec "build/" & name
|
|
|
|
task codex, "build codex binary":
|
|
buildBinary "codex", params = "-d:chronicles_runtime_filtering -d:chronicles_log_level=TRACE"
|
|
|
|
task testCodex, "Build & run Codex tests":
|
|
test "testCodex", params = "-d:codex_enable_proof_failures=true"
|
|
|
|
task testContracts, "Build & run Codex Contract tests":
|
|
test "testContracts"
|
|
|
|
task testIntegration, "Run integration tests":
|
|
buildBinary "codex", params = "-d:chronicles_runtime_filtering -d:chronicles_log_level=TRACE -d:codex_enable_proof_failures=true"
|
|
test "testIntegration"
|
|
|
|
task build, "build codex binary":
|
|
codexTask()
|
|
|
|
task test, "Run tests":
|
|
testCodexTask()
|
|
|
|
task testAll, "Run all tests (except for Taiko L2 tests)":
|
|
testCodexTask()
|
|
testContractsTask()
|
|
testIntegrationTask()
|
|
|
|
task testTaiko, "Run Taiko L2 tests":
|
|
codexTask()
|
|
test "testTaiko"
|
|
|
|
import strutils
|
|
import os
|
|
|
|
task coverage, "generates code coverage report":
|
|
var (output, exitCode) = gorgeEx("which lcov")
|
|
if exitCode != 0:
|
|
echo " ************************** ⛔️ ERROR ⛔️ **************************"
|
|
echo " ** ERROR: lcov not found, it must be installed to run code **"
|
|
echo " ** coverage locally **"
|
|
echo " *****************************************************************"
|
|
quit 1
|
|
|
|
(output, exitCode) = gorgeEx("gcov --version")
|
|
if output.contains("Apple LLVM"):
|
|
echo " ************************* ⚠️ WARNING ⚠️ *************************"
|
|
echo " ** WARNING: Using Apple's llvm-cov in place of gcov, which **"
|
|
echo " ** emulates an old version of gcov (4.2.0) and therefore **"
|
|
echo " ** coverage results will differ than those on CI (which **"
|
|
echo " ** uses a much newer version of gcov). **"
|
|
echo " *****************************************************************"
|
|
|
|
var nimSrcs = " "
|
|
for f in walkDirRec("codex", {pcFile}):
|
|
if f.endswith(".nim"): nimSrcs.add " " & f.absolutePath.quoteShell()
|
|
|
|
echo "======== Running Tests ======== "
|
|
test "coverage", srcDir = "tests/", params = " --nimcache:nimcache/coverage -d:release "
|
|
exec("rm nimcache/coverage/*.c")
|
|
rmDir("coverage"); mkDir("coverage")
|
|
echo " ======== Running LCOV ======== "
|
|
exec("lcov --capture --directory nimcache/coverage --output-file coverage/coverage.info")
|
|
exec("lcov --extract coverage/coverage.info --output-file coverage/coverage.f.info " & nimSrcs)
|
|
echo " ======== Generating HTML coverage report ======== "
|
|
exec("genhtml coverage/coverage.f.info --output-directory coverage/report ")
|
|
echo " ======== Coverage report Done ======== "
|
|
|
|
task showCoverage, "open coverage html":
|
|
echo " ======== Opening HTML coverage report in browser... ======== "
|
|
if findExe("open") != "":
|
|
exec("open coverage/report/index.html")
|