def run(capsys, *args): with pytest.raises(SystemExit) as exc: main(args) out, err = capsys.readouterr() return exc.value.code, out, err
def test_no_differences(capsys): args = [TEST_TAR1_PATH, TEST_TAR1_PATH] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 0 out, err = capsys.readouterr() assert err == '' assert out == ''
def test_html_option_with_stdout(capsys): args = ['--html', '-', TEST_TAR1_PATH, TEST_TAR2_PATH] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 1 out, err = capsys.readouterr() assert err == '' assert 'meta name="generator" content="diffoscope"' in out
def test_non_existing_right_with_new_file(capsys): args = ['--new-file', __file__, '/nonexisting2'] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 1 out, err = capsys.readouterr() assert ('--- %s' % __file__) in out assert '+++ /nonexisting2' in out
def test_no_report_option(capsys): args = [TEST_TAR1_PATH, TEST_TAR2_PATH] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 1 out, err = capsys.readouterr() assert err == '' assert out.startswith('--- ')
def test_text_option_with_stdiout(capsys): args = ['--text', '-', TEST_TAR1_PATH, TEST_TAR2_PATH] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 1 out, err = capsys.readouterr() assert err == '' assert out.startswith('--- ')
def test_non_existing_files(capsys): args = '/nonexisting1 /nonexisting2' with pytest.raises(SystemExit) as excinfo: main(args.split()) assert excinfo.value.code == 2 out, err = capsys.readouterr() assert '/nonexisting1: No such file or directory' in err assert '/nonexisting2: No such file or directory' in err
def run(capsys, *args, pair=('test1.tar', 'test2.tar')): with pytest.raises(SystemExit) as exc, cwd_data(): main(args + pair) out, err = capsys.readouterr() assert err == '' assert exc.value.code == 1 return out
def test_list_tools(capsys): args = ['--list-tools'] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 0 out, err = capsys.readouterr() assert err == '' assert 'External tools required:' in out assert 'xxd,' in out
def test_non_existing_files_with_new_file(capsys): args = ['--new-file', '/nonexisting1', '/nonexisting2'] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 1 out, err = capsys.readouterr() assert '--- /nonexisting1' in out assert '+++ /nonexisting2' in out assert 'Trying to compare two non-existing files.' in out
def run_read_write(capsys, diff, *args): with pytest.raises(SystemExit) as exc, cwd_data(): main(args + (diff, )) out, err = capsys.readouterr() assert err == '' assert exc.value.code == 1 assert out == get_data(diff) # presented-output is same as parsed-input return out
def run(capsys, *args): with pytest.raises(SystemExit) as exc: main(args + tuple( os.path.join(os.path.dirname(__file__), 'data', x) for x in ('test1.tar', 'test2.tar'))) out, err = capsys.readouterr() assert err == '' return exc.value.code, out
def test_text_option_with_file(tmpdir, capsys): report_path = str(tmpdir.join('report.txt')) args = ['--text', report_path, TEST_TAR1_PATH, TEST_TAR2_PATH] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 1 out, err = capsys.readouterr() assert err == '' assert out == '' with open(report_path, 'r', encoding='utf-8') as f: assert f.read().startswith('--- ')
def test_html_option_with_file(tmpdir, capsys): report_path = str(tmpdir.join('report.html')) args = ['--html', report_path, TEST_TAR1_PATH, TEST_TAR2_PATH] with pytest.raises(SystemExit) as excinfo: main(args) assert excinfo.value.code == 1 out, err = capsys.readouterr() assert err == '' assert out == '' with open(report_path, 'r', encoding='utf-8') as f: assert 'meta name="generator" content="diffoscope"' in f.read()
def test_ctrl_c_handling(tmpdir, monkeypatch, capsys): args = [TEST_TAR1_PATH, TEST_TAR2_PATH] monkeypatch.setattr('tempfile.tempdir', str(tmpdir)) def interrupt(*args): raise KeyboardInterrupt monkeypatch.setattr('diffoscope.comparators.text.TextFile.compare', interrupt) with pytest.raises(SystemExit) as excinfo: main(args) out, err = capsys.readouterr() assert '' in err assert excinfo.value.code == 2 assert os.listdir(str(tmpdir)) == []
def test_remove_temp_files_on_sigterm(tmpdir, monkeypatch): args = [TEST_TAR1_PATH, TEST_TAR2_PATH] pid = os.fork() if pid == 0: def suicide(*args): os.kill(os.getpid(), signal.SIGTERM) monkeypatch.setattr('diffoscope.comparators.text.TextFile.compare', suicide) tempfile.tempdir = str(tmpdir) with pytest.raises(SystemExit) as excinfo: main(args) os._exit(excinfo.value.code) else: _, ret = os.waitpid(pid, 0) assert (ret >> 8) == 2 # having received SIGTERM is trouble assert os.listdir(str(tmpdir)) == []
def run(capsys, *args): with pytest.raises(SystemExit) as exc: prev = os.getcwd() os.chdir(DATA_DIR) try: main(args + ('test1.tar', 'test2.tar')) finally: os.chdir(prev) out, err = capsys.readouterr() assert err == '' assert exc.value.code == 1 return out