Skip to content

[RF] Convert stressRooFit tests to reference-free gtests - #23266

Merged
guitargeek merged 1 commit into
root-project:masterfrom
guitargeek:stressroofit-gtest-conversion
Sep 6, 2026
Merged

[RF] Convert stressRooFit tests to reference-free gtests#23266
guitargeek merged 1 commit into
root-project:masterfrom
guitargeek:stressroofit-gtest-conversion

Conversation

@guitargeek

Copy link
Copy Markdown
Contributor

Convert 15 stressRooFit tests to google tests that validate against analytic expectations, deterministic data, or self-consistency instead of the hardcoded stressRooFit_ref.root file, following the precedent of the rf705 conversion to testRooIntegralMorph. This way, expected numerical changes can be distinguished from real regressions.

  • rf110/rf308 (1D/2D normalization, createCdf), rf111 (numeric integration config) and rf314 (parameterized-range fit): testRooAbsPdf
  • rf302 (utility function composition): testRooAbsReal
  • rf402 (dataset reduce/merge/append): testRooDataSet
  • rf404-rf406 (Roo1DTable, category ranges, threshold/binning/mapped/ super/multi categories): testRooCategory
  • rf109 (RooPlot::chiSquare, residHist, pullHist): testRooHist
  • rf605 (RooProfileLL): new testRooProfileLL
  • rf701-rf703 (RooEfficiency 1D/2D, RooEffProd): new testRooEfficiency
  • rf704 (amplitude sum pdf): new testRooRealSumPdf

Several of these classes had no google test coverage at all before (RooProfileLL, RooEfficiency, RooEffProd, the category mapping classes, RooPlot residual/pull machinery, and dataset merge/append).

The fit-based conversions are parametrized over the RooFit evaluation backends via a new shared fixture in gtest_wrapper.h, matching the backend coverage of the removed stressRooFit invocations (including codegen for the RooEfficiency fits, which skips only the RooEffProd case that the stress suite also excluded). Tolerances for comparing results of independent minimizations are kept at the scale of the Minuit convergence criterion to avoid flakiness.

The converted tests are removed from the stressRooFit suite; the corresponding entries in stressRooFit_ref.root are simply unused, so the reference file does not need to be regenerated.

🤖 Done with the help of AI

Convert 15 stressRooFit tests to google tests that validate against
analytic expectations, deterministic data, or self-consistency instead of
the hardcoded stressRooFit_ref.root file, following the precedent of the
rf705 conversion to testRooIntegralMorph. This way, expected numerical
changes can be distinguished from real regressions.

  - rf110/rf308 (1D/2D normalization, createCdf), rf111 (numeric
    integration config) and rf314 (parameterized-range fit): testRooAbsPdf
  - rf302 (utility function composition): testRooAbsReal
  - rf402 (dataset reduce/merge/append): testRooDataSet
  - rf404-rf406 (Roo1DTable, category ranges, threshold/binning/mapped/
    super/multi categories): testRooCategory
  - rf109 (RooPlot::chiSquare, residHist, pullHist): testRooHist
  - rf605 (RooProfileLL): new testRooProfileLL
  - rf701-rf703 (RooEfficiency 1D/2D, RooEffProd): new testRooEfficiency
  - rf704 (amplitude sum pdf): new testRooRealSumPdf

Several of these classes had no google test coverage at all before
(RooProfileLL, RooEfficiency, RooEffProd, the category mapping classes,
RooPlot residual/pull machinery, and dataset merge/append).

The fit-based conversions are parametrized over the RooFit evaluation
backends via a new shared fixture in gtest_wrapper.h, matching the
backend coverage of the removed stressRooFit invocations (including
codegen for the RooEfficiency fits, which skips only the RooEffProd case
that the stress suite also excluded). Tolerances for comparing results of
independent minimizations are kept at the scale of the Minuit convergence
criterion to avoid flakiness.

The converted tests are removed from the stressRooFit suite; the
corresponding entries in stressRooFit_ref.root are simply unused, so the
reference file does not need to be regenerated.

🤖 Done with the help of AI
@github-actions

github-actions Bot commented Sep 5, 2026

Copy link
Copy Markdown

Test Results

    23 files      23 suites   3d 19h 12m 40s ⏱️
 3 877 tests  3 876 ✅ 0 💤 1 ❌
79 807 runs  79 805 ✅ 1 💤 1 ❌

For more details on these failures, see this check.

Results for commit 8087814.

♻️ This comment has been updated with latest results.

@guitargeek
guitargeek merged commit 735802d into root-project:master Sep 6, 2026
63 of 69 checks passed
@guitargeek
guitargeek deleted the stressroofit-gtest-conversion branch September 6, 2026 14:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants