Direct Tests
Write and run fast direct mode tests for GenLayer intelligent contracts.
Install
npx skills add internet-court/internet-court-skill --skill direct-tests -g -a claude-code -y- Repository
- internet-court/internet-court-skill7k
- Category
- Testing
- Updated
- 9d ago
- License
- See repository
- Context cost
- Lightabout 1,189 tokens
- Runs scripts
- No, instructions only
What it does
Write and run fast direct mode tests for GenLayer intelligent contracts.
Direct Mode Tests
Write fast, in-memory tests for intelligent contracts. No server, no Docker, tests run in ~30-50ms.
Running Tests
pytest tests/direct/ -v
pytest tests/direct/test_specific.py -v
pytest tests/direct/test_specific.py::test_one_case -v
Fixtures
Available from genlayer-test pytest plugin:
def test_example(direct_vm, direct_deploy, direct_alice, direct_bob):
# direct_vm, VMContext with cheatcodes
# direct_deploy, deploy a contract file
# direct_alice, test address
# direct_bob, test address
pass
All fixtures: direct_vm, direct_deploy, direct_alice, direct_bob, direct_charlie, direct_owner, direct_accounts
Basic Test Pattern
def test_set_and_get(direct_vm, direct_deploy, direct_alice):
contract = direct_deploy("contracts/my_contract.py")
direct_vm.sender = direct_alice
contract.set_data("hello")
result = contract.get_data(direct_alice)
assert result == "hello"
Mocking Web Requests
For contracts that call gl.nondet.web.get():
import json
def test_with_web_mock(direct_vm, direct_deploy, direct_alice):
contract = direct_deploy("contracts/my_contract.py")
direct_vm.sender = direct_alice
# Pattern: regex matching on URL
direct_vm.mock_web(
r".*api\.example\.com/prices.*",
{"status": 200, "body": '{"price": 42.5}'},
)
contract.update_price("ETH/USD")
assert contract.get_price("ETH/USD") == 42.5
Full mock format (when you need headers/method control)
direct_vm.mock_web(
r"api\.example\.com/data",
{
"response": {
"status": 200,
"headers": {},
"body": json.dumps({"key": "value"}).encode()
},
"method": "GET"
}
)
Mocking LLM Responses
For contracts that call gl.nondet.exec_prompt():


