Skip to content

[HS3] [RF] Add HS3 conformance test suite integration#22567

Merged
guitargeek merged 9 commits into
root-project:masterfrom
stalbrec:hs3testsuite
Jun 25, 2026
Merged

[HS3] [RF] Add HS3 conformance test suite integration#22567
guitargeek merged 9 commits into
root-project:masterfrom
stalbrec:hs3testsuite

Conversation

@stalbrec

Copy link
Copy Markdown
Contributor

This Pull request:

Changes or fixes:

Adds a new hs3testsuite CMake option that clones the HS3TestSuite (https://github.com/Phmonski/HS3TestSuite) repository and runs the ROOT HS3 conformance checks, ensuring RooFit's JSON serialization stays compatible with the evolving schema.

Checklist:

  • tested changes locally
  • updated the docs (if necessary)

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown

Test Results

    22 files      22 suites   3d 16h 48m 42s ⏱️
 3 871 tests  3 870 ✅   0 💤 1 ❌
77 372 runs  77 269 ✅ 102 💤 1 ❌

For more details on these failures, see this check.

Results for commit b544a19.

♻️ This comment has been updated with latest results.

@guitargeek guitargeek left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for this awesome initiative! I really like the idea, but have some change requests about the implementation.

Comment thread roofit/hs3/test/CMakeLists.txt Outdated
Comment thread roofit/hs3/test/CMakeLists.txt Outdated
Comment thread cmake/modules/RootBuildOptions.cmake Outdated
Comment thread cmake/modules/RootBuildOptions.cmake Outdated
Comment thread roofit/hs3/test/CMakeLists.txt Outdated
Comment thread cmake/modules/RootBuildOptions.cmake Outdated
Comment thread roofit/hs3/test/CMakeLists.txt Outdated
stalbrec added 2 commits June 16, 2026 14:40
…cument it

documents dependecies on network connection and other build options.
Now throwing error if `pyroot` or `testing` option is set to OFF instead of  implying them with hs3 option.
@stalbrec stalbrec requested a review from hageboeck as a code owner June 16, 2026 13:26
@stalbrec

Copy link
Copy Markdown
Contributor Author

@guitargeek Thank you very much for this great feedback!

I made all of the changes, except for moving the HS3TestSuite repo to the HS3 org - but I think we will do that soon.

@cburgard suggested that we should make the test suite backend agnostic, and move the backend logic to the respective backend src (i.e. for roofit in the roofit/hs3/test directory).

Should I add these changes to this PR or open another one?

@guitargeek guitargeek left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the updates! The git logic still needs to be a bit more safer, see my inline comment.

Comment thread roofit/hs3/test/CMakeLists.txt Outdated
@guitargeek

Copy link
Copy Markdown
Contributor

@cburgard suggested that we should make the test suite backend agnostic, and move the backend logic to the respective backend src (i.e. for roofit in the roofit/hs3/test directory).

I don't understand yet what you mean here, but in any case I'd do this in a separate PR. Let's get the CMake plumbing correct here for a first integration (even if the repo is still under Phmonski, we can move later), and then build on top of that. You're okay with that?

@cburgard

Copy link
Copy Markdown
Contributor

@cburgard suggested that we should make the test suite backend agnostic, and move the backend logic to the respective backend src (i.e. for roofit in the roofit/hs3/test directory).

I don't understand yet what you mean here, but in any case I'd do this in a separate PR. Let's get the CMake plumbing correct here for a first integration (even if the repo is still under Phmonski, we can move later), and then build on top of that. You're okay with that?

Just to chime in here, the point I was making in the discussion is that right now, the repo includes a wrapper class called "RooFit Backend" . This is a bit unfortunate, as this requires that the repo knows about all the backends that should be supported by this suite. I would find it much more elegant if this backend could be moved here (to the ROOT github) such that the suite itself is completely agnostic about which backends might attempt to use it.

Comment thread roofit/hs3/test/CMakeLists.txt Outdated
@guitargeek

Copy link
Copy Markdown
Contributor

@cburgard suggested that we should make the test suite backend agnostic, and move the backend logic to the respective backend src (i.e. for roofit in the roofit/hs3/test directory).

I don't understand yet what you mean here, but in any case I'd do this in a separate PR. Let's get the CMake plumbing correct here for a first integration (even if the repo is still under Phmonski, we can move later), and then build on top of that. You're okay with that?

Just to chime in here, the point I was making in the discussion is that right now, the repo includes a wrapper class called "RooFit Backend" . This is a bit unfortunate, as this requires that the repo knows about all the backends that should be supported by this suite. I would find it much more elegant if this backend could be moved here (to the ROOT github) such that the suite itself is completely agnostic about which backends might attempt to use it.

Sure, I have nothing against moving this to ROOT! This test interface doesn't depend on the test suite itself as far as I can tell, so it's just pure PyROOT code anyway. @stalbrec, let me know if you have questions about where the Python code should go, but my preferred way to work is that you just try out something in a PR (unless you are completely stuck) and if it's not up to standard I'll let you know and we iterate 🙂

@guitargeek

Copy link
Copy Markdown
Contributor

The jsonschema library was picked up in the latest builds of the ROOT CI containers: https://github.com/root-project/root-ci-images/actions/runs/27667025733

@stalbrec stalbrec requested a review from guitargeek June 18, 2026 07:45
@stalbrec

Copy link
Copy Markdown
Contributor Author

@guitargeek I think I have a good working version with the backend inside the root-repo. Also @Phmonski will migrate the TestSuite likely today to the hs3 org.

We propose to add these changes to this PR, if that's alright.

@guitargeek

Copy link
Copy Markdown
Contributor

As you prefer! Whatever works for you. So I wait for that before doing the next round of review?

@Phmonski

Copy link
Copy Markdown
Contributor

I migrated the test suite to https://github.com/hep-statistics-serialization-standard/HS3TestSuite

@guitargeek @stalbrec

@stalbrec

Copy link
Copy Markdown
Contributor Author

@guitargeek I made all the changes we wanted to. I'm not sure about the failing tests, but I am pretty sure they are unrelated to our changes.

@guitargeek guitargeek left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks again for the updates! Good that for you, everything works now.

@stalbrec, just one more change request for configuration stability 🙂

Comment thread roofit/hs3/test/CMakeLists.txt Outdated
@guitargeek

Copy link
Copy Markdown
Contributor

@guitargeek I made all the changes we wanted to. I'm not sure about the failing tests, but I am pretty sure they are unrelated to our changes.

Indeed, the failures are unrelated.

@stalbrec

Copy link
Copy Markdown
Contributor Author

If it's alright we would like to change the GIT_TAG to an actual annotated tag still in this PR.

@stalbrec

Copy link
Copy Markdown
Contributor Author

If it's alright we would like to change the GIT_TAG to an actual annotated tag still in this PR.

Ah, I just found out that the CMake documentation advises against doing that.

@guitargeek guitargeek left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice, thanks a lot for this addition and addressing all the review comments!

@guitargeek guitargeek merged commit c60cc22 into root-project:master Jun 25, 2026
31 of 33 checks passed
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.

4 participants