Skip to content

Commit

Permalink
test: add tests for build.plat.Platform.add_file.
Browse files Browse the repository at this point in the history
  • Loading branch information
whitequark committed Nov 15, 2019
1 parent f8f7d83 commit fe400b5
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 3 deletions.
8 changes: 5 additions & 3 deletions nmigen/build/plat.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,16 @@ def default_clk_frequency(self):

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
Expand Down
48 changes: 48 additions & 0 deletions nmigen/test/test_build_plat.py
Original file line number Diff line number Diff line change
@@ -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")

0 comments on commit fe400b5

Please sign in to comment.