IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
Преглед на файлове

Add test_parser_volume(), test_parser_compose(), test_parser_main_01() and test_parser_main_02().

master
Stanislaw Adaszewski преди 4 години
родител
ревизия
1216d9bfb8
променени са 1 файла, в които са добавени 102 реда и са изтрити 0 реда
  1. +102
    -0
      tests/test_focker.py

+ 102
- 0
tests/test_focker.py Целия файл

@@ -1,4 +1,8 @@
from focker.focker import *
import focker.focker
from collections import defaultdict
import sys
import pytest
def test_parser_bootstrap():
@@ -105,3 +109,101 @@ def test_parser_jail(monkeypatch):
assert args.force
assert counter[0] == 10
def test_parser_volume(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(['volume', 'create', '--tags', 'a', 'b', 'c'])
assert args.func == command_volume_create
assert args.tags == ['a', 'b', 'c']
args = parser.parse_args(['volume', 'prune'])
assert args.func == command_volume_prune
args = parser.parse_args(['volume', 'list', '--full-sha256'])
assert args.func == command_volume_list
assert args.full_sha256
args = parser.parse_args(['volume', 'tag', 'deadbee', 'a', 'b', 'c'])
assert args.func == command_volume_tag
assert args.reference == 'deadbee'
assert args.tags == ['a', 'b', 'c']
args = parser.parse_args(['volume', 'untag', 'a', 'b', 'c'])
assert args.func == command_volume_untag
assert args.tags == ['a', 'b', 'c']
args = parser.parse_args(['volume', 'remove', 'volume-A', 'volume-B', '--force'])
assert args.func == command_volume_remove
assert args.references == ['volume-A', 'volume-B']
assert args.force
args = parser.parse_args(['volume', 'set', 'volume-A', 'rdonly=on', 'quota=1G'])
assert args.func == command_volume_set
assert args.reference == 'volume-A'
assert args.properties == ['rdonly=on', 'quota=1G']
args = parser.parse_args(['volume', 'get', 'volume-A', 'rdonly', 'quota'])
assert args.func == command_volume_get
assert args.reference == 'volume-A'
assert args.properties == ['rdonly', 'quota']
assert counter[0] == 8
def test_parser_compose():
parser = create_parser()
args = parser.parse_args(['compose', 'build', '--squeeze', '/a/b/c/focker-compose.yml'])
assert args.func == command_compose_build
assert args.filename == '/a/b/c/focker-compose.yml'
assert args.squeeze
args = parser.parse_args(['compose', 'run', '/a/b/c/focker-compose.yml', 'noop'])
assert args.func == command_compose_run
assert args.filename == '/a/b/c/focker-compose.yml'
assert args.command == 'noop'
def test_focker_main_01(monkeypatch):
log = defaultdict(list)
def log_call(fun):
def inner(*args, **kwargs):
log[fun.__name__].append((args, kwargs))
return fun(*args, **kwargs)
return inner
monkeypatch.setattr(focker.focker, 'focker_lock', log_call(focker_lock))
monkeypatch.setattr(focker.focker, 'zfs_init', log_call(zfs_init))
monkeypatch.setattr(focker.focker, 'create_parser', log_call(create_parser))
monkeypatch.setattr(focker.focker, 'command_image_list', log_call(command_image_list))
monkeypatch.setattr(sys, 'argv', ['focker', 'image', 'list'])
main()
assert len(log) == 4
assert 'focker_lock' in log
assert 'zfs_init' in log
assert 'create_parser' in log
assert 'command_image_list' in log
def test_focker_main_02(monkeypatch):
log = defaultdict(list)
def log_call(fun):
def inner(*args, **kwargs):
log[fun.__name__].append((args, kwargs))
return fun(*args, **kwargs)
return inner
monkeypatch.setattr(sys, 'argv', ['focker'])
monkeypatch.setattr(sys, 'exit', log_call(sys.exit))
with pytest.raises(SystemExit):
main()
assert len(log) == 1
assert 'exit' in log

Loading…
Отказ
Запис