compare.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. '''
  2. Created on 22 nov. 2016
  3. @author: olivier.massot
  4. '''
  5. from ffile import flist
  6. import sys
  7. def compare_dirs(dirA, dirB):
  8. print("** Compare {} to {} **".format(source_dir, reference_dir))
  9. err_code = 0
  10. list_source_dir = flist(source_dir, recursive=True, listdirs=False, listfiles=True, complete_paths=True)
  11. list_reference_dir = flist(reference_dir, recursive=True, listdirs=False, listfiles=True, complete_paths=True)
  12. if len(list_source_dir) != len(list_reference_dir):
  13. print(">> number of dirs / files does not match")
  14. print("Diff:")
  15. for name in list( set(list_source_dir) - set(list_reference_dir) ):
  16. print("+ "+name)
  17. err_code += 1
  18. for name in list( set(list_reference_dir) - set(list_source_dir) ):
  19. print("- "+name)
  20. err_code += 1
  21. for source_path in list_source_dir:
  22. linecount = 0
  23. with open(source_path, "rb") as source_file:
  24. linecount += 1
  25. ref_path = source_path.replace(source_dir, reference_dir)
  26. with open(ref_path, "rb") as ref_file:
  27. for line in source_file:
  28. if line != ref_file.readline():
  29. print("> {} : source and ref differ at line {}".format(source_path, linecount))
  30. err_code += 1
  31. continue
  32. return err_code
  33. if __name__ == "__main__":
  34. _, source_dir, reference_dir = sys.argv
  35. exit_result = compare_dirs(source_dir, reference_dir)
  36. sys.exit(exit_result)