O-Lang Resolver Test Suite
Language-agnostic conformance and certification tests for O-Lang resolvers.
O-Lang resolvers are executable contracts: small, deterministic units that perform actions described in O-Lang.
This test suite ensures that resolvers behave consistently, predictably, and safely across all programming languages that understand JSON.
TL;DR
- One contract
- One test suite
- Any programming language
- Deterministic, auditable resolvers
If your resolver passes these tests, it is O-Lang compliant.
What This Test Suite Does
The O-Lang Resolver Test Suite validates that a resolver:
- Declares required metadata (
resolverName,version) - Exposes a valid
resolve(input)entry point - Accepts structured JSON input
- Returns a strictly shaped response:
{ "output": ... }or{ "error": ... }
- Fails explicitly and predictably
- Behaves deterministically (same input → same output)
The same tests apply whether your resolver is written in:
- Python
- JavaScript (Node.js)
- Go
- Rust
- Java
- Or any language capable of JSON I/O
Why This Exists
Most systems don’t fail because of syntax errors.
They fail because contracts are unclear.
Without resolver conformance testing:
- Every resolver invents its own response format
- Error handling becomes inconsistent
- Cross-language execution breaks silently
- Tooling cannot reason about behavior
O-Lang solves this by enforcing resolver contracts with a shared, language-agnostic test suite.
Documentation & Guide
For a full walkthrough covering:
- Resolver contracts
- Test philosophy
- Python and JavaScript examples
- Cross-language guarantees
Read the official Medium article:
👉 How to Test O-Lang Resolvers in Python and JavaScript
https://medium.com/@o-lang/how-to-test-o-lang-resolvers-in-python-and-javascript-07e6fab4385f
Typical Resolver Structure
resolver-your-action/
├── resolver.py # or index.js, main.go, etc.
├── resolver.json
└── tests/
├── R-005-resolver-metadata-contract.json
├── R-006-resolver-runtime-shape.json
├── R-007-resolver-failure-contract.json
└── ...
Release files for olang-resolver-test 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| olang_resolver_test-0.1.5.tar.gz | 8.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| olang_resolver_test-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.5 kB
Release files / olang_resolver_test-0.1.5.tar.gz
| Download URL | olang_resolver_test-0.1.5.tar.gz |
|---|---|
| Size | 8.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
18cc049fd7b2ca40d2a7ef4e842f9c6ffccd6c546f5d774561e2f7523a848c5b
|
|
BLAKE2b-256 checksum How to use checksums |
2159b81a7cf09322b589af44bdace09ede68e74e500a53f22af2e99d3ee9a7a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|
Release files / olang_resolver_test-0.1.5-py3-none-any.whl
| Download URL | olang_resolver_test-0.1.5-py3-none-any.whl |
|---|---|
| Size | 8.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
381ede34f86ab055267efd3471029a050d0279787cf9eb97e4f970e1a86ce096
|
|
BLAKE2b-256 checksum How to use checksums |
ec06a674eca97cce1c057b0a449ca2d8b7eafe61b48c66be997395a2094032d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|