File diff 6e37753fb313 → ab8559c75bdb
tests/test_importers.py
Show inline comments
 
import csv
 
import datetime
 
import decimal
 
import io
 
import importlib
 
import itertools
 
import pathlib
 
import shutil
 
import re
 

	
 
import pytest
...
 
@@ -28,6 +31,25 @@ class TestImporters:
 
        with source_path.open() as source_file:
 
            assert importer.can_import(source_file)
 

	
 
    @pytest.mark.parametrize('source_path,importer,header_rows,header_cols', [
 
        (t['source'], t['importer'], t['header_rows'], t['header_cols'])
 
        for t in test_data if t.get('header_rows')
 
    ])
 
    def test_can_import_squared_csv(self, source_path, importer, header_rows, header_cols):
 
        # Sometimes when we munge spreadsheets by hand (e.g., to filter by
 
        # project) tools like LibreOffice Calc write a "squared" spreadsheet,
 
        # where every row has the same length.  This test ensures the results
 
        # are still recognized for import.
 
        with io.StringIO() as squared_file:
 
            csv_writer = csv.writer(squared_file)
 
            with source_path.open() as source_file:
 
                for row in itertools.islice(csv.reader(source_file), header_rows):
 
                    padding = [None] * (header_cols - len(row))
 
                    csv_writer.writerow(row + padding)
 
                shutil.copyfileobj(source_file, squared_file)
 
            squared_file.seek(0)
 
            assert importer.can_import(squared_file)
 

	
 
    @pytest.mark.parametrize('source_path,import_class,expect_results', [
 
        (t['source'], t['importer'], t['expect']) for t in test_data
 
    ])