Bug 37483

Summary: Выполнить обработку ошибок от hardlinkpy для негативных сценариев (нет доступа, прерывание)
Product: Sisyphus Reporter: Vera Blagoveschenskaya <vercha>
Component: hardlinkpyAssignee: Антон Мидюков <antohami>
Status: NEW --- QA Contact: qa-sisyphus
Severity: minor    
Priority: P3 CC: antohami, george, imz, mike, rider, sotor
Version: unstable   
Hardware: all   
OS: Linux   

Description Vera Blagoveschenskaya 2019-11-13 16:57:01 MSK
hardlinkpy-0.0.20180725-alt1.noarch

1) Выполнить команду
hardlinkpy -n /
(dry-run)

или 
2) Прервать выполнение команды hardlinkpy (натравить hardlinkpy на большой каталог и нажать ctrl+c)

Результат: в выводе ошибки вида
Traceback (most recent call last):
  File "/usr/bin/hardlinkpy", line 492, in <module>
    main()
  File "/usr/bin/hardlinkpy", line 487, in main
    hardlink_identical_files(directories, pathname, options)
  File "/usr/bin/hardlinkpy", line 262, in hardlink_identical_files
    options):
  File "/usr/bin/hardlinkpy", line 148, in are_files_hardlinkable
    result = are_file_contents_equal(filename1, filename2, options)
  File "/usr/bin/hardlinkpy", line 136, in are_file_contents_equal
    return filecmp.cmp(filename1, filename2, shallow=False)
  File "/usr/lib64/python3.7/filecmp.py", line 62, in cmp
    outcome = _do_cmp(f1, f2)
  File "/usr/lib64/python3.7/filecmp.py", line 75, in _do_cmp
    with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2:
PermissionError: [Errno 13] Permission denied: '//sys/module/sr_mod/uevent'

^CTraceback (most recent call last):
  File "/usr/bin/hardlinkpy", line 492, in <module>
    main()
  File "/usr/bin/hardlinkpy", line 487, in main
    hardlink_identical_files(directories, pathname, options)
  File "/usr/bin/hardlinkpy", line 262, in hardlink_identical_files
    options):
  File "/usr/bin/hardlinkpy", line 148, in are_files_hardlinkable
    result = are_file_contents_equal(filename1, filename2, options)
  File "/usr/bin/hardlinkpy", line 136, in are_file_contents_equal
    return filecmp.cmp(filename1, filename2, shallow=False)
  File "/usr/lib64/python3.7/filecmp.py", line 62, in cmp
    outcome = _do_cmp(f1, f2)
  File "/usr/lib64/python3.7/filecmp.py", line 78, in _do_cmp
    b2 = fp2.read(bufsize)
KeyboardInterrupt

Ожидаемый результат: считаю, что данные негативные сценарии нужно обрабатывать (не вываливать в консоль названия функций и номера строк, а выводить нормальные пользовательские сообщения).
Comment 1 Michael Shigorin 2019-11-14 14:52:49 MSK
Для питона это типа нормально.
Comment 2 Anton Farygin 2019-11-14 17:55:55 MSK
На самом деле нет. В питоне можно легко сделать обработку таких ошибок, их интерпретацию и вывод в человеческом формате.