Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
1.5
-
None
Description
We have modules in Qt that make only sense on certain platforms, such as qtwinextras. What we want to achieve with the continuous integration for those modules are two things:
1. Build and test the module on its actual target platforms (such as windows)
2. Test that the build is successfully skipped on a non-target platform. For example when a customer runs "qmake && make" in qtwinextras, qmake will not build anything but also not produce an error.
With the qmake based build, these two aspects are implemented like this:
qmake && make is invoked unconditionally, always and on all platforms. The top-level .pro file typically has a requires() statement that will make qmake skip any activity on non-target platforms. Coin will try to archive any artifacts and on non-target platforms no artifacts are found. This is not an error but an accepted scenario and results in an early return that will make coin skip the step of attempting to create a test plan.
When the regular platform configuration would ask for the creation of test instructions for such a module for a non-target platform, modules_qt5.py will create an empty test of instructions because no test plan is present. Consequently the test step will be a successful noop.
With modules_custom.py, module_config.yaml and cmake or qmake, we would like to replicate this scenario. The build skipping step is easily done within cmake/qmake and the logic of skipping the test artifact creation is also implemented the same way as the UploadBuildArtifacts instruction used here will return early as well. What is missing now for modules_custom.py is a way of expression the hasTestPlan condition in the test instructions (group).