Skip to content

Commit f9f8b4c

Browse files
authored
Merge pull request #67 from stratofax/dev-make-flat
Add logging to Dev make flat branch
2 parents 07fb674 + 3cde731 commit f9f8b4c

File tree

5 files changed

+36
-11
lines changed

5 files changed

+36
-11
lines changed

src/electos/ballotmaker/cli.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
""" The BallotMaker Command Line Interface (CLI)"""
2+
import logging
3+
import sys
24
from os import strerror
35
from pathlib import Path
46
from typing import Optional
@@ -12,6 +14,10 @@
1214
STYLE_HELP = "Stylesheet file for ballot generation"
1315
VERSION_HELP = "Print the version number."
1416

17+
# configure logging
18+
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
19+
log = logging.getLogger(__name__)
20+
1521

1622
def version_callback(value: bool):
1723
if value:
@@ -45,8 +51,8 @@ def make(
4551
"""Make ballots from EDF file"""
4652
make_ballots_result = make_ballots.make_ballots(edf, output_dir, style)
4753
if make_ballots_result != NO_ERRORS:
48-
typer.echo(
49-
f"Error {make_ballots_result} making ballots: {strerror(make_ballots_result)}"
54+
log.error(
55+
f"Code {make_ballots_result} in make - {strerror(make_ballots_result)}"
5056
)
5157
return make_ballots_result
5258

@@ -61,8 +67,8 @@ def validate(
6167
"""Validate data in EDF file"""
6268
validate_edf_result = validate_edf.validate_edf(edf)
6369
if validate_edf_result != NO_ERRORS:
64-
typer.echo(
65-
f"Error {validate_edf_result} validating EDF: {strerror(validate_edf_result)}"
70+
log.error(
71+
f"Code {validate_edf_result} in validate - {strerror(validate_edf_result)}"
6672
)
6773
return validate_edf_result
6874

src/electos/ballotmaker/make_ballots.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import logging
12
from pathlib import Path
23

34
from electos.ballotmaker.constants import NO_ERRORS, NO_FILE
45

6+
log = logging.getLogger(__name__)
7+
58

69
def make_ballots(
710
_edf: Path, _output_dir: Path = None, _styles: Path = None
@@ -13,8 +16,12 @@ def make_ballots(
1316
Output directory for generated PDF files
1417
Styles file for ballot formatting
1518
"""
16-
# is the EDF a JSON file?
19+
# is the EDF a file?
1720
if _edf is None:
21+
log.debug("No EDF file provided to make ballots.")
22+
return NO_FILE
23+
if not _edf.is_file():
24+
log.debug(f"Can't make ballots, EDF {_edf} is not a file")
1825
return NO_FILE
1926
# was a valid output directory provided?
2027
# was a styles file provided?

src/electos/ballotmaker/validate_edf.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import logging
12
from pathlib import Path
23

34
from electos.ballotmaker.constants import NO_DATA, NO_ERRORS, NO_FILE
45
from electos.ballotmaker.read_edf import read_edf
56

7+
log = logging.getLogger(__name__)
8+
69

710
def validate_edf(
811
_edf: Path,
@@ -13,10 +16,12 @@ def validate_edf(
1316
"""
1417
# is the EDF a file?
1518
if _edf is None:
19+
log.debug("No EDF file provided for validation.")
1620
return NO_FILE
1721
if not _edf.is_file():
22+
log.debug(f"Can't validate, EDF {_edf} is not a file")
1823
return NO_FILE
1924

2025
ballot_style_count = read_edf(_edf)
21-
print(f"Found {ballot_style_count} ballots in {_edf}")
26+
log.info(f"Found {ballot_style_count} ballots in {_edf}")
2227
return NO_ERRORS

tests/test_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def test_make():
3434
# bypass mandatory CLI option to force error
3535
assert cli.make(edf=None) == NO_FILE
3636
# any old path will satisfy current tests
37-
assert cli.make(imaginary_file) == NO_ERRORS
37+
assert cli.make(imaginary_file) == NO_FILE
3838
# check CLI errors: no options for make
3939
result = runner.invoke(cli.app, ["make"])
4040
assert result.exit_code == NO_FILE

tests/test_make_ballots.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
from pathlib import Path
22

3-
from electos.ballotmaker import make_ballots
43
from electos.ballotmaker.constants import NO_ERRORS, NO_FILE
4+
from electos.ballotmaker.make_ballots import make_ballots
55

6-
test_file = Path("empty.json")
6+
imaginary_file = Path("imaginary_file.json")
7+
test_dir = Path(__file__).parent.resolve()
8+
test_file = Path("june_test_case.json")
9+
full_test_path = Path(test_dir, test_file)
710

811

912
def test_make_ballots():
1013
# force a no file error with Path = None
11-
assert make_ballots.make_ballots(_edf=None) == NO_FILE
12-
assert make_ballots.make_ballots(test_file) == NO_ERRORS
14+
assert make_ballots(_edf=None) == NO_FILE
15+
# ensure imaginary_file is actually not a file
16+
assert not imaginary_file.is_file()
17+
assert make_ballots(imaginary_file) == NO_FILE
18+
assert full_test_path.is_file()
19+
assert make_ballots(full_test_path) == NO_ERRORS

0 commit comments

Comments
 (0)