diff options
Diffstat (limited to 'tools/tryselect/test/test_fuzzy.py')
-rw-r--r-- | tools/tryselect/test/test_fuzzy.py | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/tools/tryselect/test/test_fuzzy.py b/tools/tryselect/test/test_fuzzy.py new file mode 100644 index 0000000000..9ff1b386af --- /dev/null +++ b/tools/tryselect/test/test_fuzzy.py @@ -0,0 +1,125 @@ +# 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/. + +import json +import os + +import mozunit +import pytest + + +@pytest.mark.skipif(os.name == "nt", reason="fzf not installed on host") +@pytest.mark.parametrize("show_chunk_numbers", [True, False]) +def test_query_paths(run_mach, capfd, show_chunk_numbers): + cmd = [ + "try", + "fuzzy", + "--no-push", + "-q", + "^test-linux '64-qr/debug-mochitest-chrome-1proc-", + "caps/tests/mochitest/test_addonMayLoad.html", + ] + chunk = "*" + if show_chunk_numbers: + cmd.append("--show-chunk-numbers") + chunk = "1" + + assert run_mach(cmd) == 0 + + output = capfd.readouterr().out + print(output) + + delim = "Calculated try_task_config.json:" + index = output.find(delim) + result = json.loads(output[index + len(delim) :]) + + # If there are more than one tasks here, it means that something went wrong + # with the path filtering. + tasks = result["parameters"]["try_task_config"]["tasks"] + assert tasks == ["test-linux1804-64-qr/debug-mochitest-chrome-1proc-%s" % chunk] + + +@pytest.mark.skipif(os.name == "nt", reason="fzf not installed on host") +@pytest.mark.parametrize("show_chunk_numbers", [True, False]) +def test_query_paths_no_chunks(run_mach, capfd, show_chunk_numbers): + cmd = [ + "try", + "fuzzy", + "--no-push", + "-q", + "^test-linux '64-qr/debug-cppunittest", + ] + if show_chunk_numbers: + cmd.append("--show-chunk-numbers") + + assert run_mach(cmd) == 0 + + output = capfd.readouterr().out + print(output) + + delim = "Calculated try_task_config.json:" + index = output.find(delim) + result = json.loads(output[index + len(delim) :]) + + # If there are more than one tasks here, it means that something went wrong + # with the path filtering. + tasks = result["parameters"]["try_task_config"]["tasks"] + assert tasks == ["test-linux1804-64-qr/debug-cppunittest-1proc"] + + +@pytest.mark.skipif(os.name == "nt", reason="fzf not installed on host") +@pytest.mark.parametrize("variant", ["", "spi-nw"]) +def test_query_paths_variants(run_mach, capfd, variant): + if variant: + variant = "-%s" % variant + + cmd = [ + "try", + "fuzzy", + "--no-push", + "-q", + "^test-linux '64-qr/debug-mochitest-browser-chrome%s-" % variant, + ] + assert run_mach(cmd) == 0 + + output = capfd.readouterr().out + print(output) + + if variant: + expected = ["test-linux1804-64-qr/debug-mochitest-browser-chrome%s-*" % variant] + else: + expected = [ + "test-linux1804-64-qr/debug-mochitest-browser-chrome-spi-nw-*", + "test-linux1804-64-qr/debug-mochitest-browser-chrome-swr-*", + ] + + delim = "Calculated try_task_config.json:" + index = output.find(delim) + result = json.loads(output[index + len(delim) :]) + tasks = result["parameters"]["try_task_config"]["tasks"] + assert tasks == expected + + +@pytest.mark.skipif(os.name == "nt", reason="fzf not installed on host") +@pytest.mark.parametrize("full", [True, False]) +def test_query(run_mach, capfd, full): + cmd = ["try", "fuzzy", "--no-push", "-q", "'source-test-python-taskgraph-tests-py3"] + if full: + cmd.append("--full") + assert run_mach(cmd) == 0 + + output = capfd.readouterr().out + print(output) + + delim = "Calculated try_task_config.json:" + index = output.find(delim) + result = json.loads(output[index + len(delim) :]) + + # Should only ever mach one task exactly. + tasks = result["parameters"]["try_task_config"]["tasks"] + assert tasks == ["source-test-python-taskgraph-tests-py3"] + + +if __name__ == "__main__": + mozunit.main() |