示例#1
0
def test_query(monkeypatch, query_test):
    config.fmt = 'json'
    config.debug = False
    config.debug_url = "https://activedata.allizom.org/tools/query.html#query_id={}"

    monkeypatch.setattr(query, 'query_activedata', RunQuery(query_test))
    module = 'adr.queries.{}'.format(query_test['query'])
    if module in sys.modules:
        reload(sys.modules[module])

    def print_diff():

        buf = IO()
        yaml.dump(result, buf)
        print("Yaml formatted result for copy/paste:")
        print(buf.getvalue())

        buf = IO()
        yaml.dump(query_test['expected'], buf)
        print("\nYaml formatted expected:")
        print(buf.getvalue())

    if "--debug" in query_test["args"]:

        config.debug = True
        formatted_query = format_query(query_test['query'])
        result = json.loads(formatted_query[0])
        debug_url = formatted_query[1]

        print_diff()
        assert result == query_test["expected"]
        assert debug_url == config.debug_url.format(
            query_test["expected"]["meta"]["saved_as"])

    elif "--table" in query_test["args"]:

        config.fmt = "table"
        formatted_query = format_query(query_test['query'])
        result = formatted_query[0]
        debug_url = formatted_query[1]
        expected = query_test["expected"]["data"]

        print("Table formatted result:")
        print(result)
        print("Table formatted expected:")
        print(expected)
        assert result == expected
        assert debug_url is None

    else:

        formatted_query = format_query(query_test['query'])
        result = json.loads(formatted_query[0])
        debug_url = formatted_query[1]

        print_diff()
        assert result == query_test["expected"]
        assert debug_url is None
示例#2
0
def _help(items, request_list, config, parser, request_type):
    if len(items) == 0:
        parser.print_help()
    else:
        for request in items:
            if request not in request_list:
                log.error("{} '{}' not found!".format(request_type, request))
                continue
            if request_type == "recipe":
                print('Usage for adr ' + request + ':')
                run_recipe(request, ['--help'], config)
            else:
                print('Usage for adr query ' + request + ':')
                format_query(request, config, ['--help'])
    return
示例#3
0
def query_handler(args, remainder, config):
    """Runs, formats and prints queries.

    All functionality remains same as adr.query:cli.

    :param Namespace args: Namespace object produced by main().
    :param list remainder: List of unknown arguments.
    :param Configuration config: config object
    """
    queries = [os.path.splitext(item)[0] for item in os.listdir(
        QUERY_DIR) if item.endswith('.query')]

    _set_logging_verbosity(config.verbose)

    if args.list:
        _list(queries)
    else:
        _check_tasks_exist(args.task)

    for query in args.task:
        if query not in queries:
            log.error("query '{}' not found!".format(query))
            continue
        data, url = format_query(query, config)
        print(data)
        if url:
            time.sleep(2)
            webbrowser.open(url, new=2)
示例#4
0
def query_handler(args, remainder):
    """Runs, formats and prints queries.

    All functionality remains same as adr.query:cli.

    :param Namespace args: Namespace object produced by main().
    :param list remainder: List of unknown arguments.
    """
    queries = [
        os.path.splitext(item)[0] for item in os.listdir(QUERY_DIR)
        if item.endswith('.query')
    ]

    _set_logging_verbosity(args.verbose)

    if args.list:
        _list(queries)
    else:
        _check_tasks_exist(args.task)

    for query in args.task:
        if query not in queries:
            log.error("query '{}' not found!".format(query))
            continue
        print(format_query(query, args, fmt=args.fmt))
示例#5
0
def format_request(request, config, remainder, request_type):

    if request_type == "query":
        data, url = format_query(request, config, remainder)
    else:
        data = run_recipe(request, remainder, config)
        url = None
    if config.output_file:
        print(data, file=open(config.output_file, 'w'))
    return data, url
def test_query(monkeypatch, query_test, config):

    monkeypatch.setattr(query, 'query_activedata', RunQuery(query_test))
    module = 'adr.queries.{}'.format(query_test['query'])
    if module in sys.modules:
        reload(sys.modules[module])

    def print_diff():

        buf = IO()
        yaml.dump(result, buf)
        print("Yaml formatted result for copy/paste:")
        print(buf.getvalue())

        buf = IO()
        yaml.dump(query_test['expected'], buf)
        print("\nYaml formatted expected:")
        print(buf.getvalue())

    if query_test['debug']:

        config.debug = True
        formatted_query = format_query(query_test['query'], config)
        result = json.loads(formatted_query[0])
        debug_url = formatted_query[1]

        print_diff()
        assert result == query_test["expected"]
        assert debug_url == config.build_debug_url(
            query_test["expected"]["meta"]["saved_as"])

    else:

        config.debug = False
        formatted_query = format_query(query_test['query'], config)
        result = json.loads(formatted_query[0])
        debug_url = formatted_query[1]

        print_diff()
        assert result == query_test["expected"]
        assert debug_url is None
示例#7
0
def handle_query(remainder):
    if config.query not in sources.queries:
        logger.error(f"query '{config.query}' not found!")
        return

    data, url = format_query(config.query, remainder)
    if config.output_file:
        print(data, file=open(config.output_file, "w"))

    if url:
        time.sleep(2)
        webbrowser.open(url, new=2)
    return data
示例#8
0
def handle_query(remainder):
    if config.query not in get_queries():
        log.error("query '{}' not found!".format(config.query))
        return

    data, url = format_query(config.query, remainder)
    if config.output_file:
        print(data, file=open(config.output_file, 'w'))

    if url:
        time.sleep(2)
        webbrowser.open(url, new=2)
    return data
示例#9
0
def test_query(monkeypatch, query_test, set_config):
    set_config(
        **{
            'query':
            query_test['query'],
            'fmt':
            'json',
            'debug':
            False,
            'debug_url':
            "https://activedata.allizom.org/tools/query.html#query_id={}",
        })
    monkeypatch.setattr(query, 'query_activedata', RunQuery(query_test))

    def print_diff():

        buf = IO()
        yaml.dump(result, buf)
        print("Yaml formatted result for copy/paste:")
        print(buf.getvalue())

        buf = IO()
        yaml.dump(query_test['expected'], buf)
        print("\nYaml formatted expected:")
        print(buf.getvalue())

    if "--debug" in query_test["args"]:

        set_config(debug=True)
        monkeypatch.setattr(query, 'query_activedata', RunQuery(query_test))

        formatted_query = format_query(query_test['query'])
        result = json.loads(formatted_query[0])
        debug_url = formatted_query[1]

        print_diff()
        assert result == query_test["expected"]
        assert debug_url == config.debug_url.format(
            query_test["expected"]["meta"]["saved_as"])

    elif "--table" in query_test["args"]:

        set_config(fmt='table')
        monkeypatch.setattr(query, 'query_activedata', RunQuery(query_test))

        formatted_query = format_query(query_test['query'])
        result = formatted_query[0]
        debug_url = formatted_query[1]
        expected = query_test["expected"]["data"]

        print("Table formatted result:")
        print(result)
        print("Table formatted expected:")
        print(expected)
        assert result == expected
        assert debug_url is None

    else:

        formatted_query = format_query(query_test['query'])
        result = json.loads(formatted_query[0])
        debug_url = formatted_query[1]

        print_diff()
        assert result == query_test["expected"]
        assert debug_url is None