mirror of
https://github.com/JotaRandom/hfsutils.git
synced 2026-01-23 03:16:24 +00:00
- Updated GitHub Actions workflow to test on both Ubuntu and Arch Linux - Added comprehensive test suite execution for all test categories - Added specification conformance validation job - Added cross-platform compatibility verification - Created .github/README.md documenting workflows and testing procedures - Added CI status badge to main README.md Test Coverage: - Basic functionality tests (mount, ls, copy, delete, etc.) - Integration workflow tests (backup, restore, migration) - HFS+ specific tests (formatting, detection, journaling) - Error handling and edge case tests - Specification conformance (alternate headers, signatures, fields) Platform Support: - Ubuntu Latest: Full test suite with hexdump verification - Arch Linux: Same test suite in container for rolling-release validation Artifacts: - Upload test artifacts on failure for debugging - Include temp files, logs, and disk images
GitHub Workflows for hfsutils
This directory contains GitHub Actions workflows for continuous integration and testing.
Workflows
CI Workflow (.github/workflows/ci.yml)
Comprehensive continuous integration workflow that builds and tests hfsutils on multiple platforms.
Jobs
-
build-and-test-ubuntu
- Platform: Ubuntu Latest
- Builds complete project using
build.sh - Creates symlinks for filesystem utilities
- Runs comprehensive test suite:
- Basic functionality tests
- Integration workflow tests
- HFS+ specific tests
- Error handling tests
- Specification conformance tests
- Tests installation to verify package structure
- Uploads artifacts on failure for debugging
-
build-and-test-archlinux
- Platform: Arch Linux (container)
- Same test suite as Ubuntu
- Validates compatibility with rolling-release distribution
- Uses latest Arch Linux packages
- Independent artifact upload for debugging
-
test-specification-conformance
- Platform: Ubuntu Latest
- Runs after successful Ubuntu build
- Validates HFS/HFS+ specification compliance:
- HFS Alternate MDB Location: Verifies signature
0x4244atdevice_size - 1024 - HFS+ Alternate Volume Header: Verifies signature
0x482Bor0x4244atdevice_size - 1024 - HFS+ attributes Field: Validates
kHFSVolumeUnmountedBit(0x0100) is set
- HFS Alternate MDB Location: Verifies signature
- Uses
hexdumpto inspect binary structures - Ensures conformance to Apple TN1150 specification
-
cross-platform-compatibility
- Platform: Ubuntu Latest
- Runs after all builds complete
- Summary job to verify all platforms passed
- Provides single checkpoint for PR approval
Test Categories
The test suite (test/run_tests.sh) includes:
- basic: Core functionality (mount, ls, copy, etc.)
- integration: Real-world workflows (backup, migration, archive)
- hfsplus: HFS+ specific features (formatting, detection, journaling)
- errors: Error handling and edge cases
- all: Complete test suite
Triggers
- Push: Any push to
masterbranch - Pull Request: Any PR targeting
masterbranch
Dependencies
Ubuntu:
- build-essential
- gcc
- make
- perl
- hexdump
- util-linux
Arch Linux:
- base-devel
- gcc
- make
- perl
- git
- util-linux
Running Tests Locally
Ubuntu/Debian
sudo apt-get install build-essential gcc make perl hexdump
./build.sh
cd test
./run_tests.sh all
Arch Linux
sudo pacman -S base-devel gcc make perl util-linux
./build.sh
cd test
./run_tests.sh all
Quick Tests
cd test
./run_tests.sh basic # Basic functionality only
Specification Tests
cd test
./test_hfs_spec_validation.sh
./test_hfsplus_complete.sh
Artifacts
On test failure, the following artifacts are uploaded:
test/temp/- Temporary test files and imagestest/*.log- Test execution logs*.img- HFS/HFS+ disk images created during tests
Artifacts are kept for 90 days and can be downloaded from the Actions tab.
Status Badges
Add to README.md:

Maintenance
Adding New Tests
- Add test function to
test/run_tests.sh - Update workflow to include new test category if needed
- Test locally before pushing
Updating Dependencies
- Update package lists in workflow file
- Test in container locally:
docker run -it --rm -v $(pwd):/workspace -w /workspace ubuntu:latest bash # or docker run -it --rm -v $(pwd):/workspace -w /workspace archlinux:latest bash
Debugging Failures
- Check Actions tab for logs
- Download artifacts if available
- Reproduce locally using same commands
- Check specification conformance with
hexdump