Test Commands
Overview
Test commands execute and manage tests across the repository. They provide parallel test execution, suite-based organization, and comprehensive failure diagnostics for quality assurance.
Key Characteristics:
- Parallel test execution by default
- Suite-based test organization
- Module-aware test discovery
- Detailed failure diagnostics
- Integration with BDD/Gherkin specs
When to use: When running tests during development, in CI/CD pipelines, or debugging test failures.
All Test Commands
| Command | Purpose | Use Case |
|---|---|---|
| test | Run tests for modules | Execute tests for one or more modules |
| test suite | Run specific test suite | Execute tests organized by suite |
| test list-suites | List available suites | Discover available test suites |
| test debug | Parse and analyze failures | Debug failed tests |
Test Organization
Module-Based Testing
Tests are organized by module, with each module containing its own test files:
Suite-Based Testing
Tests can also be grouped into logical suites that span multiple modules:
# Test suite configuration
suites:
- name: integration
modules: [src-api, src-auth, src-database]
- name: unit
modules: [eac-core, eac-commands]
Common Workflows
Running Tests During Development
# Test all modules
r2r eac test
# Test specific module
r2r eac test src-auth
# Test multiple modules
r2r eac test src-auth src-api
Running Test Suites
# List available suites
r2r eac test list-suites
# Run specific suite
r2r eac test suite integration
# Run suite with verbose output
r2r eac test suite integration --verbose
Debugging Test Failures
# Run tests and capture failures
r2r eac test src-auth
# Parse failures for debugging
r2r eac test debug
# Show detailed failure information
r2r eac show test-summary src-auth
CI/CD Integration
# Run tests in CI (unit + integration for PR, add acceptance for main)
r2r eac test --suite unit+integration
# Run specific suite for stage
r2r eac test --suite acceptance
# Check test results
r2r eac show test-timings
Test Execution Modes
Sequential Execution
Run tests one at a time:
Use when:
- Debugging test failures
- Tests have resource contention
- Need predictable execution order
Parallel Execution (Default)
Run tests concurrently:
Use when:
- Running in CI/CD
- Tests are independent
- Need fast feedback
Test Types
Unit Tests
Go standard testing framework:
Run with: r2r eac test <module>
BDD/Gherkin Tests
Godog framework for behavior-driven development:
Feature: User Authentication
Scenario: Valid login
Given a registered user
When they provide valid credentials
Then authentication succeeds
Run with: r2r eac test <module> (automatically detected)
Integration Tests
Tests spanning multiple modules:
Test Discovery
Automatic Discovery
Tests are automatically discovered based on:
*_test.gofiles for Go tests*.featurefiles for Gherkin specs- Module contracts defining test locations
Manual Suite Configuration
Define custom test suites:
# .eac/contracts/test-suites.yml
suites:
- name: smoke
description: Quick smoke tests
modules: [src-api]
tags: ["@smoke"]
- name: regression
description: Full regression suite
modules: [src-auth, src-api, src-database]
tags: ["@regression"]
Test Output
Default Output
r2r eac test src-auth
# Output:
Testing module: src-auth
Running 15 tests...
✓ TestValidateUser (0.12s)
✓ TestAuthentication (0.34s)
✗ TestAuthorization (0.21s)
15 tests, 14 passed, 1 failed
Total time: 2.3s
Verbose Output
r2r eac test src-auth --verbose
# Shows:
# - Individual test output
# - Step-by-step execution for BDD tests
# - Stack traces for failures
# - Resource usage
JSON Output
r2r eac get tests | jq '.'
# Structured test metadata
{
"tests": [
{
"module": "src-auth",
"file": "auth_test.go",
"tests": ["TestValidateUser", "TestAuthentication"]
}
]
}
Test Performance
Analyzing Test Times
# Show test timing data
r2r eac show test-timings
# Get slowest tests
r2r eac get test-timings | jq '[.tests[]] | sort_by(.duration) | reverse | .[0:10]'
Optimizing Test Execution
# Run only fast tests
r2r eac test suite unit
# Skip slow integration tests
r2r eac test --exclude-tags @slow
# All suites (parallel is default)
r2r eac test --suite unit+integration+acceptance
Common Patterns
Pre-commit Testing
# Test affected modules
CHANGED=$(r2r eac get changed-modules | jq -r '.changed_modules[]')
r2r eac test $CHANGED
CI Pipeline Testing
# Full test suite with coverage
r2r eac test --suite unit+integration+acceptance --coverage
# Acceptance tests for thorough testing
r2r eac test --suite acceptance
# Integration tests with coverage
r2r eac test --suite integration --coverage
Test-Driven Development
Test Tagging
Gherkin Tags
@smoke @api
Feature: API Authentication
@positive
Scenario: Valid credentials
Given a registered user
When they authenticate
Then access is granted
@negative @slow
Scenario: Invalid credentials
Given invalid credentials
When they authenticate
Then access is denied
Running Tagged Tests
# Run smoke tests only
r2r eac test --tags @smoke
# Exclude slow tests
r2r eac test --exclude-tags @slow
# Multiple tags (AND)
r2r eac test --tags @api,@positive
Failure Handling
Immediate Failure
Stop on first failure:
Collect All Failures
Continue running all tests:
Debug Failures
# Parse test output for failures
r2r eac test debug
# Show only failures
r2r eac test src-auth | grep "✗"
# Get detailed failure report
r2r eac show test-summary src-auth
Test Coverage
Generate Coverage
# Run with coverage
r2r eac test src-auth --coverage
# View coverage report
go tool cover -html=coverage.out
Coverage Thresholds
Integration with Other Commands
Build and Test
Test in Clean Environment
# Create workspace for testing
r2r eac work create test/feature-x
cd ../work/test-feature-x
# Run tests in isolation
r2r eac test
Validate Before Commit
# Validate changes
r2r eac validate
# Run tests
r2r eac test
# Commit if passing
r2r eac work commit --all
Best Practices
Test Frequently
Use Appropriate Granularity
# Development: Test single module
r2r eac test src-auth
# Pre-commit: Test changed modules
r2r eac test $(r2r eac get changed-modules | jq -r '.changed_modules[]')
# CI: Test all modules with all suites
r2r eac test --suite unit+integration+acceptance
Organize with Suites
# Fast feedback with unit tests
r2r eac test --suite unit
# Comprehensive validation with all suites
r2r eac test --suite unit+integration+acceptance
Monitor Performance
# Track test times
r2r eac show test-timings
# Identify slow tests
r2r eac get test-timings | jq '[.tests[]] | sort_by(.duration) | reverse'
Common Issues
Tests Fail Locally but Pass in CI
Problem: Environment differences
Solution: Use consistent test environment
# Run tests in Docker (if configured)
docker run -v $(pwd):/app test-image r2r eac test
# Or use workspace isolation
r2r eac work create test/investigation
cd ../work/test-investigation
r2r eac test
Flaky Tests
Problem: Tests pass/fail intermittently
Solution: Run multiple times and analyze
# Run test multiple times
for i in {1..10}; do
r2r eac test src-auth
done
# Identify flaky tests
r2r eac test debug
Slow Test Suite
Problem: Tests take too long
Solution: Analyze and optimize
# Find slowest tests
r2r eac show test-timings
# Run only fast tests during development
r2r eac test --suite unit
# Run all suites (parallel is default)
r2r eac test --suite unit+integration+acceptance
Test Discovery Issues
Problem: Tests not being found
Solution: Verify module contracts
Command Details
test
Execute tests for one or more modules:
# Single module
r2r eac test src-auth
# Multiple modules
r2r eac test src-auth src-api
# All modules (no args = all modules)
r2r eac test
# With specific suites and coverage
r2r eac test src-auth --suite unit+integration --coverage
test suite
Run tests organized in a suite:
# List available suites
r2r eac test list-suites
# Run specific suite
r2r eac test suite integration
# Run with tags
r2r eac test suite regression --tags @critical
test list-suites
Display all configured test suites:
r2r eac test list-suites
# Output:
# Available test suites:
# - unit: Unit tests (fast)
# - integration: Integration tests
# - smoke: Quick smoke tests
# - regression: Full regression suite
test debug
Parse test output and show failures:
# After running tests
r2r eac test src-auth
r2r eac test debug
# Shows:
# - Failed test names
# - Error messages
# - File locations
# - Stack traces
See Also
- build - Build modules before testing
- validate specs - Validate Gherkin specifications
- show tests - List all tests
- show test-summary - Test execution summary
- show test-timings - Test performance analysis
- get tests - Test metadata as JSON
Tutorials | How-to Guides | Explanation | Reference
You are here: Reference — information-oriented technical descriptions of the system.