|  | from focker.focker import *
def test_parser_bootstrap():
    parser = create_parser()
    args = parser.parse_args(['bootstrap', '--dry-run', '--tags', 'a', 'b', 'c'])
    assert args.func == command_bootstrap
    assert args.tags == ['a', 'b', 'c']
    assert args.dry_run
def test_parser_image():
    parser = create_parser()
    args = parser.parse_args(['image', 'build', '.', '--squeeze', '--tags', 'a', 'b', 'c'])
    assert args.func == command_image_build
    assert args.focker_dir == '.'
    assert args.tags == ['a', 'b', 'c']
    assert args.squeeze
    args = parser.parse_args(['image', 'tag', 'deadbee', 'a', 'b', 'c'])
    assert args.func == command_image_tag
    assert args.reference == 'deadbee'
    assert args.tags == ['a', 'b', 'c']
    args = parser.parse_args(['image', 'untag', 'a', 'b', 'c'])
    assert args.func == command_image_untag
    assert args.tags == ['a', 'b', 'c']
    args = parser.parse_args(['image', 'list', '--full-sha256', '--tagged-only'])
    assert args.func == command_image_list
    assert args.full_sha256
    assert args.tagged_only
    args = parser.parse_args(['image', 'prune'])
    assert args.func == command_image_prune
    args = parser.parse_args(['image', 'remove', 'a', '--remove-dependents', '--force'])
    assert args.func == command_image_remove
    assert args.reference == 'a'
    assert args.remove_dependents
    assert args.force
def test_parser_jail(monkeypatch):
    parser = create_parser()
    counter = [0]
    def count_calls(fun, counter):
        def inner(*args, **kwargs):
            counter[0] += 1
            return fun(*args, **kwargs)
        return inner
    monkeypatch.setattr(parser, 'parse_args', count_calls(parser.parse_args, counter))
    args = parser.parse_args(['jail', 'create', 'freebsd-latest', '--command', '/test-command', '--tags', 'a', 'b', 'c', '--env', 'd:1', 'e:2', '--mounts', 'mount-A:/a', 'mount-B:/b', '--hostname', 'xyz'])
    assert args.func == command_jail_create
    assert args.command == '/test-command'
    assert args.tags == ['a', 'b', 'c']
    assert args.env == ['d:1', 'e:2']
    assert args.mounts == ['mount-A:/a', 'mount-B:/b']
    assert args.hostname == 'xyz'
    args = parser.parse_args(['jail', 'start', 'jail-A'])
    assert args.func == command_jail_start
    assert args.reference == 'jail-A'
    args = parser.parse_args(['jail', 'stop', 'jail-A'])
    assert args.func == command_jail_stop
    assert args.reference == 'jail-A'
    args = parser.parse_args(['jail', 'remove', 'jail-A', '--force'])
    assert args.func == command_jail_remove
    assert args.reference == 'jail-A'
    assert args.force
    args = parser.parse_args(['jail', 'exec', 'jail-A', '/bin/sh', '-c', 'ls', '-al'])
    assert args.func == command_jail_exec
    assert args.reference == 'jail-A'
    assert args.command == ['/bin/sh', '-c', 'ls', '-al']
    args = parser.parse_args(['jail', 'oneshot', '--env', 'd:1', 'e:2', '--mounts', 'mount-A:/a', 'mount-B:/b', '--', 'image-A', '/bin/sh', '-c', 'ls', '-al'])
    assert args.func == command_jail_oneshot
    assert args.image == 'image-A'
    assert args.env == ['d:1', 'e:2']
    assert args.mounts == ['mount-A:/a', 'mount-B:/b']
    assert args.command == ['/bin/sh', '-c', 'ls', '-al']
    args = parser.parse_args(['jail', 'list', '--full-sha256'])
    assert args.func == command_jail_list
    assert args.full_sha256
    args = parser.parse_args(['jail', 'tag', 'deadbee', 'a', 'b', 'c'])
    assert args.func == command_jail_tag
    assert args.reference == 'deadbee'
    assert args.tags == ['a', 'b', 'c']
    args = parser.parse_args(['jail', 'untag', 'a', 'b', 'c'])
    assert args.func == command_jail_untag
    assert args.tags == ['a', 'b', 'c']
    args = parser.parse_args(['jail', 'prune', '--force'])
    assert args.func == command_jail_prune
    assert args.force
    assert counter[0] == 10
 |