tarballer/test
Leopere 267131960a Clean up old test-env directory and finalize test-tmp implementation 2025-03-20 18:56:11 -04:00
..
README.md Clean up old test-env directory and finalize test-tmp implementation 2025-03-20 18:56:11 -04:00
test.sh Move test files to test-tmp directory which is git-ignored 2025-03-20 18:50:48 -04:00

README.md

Testing the Tarballer Utility

This directory contains test scripts for validating the functionality of the Tarballer utility.

Test Environment

All tests run in a Docker container with temporary files stored in the /test-tmp directory. This directory is:

  1. Git-ignored to prevent cluttering the repository
  2. Automatically created by the Docker container
  3. Cleaned up after tests complete (unless you specify otherwise)

Running Tests

To run the tests, use Docker Compose from the project root:

# Build and run all tests
docker compose up --build

# Run only the basic test
docker compose run tarballer /bin/test.sh basic

# Run only the tar comparison test
docker compose run tarballer /bin/test.sh tar

# Keep temporary files after tests (for debugging)
docker compose run tarballer /bin/test.sh all 1

Test Types

The test script (test.sh) supports several test types:

  1. basic - Tests basic tarball creation and extraction with various file types and symlinks
  2. tar - Compares our utility against standard tar functionality
  3. all - Runs all tests (default)
  4. clean - Just cleans up temporary files

Test Directory Structure

The tests create the following structure in the /test-tmp directory:

  • /test-tmp/complex/ - Directory with complex nested structure for basic test
  • /test-tmp/complex-extracted/ - Where the complex test tarball is extracted
  • /test-tmp/standard-test/ - Directory with sample app structure for tar comparison
  • /test-tmp/standard-extracted/ - Where our utility's tarball is extracted
  • /test-tmp/reference-extracted/ - Where standard tar's tarball is extracted

Manual Testing

If you need to manually test the tarballer utility, you can:

  1. Build the binaries: docker compose up --build
  2. Use the binaries in ./bin/ directory:
    # Create a tarball
    ./bin/tarballer-darwin -source /path/to/source -output output.tar.gz -prefix myapp
    
    # Extract and verify a tarball
    ./bin/tarballer-darwin -extract -output output.tar.gz -extractdir /path/to/extract
    

Modifying Tests

When modifying tests, ensure any temporary files are created within the /test-tmp directory structure to keep the repository clean.