un-inception/tests/TESTING_SUMMARY.md
Russell Ballestrini 2b35819393 Initial commit: 42 UN CLI implementations
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.
2025-12-23 09:57:08 -05:00

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