|
44 | 44 | except ModuleNotFoundError:
|
45 | 45 | asammdf = None
|
46 | 46 |
|
| 47 | +try: |
| 48 | + import pcapng |
| 49 | +except ModuleNotFoundError: |
| 50 | + pcapng = None |
| 51 | + |
47 | 52 |
|
48 | 53 | @contextmanager
|
49 | 54 | def override_locale(category: int, locale_str: str) -> None:
|
@@ -103,6 +108,13 @@ def test_extension_matching_mf4(self):
|
103 | 108 | if asammdf is not None:
|
104 | 109 | raise
|
105 | 110 |
|
| 111 | + def test_extension_matching_pcapng(self): |
| 112 | + try: |
| 113 | + self._test_extension(".pcapng") |
| 114 | + except NotImplementedError: |
| 115 | + if pcapng is not None: |
| 116 | + raise |
| 117 | + |
106 | 118 |
|
107 | 119 | class ReaderWriterTest(unittest.TestCase, ComparingMessagesTestCase, metaclass=ABCMeta):
|
108 | 120 | """Tests a pair of writer and reader by writing all data first and
|
@@ -859,6 +871,28 @@ def _setup_instance(self):
|
859 | 871 | )
|
860 | 872 |
|
861 | 873 |
|
| 874 | +@unittest.skipIf(pcapng is None, "pcapng is unavailable") |
| 875 | +class TestPcapngFileFormat(ReaderWriterTest): |
| 876 | + """Tests can.PcapngWriter and can.PcapngReader""" |
| 877 | + |
| 878 | + def _setup_instance(self): |
| 879 | + super()._setup_instance_helper( |
| 880 | + can.PcapngWriter, |
| 881 | + can.PcapngReader, |
| 882 | + binary_file=True, |
| 883 | + check_remote_frames=True, |
| 884 | + check_error_frames=True, |
| 885 | + check_fd=True, |
| 886 | + check_comments=False, |
| 887 | + test_append=True, |
| 888 | + # default unit is nanoseconds, yet float causes smaller tolerance to fail |
| 889 | + allowed_timestamp_delta=1e-6, |
| 890 | + # It preserves channels, however adds_default_channel doesn't work properly |
| 891 | + preserves_channel=False, |
| 892 | + adds_default_channel="can0", |
| 893 | + ) |
| 894 | + |
| 895 | + |
862 | 896 | class TestSqliteDatabaseFormat(ReaderWriterTest):
|
863 | 897 | """Tests can.SqliteWriter and can.SqliteReader"""
|
864 | 898 |
|
|
0 commit comments