1616# under the License.
1717
1818import json
19+ import logging
1920import sys
2021from pathlib import Path
2122from unittest import mock
@@ -36,7 +37,6 @@ def test_gets_results(monkeypatch):
3637 mock .patch (lib_path + "._run" , return_value = expected_output ) as mock_run ,
3738 ):
3839 SeleniumManager ().binary_paths ([])
39-
4040 mock_get_binary .assert_called_once ()
4141 expected_run_args = ["/path/to/sm" , "--language-binding" , "python" , "--output" , "json" ]
4242 mock_run .assert_called_once_with (expected_run_args )
@@ -46,24 +46,28 @@ def test_uses_environment_variable(monkeypatch):
4646 sm_path = r"\path\to\manager" if sys .platform .startswith ("win" ) else "path/to/manager"
4747 monkeypatch .setenv ("SE_MANAGER_PATH" , sm_path )
4848 monkeypatch .setattr (Path , "is_file" , lambda _ : True )
49-
5049 binary = SeleniumManager ()._get_binary ()
51-
5250 assert str (binary ) == sm_path
5351
5452
5553def test_uses_windows (monkeypatch ):
5654 monkeypatch .setattr (sys , "platform" , "win32" )
55+ monkeypatch .setattr ("platform.machine" , lambda : "AMD64" )
5756 binary = SeleniumManager ()._get_binary ()
58-
5957 project_root = Path (selenium .__file__ ).parent .parent
6058 assert binary == project_root .joinpath ("selenium/webdriver/common/windows/selenium-manager.exe" )
6159
6260
61+ def test_uses_windows_arm64 (monkeypatch ):
62+ monkeypatch .setattr (sys , "platform" , "win32" )
63+ monkeypatch .setattr ("platform.machine" , lambda : "ARM64" )
64+ with pytest .raises (WebDriverException , match = "Unsupported platform/architecture combination: win32/arm64" ):
65+ SeleniumManager ()._get_binary ()
66+
67+
6368def test_uses_linux (monkeypatch ):
6469 monkeypatch .setattr (sys , "platform" , "linux" )
6570 monkeypatch .setattr ("platform.machine" , lambda : "x86_64" )
66-
6771 binary = SeleniumManager ()._get_binary ()
6872 project_root = Path (selenium .__file__ ).parent .parent
6973 assert binary == project_root .joinpath ("selenium/webdriver/common/linux/selenium-manager" )
@@ -72,22 +76,35 @@ def test_uses_linux(monkeypatch):
7276def test_uses_linux_arm64 (monkeypatch ):
7377 monkeypatch .setattr (sys , "platform" , "linux" )
7478 monkeypatch .setattr ("platform.machine" , lambda : "arm64" )
75-
7679 with pytest .raises (WebDriverException , match = "Unsupported platform/architecture combination: linux/arm64" ):
7780 SeleniumManager ()._get_binary ()
7881
7982
8083def test_uses_mac (monkeypatch ):
8184 monkeypatch .setattr (sys , "platform" , "darwin" )
8285 binary = SeleniumManager ()._get_binary ()
83-
8486 project_root = Path (selenium .__file__ ).parent .parent
8587 assert binary == project_root .joinpath ("selenium/webdriver/common/macos/selenium-manager" )
8688
8789
90+ def test_uses_freebsd (monkeypatch , caplog ):
91+ monkeypatch .setattr (sys , "platform" , "freebsd15" )
92+ monkeypatch .setattr ("platform.machine" , lambda : "amd64" )
93+ root = logging .getLogger ()
94+ caplog_handler = caplog .handler
95+ old_handlers = root .handlers [:]
96+ root .handlers = [caplog_handler ]
97+ try :
98+ binary = SeleniumManager ()._get_binary ()
99+ project_root = Path (selenium .__file__ ).parent .parent
100+ assert binary == project_root .joinpath ("selenium/webdriver/common/linux/selenium-manager" )
101+ assert "Selenium Manager binary may not be compatible with FreeBSD" in caplog .text
102+ finally :
103+ root .handlers = old_handlers
104+
105+
88106def test_errors_if_not_file (monkeypatch ):
89107 monkeypatch .setattr (Path , "is_file" , lambda _ : False )
90-
91108 with pytest .raises (WebDriverException ) as excinfo :
92109 SeleniumManager ()._get_binary ()
93110 assert "Unable to obtain working Selenium Manager binary" in str (excinfo .value )
@@ -96,7 +113,6 @@ def test_errors_if_not_file(monkeypatch):
96113def test_errors_if_invalid_os (monkeypatch ):
97114 monkeypatch .setattr (sys , "platform" , "linux" )
98115 monkeypatch .setattr ("platform.machine" , lambda : "invalid" )
99-
100116 with pytest .raises (WebDriverException ) as excinfo :
101117 SeleniumManager ()._get_binary ()
102118 assert "Unsupported platform/architecture combination" in str (excinfo .value )
@@ -105,7 +121,6 @@ def test_errors_if_invalid_os(monkeypatch):
105121def test_error_if_invalid_env_path (monkeypatch ):
106122 sm_path = r"\path\to\manager" if sys .platform .startswith ("win" ) else "path/to/manager"
107123 monkeypatch .setenv ("SE_MANAGER_PATH" , sm_path )
108-
109124 with pytest .raises (WebDriverException ) as excinfo :
110125 SeleniumManager ()._get_binary ()
111126 assert f"SE_MANAGER_PATH does not point to a file: { sm_path } " in str (excinfo .value )
0 commit comments