Unsandbox CLI implementations in 42 programming languages for the permacomputer project. Public domain software for code execution across all ecosystems. Languages: Python, JavaScript, Ruby, Go, Rust, C, C++, Java, Kotlin, C#, F#, Haskell, OCaml, Clojure, Scheme, Common Lisp, Erlang, Elixir, D, Nim, Zig, V, Dart, Groovy, Scala, Julia, R, Crystal, Fortran, COBOL, Prolog, Forth, Tcl, Raku, Lua, PHP, Perl, Bash, TypeScript, Objective-C, PowerShell, AWK Includes test suites and service lifecycle tests.
4.7 KiB
4.7 KiB
UN CLI Inception Test Suite Summary
Created Test Files
All test files have been created in /home/fox/git/unsandbox.com/cli/inception/tests/:
| Language | Test File | Lines | Status |
|---|---|---|---|
| Haskell | test_un_hs.hs |
163 | ✓ Ready |
| OCaml | test_un_ml.ml |
176 | ✓ Ready |
| Clojure | test_un_clj.clj |
153 | ✓ Ready |
| Scheme | test_un_scm.scm |
173 | ✓ Ready |
| Common Lisp | test_un_lisp.lisp |
178 | ✓ Ready |
| Erlang | test_un_erl.erl |
189 | ✓ Ready |
| Elixir | test_un_ex.exs |
191 | ✓ Ready |
| Total | 7 files | 1,223 lines | All executable |
Test Coverage
Each test file provides comprehensive coverage of its corresponding UN CLI implementation:
1. Unit Tests - Extension Detection
- Tests 10+ file extension mappings
- Validates correct language identification
- Examples:
.hs→haskell,.py→python,.rs→rust
2. Integration Tests - API Connectivity
- Creates temporary test file
- Executes code via UN CLI
- Verifies successful API communication
- Gracefully skips if no API key is set
3. Functional Tests - End-to-End
- Runs actual fibonacci test files (
fib.hs,fib.ml, etc.) - Validates complete workflow:
- File reading
- Language detection
- API execution
- Output formatting with ANSI colors
- Checks for expected output:
"fib(10) = 55"
Quick Start
# Navigate to inception directory
cd /home/fox/git/unsandbox.com/cli/inception/
# Set API key (required for integration/functional tests)
export UNSANDBOX_API_KEY="your_api_key_here"
# Run a single test
./tests/test_un_hs.hs
# Run all tests
for test in tests/test_un_{hs.hs,ml.ml,erl.erl,ex.exs,scm.scm}; do
echo "Running $test..."
./$test
echo ""
done
Test Output Format
All test suites use consistent, color-coded output:
=== [Language] UN CLI Test Suite ===
✓ PASS - Extension detection
✓ PASS - API integration
✓ PASS - Fibonacci end-to-end test
✓ All tests passed (3/3)
Exit Codes
0- All tests passed1- One or more tests failed
Key Features
- Self-Contained: Each test is completely independent
- Executable: All test files have shebang and execute permissions
- Graceful Degradation: API tests skip if no key is set
- Detailed Errors: Failed tests provide comprehensive error messages
- Consistent Interface: All tests follow the same structure and output format
- Language-Idiomatic: Tests written in native style for each language
Dependencies
Tests require the same dependencies as their corresponding UN CLI implementations:
- Haskell: aeson, http-conduit, bytestring, text
- OCaml: cohttp-lwt-unix, yojson
- Clojure: clj-http, cheshire
- Scheme: guile-json (Guile Scheme)
- Common Lisp: dexador, jonathan (via Quicklisp)
- Erlang: Standard library (inets, ssl)
- Elixir: Standard library only
Test Files Location
All test files are located relative to the UN CLI implementations:
cli/inception/
├── un.hs
├── un.ml
├── un.clj
├── un.scm
├── un.lisp
├── un.erl
├── un.ex
└── tests/
├── test_un_hs.hs ← Test for un.hs
├── test_un_ml.ml ← Test for un.ml
├── test_un_clj.clj ← Test for un.clj
├── test_un_scm.scm ← Test for un.scm
├── test_un_lisp.lisp ← Test for un.lisp
├── test_un_erl.erl ← Test for un.erl
├── test_un_ex.exs ← Test for un.ex
├── README.md ← Detailed documentation
└── TESTING_SUMMARY.md ← This file
Fibonacci Test Files
Tests reference the standard fibonacci examples in:
cli/test/
├── fib.hs
├── fib.ml
├── fib.clj
├── fib.scm
├── fib.lisp
├── fib.erl
└── fib.ex
Each fibonacci file outputs:
fib(0) = 0
fib(1) = 1
fib(2) = 1
...
fib(10) = 55
Validation Strategy
Tests validate three critical aspects:
- Correctness: Extension mappings match specification
- Connectivity: CLI can reach and use the Unsandbox API
- Completeness: Full execution cycle works end-to-end
Next Steps
- Run tests locally to verify all implementations work
- Set up CI/CD integration (optional)
- Add performance benchmarks (optional)
- Extend tests for error handling scenarios (optional)
Notes
- Tests are designed to run from the
cli/inception/directory - API tests gracefully skip when
UNSANDBOX_API_KEYis not set - All tests provide detailed failure messages for debugging
- Tests follow the same code style as their implementations
- Each test suite is ~150-190 lines of well-documented code