Is all of this locale/encoding testing necessary (or even sufficient)?
```python
import json
import locale
import os
def get_default_encoding():
"""
TODO XXX: ???
"""
default_encoding = locale.getdefaultlocale()[1]
if default_encoding.startswith("UTF-"):
return default_encoding
else:
return "UTF-8"
def dumpf(obj, path, *args, **kwargs):
with open(
os.fspath(path),
"w",
encoding=kwargs.pop("encoding", get_default_encoding()),
) as file_:
return json.dump(obj, file_, *args, **kwargs)
def loadf(path, *args, **kwargs):
with open(
os.fspath(path),
"r",
encoding=kwargs.pop("encoding", get_default_encoding()),
) as file_:
return json.load(file_, *args, **kwargs)
import pathlib
import unittest
class TestJsonLoadfAndDumpf(unittest.TestCase):
def setUp(self):
self.locales = ["", "C", "en_US.UTF-8", "japanese"]
self.encodings = [None, "UTF-8", "UTF-16", "UTF-32"]
data = dict(
obj=dict(a=dict(b=[1, 2, 3])),
encoding=None,
path=pathlib.Path(".") / "test_loadf_and_dumpf.json",
)
if os.path.isfile(data["path"]):
os.unlink(data["path"])
self.data = data
self.previous_locale = locale.getlocale()
def tearDown(self):
locale.setlocale(locale.LC_ALL, self.previous_locale)
def test_get_default_encoding(self):
for localestr in self.locales:
locale.setlocale(locale.LC_ALL, localestr)
output = get_default_encoding()
assert output.startswith("UTF-")
def test_dumpf_and_loadf(self):
data = self.data
for localestr in self.locales:
locale.setlocale(locale.LC_ALL, localestr)
for encoding in self.encodings:
dumpf_output = dumpf(
data["obj"], data["path"], encoding=encoding
)
loadf_output = loadf(data["path"], encoding=encoding)
assert loadf_output == data["obj"]
```