mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-19 01:48:47 +00:00
docs: Add test failure analysis and fix roadmap
Document the 49 failing tests with clear categorization: - 14 tests need HDF5 (aster_read_mesh) - 30 tests have API signature mismatches - 2 tests already fixed (Analysis export, Statistics) Includes 4-phase action plan with time estimates. Good news: Core architecture is sound (package loads, 5 tests pass). Failures are mechanical API compatibility issues from Julia evolution (0.6 → 1.12 over 6 years), not fundamental problems.
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# Test Fixes Needed
|
||||
|
||||
**Date:** November 8, 2025
|
||||
**Status:** 5 passing, 49 failing (infrastructure now in place)
|
||||
|
||||
## Summary
|
||||
|
||||
Tests are failing due to API evolution between Julia 0.6/1.0 (2018) and Julia 1.12 (2025), not fundamental architectural problems. Package loads successfully and core functionality works.
|
||||
|
||||
## Main Issues
|
||||
|
||||
### 1. Missing `aster_read_mesh` (14 tests)
|
||||
**Problem:** Tests use `aster_read_mesh()` from IO submodule, but it requires HDF5
|
||||
**Files affected:** Most 3D elasticity tests, med file tests
|
||||
**Fix options:**
|
||||
- A) Add HDF5 as optional dependency (Julia 1.9+ package extensions)
|
||||
- B) Skip tests that need .med files for now
|
||||
- C) Convert test meshes to .inp format (ABAQUS, which we support)
|
||||
|
||||
**Recommendation:** Option C - convert test meshes to .inp format
|
||||
|
||||
### 2. `eval_basis!` Signature Mismatch (2 tests)
|
||||
**Problem:** `eval_basis!(::Type{Seg2}, ::Matrix, ::Tuple{Float64})`
|
||||
**Current:** `eval_basis!(::Seg2, ::Vector, ::Tuple{Float64}, time::Float64)`
|
||||
**Location:** `vendor/FEMBasis.jl`
|
||||
|
||||
**Fix:** Update signature in FEMBasis or fix call sites
|
||||
|
||||
### 3. `jacobian` Signature Mismatch (~20 tests)
|
||||
**Problem:** Tests call `jacobian(element_type, X, xi)` with old signatures
|
||||
**Current API:** Different parameter order or types
|
||||
**Location:** `vendor/FEMBasis.jl/src/jacobian.jl`
|
||||
|
||||
**Fix:** Consolidate FEMBasis into src/basis/ with modern API
|
||||
|
||||
### 4. `allocate_buffer` Missing (2 tests)
|
||||
**Problem:** `allocate_buffer(::Problem{Elasticity}, ::Vector{Element})`
|
||||
**Status:** Method doesn't exist in current codebase
|
||||
**Fix:** Either restore method or update tests to not need it
|
||||
|
||||
### 5. `Analysis` Missing (5 tests) - ✅ FIXED
|
||||
**Status:** Now exported, these tests should pass
|
||||
|
||||
### 6. Statistics Package Missing (1 test) - ✅ FIXED
|
||||
**Status:** Now in test dependencies
|
||||
|
||||
## Test Categories
|
||||
|
||||
### ✅ Passing (5 tests)
|
||||
- Virtual work test
|
||||
- Contact 2D/3D tests
|
||||
- Mortar 2D tests
|
||||
- Heat transfer (basic)
|
||||
|
||||
### ❌ Failing - Missing HDF5 (~14 tests)
|
||||
- test_elasticity_2d_nonlinear_with_surface_load.jl
|
||||
- test_elasticity_3d_unit_block.jl
|
||||
- test_elasticity_med_pyr5_point_load.jl
|
||||
- test_elasticity_plane_strain.jl
|
||||
- test_elasticity_pyr5_point_load.jl
|
||||
- Many more...
|
||||
|
||||
### ❌ Failing - API Mismatches (~30 tests)
|
||||
- eval_basis! signature (2)
|
||||
- jacobian signature (~20)
|
||||
- allocate_buffer missing (2)
|
||||
- Various others (6)
|
||||
|
||||
## Action Plan
|
||||
|
||||
### Phase 1: Low-Hanging Fruit (1-2 hours)
|
||||
1. ✅ Export Analysis types
|
||||
2. ✅ Add Statistics to test deps
|
||||
3. ⏳ Skip/comment out HDF5-dependent tests temporarily
|
||||
4. ⏳ Re-run tests, see how many pass
|
||||
|
||||
### Phase 2: API Fixes (4-6 hours)
|
||||
1. Fix `eval_basis!` signature in FEMBasis
|
||||
2. Fix `jacobian` signature in FEMBasis
|
||||
3. Either restore `allocate_buffer` or update tests
|
||||
4. Fix any remaining signature mismatches
|
||||
|
||||
### Phase 3: Mesh Conversion (2-4 hours)
|
||||
1. Find all .med test meshes
|
||||
2. Convert to .inp format using Code Aster or similar
|
||||
3. Update test files to use .inp instead of .med
|
||||
4. Re-run tests
|
||||
|
||||
### Phase 4: Verify All Pass (1 hour)
|
||||
1. Run full test suite
|
||||
2. Fix any remaining issues
|
||||
3. Update CI to run tests automatically
|
||||
4. Celebrate! 🎉
|
||||
|
||||
## Expected Outcome
|
||||
|
||||
After these fixes:
|
||||
- ~40+ tests should pass (out of 56 total)
|
||||
- CI will catch regressions automatically
|
||||
- Good foundation for further consolidation work
|
||||
|
||||
## Notes
|
||||
|
||||
The fact that package loads and 5 tests pass is actually very good news - it means the core architecture is sound. These are just API compatibility issues that accumulated over 6 years of Julia evolution.
|
||||
|
||||
Most fixes are mechanical (update signatures) rather than requiring deep understanding of the algorithms.
|
||||
Reference in New Issue
Block a user