Run FalkorDB's test suites - Rust unit tests, Python e2e/function/MVCC/concurrency tests, openCypher TCK compliance tests, and flow tests. Use when asked to run, narrow down, or debug a failing test, or to decide which suite covers a change.
Install
mkdir -p .claude/skills/test-falkordb && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16701" && unzip -o skill.zip -d .claude/skills/test-falkordb && rm skill.zipInstalls to .claude/skills/test-falkordb
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Run FalkorDB's test suites - Rust unit tests, Python e2e/function/MVCC/concurrency tests, openCypher TCK compliance tests, and flow tests. Use when asked to run, narrow down, or debug a failing test, or to decide which suite covers a change.About this skill
Test
All Python suites require the virtualenv. Locally it's ./venv (create once
with python3 -m venv venv && pip install -r tests/requirements.txt); inside
the devcontainer/CI it lives at /data/venv. The activation lines below fall
back between the two so they work in either environment. The module must be
built first (cargo build, see the build skill) for anything that loads
libfalkordb.{so,dylib}.
Rust unit tests (default choice for Rust-only changes)
cargo test -p graph
Python e2e / function / MVCC / concurrency tests
source venv/bin/activate 2>/dev/null || source /data/venv/bin/activate
pytest tests/test_e2e.py tests/test_functions.py -vv # e2e + function tests
pytest tests/test_mvcc.py tests/test_concurrency.py -vv # MVCC + concurrency tests
Run a single file/suite by narrowing the pytest args, e.g.
pytest tests/test_mvcc.py -vv.
TCK tests (openCypher language-compliance suite)
source venv/bin/activate 2>/dev/null || source /data/venv/bin/activate
TCK_DONE=tck_done.txt pytest tests/tck/test_tck.py -s # all currently-passing scenarios
TCK_INCLUDE=<path> pytest tests/tck/test_tck.py -s # only scenarios under <path>
tck_done.txtis the checked-in allow-list of scenarios expected to pass; a scenario newly failing there is a regression, one newly passing should be added to the file.- Common
TCK_INCLUDEpaths:tests/tck/features/expressions/list,tests/tck/features/expressions/map,tests/tck/features/clauses/match,tests/tck/features/clauses/return.
Flow tests (query flows against a running module instance)
cargo build # debug build required first (flow.sh defaults to target/debug)
./flow.sh
flow.sh supports env vars for narrowing/debugging a run:
TEST="tests/flow/test_function_calls" ./flow.sh— one fileTEST="tests/flow/test_function_calls:testFunctionCallsFlow.test89_JOIN" ./flow.sh— one testFAIL_FAST=1— stop on first failure, run serially (--parallelism 1)RELEASE=1— run againsttarget/releaseinstead oftarget/debug- Progress is tracked in
flow_tests_done.txt/flow_tests_todo.txt; logs land intests/flow/logs.
Notes
- CI (
rust-pr.yml) runs all of the above per PR/push, plus fuzzing and coverage — see thefuzz,profile, andcoverageskills for those. - Some flow tests against the replica (
-svc) are known-flaky under ASAN/coverage instrumentation due to a pre-existing concurrency race (atomic_refcell"already mutably borrowed"); if only those fail under those configurations, re-run before treating it as a regression.
If tests fail, analyze the output and help the user understand what went wrong.