def test_main_when_buggy(capsys, monkeypatch): from anaconda_project.internal.cli.main import main def mock_is_interactive(): return True monkeypatch.setattr( 'anaconda_project.internal.cli.console_utils.stdin_is_interactive', mock_is_interactive) def mock_main(): raise AssertionError("It did not work") monkeypatch.setattr( 'anaconda_project.internal.cli.main._main_without_bug_handler', mock_main) monkeypatch.setattr("sys.argv", ['anaconda-project']) result = main() assert result == 1 out, err = capsys.readouterr() assert '' == out assert err.startswith( """An unexpected error occurred, most likely a bug in anaconda-project. (The error was: AssertionError: It did not work) Details about the error were saved to """) filename = err.split()[-1] assert filename.endswith(".txt") assert os.path.basename(filename).startswith( "bug_details_anaconda-project_") assert os.path.isfile(filename) os.remove(filename)
def test_main_help_via_entry_point(capsys, monkeypatch): from anaconda_project.internal.cli.main import main monkeypatch.setattr("sys.argv", ['project', '--help']) code = main() out, err = capsys.readouterr() assert "" == err assert expected_usage_msg_without_activate == out assert 0 == code # undo this side effect anaconda_project._beta_test_mode = False
def main(): """anaconda-project command line tool Conda-style entry point. Conda expects us to take no args and return an exit code. """ return cli_main.main()