Bug 1637959 - Added more test coverage r=sparky

Differential Revision: https://phabricator.services.mozilla.com/D75309
This commit is contained in:
Tarek Ziadé 2020-05-15 07:19:39 +00:00
parent 9257ea9bef
commit ffc7bb2c00
12 changed files with 79 additions and 30 deletions

View File

@ -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)

View File

@ -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)

View File

@ -0,0 +1,2 @@
def doit(env):
return "OK"

View File

@ -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]

View File

@ -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

View File

@ -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():

View 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()

View File

@ -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")

View File

@ -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

View File

@ -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()