txn_date: Check more filenames.
This follows up on the recent change to books.Loader.
This commit is contained in:
parent
ca12496880
commit
9598b29ba7
3 changed files with 27 additions and 19 deletions
|
@ -5,6 +5,7 @@
|
|||
# Full copyright and licensing details can be found at toplevel file
|
||||
# LICENSE.txt in the repository.
|
||||
|
||||
import os.path
|
||||
import re
|
||||
|
||||
from ..beancount_types import (
|
||||
|
@ -24,11 +25,11 @@ class TransactionDate(core.TransactionHook):
|
|||
"books dir setting is required to check transaction dates",
|
||||
)
|
||||
books_pat = re.escape(str(books_path))
|
||||
self.filename_re = re.compile(rf'^{books_pat}/(\d{{4,}})\.beancount$')
|
||||
self.filename_re = re.compile(rf'^{books_pat}/(\d{{4,}})[{os.path.sep}_.]')
|
||||
self.fy = config.fiscal_year_begin()
|
||||
|
||||
def run(self, txn: Transaction) -> errormod.Iter:
|
||||
match = self.filename_re.fullmatch(txn.meta.get('filename', ''))
|
||||
match = self.filename_re.match(txn.meta.get('filename', ''))
|
||||
if match is None:
|
||||
return
|
||||
file_fy = int(match.group(1))
|
||||
|
|
2
setup.py
2
setup.py
|
@ -5,7 +5,7 @@ from setuptools import setup
|
|||
setup(
|
||||
name='conservancy_beancount',
|
||||
description="Plugin, library, and reports for reading Conservancy's books",
|
||||
version='1.18.3',
|
||||
version='1.18.4',
|
||||
author='Software Freedom Conservancy',
|
||||
author_email='info@sfconservancy.org',
|
||||
license='GNU AGPLv3+',
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
# Full copyright and licensing details can be found at toplevel file
|
||||
# LICENSE.txt in the repository.
|
||||
|
||||
import itertools
|
||||
|
||||
from datetime import date
|
||||
|
||||
import pytest
|
||||
|
@ -18,30 +20,35 @@ from conservancy_beancount.plugin import txn_date as hookmod
|
|||
BOOKS_PATH = testutil.test_path('books')
|
||||
CONFIG = testutil.TestConfig(books_path=BOOKS_PATH)
|
||||
HOOK = hookmod.TransactionDate(CONFIG)
|
||||
|
||||
@pytest.mark.parametrize('txn_date,fyear', [
|
||||
(date(2016, 1, 1), 2015),
|
||||
(date(2016, 2, 29), 2015),
|
||||
(date(2016, 3, 1), 2016),
|
||||
(date(2016, 12, 31), 2016),
|
||||
(date(2017, 2, 28), 2016),
|
||||
(date(2017, 3, 1), 2017),
|
||||
SUFFIXES = itertools.cycle([
|
||||
'',
|
||||
'_sidefile',
|
||||
'/subdirfile',
|
||||
])
|
||||
def test_good_txn(txn_date, fyear):
|
||||
filename = str(BOOKS_PATH / f'{fyear}.beancount')
|
||||
|
||||
@pytest.mark.parametrize('txn_date,fyear,suffix', [
|
||||
(date(2016, 1, 1), 2015, next(SUFFIXES)),
|
||||
(date(2016, 2, 29), 2015, next(SUFFIXES)),
|
||||
(date(2016, 3, 1), 2016, next(SUFFIXES)),
|
||||
(date(2016, 12, 31), 2016, next(SUFFIXES)),
|
||||
(date(2017, 2, 28), 2016, next(SUFFIXES)),
|
||||
(date(2017, 3, 1), 2017, next(SUFFIXES)),
|
||||
])
|
||||
def test_good_txn(txn_date, fyear, suffix):
|
||||
filename = str(BOOKS_PATH / f'{fyear}{suffix}.beancount')
|
||||
txn = testutil.Transaction(date=txn_date, filename=filename, postings=[
|
||||
('Assets:Cash', 5),
|
||||
('Income:Donations', -5),
|
||||
])
|
||||
assert not list(HOOK.run(txn))
|
||||
|
||||
@pytest.mark.parametrize('txn_date,fyear', [
|
||||
(date(2018, 1, 1), 2017),
|
||||
(date(2018, 12, 31), 2018),
|
||||
(date(2019, 3, 1), 2019),
|
||||
@pytest.mark.parametrize('txn_date,fyear,suffix', [
|
||||
(date(2018, 1, 1), 2017, next(SUFFIXES)),
|
||||
(date(2018, 12, 31), 2018, next(SUFFIXES)),
|
||||
(date(2019, 3, 1), 2019, next(SUFFIXES)),
|
||||
])
|
||||
def test_bad_txn(txn_date, fyear):
|
||||
filename = str(BOOKS_PATH / '2020.beancount')
|
||||
def test_bad_txn(txn_date, fyear, suffix):
|
||||
filename = str(BOOKS_PATH / f'2020{suffix}.beancount')
|
||||
txn = testutil.Transaction(date=txn_date, filename=filename, postings=[
|
||||
('Assets:Cash', 5),
|
||||
('Income:Donations', -5),
|
||||
|
|
Loading…
Reference in a new issue