# 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: ```bash # 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: ```bash # 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.