mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
Bug 1637959 - Added more test coverage r=sparky
Differential Revision: https://phabricator.services.mozilla.com/D75309
This commit is contained in:
parent
9257ea9bef
commit
ffc7bb2c00
@ -1,7 +1,7 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
from argparse import ArgumentParser, SUPPRESS
|
||||
from argparse import ArgumentParser
|
||||
import os
|
||||
import mozlog
|
||||
import copy
|
||||
@ -107,11 +107,6 @@ class PerftestArgumentParser(ArgumentParser):
|
||||
for name, options in Options.args.items():
|
||||
if "default" in options and isinstance(options["default"], list):
|
||||
options["default"] = []
|
||||
if "suppress" in options:
|
||||
if options["suppress"]:
|
||||
options["help"] = SUPPRESS
|
||||
del options["suppress"]
|
||||
|
||||
self.add_argument(name, **options)
|
||||
|
||||
mozlog.commandline.add_logging_group(self)
|
||||
|
@ -108,4 +108,4 @@ class MachEnvironment:
|
||||
return
|
||||
if not hasattr(self._hooks, name):
|
||||
return
|
||||
getattr(self._hooks, name)(self, **kw)
|
||||
return getattr(self._hooks, name)(self, **kw)
|
||||
|
2
python/mozperftest/mozperftest/tests/data/hook.py
Normal file
2
python/mozperftest/mozperftest/tests/data/hook.py
Normal file
@ -0,0 +1,2 @@
|
||||
def doit(env):
|
||||
return "OK"
|
@ -6,6 +6,7 @@ skip-if = python == 2
|
||||
[test_argparser.py]
|
||||
[test_browsertime.py]
|
||||
[test_consoleoutput.py]
|
||||
[test_environment.py]
|
||||
[test_ir_schema.py]
|
||||
[test_layers.py]
|
||||
[test_mach_commands.py]
|
||||
|
@ -3,14 +3,16 @@ from mock import MagicMock
|
||||
import contextlib
|
||||
import shutil
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from mozperftest.metadata import Metadata
|
||||
from mozperftest.environment import MachEnvironment
|
||||
|
||||
|
||||
HERE = os.path.dirname(__file__)
|
||||
EXAMPLE_TESTS_DIR = os.path.join(HERE, "samples")
|
||||
HERE = Path(__file__).parent
|
||||
EXAMPLE_TESTS_DIR = os.path.join(HERE, "data", "samples")
|
||||
EXAMPLE_TEST = os.path.join(EXAMPLE_TESTS_DIR, "perftest_example.js")
|
||||
BT_DATA = Path(HERE, "data", "browsertime-results", "browsertime.json")
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
@ -1,16 +1,12 @@
|
||||
#!/usr/bin/env python
|
||||
import os
|
||||
import mozunit
|
||||
import mock
|
||||
|
||||
from mozperftest.tests.support import EXAMPLE_TEST, get_running_env, temp_dir
|
||||
from mozperftest.tests.support import EXAMPLE_TEST, get_running_env, temp_dir, BT_DATA
|
||||
from mozperftest.environment import METRICS
|
||||
from mozperftest.utils import silence
|
||||
|
||||
|
||||
HERE = os.path.dirname(__file__)
|
||||
|
||||
|
||||
@mock.patch("mozperftest.metrics.common.validate_intermediate_results")
|
||||
def test_console_output(*mocked):
|
||||
with temp_dir() as tempdir:
|
||||
@ -28,9 +24,7 @@ def test_console_output(*mocked):
|
||||
mach_cmd.run_process = _run_process
|
||||
metrics = env.layers[METRICS]
|
||||
env.set_arg("tests", [EXAMPLE_TEST])
|
||||
bt_res = os.path.join(HERE, "browsertime-results", "browsertime.json")
|
||||
|
||||
res = {"name": "name", "results": [bt_res]}
|
||||
res = {"name": "name", "results": [str(BT_DATA)]}
|
||||
metadata.add_result(res)
|
||||
|
||||
with metrics as console, silence():
|
||||
|
35
python/mozperftest/mozperftest/tests/test_environment.py
Normal file
35
python/mozperftest/mozperftest/tests/test_environment.py
Normal file
@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env python
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
from pathlib import Path
|
||||
import mozunit
|
||||
import mock
|
||||
|
||||
from mozperftest.environment import MachEnvironment
|
||||
from mozperftest.tests.support import get_running_env
|
||||
|
||||
|
||||
HERE = Path(__file__).parent.resolve()
|
||||
|
||||
|
||||
def test_run_hooks():
|
||||
hooks = str(Path(HERE, "data", "hook.py"))
|
||||
env = MachEnvironment(mock.MagicMock(), hooks=hooks)
|
||||
assert env.run_hook("doit") == "OK"
|
||||
|
||||
|
||||
def test_layers():
|
||||
env = MachEnvironment(mock.MagicMock())
|
||||
assert env.get_layer("browsertime").name == "browsertime"
|
||||
|
||||
|
||||
def test_context():
|
||||
mach, metadata, env = get_running_env()
|
||||
env.layers = [mock.MagicMock(), mock.MagicMock()]
|
||||
with env:
|
||||
env.run(metadata)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
mozunit.main()
|
@ -36,6 +36,7 @@ def test_layer():
|
||||
|
||||
with _TestLayer(env, mach) as layer:
|
||||
layer.info("info")
|
||||
layer.warning("warning")
|
||||
layer.debug("debug")
|
||||
assert layer.get_arg("test")
|
||||
assert layer.get_arg("arg1") == "ok"
|
||||
@ -64,6 +65,7 @@ def test_layers():
|
||||
assert len(layers.layers) == 2
|
||||
layers.info("info")
|
||||
layers.debug("debug")
|
||||
layers.warning("warning")
|
||||
assert layers.get_arg("--test2")
|
||||
assert layers.get_arg("test-arg1") == "ok"
|
||||
layers.set_arg("test-arg1", "two")
|
||||
|
@ -1,20 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
import json
|
||||
import jsonschema
|
||||
import os
|
||||
import pathlib
|
||||
import pytest
|
||||
import mozunit
|
||||
|
||||
from mozperftest.metrics.exceptions import PerfherderValidDataError
|
||||
from mozperftest.tests.support import get_running_env, temp_file, temp_dir, EXAMPLE_TEST
|
||||
from mozperftest.tests.support import (
|
||||
get_running_env,
|
||||
temp_file,
|
||||
temp_dir,
|
||||
EXAMPLE_TEST,
|
||||
BT_DATA,
|
||||
)
|
||||
from mozperftest.environment import METRICS
|
||||
from mozperftest.utils import silence
|
||||
|
||||
|
||||
HERE = os.path.dirname(__file__)
|
||||
|
||||
|
||||
def setup_env(options):
|
||||
mach_cmd, metadata, env = get_running_env(**options)
|
||||
runs = []
|
||||
@ -25,13 +27,7 @@ def setup_env(options):
|
||||
mach_cmd.run_process = _run_process
|
||||
metrics = env.layers[METRICS]
|
||||
env.set_arg("tests", [EXAMPLE_TEST])
|
||||
metadata.add_result(
|
||||
{
|
||||
"results": str(pathlib.Path(HERE, "browsertime-results")),
|
||||
"name": "browsertime",
|
||||
}
|
||||
)
|
||||
|
||||
metadata.add_result({"results": str(BT_DATA), "name": "browsertime"})
|
||||
return metrics, metadata, env
|
||||
|
||||
|
||||
|
@ -8,7 +8,7 @@ import mock
|
||||
import pytest
|
||||
from pathlib import Path
|
||||
|
||||
from mozperftest.utils import host_platform, silence, download_file
|
||||
from mozperftest.utils import host_platform, silence, download_file, install_package
|
||||
from mozperftest.tests.support import temp_file, requests_content
|
||||
|
||||
|
||||
@ -48,5 +48,27 @@ def test_download_file_success():
|
||||
assert f.read() == "some content"
|
||||
|
||||
|
||||
def _req(package):
|
||||
class Req:
|
||||
location = "nowhere"
|
||||
|
||||
@property
|
||||
def satisfied_by(self):
|
||||
return self
|
||||
|
||||
def check_if_exists(self, **kw):
|
||||
pass
|
||||
|
||||
return Req()
|
||||
|
||||
|
||||
@mock.patch("pip._internal.req.constructors.install_req_from_line", new=_req)
|
||||
def test_install_package():
|
||||
vem = mock.Mock()
|
||||
vem.bin_path = "someplace"
|
||||
install_package(vem, "foo")
|
||||
vem._run_pip.assert_called()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
mozunit.main()
|
||||
|
Loading…
Reference in New Issue
Block a user