Simple testing framework for Dana language files (.na)
Datest is a minimal testing framework for Dana (.na) files. It provides basic test discovery and execution for neurosymbolic agent systems written in the Dana language.
Status: Early MVP - Basic functionality for discovering and validating Dana test files.
# Install and setup
git clone https://github.com/aitomatic/datest.git
cd datest
make quickstart
# Run datest (currently shows help and validates setup)
datest
# Future: Basic Dana file testing
datest test_example.na # Run a Dana test file
datest tests/ # Run all .na files in directory
Datest is a barebones MVP that focuses on the essentials:
- Finds
.na
files in directories - Follows simple naming patterns (
test_*.na
) - Basic file validation
// test_example.na - Basic Dana test
test "simple reasoning" {
reason("What is 2 + 2?")
expect(contains("4"))
}
test "basic memory" {
remember("fact", "sky is blue")
reason("What color is the sky?")
expect(contains("blue"))
}
- π File Discovery: Finds Dana test files in directories
- π Basic Parsing: Validates Dana test file syntax
- π Simple Output: Basic pass/fail reporting
- π― Minimal: Focused on essential functionality only
Not Included (Yet):
- β Advanced assertions
- β Parallel execution
- β Complex reporting
- β Plugin system
- β Coverage analysis
# Quick setup
git clone https://github.com/aitomatic/datest.git
cd datest
make setup-dev
Or install directly:
pip install -e .
# Show help and validate installation
datest
# Check version
datest --version
# Verbose output
datest --verbose
# Run Dana test files
datest test_example.na # Single file
datest tests/ # Directory of .na files
datest --list # Show discovered tests
// test_basic.na
test "addition" {
reason("What is 5 + 3?")
expect(contains("8"))
}
test "memory recall" {
remember("name", "Alice")
reason("What name did I remember?")
expect(contains("Alice"))
}
expect(contains("text"))
- Check if response contains textexpect(equals("exact"))
- Exact matchexpect(not_empty())
- Response is not empty
That's it. No complex patterns, no advanced features - just the basics.
- β CLI framework with basic argument parsing
- β Project structure and packaging
- β Development tooling setup
- β Installation and basic validation
- π§ Simple Dana file discovery
- π§ Basic Dana test parsing
- π§ Minimal test execution
- π§ Simple pass/fail output
- π More assertion types
- π Better error messages
- π Configuration files
- π Integration with other tools
# datest.toml - Simple configuration
[tool.datest]
test_dirs = ["tests"]
test_pattern = "test_*.na"
That's all the configuration needed for the MVP.
This is a minimal MVP, so contributions should focus on:
- Dana file parsing - Basic syntax validation
- Test discovery - Find .na files reliably
- Simple execution - Run tests and report results
- Error handling - Clear error messages
- Advanced features
- Complex reporting
- Performance optimization
- Plugin systems
git clone https://github.com/your-username/datest.git
cd datest
make setup-dev
make test
- Focus on core Dana testing needs
- Get basic functionality working first
- Avoid feature creep early on
- Understand how Dana tests should work
- Get feedback from real usage
- Build features that are actually needed
- Small, manageable codebase
- Clear scope and expectations
- Room to grow based on user needs
- Repository: github.com/aitomatic/datest
- Issues: Report bugs and simple feature requests
- Discussions: Basic usage questions
MIT License - see LICENSE.md for details.
Built with β€οΈ by Aitomatic
Simple Dana testing, one step at a time