mirror of
https://github.com/certbot/certbot.git
synced 2026-06-03 13:59:02 -04:00
Fix test cases
- but we're still mangling files in place...
This commit is contained in:
parent
b82ebd9180
commit
e76e3a953a
2 changed files with 43 additions and 51 deletions
|
|
@ -1,7 +1,6 @@
|
|||
"""Very low-level nginx config parser based on pyparsing."""
|
||||
import copy
|
||||
import string
|
||||
import sys
|
||||
|
||||
from pyparsing import (
|
||||
Literal, White, Word, alphanums, CharsNotIn, Forward, Group,
|
||||
|
|
@ -68,11 +67,11 @@ class RawNginxDumper(object):
|
|||
def __iter__(self, blocks=None):
|
||||
"""Iterates the dumped nginx content."""
|
||||
blocks = blocks or self.blocks
|
||||
for b in blocks:
|
||||
if isinstance(b, str):
|
||||
yield b
|
||||
for b0 in blocks:
|
||||
if isinstance(b0, str):
|
||||
yield b0
|
||||
continue
|
||||
b = copy.deepcopy(b)
|
||||
b = copy.deepcopy(b0)
|
||||
indentation = ""
|
||||
if spacey(b[0]):
|
||||
indentation = b.pop(0)
|
||||
|
|
@ -96,13 +95,18 @@ class RawNginxDumper(object):
|
|||
gap = ""
|
||||
# Sometimes the parser has stuck some gap whitespace in here;
|
||||
# if so rotate it into gap
|
||||
if spacey(values):
|
||||
if values and spacey(values):
|
||||
gap = values
|
||||
values = b.pop(0)
|
||||
if values is None:
|
||||
yield indentation + key + gap + ';'
|
||||
else:
|
||||
yield indentation + key + gap + values + ';'
|
||||
try:
|
||||
values = b.pop(0)
|
||||
except:
|
||||
import ipdb
|
||||
ipdb.set_trace()
|
||||
#if values is None:
|
||||
# yield indentation + key + gap + ';'
|
||||
#else:
|
||||
# yield indentation + key + gap + values + ';'
|
||||
yield indentation + key + gap + values + ';'
|
||||
|
||||
def __str__(self):
|
||||
"""Return the parsed block as a string."""
|
||||
|
|
@ -168,12 +172,11 @@ class UnspacedList(list):
|
|||
# Turn self into a version of the source list that has spaces removed
|
||||
# and all sub-lists also UnspacedList()ed
|
||||
list.__init__(self, list_source)
|
||||
self.top = self
|
||||
self.top = top if top else self
|
||||
for i, entry in reversed(list(enumerate(self))):
|
||||
if isinstance(entry, list):
|
||||
sublist = UnspacedList(entry, top=self.top)
|
||||
list.__setitem__(self, i, sublist)
|
||||
assert type(self.spaced) == list, "Type madness %r" % type(self.spaced)
|
||||
self.spaced[i] = sublist.spaced
|
||||
elif spacey(entry):
|
||||
list.__delitem__(self, i)
|
||||
|
|
@ -186,18 +189,11 @@ class UnspacedList(list):
|
|||
list.insert(self, i, x)
|
||||
|
||||
def append(self, x):
|
||||
print "Unspaced append", x, self
|
||||
if hasattr(x, "spaced"):
|
||||
self.spaced.append(x.spaced)
|
||||
else:
|
||||
self.spaced.append(x)
|
||||
list.append(self, x)
|
||||
print "After: aaaaaaaaaaaaaaaaa"
|
||||
print self.top
|
||||
print "Aftertop: bbbbbbbbbbbbbbbbb"
|
||||
print self.top.spaced
|
||||
#import ipdb
|
||||
#ipdb.set_trace()
|
||||
|
||||
def extend(self, x):
|
||||
if hasattr(x, "spaced"):
|
||||
|
|
@ -208,7 +204,6 @@ class UnspacedList(list):
|
|||
list.extend(self, x)
|
||||
|
||||
def __add__(self, other):
|
||||
print "Unspaced add", self, other
|
||||
if hasattr(other, "spaced"):
|
||||
# If the thing added to us is an UnspacedList, use its spaced form
|
||||
self.spaced.__add__(other.spaced)
|
||||
|
|
|
|||
|
|
@ -36,19 +36,20 @@ class TestRawNginxParser(unittest.TestCase):
|
|||
self.assertEqual(FIRST(block), 'foo')
|
||||
|
||||
def test_dump_as_string(self):
|
||||
dumped = dumps([
|
||||
['user', 'www-data'],
|
||||
[['server'], [
|
||||
['listen', '80'],
|
||||
['server_name', 'foo.com'],
|
||||
['root', '/home/ubuntu/sites/foo/'],
|
||||
[['location', '/status'], [
|
||||
['check_status', None],
|
||||
[['types'], [['image/jpeg', 'jpg']]],
|
||||
dumped = dumps(UnspacedList([
|
||||
['user', ' ', 'www-data'],
|
||||
[['\n', 'server', ' '], [
|
||||
['\n ', 'listen', ' ', '80'],
|
||||
['\n ', 'server_name', ' ', 'foo.com'],
|
||||
['\n ', 'root', ' ', '/home/ubuntu/sites/foo/'],
|
||||
[['\n\n ', 'location', ' ', '/status', ' '], [
|
||||
['\n ', 'check_status', ''],
|
||||
[['\n\n ', 'types', ' '],
|
||||
[['\n ', 'image/jpeg', ' ', 'jpg']]],
|
||||
]]
|
||||
]]])
|
||||
]]]))
|
||||
|
||||
self.assertEqual(dumped,
|
||||
self.assertEqual(dumped.split('\n'),
|
||||
'user www-data;\n'
|
||||
'server {\n'
|
||||
' listen 80;\n'
|
||||
|
|
@ -59,10 +60,7 @@ class TestRawNginxParser(unittest.TestCase):
|
|||
' check_status;\n'
|
||||
'\n'
|
||||
' types {\n'
|
||||
' image/jpeg jpg;\n'
|
||||
' }\n'
|
||||
' }\n'
|
||||
'}\n')
|
||||
' image/jpeg jpg;}}}'.split('\n'))
|
||||
|
||||
def test_parse_from_file(self):
|
||||
with open(util.get_data_filename('foo.conf')) as handle:
|
||||
|
|
@ -122,18 +120,17 @@ class TestRawNginxParser(unittest.TestCase):
|
|||
print "Failed on", handle.read()
|
||||
raise
|
||||
#parsed = util.filter_comments(parsed)
|
||||
parsed[-1][-1].append([['server'],
|
||||
[['listen', '443 ssl'],
|
||||
['server_name', 'localhost'],
|
||||
['ssl_certificate', 'cert.pem'],
|
||||
['ssl_certificate_key', 'cert.key'],
|
||||
['ssl_session_cache', 'shared:SSL:1m'],
|
||||
['ssl_session_timeout', '5m'],
|
||||
['ssl_ciphers', 'HIGH:!aNULL:!MD5'],
|
||||
[['location', '/'],
|
||||
[['root', 'html'],
|
||||
['index', 'index.html index.htm']]]]])
|
||||
|
||||
parsed[-1][-1].append(UnspacedList([['server'],
|
||||
[['listen', ' ', '443 ssl'],
|
||||
['server_name', ' ', 'localhost'],
|
||||
['ssl_certificate', ' ', 'cert.pem'],
|
||||
['ssl_certificate_key', ' ', 'cert.key'],
|
||||
['ssl_session_cache', ' ', 'shared:SSL:1m'],
|
||||
['ssl_session_timeout', ' ', '5m'],
|
||||
['ssl_ciphers', ' ', 'HIGH:!aNULL:!MD5'],
|
||||
[['location', ' ', '/'],
|
||||
[['root', ' ', 'html'],
|
||||
['index', ' ', 'index.html index.htm']]]]]))
|
||||
|
||||
with open(util.get_data_filename('nginx.new.conf'), 'w') as handle:
|
||||
dump(parsed, handle)
|
||||
|
|
@ -159,11 +156,11 @@ class TestRawNginxParser(unittest.TestCase):
|
|||
['#', " Use bar.conf when it's a full moon!"],
|
||||
['include', 'foo.conf'],
|
||||
['#', ' Kilroy was here'],
|
||||
['check_status', None],
|
||||
['check_status'],
|
||||
[['server'],
|
||||
[['#', ''],
|
||||
[['#'],
|
||||
['#', " Don't forget to open up your firewall!"],
|
||||
['#', ''],
|
||||
['#'],
|
||||
['listen', '1234'],
|
||||
['#', ' listen 80;']]],
|
||||
])
|
||||
|
|
|
|||
Loading…
Reference in a new issue