/usr/lib/plainbox-provider-checkbox/bin/cking_suite is in plainbox-provider-checkbox 0.25-1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #!/usr/bin/env python3
import os
import sys
import posixpath
import subprocess
from optparse import OptionParser
DEFAULT_DIRECTORY = "/tmp/checkbox.cking-scripts"
DEFAULT_LOCATION = "git://kernel.ubuntu.com/cking/scripts"
COMMAND_TEMPLATE = "cd %(scripts)s; ./%(script)s"
def print_line(key, value):
    if type(value) is list:
        print("%s:" % key)
        for v in value:
            print(" %s" % v)
    else:
        print("%s: %s" % (key, value))
def print_element(element):
    for key, value in element.items():
        print_line(key, value)
    print()
def clone_cking_scripts(location, directory):
    if posixpath.exists(directory):
        return
    dirname = posixpath.dirname(directory)
    if not posixpath.exists(dirname):
        os.makedirs(dirname)
    process = subprocess.Popen(["git", "clone", location, directory],
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate()
    if process.wait():
        raise Exception("Failed to clone cking scripts from %s" % location)
def run_cking_scripts(scripts, location, directory, dry_run):
    if not dry_run:
        clone_cking_scripts(location, directory)
    for script in scripts:
        path = posixpath.join(directory, script)
        # Initialize test structure
        test = {}
        test["plugin"] = "shell"
        test["name"] = posixpath.splitext(posixpath.basename(path))[0]
        test["command"] = COMMAND_TEMPLATE % {
            "scripts": posixpath.dirname(path),
            "script": posixpath.basename(path)}
        # Get description from first line of the README file
        readme_path = posixpath.join(posixpath.dirname(path), "README")
        if os.path.exists(readme_path):
            file = open(readme_path)
            test["description"] = file.readline().strip()
            file.close
        else:
            test["description"] = "No description found"
        yield test
def main(args):
    usage = "Usage: %prog [OPTIONS] [SCRIPTS]"
    parser = OptionParser(usage=usage)
    parser.add_option("--dry-run",
        default=False,
        action="store_true",
        help="Dry run to avoid branching from the given location.")
    parser.add_option("-d", "--directory",
        default=DEFAULT_DIRECTORY,
        help="Directory where to branch qa-regression-testing")
    parser.add_option("-l", "--location",
        default=DEFAULT_LOCATION,
        help="Location from where to branch qa-regression-testing")
    (options, scripts) = parser.parse_args(args)
    if not scripts:
        parser.error("Must specify a script")
    tests = run_cking_scripts(scripts, options.location, options.directory,
        options.dry_run)
    if not tests:
        return 1
    for test in tests:
        print_element(test)
    return 0
if __name__ == "__main__":
    sys.exit(main(sys.argv[1:]))
 |