Skip to content

feat: show test warning details in generated PHPUnit configs - #53

Merged
imorland merged 1 commit into
3.xfrom
im/display-test-warnings
Aug 1, 2026
Merged

feat: show test warning details in generated PHPUnit configs#53
imorland merged 1 commit into
3.xfrom
im/display-test-warnings

Conversation

@imorland

Copy link
Copy Markdown
Member

Why

Flarum's integration TestCase now inspects each request for N+1 query patterns (flarum/framework#4871). A query run once per record fails the test; one repeated for the same few values raises a warning instead, since it doesn't grow with the forum.

PHPUnit only prints what a warning said when displayDetailsOnTestsThatTriggerWarnings is enabled. Without it a run ends with:

OK, but there were issues!
Tests: 82, Assertions: 344, Warnings: 11.

— visible, but with no indication of which queries or where. Both generated configs now set the flag, so extension authors get the finding itself. Since backendTesting is updatable, existing extensions pick it up by re-running flarum-cli infra backendTesting, not just newly generated ones.

Also: the unit config's schema reference

phpunit.unit.xml pointed at https://schema.phpunit.de/10.5/phpunit.xsd while phpunit.integration.xml used ../vendor/phpunit/phpunit/phpunit.xsd. Flarum 2.x requires PHPUnit ^12.5, so the remote reference was both a version behind what gets installed and dependent on the network to validate. It now matches the integration config — which is also what extensions in the wild use (I checked several standalone 2.x extensions rather than core, whose deeper path in the monorepo isn't representative).

Verification

  • Both configs validate against a real PHPUnit 12.5 phpunit.xsd via xmllint --schema.
  • yarn test — 22 suites, 176 tests, Prettier clean.

… installed phpunit
Flarum's integration TestCase now reports repeated database queries as
PHPUnit warnings — a query run once per record fails the test, one
repeated for the same few values warns instead. PHPUnit only prints the
detail of a warning when displayDetailsOnTestsThatTriggerWarnings is
set; without it a run says 'Warnings: 11' and nothing about what they
were. Both generated configs now set it, so extension authors get the
finding rather than a count.
The unit config also pointed at a remote 10.5 schema while the
integration one used the installed copy. Flarum 2.x requires PHPUnit
^12.5, so the remote reference both drifts from what is installed and
needs the network to validate. It now matches the integration config,
which is what extensions in the wild use.
Both configs validate against a real PHPUnit 12 schema.
@imorland
imorland merged commit b01edc4 into 3.xAug 1, 2026
3 checks passed
@imorland
imorland deleted the im/display-test-warnings branch August 1, 2026 00:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@imorland
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat: show test warning details in generated PHPUnit configs by imorland · Pull Request #53 · flarum/cli · GitHub
Skip to content

feat: show test warning details in generated PHPUnit configs - #53

Merged
imorland merged 1 commit into
3.xfrom
im/display-test-warnings
Aug 1, 2026
Merged

feat: show test warning details in generated PHPUnit configs#53
imorland merged 1 commit into
3.xfrom
im/display-test-warnings

Conversation

@imorland

Copy link
Copy Markdown
Member

Why

Flarum's integration TestCase now inspects each request for N+1 query patterns (flarum/framework#4871). A query run once per record fails the test; one repeated for the same few values raises a warning instead, since it doesn't grow with the forum.

PHPUnit only prints what a warning said when displayDetailsOnTestsThatTriggerWarnings is enabled. Without it a run ends with:

OK, but there were issues!
Tests: 82, Assertions: 344, Warnings: 11.

— visible, but with no indication of which queries or where. Both generated configs now set the flag, so extension authors get the finding itself. Since backendTesting is updatable, existing extensions pick it up by re-running flarum-cli infra backendTesting, not just newly generated ones.

Also: the unit config's schema reference

phpunit.unit.xml pointed at https://schema.phpunit.de/10.5/phpunit.xsd while phpunit.integration.xml used ../vendor/phpunit/phpunit/phpunit.xsd. Flarum 2.x requires PHPUnit ^12.5, so the remote reference was both a version behind what gets installed and dependent on the network to validate. It now matches the integration config — which is also what extensions in the wild use (I checked several standalone 2.x extensions rather than core, whose deeper path in the monorepo isn't representative).

Verification

  • Both configs validate against a real PHPUnit 12.5 phpunit.xsd via xmllint --schema.
  • yarn test — 22 suites, 176 tests, Prettier clean.

