예제 #1
0
def main(args=None, transform_func=None):
    """Main function for cli."""
    args = get_args(args)
    submit_args = get_submit_args(args)

    utils.init_log(args.log_level)

    try:
        config = dump2polarion.get_config(args.config_file)
    except Dump2PolarionException as err:
        logger.fatal(err)
        return 1

    submit_outcome = submit_if_ready(args, submit_args, config)
    if submit_outcome is not None:
        # submitted, nothing more to do
        return submit_outcome

    import_time = datetime.datetime.utcnow()

    try:
        records = dump2polarion.do_import(args.input_file,
                                          older_than=import_time)
        testrun_id = get_testrun_id(args, records.testrun)
        exporter = dump2polarion.XunitExport(testrun_id,
                                             records,
                                             config,
                                             transform_func=transform_func)
        output = exporter.export()
    except NothingToDoException as info:
        logger.info(info)
        return 0
    except (EnvironmentError, Dump2PolarionException) as err:
        logger.fatal(err)
        return 1

    if args.output_file or args.no_submit:
        # when no output file is specified, the 'testrun_TESTRUN_ID-TIMESTAMP'
        # file will be created in current directory
        exporter.write_xml(output, args.output_file)

    if not args.no_submit:
        response = dump2polarion.submit_and_verify(output,
                                                   config=config,
                                                   **submit_args)

        __, ext = os.path.splitext(args.input_file)
        if ext.lower() in dbtools.SQLITE_EXT and response:
            dbtools.mark_exported_sqlite(args.input_file, import_time)

        return 0 if response else 2

    return 0
예제 #2
0
def main(args=None, transform_func=None):
    """Main function for cli."""
    args = get_args(args)

    utils.init_log(args.log_level)

    try:
        config = _get_config(args)
    except Dump2PolarionException as err:
        logger.fatal(err)
        return 1

    return dumper(args, config, transform_func=transform_func)
예제 #3
0
def main(args=None):
    """Perform main cli functionality."""
    args = get_args(args)

    utils.init_log(args.log_level)

    if ".csv" not in args.input_file.lower():
        logger.warning("Make sure the input file '%s' is in CSV format",
                       args.input_file)

    try:
        records = csvtools.get_imported_data(args.input_file)
    except (OSError, Dump2PolarionException) as err:
        logger.fatal(err)
        return 1

    # check if all columns required by `pytest_polarion_cfme` are there
    required_columns = {"id": "ID", "title": "Title"}
    missing_columns = [
        required_columns[k] for k in required_columns
        if k not in records.results[0]
    ]
    if missing_columns:
        logger.fatal(
            "The input file '%s' is missing following columns: %s",
            args.input_file,
            ", ".join(missing_columns),
        )
        return 1

    try:
        dump2sqlite(records, args.output_file)
    # pylint: disable=broad-except
    except Exception as err:
        logger.exception(err)
        return 1

    return 0
예제 #4
0
def main(args=None):
    """Main function for cli."""
    args = get_args(args)

    utils.init_log(args.log_level)

    if '.csv' not in args.input_file.lower():
        logger.warn("Make sure the input file '{}' is in CSV format".format(
            args.input_file))

    try:
        records = csvtools.get_imported_data(args.input_file)
    except (EnvironmentError, Dump2PolarionException) as err:
        logger.fatal(err)
        return 1

    # check if all columns required by `pytest_polarion_cfme` are there
    required_columns = {'id': 'ID', 'title': 'Title'}
    missing_columns = [
        required_columns[k] for k in required_columns
        if k not in records.results[0]
    ]
    if missing_columns:
        logger.fatal(
            "The input file '{}' is missing following columns: {}".format(
                args.input_file, ', '.join(missing_columns)))
        return 1

    try:
        dump2sqlite(records, args.output_file)
    # pylint: disable=broad-except
    except Exception as err:
        logger.fatal(err)
        return 1

    return 0