def test_sort_file_outdir(self): join_fields = [1, 2] sorter = mod.CSVSorter(self.dialect, join_fields, self.temp_dir, self.out_dir) outfile = sorter.sort_file(self.fqfn) assert dirname(outfile) == self.out_dir assert basename(outfile) == basename(self.fqfn) + '.sorted'
def test_sort_big_file_numeric(self): join_fields = '0' sorter = mod.CSVSorter(self.dialect, join_fields, self.temp_dir, self.temp_dir) outfile = sorter.sort_file(self.fqfn) assert outfile == self.fqfn + '.sorted' for rec in fileinput.input(self.fqfn + '.sorted'): fields = rec.split(',') print(fields) if fileinput.lineno() == 1: assert fields[0] == '1' elif fileinput.lineno() == 2: assert fields[0] == '2' elif fileinput.lineno() == 3: assert fields[0] == '3' elif fileinput.lineno() == 4: assert fields[0] == '4' elif fileinput.lineno() == 5: assert fields[0] == '5' elif fileinput.lineno() == 6: assert fields[0] == '6' elif fileinput.lineno() == 7: assert fields[0] == '7' elif fileinput.lineno() == 8: assert fields[0] == '8' elif fileinput.lineno() == 9: assert fields[0] == '9' elif fileinput.lineno() == 10: assert fields[0] == '10' else: assert 0, 'too many rows returned' fileinput.close()
def test_sort_file_alpha_combo(self): join_fields = [1, 2] sorter = mod.CSVSorter(self.dialect, join_fields, self.temp_dir, self.temp_dir) outfile = sorter.sort_file(self.fqfn) assert outfile == self.fqfn + '.sorted' for rec in fileinput.input(self.fqfn + '.sorted'): fields = rec.split(',') print(fields) if fileinput.lineno() == 1: assert fields[0] == '4' elif fileinput.lineno() == 2: assert fields[0] == '3' elif fileinput.lineno() == 3: assert fields[0] == '2' elif fileinput.lineno() == 4: assert fields[0] == '1' else: assert 0, 'too many rows returns' fileinput.close()
def test_sort_file_with_tab_delimiter(self): join_fields = '0' self.dialect.delimiter = '\t' self.fqfn = create_test_file(self.temp_dir, self.dialect.delimiter) sorter = mod.CSVSorter(self.dialect, join_fields, self.temp_dir, self.temp_dir) outfile = sorter.sort_file(self.fqfn) assert outfile == self.fqfn + '.sorted' for rec in fileinput.input(self.fqfn + '.sorted'): fields = rec.split(self.dialect.delimiter) print(fields) if fileinput.lineno() == 1: assert fields[0] == '1' elif fileinput.lineno() == 2: assert fields[0] == '2' elif fileinput.lineno() == 3: assert fields[0] == '3' elif fileinput.lineno() == 4: assert fields[0] == '4' else: assert 0, 'too many rows returned' fileinput.close()
def test_sort_file_invalid_inputs(self): with pytest.raises(AssertionError): sorter = mod.CSVSorter(self.dialect, None) sorter = mod.CSVSorter(self.dialect, '3') with pytest.raises(ValueError): sorter.sort_file('/tmp/thisfiledoesnotexist.csv')