… installed phpunit
Flarum's integration TestCase now reports repeated database queries as
PHPUnit warnings — a query run once per record fails the test, one
repeated for the same few values warns instead. PHPUnit only prints the
detail of a warning when displayDetailsOnTestsThatTriggerWarnings is
set; without it a run says 'Warnings: 11' and nothing about what they
were. Both generated configs now set it, so extension authors get the
finding rather than a count.
The unit config also pointed at a remote 10.5 schema while the
integration one used the installed copy. Flarum 2.x requires PHPUnit
^12.5, so the remote reference both drifts from what is installed and
needs the network to validate. It now matches the integration config,
which is what extensions in the wild use.
Both configs validate against a real PHPUnit 12 schema.
@imorland
imorland merged commit b01edc4 into 3.xAug 1, 2026
3 checks passed
@imorland
imorland deleted the im/display-test-warnings branch August 1, 2026 00:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@imorland
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: show test warning details in generated PHPUnit configs by imorland · Pull Request #53 · flarum/cli · GitHub
Skip to content

feat: show test warning details in generated PHPUnit configs - #53

Merged
imorland merged 1 commit into
3.xfrom
im/display-test-warnings
Aug 1, 2026
Merged

feat: show test warning details in generated PHPUnit configs#53
imorland merged 1 commit into
3.xfrom
im/display-test-warnings

Conversation

@imorland

Copy link
Copy Markdown
Member

Why

Flarum's integration TestCase now inspects each request for N+1 query patterns (flarum/framework#4871). A query run once per record fails the test; one repeated for the same few values raises a warning instead, since it doesn't grow with the forum.

PHPUnit only prints what a warning said when displayDetailsOnTestsThatTriggerWarnings is enabled. Without it a run ends with:

OK, but there were issues!
Tests: 82, Assertions: 344, Warnings: 11.

— visible, but with no indication of which queries or where. Both generated configs now set the flag, so extension authors get the finding itself. Since backendTesting is updatable, existing extensions pick it up by re-running flarum-cli infra backendTesting, not just newly generated ones.

Also: the unit config's schema reference

phpunit.unit.xml pointed at https://schema.phpunit.de/10.5/phpunit.xsd while phpunit.integration.xml used ../vendor/phpunit/phpunit/phpunit.xsd. Flarum 2.x requires PHPUnit ^12.5, so the remote reference was both a version behind what gets installed and dependent on the network to validate. It now matches the integration config — which is also what extensions in the wild use (I checked several standalone 2.x extensions rather than core, whose deeper path in the monorepo isn't representative).

Verification

  • Both configs validate against a real PHPUnit 12.5 phpunit.xsd via xmllint --schema.
  • yarn test — 22 suites, 176 tests, Prettier clean.

… installed phpunit
Flarum's integration TestCase now reports repeated database queries as
PHPUnit warnings — a query run once per record fails the test, one
repeated for the same few values warns instead. PHPUnit only prints the
detail of a warning when displayDetailsOnTestsThatTriggerWarnings is
set; without it a run says 'Warnings: 11' and nothing about what they
were. Both generated configs now set it, so extension authors get the
finding rather than a count.
The unit config also pointed at a remote 10.5 schema while the
integration one used the installed copy. Flarum 2.x requires PHPUnit
^12.5, so the remote reference both drifts from what is installed and
needs the network to validate. It now matches the integration config,
which is what extensions in the wild use.
Both configs validate against a real PHPUnit 12 schema.
@imorland
imorland merged commit b01edc4 into 3.xAug 1, 2026
3 checks passed
@imorland
imorland deleted the im/display-test-warnings branch August 1, 2026 00:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@imorland
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: show test warning details in generated PHPUnit configs by imorland · Pull Request #53 · flarum/cli · GitHub
Skip to content

feat: show test warning details in generated PHPUnit configs - #53

Merged
imorland merged 1 commit into
3.xfrom
im/display-test-warnings
Aug 1, 2026
Merged

feat: show test warning details in generated PHPUnit configs#53
imorland merged 1 commit into
3.xfrom
im/display-test-warnings

Conversation

@imorland

Copy link
Copy Markdown
Member

Why

Flarum's integration TestCase now inspects each request for N+1 query patterns (flarum/framework#4871). A query run once per record fails the test; one repeated for the same few values raises a warning instead, since it doesn't grow with the forum.

PHPUnit only prints what a warning said when displayDetailsOnTestsThatTriggerWarnings is enabled. Without it a run ends with:

OK, but there were issues!
Tests: 82, Assertions: 344, Warnings: 11.

— visible, but with no indication of which queries or where. Both generated configs now set the flag, so extension authors get the finding itself. Since backendTesting is updatable, existing extensions pick it up by re-running flarum-cli infra backendTesting, not just newly generated ones.

Also: the unit config's schema reference

phpunit.unit.xml pointed at https://schema.phpunit.de/10.5/phpunit.xsd while phpunit.integration.xml used ../vendor/phpunit/phpunit/phpunit.xsd. Flarum 2.x requires PHPUnit ^12.5, so the remote reference was both a version behind what gets installed and dependent on the network to validate. It now matches the integration config — which is also what extensions in the wild use (I checked several standalone 2.x extensions rather than core, whose deeper path in the monorepo isn't representative).

