1#!/usr/bin/env python
2import mozunit
3import os
4from unittest import mock
5import pytest
6
7from mozperftest.test.browsertime.visualtools import xvfb, get_dependencies
8from mozperftest.utils import temporary_env
9
10
11@mock.patch(
12    "mozperftest.test.browsertime.visualtools.find_executable", new=lambda name: "Xvfb"
13)
14def test_xvfb(*mocked):
15    with temporary_env(DISPLAY="ME"):
16        with mock.patch("subprocess.Popen") as mocked, xvfb():
17            mocked.assert_called()
18        assert os.environ["DISPLAY"] == "ME"
19
20
21@mock.patch(
22    "mozperftest.test.browsertime.visualtools.find_executable", new=lambda name: "Xvfb"
23)
24def test_xvfb_env(*mocked):
25    with temporary_env(DISPLAY=None):
26        with mock.patch("subprocess.Popen") as mocked, xvfb():
27            mocked.assert_called()
28        assert "DISPLAY" not in os.environ
29
30
31@mock.patch(
32    "mozperftest.test.browsertime.visualtools.find_executable", new=lambda name: None
33)
34def test_xvfb_none(*mocked):
35    with pytest.raises(FileNotFoundError), xvfb():
36        pass
37
38
39def test_get_dependencies():
40    # Making sure we get a list on all supported platforms.
41    # If we miss one, this raises a KeyError.
42    get_dependencies()
43
44
45if __name__ == "__main__":
46    mozunit.main()
47