Coverage for tests/test_launch.py: 100%
22 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-11-13 11:07 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2024-11-13 11:07 +0000
1import subprocess 1abcdefgh
2from unittest.mock import patch 1abcdefgh
4import pytest 1abcdefgh
5import typer 1abcdefgh
7url = "http://example.com" 1abcdefgh
10@pytest.mark.parametrize( 1abcdefgh
11 "system, command",
12 [
13 ("Darwin", "open"),
14 ("Linux", "xdg-open"),
15 ("FreeBSD", "xdg-open"),
16 ],
17)
18def test_launch_url_unix(system: str, command: str): 1abcdefgh
19 with patch("platform.system", return_value=system), patch( 1abcdefgh
20 "shutil.which", return_value=True
21 ), patch("subprocess.Popen") as mock_popen:
22 typer.launch(url) 1abcdefgh
24 mock_popen.assert_called_once_with( 1abcdefgh
25 [command, url], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT
26 )
29def test_launch_url_windows(): 1abcdefgh
30 with patch("platform.system", return_value="Windows"), patch( 1abcdefgh
31 "webbrowser.open"
32 ) as mock_webbrowser_open:
33 typer.launch(url) 1abcdefgh
35 mock_webbrowser_open.assert_called_once_with(url) 1abcdefgh
38def test_launch_url_no_xdg_open(): 1abcdefgh
39 with patch("platform.system", return_value="Linux"), patch( 1abcdefgh
40 "shutil.which", return_value=None
41 ), patch("webbrowser.open") as mock_webbrowser_open:
42 typer.launch(url) 1abcdefgh
44 mock_webbrowser_open.assert_called_once_with(url) 1abcdefgh
47def test_calls_original_launch_when_not_passing_urls(): 1abcdefgh
48 with patch("typer.main.click.launch", return_value=0) as launch_mock: 1abcdefgh
49 typer.launch("not a url") 1abcdefgh
51 launch_mock.assert_called_once_with("not a url") 1abcdefgh