diff options
Diffstat (limited to 'python/mozperftest/mozperftest/tests/test_layers.py')
-rw-r--r-- | python/mozperftest/mozperftest/tests/test_layers.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/python/mozperftest/mozperftest/tests/test_layers.py b/python/mozperftest/mozperftest/tests/test_layers.py new file mode 100644 index 0000000000..c29b9ef2c0 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_layers.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +from unittest.mock import MagicMock + +import mozunit +import pytest + +from mozperftest.environment import MachEnvironment +from mozperftest.layers import Layer, Layers + + +class _TestLayer(Layer): + name = "test" + activated = True + called = 0 + arguments = {"--arg1": {"type": str, "default": "xxx", "help": "arg1"}} + + def setup(self): + self.called += 1 + + def teardown(self): + self.called += 1 + + +class _TestLayer2(_TestLayer): + name = "test2" + activated = True + arguments = {"arg2": {"type": str, "default": "xxx", "help": "arg2"}} + + +class _TestLayer3(_TestLayer): + name = "test3" + activated = True + + +def test_layer(): + mach = MagicMock() + env = MachEnvironment(mach, test=True, test_arg1="ok") + + 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" + assert layer.get_arg("test-arg1") == "ok" + layer.set_arg("arg1", "two") + assert layer.get_arg("test-arg1") == "two" + layer.set_arg("test-arg1", 1) + assert layer.get_arg("test-arg1") == 1 + with pytest.raises(KeyError): + layer.set_arg("another", 1) + + layer(object()) + + assert layer.called == 2 + + +def test_layers(): + mach = MagicMock() + factories = [_TestLayer, _TestLayer2, _TestLayer3] + env = MachEnvironment( + mach, no_test3=True, test_arg1="ok", test2=True, test2_arg2="2" + ) + + with Layers(env, mach, factories) as layers: + # layer3 was deactivated with test3=False + 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") + assert layers.get_arg("test-arg1") == "two" + layers.set_arg("--test-arg1", 1) + assert layers.get_arg("test-arg1") == 1 + assert layers.get_layer("test2").name == "test2" + assert layers.get_layer("test3") is None + assert layers.name == "test + test2" + with pytest.raises(KeyError): + layers.set_arg("another", 1) + + for layer in layers: + assert layer.called == 2 + + +if __name__ == "__main__": + mozunit.main() |