You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
4.1 KiB
116 lines
4.1 KiB
9 months ago
|
import leapp.libraries.common.multipathutil as lib
|
||
|
|
||
|
|
||
|
def test_no_config():
|
||
|
content = lib.read_config('/this/does/not/exist')
|
||
|
assert content is None
|
||
|
|
||
|
|
||
|
def test_blank_line():
|
||
|
data = lib.LineData('', None, False)
|
||
|
assert data.type == data.TYPE_BLANK
|
||
|
data = lib.LineData(' ', 'devices', True)
|
||
|
assert data.type == data.TYPE_BLANK
|
||
|
data = lib.LineData('# comment at start of line', 'defaults', False)
|
||
|
assert data.type == data.TYPE_BLANK
|
||
|
data = lib.LineData(' ! alternate comment method!!!', 'blacklist', True)
|
||
|
assert data.type == data.TYPE_BLANK
|
||
|
data = lib.LineData('# } still a comment', None, False)
|
||
|
assert data.type == data.TYPE_BLANK
|
||
|
data = lib.LineData(' # "also a comment!"', "multipaths", True)
|
||
|
assert data.type == data.TYPE_BLANK
|
||
|
data = lib.LineData(' "ignore lines starting with a string"', None, False)
|
||
|
assert data.type == data.TYPE_BLANK
|
||
|
|
||
|
|
||
|
def test_section_end():
|
||
|
data = lib.LineData('}', None, False)
|
||
|
assert data.type == data.TYPE_SECTION_END
|
||
|
data = lib.LineData(' } # trailing comment', 'devices', True)
|
||
|
assert data.type == data.TYPE_SECTION_END
|
||
|
data = lib.LineData(' } JUNK AFTERWARDS', 'defaults', False)
|
||
|
assert data.type == data.TYPE_SECTION_END
|
||
|
data = lib.LineData('\t \t} !!tabs', 'multipaths', True)
|
||
|
assert data.type == data.TYPE_SECTION_END
|
||
|
|
||
|
|
||
|
def test_section_start():
|
||
|
sections = ('defaults', 'blacklist', 'blacklist_exceptions', 'devices',
|
||
|
'overrides', 'multipaths')
|
||
|
subsections = {'blacklist': 'device', 'blacklist_exceptions': 'device',
|
||
|
'devices': 'device', 'multipaths': 'multipath'}
|
||
|
for section in sections:
|
||
|
data = lib.LineData(section + ' {', None, False)
|
||
|
assert data.type == data.TYPE_SECTION_START
|
||
|
assert data.section == section
|
||
|
|
||
|
try:
|
||
|
data = lib.LineData('not_a_section {', None, False)
|
||
|
assert False
|
||
|
except ValueError:
|
||
|
pass
|
||
|
|
||
|
data = lib.LineData('defaults # works even without brace', None, False)
|
||
|
assert data.type == data.TYPE_SECTION_START
|
||
|
assert data.section == 'defaults'
|
||
|
|
||
|
data = lib.LineData('\t \tmultipaths { # tabs', None, False)
|
||
|
assert data.type == data.TYPE_SECTION_START
|
||
|
assert data.section == 'multipaths'
|
||
|
|
||
|
data = lib.LineData('devices{ # do not need a space', None, False)
|
||
|
assert data.type == data.TYPE_SECTION_START
|
||
|
assert data.section == 'devices'
|
||
|
|
||
|
for section in subsections:
|
||
|
data = lib.LineData(subsections[section] + ' {', section, False)
|
||
|
assert data.type == data.TYPE_SECTION_START
|
||
|
assert data.section == subsections[section]
|
||
|
|
||
|
data = lib.LineData('devices { # wrong section', 'multipath', False)
|
||
|
assert data.type != data.TYPE_SECTION_START
|
||
|
|
||
|
data = lib.LineData('devices { # already in subsection', 'device', True)
|
||
|
assert data.type != data.TYPE_SECTION_START
|
||
|
|
||
|
|
||
|
def test_option():
|
||
|
data = lib.LineData('key value', 'defaults', False)
|
||
|
assert data.type == data.TYPE_OPTION
|
||
|
assert data.option == 'key'
|
||
|
assert data.value == 'value'
|
||
|
|
||
|
data = lib.LineData('key value # comment', 'devices', True)
|
||
|
assert data.option == 'key'
|
||
|
assert data.value == 'value'
|
||
|
|
||
|
data = lib.LineData(' key value "extra string"', 'multipaths', True)
|
||
|
assert data.option == 'key'
|
||
|
assert data.value == 'value'
|
||
|
|
||
|
data = lib.LineData(' \t\tkey "string value" junk', 'blacklist', False)
|
||
|
assert data.option == 'key'
|
||
|
assert data.value == 'string value'
|
||
|
|
||
|
try:
|
||
|
data = lib.LineData('key # comment', 'devices', True)
|
||
|
assert False
|
||
|
except ValueError:
|
||
|
pass
|
||
|
|
||
|
|
||
|
def test_enabled():
|
||
|
values = (('yes', True), ('1', True), ('no', False), ('0', False))
|
||
|
for value, is_enabled in values:
|
||
|
data = lib.LineData('key ' + value, 'defaults', False)
|
||
|
assert data.type == data.TYPE_OPTION
|
||
|
assert data.option == 'key'
|
||
|
assert data.value == value
|
||
|
assert data.is_enabled() == is_enabled
|
||
|
|
||
|
data = lib.LineData('key neither_yes_nor_no', 'defaults', False)
|
||
|
assert data.type == data.TYPE_OPTION
|
||
|
assert data.option == 'key'
|
||
|
assert data.value == 'neither_yes_nor_no'
|
||
|
assert data.is_enabled() is None
|