- Verify all encryption test attributes are properly configured - Confirm #[test], #[cfg(feature = "decrypt")], and #[ignore] usage - Validate test framework recognition and compilation success - Document 18 passing tests with 1 ignored performance test - Closes bf-53l6m
3.6 KiB
bf-53l6m: Test Macros and Attributes Setup
Task
Set up test macros and attributes for encryption tests.
Implementation
Current Test Attribute Configuration
The encryption tests use the following Rust test attributes and macros:
1. Standard Test Macro
#[test]
fn test_example() {
// test code
}
- Used for all test functions
- Recognized by standard Rust test framework
2. Conditional Compilation Attribute
#[cfg(feature = "decrypt")]
fn test_decrypt_feature() {
// decrypt-dependent test
}
- Gates tests behind the
decryptfeature - Prevents compilation errors when feature is disabled
- Used consistently across encryption tests
3. Test Ignore Attribute
#[test]
#[ignore = "Performance test - run with --release"]
fn test_encryption_performance() {
// performance test
}
- Marks tests to be skipped by default
- Can be run with
cargo test -- --ignored - Used for performance-intensive tests
Test File Structure
pdftract-core Encryption Tests
- File:
crates/pdftract-core/tests/encryption_integration_tests.rs - Structure: Top-level test functions with conditional compilation
- Tests: 18 active tests, 1 ignored performance test
- Attributes:
#[test],#[cfg(feature = "decrypt")],#[ignore]
Other Encryption Test Files
encryption_aes_128_test.rs- Uses#[cfg(test)]module wrapperencryption_aes_256_test.rs- Uses#[cfg(test)]module wrapperencryption_rc4_test.rs- Uses#[cfg(test)]module wrapper
pdftract-cli Encryption Tests
- File:
crates/pdftract-cli/tests/test_encryption_unsupported.rs - Structure: Standard
#[test]attributes without feature gates - Purpose: CLI exit code verification for encryption errors
Verification
Compilation Status
✅ All encryption test files compile successfully
pdftract-coreencryption tests: PASSpdftract-cliencryption tests: PASS (compilation)- No attribute-related compilation errors
Test Framework Recognition
✅ Test framework properly recognizes all attributes
$ cargo test --package pdftract-core --test encryption_integration_tests
running 19 tests
test test_aes128_decrypt_requires_iv ... ok
test test_aes128_object_key_derivation ... ok
...
test test_encryption_performance ... ignored, Performance test - run with --release
test result: ok. 18 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out
Attribute Functionality
✅ #[cfg(feature = "decrypt")] - Correctly gates decrypt-dependent tests
✅ #[test] - All tests recognized and executed by test framework
✅ #[ignore] - Performance test correctly ignored by default
Acceptance Criteria Met
- ✅ Test macros added: Standard
#[test]macro used throughout - ✅ Test attributes configured:
#[cfg(feature = "decrypt")]and#[ignore]properly applied - ✅ File compiles successfully: All encryption test files compile without errors
- ✅ Test framework recognizes the macros/attributes: 18 tests pass, 1 test ignored as expected
Notes
The encryption test infrastructure uses standard Rust testing attributes rather than custom macros. This approach:
- Maintains compatibility with standard Rust tooling
- Works seamlessly with IDE test runners
- Integrates with CI/CD pipelines
- Requires no additional build dependencies
The conditional compilation via #[cfg(feature = "decrypt")] ensures that encryption tests are only compiled when the decrypt feature is enabled, preventing compilation failures in configurations without encryption support.