test: add tests for build.plat.Platform.add_file.
This commit is contained in:
parent
f8f7d83127
commit
fe400b5dbc
|
@ -48,14 +48,16 @@ class Platform(ResourceManager, metaclass=ABCMeta):
|
|||
|
||||
def add_file(self, filename, content):
|
||||
if not isinstance(filename, str):
|
||||
raise TypeError("File name must be a string")
|
||||
raise TypeError("File name must be a string, not {!r}"
|
||||
.format(filename))
|
||||
if filename in self.extra_files:
|
||||
raise ValueError("File {} already exists"
|
||||
raise ValueError("File {!r} already exists"
|
||||
.format(filename))
|
||||
if hasattr(content, "read"):
|
||||
content = content.read()
|
||||
elif not isinstance(content, (str, bytes)):
|
||||
raise TypeError("File contents must be str, bytes, or a file-like object")
|
||||
raise TypeError("File contents must be str, bytes, or a file-like object, not {!r}"
|
||||
.format(content))
|
||||
self.extra_files[filename] = content
|
||||
|
||||
@property
|
||||
|
|
48
nmigen/test/test_build_plat.py
Normal file
48
nmigen/test/test_build_plat.py
Normal file
|
@ -0,0 +1,48 @@
|
|||
from .. import *
|
||||
from ..build.plat import *
|
||||
from .utils import *
|
||||
|
||||
|
||||
class MockPlatform(Platform):
|
||||
resources = []
|
||||
connectors = []
|
||||
|
||||
required_tools = []
|
||||
|
||||
def toolchain_prepare(self, fragment, name, **kwargs):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class PlatformTestCase(FHDLTestCase):
|
||||
def setUp(self):
|
||||
self.platform = MockPlatform()
|
||||
|
||||
def test_add_file_str(self):
|
||||
self.platform.add_file("x.txt", "foo")
|
||||
self.assertEqual(self.platform.extra_files["x.txt"], "foo")
|
||||
|
||||
def test_add_file_bytes(self):
|
||||
self.platform.add_file("x.txt", b"foo")
|
||||
self.assertEqual(self.platform.extra_files["x.txt"], b"foo")
|
||||
|
||||
def test_add_file_io(self):
|
||||
with open(__file__) as f:
|
||||
self.platform.add_file("x.txt", f)
|
||||
with open(__file__) as f:
|
||||
self.assertEqual(self.platform.extra_files["x.txt"], f.read())
|
||||
|
||||
def test_add_file_wrong_filename(self):
|
||||
with self.assertRaises(TypeError,
|
||||
msg="File name must be a string, not 1"):
|
||||
self.platform.add_file(1, "")
|
||||
|
||||
def test_add_file_wrong_contents(self):
|
||||
with self.assertRaises(TypeError,
|
||||
msg="File contents must be str, bytes, or a file-like object, not 1"):
|
||||
self.platform.add_file("foo", 1)
|
||||
|
||||
def test_add_file_wrong_duplicate(self):
|
||||
self.platform.add_file("foo", "")
|
||||
with self.assertRaises(ValueError,
|
||||
msg="File 'foo' already exists"):
|
||||
self.platform.add_file("foo", "bar")
|
Loading…
Reference in a new issue