Moving regression tests to python has shown that there's an awful lot of duplicated code that could be simplified. The general approach here should be to move code into the pacemaker._cts python module. Here's some ideas - feel free to break these out into individual tasks.
- Several tools have an update_path function that sets various environment variables.
- valgrind options are specified in multiple places.
- Most (all?) regression tests have some sort of XyzTest and XyzTests classes, with an awful lot of duplication. These classes typically always have some sort of setup and teardown methods, a run method, and a results reporting method. These could also overlap with the Test class in pacemaker._cts.test.
- Most (all?) regression tests have a function for reading command line options. I doubt we are at all consistent with what options are supported by what tests.
- There's a lot of general library code sprinkled around that, even if it's not duplicate stuff, should probably move into the pacemaker._cts.test. Examples of this are functions to pluralize strings, diffing files, checking if something is executable, etc.
- There's likely a lot of duplication in how we run an external process. Anywhere that subprocess is being used is a candidate for simplification. There's already a pacemaker._cts.process module to condense this into.