def test_get_name_suffix_pruning(self): delta = mod.FileDelta(self.temp_dir, self.dialect) assert delta._get_name('foo.csv', 'insert') == 'foo.csv.insert' assert delta._get_name('foo.csv.sorted.uniq', 'insert') == 'foo.csv.insert' assert delta._get_name('foo.csv.sorted', 'insert') == 'foo.csv.insert' assert delta._get_name('foo.csv.uniq', 'insert') == 'foo.csv.insert'
def test_data_match_empty_ignore_fields(self): delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [1] ignore_fields = [] compare_fields = [] delta.new_rec = [1, 2, 3] delta.old_rec = [1, 2, 3] assert delta._data_match(ignore_fields, compare_fields) is True delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [1] ignore_fields = [] compare_fields = [] delta.new_rec = [1, 2, 3] delta.old_rec = [1, 2, 4] assert delta._data_match(ignore_fields, compare_fields) is False
def test_key_match_equal(self): delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [0] delta.new_rec = [1, 2, 3] delta.old_rec = [1, 2, 3] assert delta._key_match() == 'equal' delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [0, 1] delta.new_rec = [1, 2, 3] delta.old_rec = [1, 2, 3] assert delta._key_match() == 'equal' delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [0] delta.new_rec = [1] delta.old_rec = [1] assert delta._key_match() == 'equal'
def test_1key_empty_file_(self): with open(self.old_fqfn, 'w') as f: pass with open(self.new_fqfn, 'w') as f: pass delta = mod.FileDelta(self.temp_dir, self.dialect) delta.set_fields('join', 1) delta.compare_files(self.old_fqfn, self.new_fqfn) assert os.path.getsize(self.new_fqfn + '.delete') == 0 assert os.path.getsize(self.new_fqfn + '.insert') == 0 assert os.path.getsize(self.new_fqfn + '.chgnew') == 0 assert os.path.getsize(self.new_fqfn + '.chgold') == 0 assert os.path.getsize(self.new_fqfn + '.same') == 0
def test_1key_newfile_out_of_order_(self): with open(self.old_fqfn, 'w') as f: f.write('1, bbb, b23\n') f.write('2, bbb, a23\n') f.write('3, aaa, b23\n') f.write('4, aaa, a23\n') with open(self.new_fqfn, 'w') as f: f.write('1, bbb, b23\n') f.write('4, bbb, a23\n') f.write('3, aaa, b23\n') f.write('2, aaa, a23\n') delta = mod.FileDelta(self.temp_dir, self.dialect) delta.set_fields('join', 1) with pytest.raises(SystemExit): delta.compare_files(self.old_fqfn, self.new_fqfn)
def test_data_match_with_ignore_fields(self): delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [0] ignore_fields = [1] compare_fields = [] delta.new_rec = [1, 2, 3] delta.old_rec = [1, 2, 3] assert delta._data_match(ignore_fields, compare_fields) is True delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [0] ignore_fields = [1] compare_fields = [] delta.new_rec = [1, 2, 3] delta.old_rec = [1, 2, 4] assert delta._data_match(ignore_fields, compare_fields) is False delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [0] ignore_fields = [1] compare_fields = [1] delta.new_rec = [1, 2, 3] delta.old_rec = [1, 4, 3] # change should be ignored assert delta._data_match(ignore_fields, compare_fields) is True
def test_set_fields(self): delta = mod.FileDelta(self.temp_dir, self.dialect) delta.set_fields('join', 1) assert delta.join_fields == [1] delta.set_fields('join', 2) assert delta.join_fields == [1, 2] delta.set_fields('join', 3, 4, 5) assert delta.join_fields == [1, 2, 3, 4, 5] delta.set_fields('join', '6') assert delta.join_fields == [1, 2, 3, 4, 5, 6] delta.set_fields('join', '7,8') assert delta.join_fields == [1, 2, 3, 4, 5, 6, 7, 8]
def test_1key_empty_new_file_(self): with open(self.old_fqfn, 'w') as f: f.write('1, bbb, b23\n') f.write('2, bbb, a23\n') f.write('3, aaa, b23\n') f.write('4, aaa, a23\n') with open(self.new_fqfn, 'w') as f: pass delta = mod.FileDelta(self.temp_dir, self.dialect) delta.set_fields('join', 0) delta.compare_files(self.old_fqfn, self.new_fqfn) assert os.path.getsize(self.new_fqfn + '.delete') > 0 assert os.path.getsize(self.new_fqfn + '.insert') == 0 assert os.path.getsize(self.new_fqfn + '.chgnew') == 0 assert os.path.getsize(self.new_fqfn + '.chgold') == 0 assert os.path.getsize(self.new_fqfn + '.same') == 0 delete_rec_cnt = get_file_rec_cnt(self.new_fqfn + '.delete') assert delete_rec_cnt == 4
def test_get_name_relative_directory_handling(self): delta = mod.FileDelta(self.temp_dir, self.dialect) assert delta._get_name('../blah/foo.csv', 'insert') == 'foo.csv.insert'
def test_key_match_lesser(self): delta = mod.FileDelta(self.temp_dir, self.dialect) delta.join_fields = [1] delta.new_rec = [2, 3, 4] delta.old_rec = [1, 2, 3] assert delta._key_match() == 'new-greater'