2.2 KiB
Repository Testing
This document describes the testing infrastructure for the repository implementation in the IPS project.
Overview
The repository implementation is tested at two levels:
- Unit Tests: Tests for the individual components of the repository implementation, such as the FileBackend, CatalogManager, etc.
- End-to-End Tests: Tests for the complete workflow of creating a repository, adding packages, and querying the repository.
Test Setup
Before running the tests, you need to set up the test environment by running the setup_test_env.sh script:
./setup_test_env.sh
This script:
- Compiles the application
- Creates a prototype directory with example files
- Creates package manifests for testing
Unit Tests
The unit tests are implemented in libips/src/repository/tests.rs. These tests cover:
- Creating a repository
- Adding a publisher
- Testing the CatalogManager functionality
- Publishing files to a repository
- Listing packages in a repository
- Showing package contents
- Searching for packages
To run the unit tests:
cargo test repository::tests
Note: Some of the unit tests are currently failing due to issues with how packages are created and queried. These issues need to be addressed in future work.
End-to-End Tests
The end-to-end tests are implemented in pkg6repo/src/e2e_tests.rs. These tests use the actual command-line tools to test the complete workflow:
- Creating a repository using pkg6repo
- Adding a publisher to a repository
- Publishing a package to a repository using pkg6dev
- Showing package contents
- Publishing multiple packages
To run the end-to-end tests:
cargo test -p pkg6repo
Note: The end-to-end tests are currently failing due to a conflict with the argument name 'version' in the pkg6repo command-line interface. This issue needs to be addressed in future work.
Future Work
- Fix the unit tests to properly create and query packages
- Fix the conflict with the argument name 'version' in the pkg6repo command-line interface
- Add more comprehensive tests for edge cases and error conditions
- Add tests for the RestBackend implementation
- Add tests for the repository search functionality