def test_delimited_file_is_valid(): """Tests a delimited file is valid comparing number of columns in every line with expeced """ myParser = MyParser(config.SPEC_FILE) myParser.generate_delimited_file(source_filename=config.OUTPUT_PATH+config.FIXED_FILENAME) total_columns = len(myParser.specs["ColumnNames"]) assert os.path.exists(config.OUTPUT_PATH+config.DELIMITED_FILENAME) if os.path.exists(config.OUTPUT_PATH+config.DELIMITED_FILENAME): with open(config.OUTPUT_PATH+config.DELIMITED_FILENAME, mode="r",encoding=myParser.specs["FixedWidthEncoding"]) as inp: delimited_reader = csv.reader(inp, delimiter=config.DEFAULT_DELIMITER, skipinitialspace=True) for line in delimited_reader: assert len(line)==total_columns # TODO: Test encodings
logger = logging.getLogger(__name__) if __name__ == '__main__': # Get the desired option from user using an argument parser from command line # only spcs is required, delimiter and numlines ca be defined with default arg_parser = argparse.ArgumentParser() # enforce the user to use a specs file arg_parser.add_argument("-s", "--spec", required=True, help="Specs") # since delimiter is not in specs, let the user to pass it as an argument arg_parser.add_argument("-d", "--delimiter", required=False, help="Delimiter") # since delimiter is not in specs, let the user to pass it as an argument arg_parser.add_argument("-n", "--numlines", required=False, help="Number of lines in file") args = vars(arg_parser.parse_args()) spec_filename = args["spec"] delimiter = args["delimiter"] if args["numlines"]: numlines = args["numlines"] if os.path.exists(spec_filename): myParser = MyParser(spec_filename) fixed_filename = myParser.generate_fixed_file() delimited_filename = myParser.generate_delimited_file(fixed_filename) else: logger.info("No valid specs file found (%s). Nothing to do! :(",spec_filename)
def test_delimited_file_exists(): """Tests a delimited file was generated """ myParser = MyParser(config.SPEC_FILE) myParser.generate_delimited_file(source_filename=config.OUTPUT_PATH+config.FIXED_FILENAME) assert os.path.exists(config.OUTPUT_PATH+config.DELIMITED_FILENAME)