Write ConfigParser content as byte (Fixes #369)

This commit is contained in:
Mathieu Comandon 2016-09-28 14:44:32 -07:00
parent f21e4dcb90
commit 19846caebd
2 changed files with 21 additions and 3 deletions

View file

@ -6,7 +6,7 @@ class EvilConfigParser(RawConfigParser):
"""ConfigParser with support for evil INIs using duplicate keys."""
def write(self, fp):
for section in self._sections:
fp.write("[%s]\n" % section)
fp.write("[{}]\n".format(section).encode('utf-8'))
for (key, value) in list(self._sections[section].items()):
if key == "__name__":
continue
@ -14,8 +14,8 @@ class EvilConfigParser(RawConfigParser):
# Duplicated keys writing support inside
key = "=".join((key,
str(value).replace('\n', '\n%s=' % key)))
fp.write("%s\n" % (key))
fp.write("\n")
fp.write("{}\n".format(key).encode('utf-8'))
fp.write("\n".encode('utf-8'))
class MultiOrderedDict(OrderedDict):

View file

@ -1,8 +1,10 @@
import os
from collections import OrderedDict
from unittest import TestCase
from lutris.util import system
from lutris.util import steam
from lutris.util import strings
from lutris.util import fileio
class TestFileUtils(TestCase):
@ -110,3 +112,19 @@ class TestVersionSort(TestCase):
versions = strings.version_sort(versions, reverse=True)
self.assertEqual(versions[0], '1.9')
self.assertEqual(versions[3], '1.6')
class TestEvilConfigParser(TestCase):
def setUp(self):
self.config_path = os.path.join(os.path.dirname(__file__), 'test.ini')
def tearDown(self):
if os.path.exists(self.config_path):
os.remove(self.config_path)
def test_config_parse_can_write_to_disk(self):
parser = fileio.EvilConfigParser(dict_type=fileio.MultiOrderedDict)
parser.add_section('Test')
parser.set('Test', 'key', 'value')
with open(self.config_path, 'wb') as config:
parser.write(config)