Verification

  • Both configs validate against a real PHPUnit 12.5 phpunit.xsd via xmllint --schema.
  • yarn test — 22 suites, 176 tests, Prettier clean.

… installed phpunit
Flarum's integration TestCase now reports repeated database queries as
PHPUnit warnings — a query run once per record fails the test, one
repeated for the same few values warns instead. PHPUnit only prints the
detail of a warning when displayDetailsOnTestsThatTriggerWarnings is
set; without it a run says 'Warnings: 11' and nothing about what they
were. Both generated configs now set it, so extension authors get the
finding rather than a count.
The unit config also pointed at a remote 10.5 schema while the
integration one used the installed copy. Flarum 2.x requires PHPUnit
^12.5, so the remote reference both drifts from what is installed and
needs the network to validate. It now matches the integration config,
which is what extensions in the wild use.
Both configs validate against a real PHPUnit 12 schema.
@imorland
imorland merged commit b01edc4 into 3.xAug 1, 2026
3 checks passed
@imorland
imorland deleted the im/display-test-warnings branch August 1, 2026 00:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@imorland
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' feat: show test warning details in generated PHPUnit configs by imorland · Pull Request #53 · flarum/cli · GitHub
Skip to content

feat: show test warning details in generated PHPUnit configs - #53

Merged
imorland merged 1 commit into
3.xfrom
im/display-test-warnings
Aug 1, 2026
Merged

feat: show test warning details in generated PHPUnit configs#53
imorland merged 1 commit into
3.xfrom
im/display-test-warnings

Conversation

@imorland

Copy link
Copy Markdown
Member

Why

Flarum's integration TestCase now inspects each request for N+1 query patterns (flarum/framework#4871). A query run once per record fails the test; one repeated for the same few values raises a warning instead, since it doesn't grow with the forum.

PHPUnit only prints what a warning said when displayDetailsOnTestsThatTriggerWarnings is enabled. Without it a run ends with:

OK, but there were issues!
Tests: 82, Assertions: 344, Warnings: 11.

— visible, but with no indication of which queries or where. Both generated configs now set the flag, so extension authors get the finding itself. Since backendTesting is updatable, existing extensions pick it up by re-running flarum-cli infra backendTesting, not just newly generated ones.

Also: the unit config's schema reference

phpunit.unit.xml pointed at https://schema.phpunit.de/10.5/phpunit.xsd while phpunit.integration.xml used ../vendor/phpunit/phpunit/phpunit.xsd. Flarum 2.x requires PHPUnit ^12.5, so the remote reference was both a version behind what gets installed and dependent on the network to validate. It now matches the integration config — which is also what extensions in the wild use (I checked several standalone 2.x extensions rather than core, whose deeper path in the monorepo isn't representative).

Verification

  • Both configs validate against a real PHPUnit 12.5 phpunit.xsd via xmllint --schema.
  • yarn test — 22 suites, 176 tests, Prettier clean.

… installed phpunit
Flarum's integration TestCase now reports repeated database queries as
PHPUnit warnings — a query run once per record fails the test, one
repeated for the same few values warns instead. PHPUnit only prints the
detail of a warning when displayDetailsOnTestsThatTriggerWarnings is
set; without it a run says 'Warnings: 11' and nothing about what they
were. Both generated configs now set it, so extension authors get the
finding rather than a count.
The unit config also pointed at a remote 10.5 schema while the
integration one used the installed copy. Flarum 2.x requires PHPUnit
^12.5, so the remote reference both drifts from what is installed and
needs the network to validate. It now matches the integration config,
which is what extensions in the wild use.
Both configs validate against a real PHPUnit 12 schema.
@imorland
imorland merged commit b01edc4 into 3.xAug 1, 2026
3 checks passed
@imorland
imorland deleted the im/display-test-warnings branch August 1, 2026 00:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@imorland
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: show test warning details in generated PHPUnit configs by imorland · Pull Request #53 · flarum/cli · GitHub
Skip to content

feat: show test warning details in generated PHPUnit configs - #53

Merged
imorland merged 1 commit into
3.xfrom
im/display-test-warnings
Aug 1, 2026
Merged

feat: show test warning details in generated PHPUnit configs#53
imorland merged 1 commit into
3.xfrom
im/display-test-warnings

Conversation

@imorland

Copy link
Copy Markdown
Member

Why

Flarum's integration TestCase now inspects each request for N+1 query patterns (flarum/framework#4871). A query run once per record fails the test; one repeated for the same few values raises a warning instead, since it doesn't grow with the forum.

