@@ -72,6 +72,9 @@ def new_parse_socket_addr(domain, addr): | |||||
tcp_server.parse_socket_addr = new_parse_socket_addr | tcp_server.parse_socket_addr = new_parse_socket_addr | ||||
class SerialConsole(DefROAttribute): | |||||
defattrname = 'console' | |||||
class BoardImpl: | class BoardImpl: | ||||
def __init__(self, name, brdclass, options): | def __init__(self, name, brdclass, options): | ||||
self.name = name | self.name = name | ||||
@@ -825,3 +828,13 @@ class TestBiteLab(unittest.IsolatedAsyncioTestCase): | |||||
'attrs': { 'power': True }, | 'attrs': { 'power': True }, | ||||
} | } | ||||
self.assertEqual(res.json(), info) | self.assertEqual(res.json(), info) | ||||
class TestAttrs(unittest.IsolatedAsyncioTestCase): | |||||
async def test_serialconsole(self): | |||||
data = 'somepath' | |||||
sc = SerialConsole(data) | |||||
self.assertEqual(data, await sc.getvalue()) | |||||
with self.assertRaises(TypeError): | |||||
await sc.setvalue(data) |
@@ -41,5 +41,19 @@ class Attribute: | |||||
async def setvalue(self, v): # pragma: no cover | async def setvalue(self, v): # pragma: no cover | ||||
raise NotImplementedError | raise NotImplementedError | ||||
class ROAttribute(Attribute): | |||||
'''A read-only attribute class. This implements setvalue, but | |||||
raises a TypeError when setvalue is called.''' | |||||
async def setvalue(self, v): | |||||
raise TypeError('%s is read-only.' % self.__class__.__name__) | |||||
class DefROAttribute(ROAttribute): | |||||
def __init__(self, val): | |||||
self._value = val | |||||
async def getvalue(self): | |||||
return self._value | |||||
class Power(Attribute): | class Power(Attribute): | ||||
defattrname = 'power' | defattrname = 'power' |
@@ -30,5 +30,5 @@ | |||||
from .snmp import TestSNMPPower, TestSNMPWrapper | from .snmp import TestSNMPPower, TestSNMPWrapper | ||||
from .data import TestDatabase | from .data import TestDatabase | ||||
from . import TestBiteLab, TestUnhashLRU | |||||
from . import TestBiteLab, TestUnhashLRU, TestAttrs | |||||
from .__main__ import TestClient | from .__main__ import TestClient |