mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 08:45:46 +00:00
0e4eda282f
One of the big downsides to |mach try fuzzy| is that if you use the interactive finder, there's no way to repeat your last action. If you want to run the same push again, you have to manually re-select all the same tasks a second time. It is possible to save presets, but this is fairly heavy-weight and (more) permanent. Sometimes you just want to re-run a push a few times and forget about it. It's also possible to craft the query on the command line with -q, but then you don't get the immediate visual feedback, so you can't be sure that you typed out the right things without actually pushing. With |mach try again|, everytime you generate a try_task_config.json via 'fuzzy', 'empty' or any other subcommands that may exist in the future, it'll get stored in a history file under ~/.mozbuild. Then running |mach try again| will simply re-run the most recent try_task_config.json. You'll also be able to view the whole history via |mach try again --list| and select a specific try_task_config.json (i.e not the most recent one) via |mach try again --index <index>|. Example usage will be: $ ./mach try fuzzy <select a bunch of tasks> $ ./mach try again <re-pushes exact same set of tasks> MozReview-Commit-ID: 3EZjVCy08uq Depends on D1808. Differential Revision: https://phabricator.services.mozilla.com/D1867 --HG-- extra : moz-landing-system : lando
35 lines
1.3 KiB
Python
35 lines
1.3 KiB
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 __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
from mozversioncontrol import HgRepository, GitRepository
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def patch_vcs(monkeypatch, tmpdir):
|
|
# Make sure we don't accidentally push to try
|
|
def fake_push_to_try(*args, **kwargs):
|
|
pass
|
|
|
|
def fake_working_directory_clean(*args, **kwargs):
|
|
return True
|
|
|
|
for cls in (HgRepository, GitRepository):
|
|
monkeypatch.setattr(cls, 'push_to_try', fake_push_to_try)
|
|
monkeypatch.setattr(cls, 'working_directory_clean', fake_working_directory_clean)
|
|
|
|
|
|
def pytest_generate_tests(metafunc):
|
|
if all(fixture in metafunc.fixturenames for fixture in ('template', 'args', 'expected')):
|
|
def load_tests():
|
|
for template, tests in metafunc.module.TEMPLATE_TESTS.items():
|
|
for args, expected in tests:
|
|
yield (template, args, expected)
|
|
|
|
tests = list(load_tests())
|
|
ids = ['{} {}'.format(t[0], ' '.join(t[1])).strip() for t in tests]
|
|
metafunc.parametrize('template,args,expected', tests, ids=ids)
|