def cli(args): """Entrypoint to the command-line interface (CLI) of browser-history. It parses arguments from sys.argv and performs the appropriate actions. """ args = parser.parse_args(args) outputs = None fetch_map = { "history": get_history, "bookmarks": get_bookmarks, } if args.type not in fetch_map: utils.logger.error( "Type %s is unavailable." " Check --help for available types", args.type) sys.exit(1) if args.browser == "all": outputs = fetch_map[args.type]() else: try: # gets browser class by name (string). selected_browser = args.browser if selected_browser == "default": default = utils.default_browser() if default is None: sys.exit(1) else: selected_browser = default.__name__ else: for browser in utils.get_browsers(): if browser.__name__.lower() == args.browser.lower(): selected_browser = browser.__name__ break browser_class = getattr(browsers, selected_browser) except AttributeError: utils.logger.error( "Browser %s is unavailable." " Check --help for available browsers", args.browser, ) sys.exit(1) if args.type == "history": outputs = browser_class().fetch_history() elif args.type == "bookmarks": outputs = browser_class().fetch_bookmarks() try: if args.output is None: if args.format == "infer": args.format = "csv" print(outputs.formatted(args.format)) elif args.output is not None: outputs.save(args.output, args.format) except ValueError as e: utils.logger.error(e) sys.exit(1)
def test_default_browser_unknown_alias(become_windows): # noqa: F811 mocked_dbw = Mock() mocked_dbw.return_value = "garbage" with patch("browser_history.utils._default_browser_win", mocked_dbw): browser = default_browser() assert browser is None
def test_default_browser_firefox_noisy_alias(become_windows): # noqa: F811 mocked_dbw = Mock() mocked_dbw.return_value = "garbage_firefoxurl" with patch("browser_history.utils._default_browser_win", mocked_dbw): browser = default_browser() assert browser.name == "Firefox"
def test_default_windows_firefox( become_windows, change_win_default # noqa: F811 ): """Test that firefox is identified correctly on Windows""" assert utils.default_browser() == browsers.Firefox
def test_default_windows_chrome( become_windows, change_win_default # noqa: F811 ): """Test that chrome is identified correctly on Windows""" assert utils.default_browser() == browsers.Chrome
def test_default_safari(become_mac, change_linux_default): # noqa: F811 """Test that Safari set as default in MacOS is NOT recognised correctly since default browser in MacOS is not supported.""" assert utils.default_browser() is None
def test_default_none(become_linux, change_linux_default): # noqa: F811 """Test that no default set returns None""" assert utils.default_browser() is None
def test_default_chrome(become_linux, change_linux_default): # noqa: F811 """Test that Chrome set as default is recognised correctly""" assert utils.default_browser() == browsers.Chrome
def test_default_firefox(become_linux, change_linux_default): # noqa: F811 """Test that firefox set as default is recognised correctly""" assert utils.default_browser() == browsers.Firefox
def test_default_windows_none(become_windows, change_win_default): # noqa: F811 """Test that registry returning None is handled correctly""" assert utils.default_browser() is None