Beispiel #1
0
 def test_sigint(self, mock_quick_input):
     """Check that processed transactions are not lost on interruption.
     """
     qifqif.main()
     with io.open(OUT_FILE.name, 'r', encoding='utf-8') as fin:
         res = qifile.parse_lines(fin.readlines())
     self.assertEqual(res[0]['category'], 'Drink')
Beispiel #2
0
 def test_sigint(self, mock_quick_input):
     """Check that processed transactions are not lost on interruption."""
     qifqif.main()
     OUT_FILE.close()
     with io.open(OUT_FILE.name, "r", encoding="utf-8") as fin:
         res = qifile.parse_lines(fin.readlines())
     os.unlink(OUT_FILE.name)
     self.assertEqual(res[0]["category"], "Drink")
Beispiel #3
0
def main(argv=None):
    """Main function: Parse, process, print"""
    if argv is None:
        argv = sys.argv
    args = parse_args(argv)
    if not args:
        exit(1)
    original_tags = copy.deepcopy(tags.load(args['config']))
    with io.open(args['src'], 'r', encoding='utf-8', errors='ignore') as fin:
        lines = fin.readlines()
        transacs_orig = qifile.parse_lines(lines, options=args)
    try:
        transacs = process_transactions(transacs_orig, options=args)
    except EOFError:  # exit on Ctrl + D: restore original tags
        tags.save(args['config'], original_tags)
        return 1
    res = qifile.dump_to_buffer(transacs + transacs_orig[len(transacs):])
    if not args.get('dry-run'):
        with io.open(args['dest'], 'w', encoding='utf-8') as dest:
            dest.write(res)
    if args['batch'] or args['dry-run']:
        print('\n' + res)
    return 0 if len(transacs) == len(transacs_orig) else 1
Beispiel #4
0
def main(argv=None):
    """Main function: Parse, process, print"""
    if argv is None:
        argv = sys.argv
    args = parse_args(argv)
    if not args:
        exit(1)
    original_tags = copy.deepcopy(tags.load(args["config"]))
    with io.open(args["src"], "r", encoding="utf-8", errors="ignore") as fin:
        lines = fin.readlines()
        transacs_orig = qifile.parse_lines(lines, options=args)
    try:
        transacs = process_transactions(transacs_orig, options=args)
    except EOFError:  # exit on Ctrl + D: restore original tags
        tags.save(args["config"], original_tags)
        return 1
    res = qifile.dump_to_buffer(transacs + transacs_orig[len(transacs) :])
    if not args.get("dry-run"):
        with io.open(args["dest"], "w", encoding="utf-8") as dest:
            dest.write(res)
    if args["batch"] or args["dry-run"]:
        print("\n" + res)
    return 0 if len(transacs) == len(transacs_orig) else 1
Beispiel #5
0
 def test_parse_empty_transaction(self):
     res = qifile.parse_lines(testdata.generate_lines("PDM^^"))
     self.assertEqual(len(res), 1)
Beispiel #6
0
 def test_parse_delimiter_optional(self):
     res_no_delim = qifile.parse_lines(testdata.generate_lines("PDM^P"))
     res_delim_end = qifile.parse_lines(testdata.generate_lines("PDM^P^"))
     res_delim_ends = qifile.parse_lines(testdata.generate_lines("^PDM^P^"))
     self.assertEqual(res_no_delim, res_delim_end)
     self.assertEqual(res_delim_end, res_delim_ends)
Beispiel #7
0
def transactions():
    with io.open(QIF_FILE, 'r', encoding='utf-8') as fin:
        lines = fin.readlines()
        return qifile.parse_lines(lines), lines
Beispiel #8
0
 def test_parse_default_transaction(self):
     res = qifile.parse_lines(testdata.generate_lines('PDM'))
     self.assertEqual(len(res), 1)