Plinko is a tool that can identify what tests should be ran against a specific product version. These can either be a base version or diff between versions. Version/Diff information must be generated by tools like APIx or CLIx.
pip install .
or
python setup.py install
Usage: plinko [OPTIONS]
Options:
--clix-diff FILE Path to a clix compact diff file.
--apix-diff FILE Path to an apix compact diff file.
--test-directory PATH Path to the directory that contains your
tests.
--behavior [all|no-dupes|minimal]
How Plinko should limit returned tests.
--depth INTEGER RANGE Max depth of recursive method resolutions.
[0<=x<=20]
--search-aggressiveness [low|med|high]
Specify how aggressively Plinko should
search for entity names.
--name TEXT The name of your project.
--help Show this message and exit.
Plinko has the ability to inspect the code in a test in order to determine the actual feature coverage of that test. Additionally, it will attempt to dig into function calls it can't immediately attribute to a feature. The extra weight of this recursive coverage discovery is lessened by a smart code importer and recursive depth limit (configurable).
note: If your test project relies on external libraries, ensure they are installed in Plinko's environment if you want recursive coverage resolution. Otherwise, Plinko will be unable to dynamically load them.
You will need a compact version/diff export from tools like APIx or CLIx. Then provide Plinko with the lowest applicable test directory you can, individual test files also work.
Examples
plinko --name robottelo --clix-diff ../clix/CLIs/hammer/6.5.0s2-comp.yaml --test-directory ../robottelo/tests/foreman/cli/test_contentview.py --depth 5 --behavior minimal
plinko --name robottelo --apix-diff ../apix/APIs/satellite6/6.5.0s2-comp.yaml --test-directory ../robottelo/tests/foreman/api/ --depth 5 --behavior minimal
Plinko has three configuration options: config.yml, environment variables, command line arguments. Plinko handles prioritizes values of those in reverse order (least to most static)
This project only explicitly supports python 3.7+.