Skip to content

Commit ef489c5

Browse files
committed
fix empty state in diff
resolves simonw#18
1 parent 26903b7 commit ef489c5

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

csv_diff/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def load_csv(fp, key=None, dialect=None):
1515
# Oh well, we tried. Fallback to the default.
1616
pass
1717
fp = csv.reader(fp, dialect=(dialect or "excel"))
18-
headings = next(fp)
18+
headings = next(fp, [])
1919
rows = [dict(zip(headings, line)) for line in fp]
2020
if key:
2121
keyfn = lambda r: r[key]
@@ -61,8 +61,8 @@ def compare(previous, current, show_unchanged=False):
6161
"columns_removed": [],
6262
}
6363
# Have the columns changed?
64-
previous_columns = set(next(iter(previous.values())).keys())
65-
current_columns = set(next(iter(current.values())).keys())
64+
previous_columns = set(next(iter(previous.values())).keys()) if previous else set()
65+
current_columns = set(next(iter(current.values())).keys()) if current else set()
6666
ignore_columns = None
6767
if previous_columns != current_columns:
6868
result["columns_added"] = [

tests/test_csv_diff.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,11 @@ def test_tsv():
115115
"columns_added": [],
116116
"columns_removed": [],
117117
} == diff
118+
119+
120+
def test_empty():
121+
diff = compare(
122+
load_csv(io.StringIO(""), key="id"), load_csv(io.StringIO(TWO_TSV), key="id")
123+
)
124+
assert ["age", "id", "name"] == sorted(diff["columns_added"])
125+
assert [{"age": "5", "id": "1", "name": "Cleo"}, {"age": "2", "id": "2", "name": "Pancakes"}] == diff["added"]

0 commit comments

Comments
 (0)