__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.
"""
Tests for L{twisted.internet.serialport}.
"""
import os
import shutil
import tempfile
from twisted.internet.protocol import Protocol
from twisted.internet.test.test_serialport import DoNothing
from twisted.python.failure import Failure
from twisted.python.runtime import platform
from twisted.trial import unittest
testingForced = "TWISTED_FORCE_SERIAL_TESTS" in os.environ
try:
import serial
from twisted.internet import serialport
except ImportError:
if testingForced:
raise
serialport = None # type: ignore[assignment]
serial = None
if serialport is not None:
class RegularFileSerial(serial.Serial):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.captured_args = args
self.captured_kwargs = kwargs
def _reconfigurePort(self):
pass
def _reconfigure_port(self):
pass
class RegularFileSerialPort(serialport.SerialPort):
_serialFactory = RegularFileSerial
def __init__(self, *args, **kwargs):
cbInQue = kwargs.get("cbInQue")
if "cbInQue" in kwargs:
del kwargs["cbInQue"]
self.comstat = serial.win32.COMSTAT
self.comstat.cbInQue = cbInQue
super().__init__(*args, **kwargs)
def _clearCommError(self):
return True, self.comstat
class CollectReceivedProtocol(Protocol):
def __init__(self):
self.received_data = []
def dataReceived(self, data):
self.received_data.append(data)
class Win32SerialPortTests(unittest.TestCase):
"""
Minimal testing for Twisted's Win32 serial port support.
"""
if not testingForced:
if not platform.isWindows():
skip = "This test must run on Windows."
elif not serialport:
skip = "Windows serial port support is not available."
def setUp(self):
# Re-usable protocol and reactor
self.protocol = Protocol()
self.reactor = DoNothing()
self.directory = tempfile.mkdtemp()
self.path = os.path.join(self.directory, "fake_serial")
data = b"1234"
with open(self.path, "wb") as f:
f.write(data)
def tearDown(self):
shutil.rmtree(self.directory)
def test_serialPortDefaultArgs(self):
"""
Test correct positional and keyword arguments have been
passed to the C{serial.Serial} object.
"""
port = RegularFileSerialPort(self.protocol, self.path, self.reactor)
# Validate args
self.assertEqual((self.path,), port._serial.captured_args)
# Validate kwargs
kwargs = port._serial.captured_kwargs
self.assertEqual(9600, kwargs["baudrate"])
self.assertEqual(serial.EIGHTBITS, kwargs["bytesize"])
self.assertEqual(serial.PARITY_NONE, kwargs["parity"])
self.assertEqual(serial.STOPBITS_ONE, kwargs["stopbits"])
self.assertEqual(0, kwargs["xonxoff"])
self.assertEqual(0, kwargs["rtscts"])
self.assertEqual(None, kwargs["timeout"])
port.connectionLost(Failure(Exception("Cleanup")))
def test_serialPortInitiallyConnected(self):
"""
Test the port is connected at initialization time, and
C{Protocol.makeConnection} has been called on the desired protocol.
"""
self.assertEqual(0, self.protocol.connected)
port = RegularFileSerialPort(self.protocol, self.path, self.reactor)
self.assertEqual(1, port.connected)
self.assertEqual(1, self.protocol.connected)
self.assertEqual(port, self.protocol.transport)
port.connectionLost(Failure(Exception("Cleanup")))
def common_exerciseHandleAccess(self, cbInQue):
port = RegularFileSerialPort(
protocol=self.protocol,
deviceNameOrPortNumber=self.path,
reactor=self.reactor,
cbInQue=cbInQue,
)
port.serialReadEvent()
port.write(b"")
port.write(b"abcd")
port.write(b"ABCD")
port.serialWriteEvent()
port.serialWriteEvent()
port.connectionLost(Failure(Exception("Cleanup")))
# No assertion since the point is simply to make sure that in all cases
# the port handle resolves instead of raising an exception.
def test_exerciseHandleAccess_1(self):
self.common_exerciseHandleAccess(cbInQue=False)
def test_exerciseHandleAccess_2(self):
self.common_exerciseHandleAccess(cbInQue=True)
def common_serialPortReturnsBytes(self, cbInQue):
protocol = CollectReceivedProtocol()
port = RegularFileSerialPort(
protocol=protocol,
deviceNameOrPortNumber=self.path,
reactor=self.reactor,
cbInQue=cbInQue,
)
port.serialReadEvent()
self.assertTrue(all(isinstance(d, bytes) for d in protocol.received_data))
port.connectionLost(Failure(Exception("Cleanup")))
def test_serialPortReturnsBytes_1(self):
self.common_serialPortReturnsBytes(cbInQue=False)
def test_serialPortReturnsBytes_2(self):
self.common_serialPortReturnsBytes(cbInQue=True)
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| __pycache__ | Folder | 0755 |
|
|
| fake_CAs | Folder | 0755 |
|
|
| __init__.py | File | 112 B | 0644 |
|
| _posixifaces.py | File | 4.29 KB | 0644 |
|
| _win32ifaces.py | File | 3.88 KB | 0644 |
|
| connectionmixins.py | File | 19.71 KB | 0644 |
|
| fakeendpoint.py | File | 1.62 KB | 0644 |
|
| modulehelpers.py | File | 1.63 KB | 0644 |
|
| process_cli.py | File | 547 B | 0644 |
|
| process_connectionlost.py | File | 126 B | 0644 |
|
| process_gireactornocompat.py | File | 792 B | 0644 |
|
| process_helper.py | File | 1.22 KB | 0644 |
|
| reactormixins.py | File | 16.05 KB | 0644 |
|
| test_abstract.py | File | 2.15 KB | 0644 |
|
| test_address.py | File | 8.07 KB | 0644 |
|
| test_asyncioreactor.py | File | 9.7 KB | 0644 |
|
| test_base.py | File | 14.44 KB | 0644 |
|
| test_baseprocess.py | File | 2.53 KB | 0644 |
|
| test_cfreactor.py | File | 3.09 KB | 0644 |
|
| test_core.py | File | 10.86 KB | 0644 |
|
| test_default.py | File | 3.5 KB | 0644 |
|
| test_defer_await.py | File | 6.66 KB | 0644 |
|
| test_defer_yieldfrom.py | File | 4.79 KB | 0644 |
|
| test_endpoints.py | File | 147.25 KB | 0644 |
|
| test_epollreactor.py | File | 7.15 KB | 0644 |
|
| test_error.py | File | 1.08 KB | 0644 |
|
| test_fdset.py | File | 13.18 KB | 0644 |
|
| test_filedescriptor.py | File | 2.7 KB | 0644 |
|
| test_gireactor.py | File | 7.18 KB | 0644 |
|
| test_glibbase.py | File | 3.02 KB | 0644 |
|
| test_inlinecb.py | File | 11.21 KB | 0644 |
|
| test_inotify.py | File | 18.13 KB | 0644 |
|
| test_iocp.py | File | 7.52 KB | 0644 |
|
| test_kqueuereactor.py | File | 1.93 KB | 0644 |
|
| test_main.py | File | 1.32 KB | 0644 |
|
| test_newtls.py | File | 6.38 KB | 0644 |
|
| test_pollingfile.py | File | 1.28 KB | 0644 |
|
| test_posixbase.py | File | 11.56 KB | 0644 |
|
| test_posixprocess.py | File | 10.94 KB | 0644 |
|
| test_process.py | File | 44.6 KB | 0644 |
|
| test_protocol.py | File | 18.08 KB | 0644 |
|
| test_reactormixins.py | File | 1.93 KB | 0644 |
|
| test_resolver.py | File | 19.15 KB | 0644 |
|
| test_serialport.py | File | 1.94 KB | 0644 |
|
| test_sigchld.py | File | 3.25 KB | 0644 |
|
| test_socket.py | File | 9.22 KB | 0644 |
|
| test_stdio.py | File | 6.18 KB | 0644 |
|
| test_tcp.py | File | 105.7 KB | 0644 |
|
| test_testing.py | File | 16.49 KB | 0644 |
|
| test_threads.py | File | 7.94 KB | 0644 |
|
| test_time.py | File | 3.57 KB | 0644 |
|
| test_tls.py | File | 12.54 KB | 0644 |
|
| test_udp.py | File | 16.48 KB | 0644 |
|
| test_udp_internals.py | File | 4.98 KB | 0644 |
|
| test_unix.py | File | 34.04 KB | 0644 |
|
| test_win32events.py | File | 6.3 KB | 0644 |
|
| test_win32serialport.py | File | 5.18 KB | 0644 |
|