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.
172 lines
4.7 KiB
Markdown
172 lines
4.7 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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 passed
|
|
- `1` - One or more tests failed
|
|
|
|
## Key Features
|
|
|
|
1. **Self-Contained**: Each test is completely independent
|
|
2. **Executable**: All test files have shebang and execute permissions
|
|
3. **Graceful Degradation**: API tests skip if no key is set
|
|
4. **Detailed Errors**: Failed tests provide comprehensive error messages
|
|
5. **Consistent Interface**: All tests follow the same structure and output format
|
|
6. **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:
|
|
|
|
1. **Correctness**: Extension mappings match specification
|
|
2. **Connectivity**: CLI can reach and use the Unsandbox API
|
|
3. **Completeness**: Full execution cycle works end-to-end
|
|
|
|
## Next Steps
|
|
|
|
1. Run tests locally to verify all implementations work
|
|
2. Set up CI/CD integration (optional)
|
|
3. Add performance benchmarks (optional)
|
|
4. 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_KEY` is 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
|