PHPUnit only prints what a warning said when displayDetailsOnTestsThatTriggerWarnings is enabled. Without it a run ends with:

OK, but there were issues!
Tests: 82, Assertions: 344, Warnings: 11.

— visible, but with no indication of which queries or where. Both generated configs now set the flag, so extension authors get the finding itself. Since backendTesting is updatable, existing extensions pick it up by re-running flarum-cli infra backendTesting, not just newly generated ones.

Also: the unit config's schema reference

phpunit.unit.xml pointed at https://schema.phpunit.de/10.5/phpunit.xsd while phpunit.integration.xml used ../vendor/phpunit/phpunit/phpunit.xsd. Flarum 2.x requires PHPUnit ^12.5, so the remote reference was both a version behind what gets installed and dependent on the network to validate. It now matches the integration config — which is also what extensions in the wild use (I checked several standalone 2.x extensions rather than core, whose deeper path in the monorepo isn't representative).

Verification

  • Both configs validate against a real PHPUnit 12.5 phpunit.xsd via xmllint --schema.
  • yarn test — 22 suites, 176 tests, Prettier clean.

… installed phpunit
Flarum's integration TestCase now reports repeated database queries as
PHPUnit warnings — a query run once per record fails the test, one
repeated for the same few values warns instead. PHPUnit only prints the
detail of a warning when displayDetailsOnTestsThatTriggerWarnings is
set; without it a run says 'Warnings: 11' and nothing about what they
were. Both generated configs now set it, so extension authors get the
finding rather than a count.
The unit config also pointed at a remote 10.5 schema while the
integration one used the installed copy. Flarum 2.x requires PHPUnit
^12.5, so the remote reference both drifts from what is installed and
needs the network to validate. It now matches the integration config,
which is what extensions in the wild use.
Both configs validate against a real PHPUnit 12 schema.
@imorland
imorland merged commit b01edc4 into 3.xAug 1, 2026
3 checks passed
@imorland
imorland deleted the im/display-test-warnings branch August 1, 2026 00:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@imorland
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); feat: show test warning details in generated PHPUnit configs by imorland · Pull Request #53 · flarum/cli · GitHub
Skip to content

feat: show test warning details in generated PHPUnit configs - #53

Merged
imorland merged 1 commit into
3.xfrom
im/display-test-warnings
Aug 1, 2026
Merged

feat: show test warning details in generated PHPUnit configs#53
imorland merged 1 commit into
3.xfrom
im/display-test-warnings

Conversation

@imorland

Copy link
Copy Markdown
Member

Why

Flarum's integration TestCase now inspects each request for N+1 query patterns (flarum/framework#4871). A query run once per record fails the test; one repeated for the same few values raises a warning instead, since it doesn't grow with the forum.

PHPUnit only prints what a warning said when displayDetailsOnTestsThatTriggerWarnings is enabled. Without it a run ends with:

OK, but there were issues!
Tests: 82, Assertions: 344, Warnings: 11.

— visible, but with no indication of which queries or where. Both generated configs now set the flag, so extension authors get the finding itself. Since backendTesting is updatable, existing extensions pick it up by re-running flarum-cli infra backendTesting, not just newly generated ones.

Also: the unit config's schema reference

phpunit.unit.xml pointed at https://schema.phpunit.de/10.5/phpunit.xsd while phpunit.integration.xml used ../vendor/phpunit/phpunit/phpunit.xsd. Flarum 2.x requires PHPUnit ^12.5, so the remote reference was both a version behind what gets installed and dependent on the network to validate. It now matches the integration config — which is also what extensions in the wild use (I checked several standalone 2.x extensions rather than core, whose deeper path in the monorepo isn't representative).

Verification

  • Both configs validate against a real PHPUnit 12.5 phpunit.xsd via xmllint --schema.
  • yarn test — 22 suites, 176 tests, Prettier clean.

… installed phpunit
Flarum's integration TestCase now reports repeated database queries as
PHPUnit warnings — a query run once per record fails the test, one
repeated for the same few values warns instead. PHPUnit only prints the
detail of a warning when displayDetailsOnTestsThatTriggerWarnings is
set; without it a run says 'Warnings: 11' and nothing about what they
were. Both generated configs now set it, so extension authors get the
finding rather than a count.
The unit config also pointed at a remote 10.5 schema while the
integration one used the installed copy. Flarum 2.x requires PHPUnit
^12.5, so the remote reference both drifts from what is installed and
needs the network to validate. It now matches the integration config,
which is what extensions in the wild use.
Both configs validate against a real PHPUnit 12 schema.
@imorland
imorland merged commit b01edc4 into 3.xAug 1, 2026
3 checks passed
@imorland
imorland deleted the im/display-test-warnings branch August 1, 2026 00:06
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@imorland