def test_compare_text(self): diff_text_src = text_file.read_file('test_file/diff_text_src') diff_text_dst = text_file.read_file('test_file/diff_text_dst') compare_result = diff.compare_text(diff_text_src, diff_text_dst) summary = diff.stat_compare(compare_result) self.assertEqual(summary.get('equal'), 3) self.assertEqual(summary.get('delete'), 1) self.assertEqual(summary.get('insert'), 1) self.assertEqual(summary.get('replace'), 1) src_text = compare_result.get('src-text') dst_text = compare_result.get('dst-text') self.assertEqual(len(src_text), 9) self.assertEqual(len(dst_text), 9)
def sed(target, pattern, match_model, replace, operate, output): ''' sed : stream editor for filtering and transforming text @param target: target: string list ,text file name or stdio @param pattern: regex pattern or line number pattern @param match_model: s: substring model, e: regex model, n: line number model @param replace: replacement string @param operate: d: delete, s: replace, a: append, i: insert @prarm output: : rl: return as list , rt: return as string , p: print screen, w: write to file ''' text = text_file.read_file(target) if not text: return None result = [] line_num = 1 for line in text: if grep.__match(line_num, line, match_model, pattern): if operate == 's': if str_utils.is_not_blank(replace): result.append(replace) else: result.append(line) elif operate == 'd': continue elif operate == 'i': if str_utils.is_not_blank(replace): result.append(replace) result.append(line) elif operate == 'a': result.append(line) if str_utils.is_not_blank(replace): result.append(replace) else: result.append(line) line_num = line_num + 1 output_result = ''.join(result) if output == 'p': print output_result elif output == 'w': if isinstance(target, str) or isinstance(target, unicode): text_file.write_file(target, output_result) elif output == 'rl': return result elif output == 'rt': return output_result
def __load(self, filename): conf = {} lines = text_file.read_file(filename) for line in lines: line = line.strip() if line == '' or line.startswith('#'): continue else: try: key, value = line.split('=') conf[key] = value except: pass return conf
def test_edit(self): shutil.copyfile('test_file/interface_config', 'test_file/interface_config_bak') edit.edit('script_file/edit.script') content = text_file.read_file('test_file/interface_config_bak') self.assertTrue('iface eth0 inet static\n' in content) self.assertTrue('\taddress 192.168.228.31\n' in content) self.assertTrue('\tnetmask 255.255.255.0\n' in content) self.assertTrue('\tgateway 192.168.228.2\n' in content) self.assertTrue('iface eth1 inet dhcp\n' in content) self.assertEquals('# network interface config\n', content[0]) self.assertEquals('# end of config\n', content[len(content) - 1]) os.remove('test_file/interface_config_bak')
def test_read_file(self): text = text_file.read_file('test_file/log_data') self.assertEqual(len(text), 19) text = text_file.read_file('test_file/log_data', 5) self.assertEqual(len(text), 5)
def read_log(): return text_file.read_file('test_file/log_data')