Multi-Repository Testing#
Multi-repository changes are expected to pass the regression tests for all the repositories involved. To carry out the tests involved in a linked ticket it can be helpful to refer to the semi-concentric circles figure; layering the testing from the inside out as needed. Further details of how testing in each repository is handled can be found on the Testing page. Compatible code revisions are needed for testing across repositories as described above.
Testing changes in JULES, LFRic Core, UKCA, or any other child repositories is as simple as running the standalone test procedures for these codebases.
Important
When specifying an alternative source in the dependencies.sh
file the revision for the source must be updated.
If setting the source as an fcm URL, the mirror (
.xm_
) needs to be used and the revision can either be blank (for latest commit) or any valid revision for that branch.If setting the source as a Working Copy, the hostname needs to be provided (as Hostname:Path) and the revision must be blank.
Testing the UM with other repositories#
To test the UM, any changes to JULES, UKCA, Socrates, CASIM etc will also need to be included. This is done by adding another source to the rose stem command line.
- Checkout a UM working copy
this may be your branch from a linked ticket, or a clean trunk copy at either the last release or a suitable head of trunk revision.
Run rose stem, including a source code path to every branch involved. As a minimum run
developer
group and all groups that cover the repositories being tested.
rose stem --group=developer,jules,ukca --source=. --source=/path/to/jules/changes --source=/path/to/ukca/changes
The source paths involved can either be to local working copies or links to the
fcm source control e.g. fcm:jules.xm_br/dev/user/branch_name
. As many source
paths as needed can be added to the list.
Testing LFRic Apps with other repositories#
LFRic Apps testing needs to encompass all of the other repositories affected.
Paths to the other codebases involved should be added to
dependencies.sh
under each of the *_sources
variables. Again
these paths can either be to local changes or those in the repository.
Checkout an LFRic Apps working copy
this may be your branch from a linked ticket, or a clean trunk copy at either the last release or a suitable head of trunk revision.
Update dependencies.sh to point to all other code changes, e.g.
lfric_core_rev=
lfric_core_sources=fcm:lfric.xm_br/path/to/branch
um_rev=
um_sources=vldXXX:/path/to/um/working/copy
3a. Run the lfric_atm developer test-suite
suitable for testing changes in other repositories that do not include any LFRic Apps changes
export CYLC_VERSION=8
rose stem --group=lfric_atm_developer
cylc play <working copy name>
cylc gui
3b. Run the full developer test-suite
suitable for testing LFRic Apps changes with other repositories, or expanding testing if lfric_atm tests have shown errors.
export CYLC_VERSION=8
rose stem --group=developer
cylc play <working copy name>
cylc gui
More details on LFRic Apps testing are found on the Testing LFRic Apps page.
Note
If any of the testing shows up failures then there are two possible ways to proceed:
The changes made should be re-written to avoid breaking the dependant repositories
The changes made directly affect the interface between repositories and therefore a change is also needed to the parent repository to adapt to that change.
If you’re uncertain which route to take then the Code Owners involved will hopefully be able to advise.