Skip to content

Commit

Permalink
Merge pull request #540 from Lothiraldan/machinedefaultyes
Browse files Browse the repository at this point in the history
Add the possibility for asv machine to use defaults
  • Loading branch information
pv committed Sep 24, 2017
2 parents 2320b0f + 9083afc commit 993cd49
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 7 deletions.
8 changes: 7 additions & 1 deletion asv/commands/machine.py
Expand Up @@ -28,6 +28,9 @@ def setup_arguments(cls, subparsers):
'--' + name, default=defaults[name],
help=description)

parser.add_argument('--yes', default=False, action='store_true',
help="Accept all questions")

parser.set_defaults(func=cls.run_from_args)

return parser
Expand All @@ -44,5 +47,8 @@ def run(cls, **kwargs):
if kwargs.get(key) != val:
different[key] = kwargs.get(key)

use_defaults = kwargs['yes']

machine.Machine.load(
force_interactive=(len(different) == 0), **different)
force_interactive=(len(different) == 0),
use_defaults=use_defaults, **different)
6 changes: 5 additions & 1 deletion asv/console.py
Expand Up @@ -230,8 +230,12 @@ def color_print(*args, **kwargs):
write(end)


def get_answer_default(prompt, default):
def get_answer_default(prompt, default, use_defaults=False):
color_print("{0} [{1}]: ".format(prompt, default), end='')

if use_defaults:
return default

x = input()
if x.strip() == '':
return default
Expand Down
11 changes: 6 additions & 5 deletions asv/machine.py
Expand Up @@ -147,8 +147,8 @@ def get_defaults():
}

@staticmethod
def generate_machine_file():
if not sys.stdout.isatty():
def generate_machine_file(use_defaults=False):
if not sys.stdout.isatty() and not use_defaults:
raise util.UserError(
"Run asv at the console the first time to generate "
"one.")
Expand All @@ -167,13 +167,14 @@ def generate_machine_file():
'{0}. {1}: {2}'.format(
i+1, name, textwrap.dedent(description)),
subsequent_indent=' '))
values[name] = console.get_answer_default(name, defaults[name])
values[name] = console.get_answer_default(name, defaults[name],
use_defaults=use_defaults)

return values

@classmethod
def load(cls, interactive=False, force_interactive=False, _path=None,
machine_name=None, **kwargs):
machine_name=None, use_defaults=False, **kwargs):
self = Machine()

if machine_name is None:
Expand All @@ -185,7 +186,7 @@ def load(cls, interactive=False, force_interactive=False, _path=None,
d = {}
d.update(kwargs)
if (not len(d) and interactive) or force_interactive:
d.update(self.generate_machine_file())
d.update(self.generate_machine_file(use_defaults=use_defaults))

machine_name = d['machine']

Expand Down
11 changes: 11 additions & 0 deletions test/test_machine.py
Expand Up @@ -31,3 +31,14 @@ def test_machine(tmpdir):
assert m.arch == 'MIPS'
assert m.cpu == '10 MHz'
assert m.ram == '640k'


def test_machine_defaults(tmpdir):
tmpdir = six.text_type(tmpdir)

m = machine.Machine.load(
interactive=True,
use_defaults=True,
_path=join(tmpdir, 'asv-machine.json'))

assert m.__dict__ == m.get_defaults()

0 comments on commit 993cd49

Please sign in to comment.