diff --git a/.github/workflows/gtf_tests.yml b/.github/workflows/gtf_tests.yml index 3f5f258b..0ca071a3 100644 --- a/.github/workflows/gtf_tests.yml +++ b/.github/workflows/gtf_tests.yml @@ -27,14 +27,37 @@ jobs: python -m pip install --upgrade pip pip install pandas - - name: Create output directory - run: mkdir -p test_output + - name: Create directories + run: | + mkdir -p test_data + mkdir -p test_output + mkdir -p test_output/comparison_files + mkdir -p test_data/reference_outputs + + - name: Create test data + run: python create_test_gtfs.py + + # First run: Create reference GTF if it doesn't exist + - name: Create reference GTF + if: ${{ !hashFiles('test_data/reference_outputs/reference_modified.gtf') }} + env: + PYTHONPATH: ${{ github.workspace }}/3rd-party-tools/build-indices + run: | + python modify_gtf.py \ + -i test_data/test1.gtf \ + -o test_data/reference_outputs/reference_modified.gtf \ + -b Biotypes.tsv - - name: Verify required files exist + # Run unit tests + - name: Run unit tests + id: unit_tests + env: + PYTHONPATH: ${{ github.workspace }}/3rd-party-tools/build-indices run: | - ls test_data/test1.gtf - ls Biotypes.tsv + python -m unittest test_gtf_comparison.py -v + continue-on-error: true + # Run modify_gtf and comparison - name: Run modify_gtf script env: PYTHONPATH: ${{ github.workspace }}/3rd-party-tools/build-indices @@ -44,21 +67,78 @@ jobs: -o test_output/modified_test1.gtf \ -b Biotypes.tsv - - name: Run comparison tests + - name: Run comparison + id: comparison env: PYTHONPATH: ${{ github.workspace }}/3rd-party-tools/build-indices run: | python compare_gtfs.py \ test_data/test1.gtf \ test_output/modified_test1.gtf \ - --output-prefix test_output/comparison + --output-prefix test_output/comparison_files/comparison + continue-on-error: true - - name: Upload test results + - name: Create comparison summary + run: | + echo "GTF Comparison Summary" > test_output/comparison_files/summary.txt + echo "Generated on: $(date)" >> test_output/comparison_files/summary.txt + echo "\nInput GTF: test_data/test1.gtf" >> test_output/comparison_files/summary.txt + echo "Modified GTF: test_output/modified_test1.gtf\n" >> test_output/comparison_files/summary.txt + + echo "=== Structural Differences ===" >> test_output/comparison_files/summary.txt + cat test_output/comparison_files/comparison_structural_diff.txt >> test_output/comparison_files/summary.txt + + echo "\n=== Gene Differences ===" >> test_output/comparison_files/summary.txt + cat test_output/comparison_files/comparison_gene_diff.txt >> test_output/comparison_files/summary.txt + + echo "\n=== Attribute Differences ===" >> test_output/comparison_files/summary.txt + cat test_output/comparison_files/comparison_attribute_diff.txt >> test_output/comparison_files/summary.txt + + - name: Zip comparison results + run: | + cd test_output + zip -r comparison_results.zip comparison_files/ + cd .. + + - name: Upload test artifacts uses: actions/upload-artifact@v4 if: always() with: name: gtf-test-results path: | - 3rd-party-tools/build-indices/test_output/ + 3rd-party-tools/build-indices/test_output/comparison_results.zip + 3rd-party-tools/build-indices/test_output/modified_test1.gtf 3rd-party-tools/build-indices/test_data/test1.gtf - 3rd-party-tools/build-indices/Biotypes.tsv \ No newline at end of file + 3rd-party-tools/build-indices/Biotypes.tsv + 3rd-party-tools/build-indices/test_data/reference_outputs/reference_modified.gtf + compression-level: 9 + + - name: Check test results + if: always() + run: | + # Print test summary + echo "=== Test Results Summary ===" + + # Check unit tests result + if [ "${{ steps.unit_tests.outcome }}" == "success" ]; then + echo "✅ Unit tests passed" + else + echo "❌ Unit tests failed" + TESTS_FAILED=true + fi + + # Check comparison results + if [ -f test_output/comparison_files/comparison_structural_diff.txt ]; then + if grep -q "differs in" test_output/comparison_files/comparison_structural_diff.txt; then + echo "❌ GTF comparison found differences" + cat test_output/comparison_files/summary.txt + TESTS_FAILED=true + else + echo "✅ GTF comparison passed" + fi + fi + + # Fail if any tests failed + if [ "$TESTS_FAILED" = true ]; then + exit 1 + fi \ No newline at end of file