Support loading tests from recipe file
This PR introduces an experimental recipe loading feature. Recipes can be loaded using the tmt run --recipe command. Currently, only discover phases and tests are supported, and they will replace any existing discover phases in the plan. To use this feature, the current run must already include a plan with the same name as the one defined in the recipe. tmt will then update that plan by replacing its discover phases.
Resolves #4170
Pull Request Checklist
- [x] implement the feature
- [ ] write the documentation
- [x] extend the test coverage
- [ ] update the specification
- [ ] adjust plugin docstring
- [ ] modify the json schema
- [ ] mention the version
- [x] include a release note
As discussed on Thursday afternoon, post-lunch session, we are going to take a slight detour first: move functionality that should be shared out of discover plugins - git cloning, policies, libraries, etc. (not distgit though, that one will be left for later). We would also modify the internal API, as we will expect a discover plugin to return more info than today. Eventually, we would not need to run discover plugins' go() method when recipe is given, as recipe would provide all needed info to "restore" the discover product.