# Testing dfdr This document outlines the test cases for verifying the functionality of the dfdr tool. ## Test Cases ### 1. Relative Paths for Registry List - Add a registry using a relative path: ``` dfdr registry add test_registry ../test_data ``` - List registries and verify the path is displayed as relative: ``` dfdr registry list ``` - Use the registry to add a file: ``` dfdr add test_registry:sample.txt ``` ### 2. Specifying Destination Subdirectories - Add a file to a specific subdirectory: ``` dfdr add test_registry:sample.txt -d ./subfolder ``` - Verify the file is placed in the correct location: ``` ls ./subfolder ``` - Check that the .dfdr file contains the correct origin information: ``` cat ./subfolder/sample.txt.dfdr ``` ### 3. Enhanced .dfdr Files with Origin Information - Add a file from a registry: ``` dfdr add test_registry:config.json ``` - Examine the .dfdr file: ``` cat config.json.dfdr ``` - Use the `status` command to verify the origin information: ``` dfdr status ``` ### 4. Push Functionality - Add a file from a registry: ``` dfdr add test_registry:data.csv ``` - Modify the file in the working copy: ``` echo "new data" >> data.csv ``` - Push changes back to the registry: ``` dfdr push data.csv ``` - Verify changes in the original registry: ``` cat ../test_data/data.csv ``` ### 5. Move Command - Add a file from a registry: ``` dfdr add test_registry:script.py ``` - Move the file within the working copy: ``` dfdr move script.py ./src/script.py ``` - Verify the file is moved and .dfdr file is updated: ``` ls ./src cat ./src/script.py.dfdr ``` - Check status for correct location and origin information: ``` dfdr status ``` ### 6. Error Handling - Attempt to push a non-existent file: ``` dfdr push non_existent_file.txt ``` - Try to move a file to an invalid destination: ``` dfdr move script.py /root/invalid_destination.py ``` - Add a file from a non-existent registry: ``` dfdr add fake_registry:file.txt ``` ## Running the Tests To run these tests, set up a test environment with a sample data registry, then execute each command and verify the results match the expected behavior. Remember to clean up the test environment after running the tests to ensure a clean state for future test runs.