Mirror the new test/io tree in TOPICS so Pkg.test and topic filtering pick up
WriteVTK coverage after mesh and before quadrature.
- Insert "io" after "mesh" in the TOPICS constant ordering
Add io tests that load WriteVTK with JuliaFEM and cover stub misuse, Hex8 and
Quad4 VTU output with nodal and cell data, suffix handling, and bad topologies.
- Add test/io/runtests.jl wrapper around the VTK-focused cases
- Implement test_writevtk.jl with structured mesh grids and negative cases
Add a focused test file asserting read_gmsh_msh raises ErrorException and
mesh_from_current_gmsh_model stays undefined until JuliaFEMGmshExt loads.
- Add test_gmsh_stub.jl with two throws checks for the weakdep path
- Include the new file from test/mesh/runtests.jl next to existing mesh tests
The default harness loads shared helpers and smoke checks before topic
includes, registers poroelastic and thermo_poroelastic, drops the retired IO
topic, and removes the orphaned ASCII fixture.
- Add zero_alloc_helpers.jl, test_api_contract.jl, test_pkg_hygiene.jl, and
test_inference_smoke.jl included once from runtests.jl
- Extend TOPICS; remove io; clarify test_args accepts topic names only
- Delete test/testdata/cantilever_beam.msh
The in-tree `GmshReader` module is gone, so the dedicated IO test driver and
Tet4 fixture assertions are removed to keep the default suite aligned with
core dependencies.
- Delete `test/io/runtests.jl`, which only included `test_gmsh_reader.jl`
- Delete `test/io/test_gmsh_reader.jl`, which exercised `read_gmsh_mesh` and `get_surface_nodes` against bundled `.msh` data
Replace the retired per-shape modules with the single `test_quadrature_rules.jl`
entry point that mirrors the current quadrature implementation layout.
- SPDX header; trim imports to `Test`, `JuliaFEM`, and `Tensors`.
Legacy physics API tests were retired with the module reset; keep only the strain
smoke file until higher-level physics coverage returns.
- Import `JuliaFEM` explicitly for includes under `Pkg.test`.
Drive refinement through `create_structured_box_mesh` so tests stay aligned with
the dimensioned `Mesh{8,Hex8}` constructors, and keep a cheap analytic volume
sanity check for `compute_element_volume`.
- SPDX header; replace bespoke manual meshes with structured coupons + bisection counts.
Register the recently introduced damage/creep/eigenstrain/Chaboche markers so the
generated registry cannot drift from their storage types and default symbols.
- SPDX header refresh.
Add a focused regression that `compute_stress` lands on the von Mises surface when
the trial state lies outside yield, using the returned backstress state.
- SPDX header refresh for the file.
The refactor exposes in-place `get_*_vector(workspace, buf)` overloads; exercise them
beside the allocating helpers and keep allocation probes on pre-filled buffers.
- Assert buffer aliases and equality against freshly extracted vectors.
- Replace generic `get_field` probes with direct NamedTuple field access.
The previous file duplicated a long narrative and many scenarios that better live
in basis/quadrature coverage; keep the Jacobian helpers exercised with tuple vs
vector coordinates and physical derivative consistency.
- SPDX header; drop unused `LinearAlgebra` import.
- Fix basis calls to `Triangle{3}` / `Lagrange{1}` and verify scaling + PoU gradient sum.
Replace the hand-built toy elements with a single coupon produced by
`create_elements!`, matching how assembly pulls DOFs from handlers.
- SPDX header + one regression comparing flat vs structured extraction for T+u on Hex8.
The stiffness check already targets the shipped COO assembler; drop marketing-style
labels from comments and console banners so failures read like ordinary regressions.
Material-cache reset coverage should populate stresses through the global cache
API rather than the removed `create_material_state` helper.
- Mirror production signatures for `update_geometry_cache!` / `update_material_cache!`.
Manual quadrature comparisons must refresh material data with the same global
state container production assembly uses, and geometry updates no longer take the
kernel object.
- Construct `global_cache` beside the per-IP material workspace.
- Pass `global_cache` into `update_material_cache!` and drop the kernel argument
from `update_geometry_cache!`.
COO assembly now keeps persistent material history on the cache’s global store,
so tests should not fabricate a separate `state_old` argument.
- Call `assemble!(cache, assembler, kernel, mesh, u_global, Δt)` in correctness,
allocation, and two-element coverage paths.
- Clarify comments about zero displacement vs nonzero `u_global`.
The three-phase cache exerciser still referenced the retired per-call material
state bag and an older `update_geometry_cache!` arity. Fold everything onto the
shared global cache object and the slimmer geometry updater signature.
- Hoist `BenchmarkTools` to module scope for the `@benchmark` block.
- Drop the duplicate legacy `update_material_cache!` testset; keep the zero-alloc
path driven by `GlobalMaterialCache`.
Stateful initialization now flows through `GlobalMaterialCache` construction in
the individual tests, so the placeholder helper only duplicated errors.
- Remove `create_material_state` and its docstring from shared continuum helpers.
Wire the continuum suite into the newer kernel families beyond baseline elasticity
assembly: branch coverage for material caching, a brick direct solve, and mixed
u–p / Stokes / HR / Hu–Washizu matvec + solver smoke paths.
- Add `test_material_cache_branches.jl` next to the existing cache-update group.
- Include mixed formulation kernels with companion solves or penalty matvec checks.
The DOF runner now exercises the type-stable handler path end-to-end (multi-field
templates, facet orientation maps, and higher-order hex facets) instead of the
retired field-unification stub.
- Replace `test_field_unification.jl` with global ranges, multifield wiring, and
facet-map coverage across tet/wedge/pyramid/tet10/hex20 shapes.
- Drop the unused `Tensors` import and the old header docstring.
Inference-sensitive helpers belong behind the public module boundary so changes to
includes do not silently widen types in CI.
- Switch to `using JuliaFEM` after removing relative includes.
Static-array return paths depend on the same generated helpers as production code;
tests should import the package rather than cherry-picking sources.
- Drop manual topology/basis includes.
Partition-of-unity constraints must hold for the generated tables JuliaFEM ships,
not a parallel copy pulled via relative paths.
- Replace includes with `using JuliaFEM`.
Numerical tolerances are meaningful only when they target the shipped basis
implementation and quadrature pairing.
- Import `JuliaFEM` instead of stitching topology files manually.
Kronecker tests should exercise exported Lagrange evaluation helpers together with
topology types from the package root.
- Swap fragile src includes for `using JuliaFEM`.
Interpolation tests should respect manifest exports and initialization order from
the main module.
- Remove duplicated topology/basis includes; import `JuliaFEM` instead.
Ensure gradient identities run against the same API users import, not a bespoke
subset of source files.
- Replace relative includes with `using JuliaFEM`.
Align derivative checks with the packaged basis/topology stack instead of
partially re-including `src/` fragments.
- Drop manual `include("../../src/...")` bootstrapping in favor of `using JuliaFEM`.
Basis regression files used to `include` topology and generated basis sources
directly from `../../src`, which drifted from package exports and hid missing
wiring until CI.
- Replace the relative `include` chain with `using JuliaFEM` so tests hit the
real module surface (`Lagrange{P}`, parametrized topologies, generated tables).
Import `JuliaFEM` in the topic runner and include new Piola/Nedelec,
integration-basis quadrature, and basis-description regressions.
- Reorder derivative/type-stability includes after adding coverage files.
Replace hand-inlined topic tests with `TOPICS` discovery, optional ARGS-based
filtering, and interface smoke checks required by the new mesh stack.
- SPDX-header the runner and assert `AbstractInterfaceMesh` / `InterfaceMesh` exist.
- `include(joinpath(topic, \"runtests.jl\"))` for every mirrored topic directory.
- Drop obsolete inline includes for retired paths; note legacy tests live outside CI.