Files
TinyTorch/docs/development/testing-separation.md
Vijay Janapa Reddi 69d65d38c3 feat: Add modules command and clean up CLI duplication
- Add new 'tito modules' command for comprehensive module status checking
  - Scans all modules in modules/ directory automatically
  - Shows file structure (dev file, tests, README)
  - Runs tests with --test flag
  - Provides detailed breakdown with --details flag

- Remove duplicate/stub commands:
  - Remove 'tito status' (unimplemented stub)
  - Remove 'tito submit' (unimplemented stub)

- Update 'tito test' command:
  - Focus on individual module testing with detailed output
  - Redirect 'tito test --all' to 'tito modules --test' with recommendation
  - Better error handling with available modules list

- Add comprehensive documentation:
  - docs/development/testing-separation.md - explains module vs package checking
  - docs/development/command-cleanup-summary.md - documents CLI cleanup

Key benefit: Clear separation between module development status (tito modules)
and TinyTorch package functionality (tito info) with no confusing overlaps.
2025-07-11 22:14:53 -04:00

6.8 KiB

Testing and Status Separation in TinyTorch

Overview

TinyTorch now has two separate systems for checking different aspects of the project:

  1. Module Status Checking - Are the individual modules working and passing their tests?
  2. TinyTorch Package Checking - Are the core capabilities available in the exported package?

1. Module Status Checking: tito modules

Purpose: Check the development status of individual modules in the modules/ directory.

What it checks:

  • File Structure: Does the module have required files ({module}_dev.py, tests/test_{module}.py, README.md)?
  • Test Results: Do the module's tests pass when run with pytest?
  • Development Progress: Which modules are complete vs. incomplete?

Commands:

# Basic module status overview
tito modules

# Run tests for all modules and show results
tito modules --test

# Show detailed file structure breakdown
tito modules --details

Example Output:

Module Status Overview
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓
┃ Module          ┃   Dev File   ┃    Tests     ┃    README    ┃     Test Results     ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━┩
│ activations     │      ✅      │      ✅      │      ✅      │      ✅ Passed       │
│ tensor          │      ✅      │      ✅      │      ✅      │      ❌ Failed       │
│ autograd        │      ❌      │      ❌      │      ❌      │       No tests       │
└─────────────────┴──────────────┴──────────────┴──────────────┴──────────────────────┘

📊 Summary: 7/16 modules complete, 4/16 tests passing

2. TinyTorch Package Checking: tito info

Purpose: Check if the exported TinyTorch package has the required functionality available.

What it checks:

  • Package Capabilities: Can you import and use core TinyTorch functionality?
  • Functional Integration: Do the different components work together?
  • Student Experience: What can students actually use from the package?

Commands:

# Check TinyTorch package functionality
tito info

# Show hello message if setup is working
tito info --hello

Example Output:

🚀 Module Implementation Status
┏━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ID  ┃ Project      ┃       Status       ┃ Description                              ┃
┡━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│  1  │ Tensor       │   ✅ Implemented   │ basic tensor operations                  │
│  2  │ Layers       │   ✅ Implemented   │ neural network building blocks           │
│  6  │ DataLoader   │   ✅ Implemented   │ data loading pipeline                    │
│  7  │ Training     │   ⏳ Not Started   │ autograd engine & optimization           │
└─────┴──────────────┴────────────────────┴──────────────────────────────────────────┘

Key Differences

Module Status (tito modules)

  • Scope: Individual module development files
  • Focus: Development workflow and testing
  • Checks: File structure, test execution, completion status
  • Audience: Developers working on modules
  • Granularity: Per-module basis

Package Status (tito info)

  • Scope: Exported TinyTorch package functionality
  • Focus: Student experience and package capabilities
  • Checks: Import capabilities, functional integration
  • Audience: Students using the package
  • Granularity: Functional capabilities

Use Cases

For Module Developers

# Check which modules need work
tito modules

# Test all modules during development
tito modules --test

# See detailed breakdown of missing files
tito modules --details

For Students/Users

# Check what TinyTorch features are available
tito info

# Test that my environment is working
tito info --hello

For Instructors

# Check overall course progress
tito modules --test

# Verify student experience
tito info

# Run specific module tests
tito test --module tensor

Architecture Benefits

Clear Separation of Concerns

  • Module development workflow vs. package functionality
  • Different audiences, different needs
  • No confusion between "learning modules" and "package capabilities"

Accurate Status Reporting

  • Module status reflects development progress
  • Package status reflects student experience
  • No false positives from organizational mismatches

Educational Value

  • Students see what they can actually use
  • Developers see what needs to be implemented
  • Clear progression from module → package → student usage

Implementation Notes

Module Status Implementation

  • Scans modules/ directory automatically
  • Checks for required files: {module}_dev.py, tests/test_{module}.py, README.md
  • Runs pytest on test files when --test flag is used
  • Provides detailed file structure breakdown with --details

Package Status Implementation

  • Tests actual import capabilities from tinytorch package
  • Checks functional integration (e.g., can you create a tensor and use it?)
  • Focuses on capabilities not module organization
  • Maps learning modules to functional components

Future Enhancements

Module Status

  • Add git status integration
  • Show module dependencies
  • Track completion percentages
  • Add module-specific metrics

Package Status

  • Add performance benchmarks
  • Show version compatibility
  • Add integration test results
  • Track API completeness

This separation provides a much clearer picture of both development progress and student experience, avoiding the confusion that arose from trying to map pedagogical structure directly to package organization.