Exemple #1
0
def wiql_query(context):
    wit_client = context.connection.clients.get_work_item_tracking_client()
    wiql = Wiql(query="""
        select [System.Id],
            [System.WorkItemType],
            [System.Title],
            [System.State],
            [System.AreaPath],
            [System.IterationPath],
            [System.Tags]
        from WorkItems
        where [System.WorkItemType] = 'Test Case'
        order by [System.ChangedDate] desc""")
    # We limit number of results to 30 on purpose
    wiql_results = wit_client.query_by_wiql(wiql, top=30).work_items
    emit("Results: {0}".format(len(wiql_results)))
    if wiql_results:
        # WIQL query gives a WorkItemReference with ID only
        # => we get the corresponding WorkItem from id
        work_items = (wit_client.get_work_item(int(res.id))
                      for res in wiql_results)
        for work_item in work_items:
            print_work_item(work_item)
        return work_items
    else:
        return []
def print_work_item(work_item):
    emit(
        "{0} {1}: {2}".format(
            work_item.fields["System.WorkItemType"],
            work_item.id,
            work_item.fields["System.Title"],
        )
    )
Exemple #3
0
def get_projects(context):
    core_client = context.connection.clients.get_core_client()

    projects = core_client.get_projects()

    for project in projects:
        emit(project.id + ": " + project.name)

    return projects
def enter_resource(resource, http_logging_path):
    emit("-- %s --", resource)

    if http_logging_path is not None:
        resource_log_dir = pathlib.Path(http_logging_path / resource)
        resource_log_dir.mkdir(parents=True, exist_ok=True)
        return resource_log_dir

    return None
Exemple #5
0
def get_test_runs(context):
    test_client = context.connection.clients.get_test_client()
    for project in get_project_names(context):
        try:
            for run in test_client.get_test_runs(project, top=16):
                emit("Test Run {}: {} => {} ({})".format(
                    run.id, run.name, run.state, project))
        except Exception as e:
            emit("Project '{}' raised error: {}".format(project, e))
Exemple #6
0
def get_plans(context):
    test_client = context.connection.clients.get_test_client()
    for project in get_project_names(context):
        try:
            for plan in test_client.get_plans(project):
                emit("Test Plan {}: {} ({})".format(plan.id, plan.name,
                                                    plan.area.name))
        except Exception as e:
            emit("Project '{}' raised error: {}".format(project, e))
def enter_area(area, http_logging_path):
    emit("== %s ==", area)

    if http_logging_path is not None:
        area_log_dir = pathlib.Path(http_logging_path / area)
        area_log_dir.mkdir(parents=True, exist_ok=True)
        return area_log_dir

    return None
Exemple #8
0
def get_projects(context):
    core_client = context.connection.get_client(
        "vsts.core.v4_1.core_client.CoreClient")

    projects = core_client.get_projects()

    for project in projects:
        emit(project.id + ": " + project.name)

    return projects
Exemple #9
0
def get_test_suites_for_plan(context):
    test_client = context.connection.clients.get_test_client()
    for project in get_project_names(context):
        try:
            for plan in test_client.get_plans(project):
                for suite in test_client.get_test_suites_for_plan(
                        project, plan.id):
                    emit("Test Suite {}: {} ({}.{})".format(
                        suite.id, suite.name, plan.id, plan.name))
        except Exception as e:
            emit("Project '{}' raised error: {}".format(project, e))
def get_refs(context):
    repo = find_any_repo(context)

    git_client = context.connection.clients.get_git_client()

    refs = git_client.get_refs(repo.id, repo.project.id)

    for ref in refs:
        emit(ref.name + ": " + ref.object_id)

    return refs
def get_repos(context):
    project = find_any_project(context)

    git_client = context.connection.clients.get_git_client()

    repos = git_client.get_repositories(project.id)

    for repo in repos:
        emit(repo.id + ": " + repo.name)

    return repos
def get_definitions(context):
    project = find_any_project(context)
    emit(project.name)
    build_client = context.connection.clients.get_build_client()

    definitions = build_client.get_definitions(project.id)

    for definition in definitions:
        emit(str(definition.id) + ": " + definition.name)

    return definitions
Exemple #13
0
def get_work_items(context):
    wit_client = context.connection.clients.get_work_item_tracking_client()

    desired_ids = range(1, 51)
    work_items = wit_client.get_work_items(ids=desired_ids,
                                           error_policy="omit")

    for id_, work_item in zip(desired_ids, work_items):
        if work_item:
            print_work_item(work_item)
        else:
            emit("(work item {0} omitted by server)".format(id_))

    return work_items
