Please look through our documentation, discussions and codebase to ensure your issue is well-researched and not already covered.
Testing Issue
Help us improve our test coverage and quality:
Description
Add behavior-driven tests (BTT/fuzz + edge-case behavior checks) for the diamond internal module and related inspect/upgrade facets.
These files implement core selector import/validation, facet linked-list bookkeeping, add/replace/remove upgrade flows, fallback dispatch, and introspection views. They are security-critical and currently appear to have no dedicated tests.
The new tests should validate happy paths, revert paths, list-link integrity, selectorCount/facetCount invariants, and introspection correctness after multi-step upgrades.
Target File/Function(s) being tested
src/diamond/DiamondInspectFacet.sol
src/diamond/DiamondMod.sol
src/diamond/DiamondUpgradeFacet.sol
src/diamond/DiamondUpgradeMod.sol
Suggested coverage focus:
- invalid selector encoding / no bytecode / no selectors reverts
- duplicate selector conflicts on add
- replace with same facet, replace non-existent facet, replace with selector ownership conflicts
- remove non-existent facet
- head/tail relinking correctness when replacing/removing first, middle, and last facets
- selectorCount/facetCount invariants across sequences of add→replace→remove
- delegatecall bubbling +
DiamondDelegateCall and DiamondMetadata event behavior
- introspection consistency (
facetAddresses, facets, facetFunctionSelectors) after each upgrade step
We aim the full coverage when possible
Helpful Information
Have a question? Please check our contribution guide first - your answer might already be there!
Want to discuss something? For general questions, ideas, or brainstorming, please browse our discussions or start a new one.
You can also join our Discord to discuss the testing issue.
Please look through our documentation, discussions and codebase to ensure your issue is well-researched and not already covered.
Testing Issue
Help us improve our test coverage and quality:
Description
Add behavior-driven tests (BTT/fuzz + edge-case behavior checks) for the diamond internal module and related inspect/upgrade facets.
These files implement core selector import/validation, facet linked-list bookkeeping, add/replace/remove upgrade flows, fallback dispatch, and introspection views. They are security-critical and currently appear to have no dedicated tests.
The new tests should validate happy paths, revert paths, list-link integrity, selectorCount/facetCount invariants, and introspection correctness after multi-step upgrades.
Target File/Function(s) being tested
src/diamond/DiamondInspectFacet.solsrc/diamond/DiamondMod.solsrc/diamond/DiamondUpgradeFacet.solsrc/diamond/DiamondUpgradeMod.solSuggested coverage focus:
DiamondDelegateCallandDiamondMetadataevent behaviorfacetAddresses,facets,facetFunctionSelectors) after each upgrade stepWe aim the full coverage when possible
Helpful Information
Have a question? Please check our contribution guide first - your answer might already be there!
Want to discuss something? For general questions, ideas, or brainstorming, please browse our discussions or start a new one.
You can also join our Discord to discuss the testing issue.