Exemple #14
0
def get_test_results(context):
    test_client = context.connection.clients.get_test_client()
    for project in get_project_names(context):
        try:
            for run in test_client.get_test_runs(project, top=10):
                # Limiting Test Results is not something one shall do!
                for res in test_client.get_test_results(project, run.id,
                                                        top=3):
                    tc = res.test_case
                    tester = res.run_by.display_name
                    emit("Test Result {}: {} => {} by {} ({})".format(
                        run.id, tc.name, res.outcome, tester, project))
        except Exception as e:
            emit("Project '{}' raised error: {}".format(project, e))
Exemple #15
0
def get_work_items(context):
    wit_client = context.connection.get_client(
        "vsts.work_item_tracking.v4_1.work_item_tracking_client.WorkItemTrackingClient")

    desired_ids = range(1, 51)
    work_items = wit_client.get_work_items(ids=desired_ids, error_policy="omit")

    for id_, work_item in zip(desired_ids, work_items):
        if work_item:
            emit("{0} {1}: {2}".format(work_item.fields['System.WorkItemType'],
                                       work_item.id,
                                       work_item.fields['System.Title']))
        else:
            emit("(work item {0} omitted by server)".format(id_))

    return work_items
def queue_build(context):
    definition = find_any_build_definition(context)

    build_client = context.connection.clients.get_build_client()

    build = {
        'definition': {
            'id': definition.id
        }
    }

    response = build_client.queue_build(build=build, project=definition.project.id)

    emit(str(response.id) + ": " + response.url)

    return response
Exemple #17
0
def get_work_items_as_of(context):
    wit_client = context.connection.clients.get_work_item_tracking_client()

    desired_ids = range(1, 51)
    as_of_date = datetime.datetime.now() + datetime.timedelta(days=-7)
    work_items = wit_client.get_work_items(ids=desired_ids,
                                           as_of=as_of_date,
                                           error_policy="omit")

    for id_, work_item in zip(desired_ids, work_items):
        if work_item:
            print_work_item(work_item)
        else:
            emit("(work item {0} omitted by server)".format(id_))

    return work_items
    def __init__(self, filename=None):
        if not filename:
            runner_path = (pathlib.Path(os.getcwd()) /
                           pathlib.Path(sys.argv[0])).resolve()
            filename = runner_path.parents[0] / pathlib.Path(
                DEFAULT_CONFIG_FILE_NAME)

        self._filename = filename

        try:
            with open(filename) as config_fp:
                self._config = json.load(config_fp)
        except FileNotFoundError:
            self._config = {}
        except json.JSONDecodeError:
            emit("possible bug: config file exists but isn't parseable")
            self._config = {}
Exemple #19
0
def run_cmd(args, config):
    try:
        auth_token = os.environ['AZURE_DEVOPS_PAT']
    except KeyError:
        if config['pat']:
            emit("Using auth token from config file")
            auth_token = config['pat']
        else:
            emit(
                'You must first set the AZURE_DEVOPS_PAT environment variable or the `pat` config setting'
            )
            sys.exit(1)

    if not args.url:
        if config['url']:
            args.url = config['url']
            emit('Using configured URL {0}'.format(args.url))
        else:
            emit('No URL configured - pass it on the command line')
            sys.exit(1)

    args_dict = vars(args)

    main(**args_dict, auth_token=auth_token)
Exemple #20
0
def config_cmd(args, config):
    template = "  {0}: {1}"

    if args.name == 'all':
        emit("Configured settings")
        for name in config:
            emit(template.format(name, config[name]))
        return

    args.name = args.name.lower()

    if args.set_to:
        if args.name in config:
            config[args.name] = args.set_to
            emit("Setting new value for {0}".format(args.name))
            emit(template.format(args.name, config[args.name]))
            config.save()
        else:
            emit("There's no setting called {0}".format(args.name))

    elif args.delete:
        if args.name in config:
            emit("Deleting {0}; old value was".format(args.name))
            emit(template.format(args.name, config[args.name]))
            del config[args.name]
            config.save()
        else:
            emit("There's no setting called {0}".format(args.name))

    else:
        if args.name in config:
            emit(template.format(args.name, config[args.name]))
        else:
            emit("There's no setting called {0}".format(args.name))
 def run(*args, **kwargs):
     emit("Running `{0}.{1}`".format(sample_func.__module__, sample_func.__name__))
     sample_func(*args, **kwargs)