aboutsummaryrefslogtreecommitdiffstats
path: root/test/suite_unittests.py
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2018-05-04 15:14:10 -0700
committerGerald Combs <gerald@wireshark.org>2018-05-05 16:10:24 +0000
commit230d7d4e907d4083306bb9b84f46d5f498719a5a (patch)
tree9a95c6942b957b6b145f4a86b03bd86192241286 /test/suite_unittests.py
parent15cfc41e9441c648caf10483520ba3503f2824a0 (diff)
Test: Integrate ftsanity directly into our tests.
Move tools/ftsanity.py to test/suite_unittests.py. Change-Id: I8582b19c0544d032eb0566bc1e82be385e904c11 Reviewed-on: https://code.wireshark.org/review/27341 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'test/suite_unittests.py')
-rw-r--r--test/suite_unittests.py60
1 files changed, 48 insertions, 12 deletions
diff --git a/test/suite_unittests.py b/test/suite_unittests.py
index 0c4c3fcc43..8c3fc59ee0 100644
--- a/test/suite_unittests.py
+++ b/test/suite_unittests.py
@@ -1,7 +1,9 @@
#
# -*- coding: utf-8 -*-
# Wireshark tests
-# By Gerald Combs <gerald@wireshark.org>
+# By
+# Gerald Combs <gerald@wireshark.org>
+# Gilbert Ramirez <gram [AT] alumni.rice.edu>
#
# Ported from a set of Bash scripts which were copyright 2005 Ulf Lamping
#
@@ -12,7 +14,6 @@
import config
import os.path
import subprocesstest
-import sys
import unittest
class case_unittests(subprocesstest.SubprocessTestCase):
@@ -44,16 +45,51 @@ class case_unittests(subprocesstest.SubprocessTestCase):
'--verbose'
))
- def test_unit_ftsanity(self):
- '''ftsanity.py'''
- fts_cmd = [
- os.path.join(config.tools_dir, 'ftsanity.py'),
- config.cmd_tshark
- ]
- if sys.executable:
- fts_cmd.insert(0, sys.executable)
- self.assertRun(fts_cmd)
-
def test_unit_fieldcount(self):
'''fieldcount'''
self.assertRun((config.cmd_tshark, '-G', 'fieldcount'))
+
+class Proto:
+ """Data for a protocol."""
+ def __init__(self, line):
+ data = line.split("\t")
+ assert len(data) == 3, "expected 3 columns in %s" % data
+ assert data[0] == "P"
+ self.name = data[1]
+ self.abbrev = data[2]
+
+class Field:
+ """Data for a field."""
+ def __init__(self, line):
+ data = line.split("\t")
+ assert len(data) == 8, "expected 8 columns in %s" % data
+ assert data[0] == "F"
+ self.name = data[1]
+ self.abbrev = data[2]
+ self.ftype = data[3]
+ self.parent = data[4]
+ self.base = data[5]
+ self.bitmask = int(data[6],0)
+ self.blurb = data[7]
+
+class case_unit_ftsanity(subprocesstest.SubprocessTestCase):
+ def test_unit_ftsanity(self):
+ """Looks for problems in field type definitions."""
+ tshark_proc = self.assertRun((config.cmd_tshark, "-G", "fields"))
+
+ lines = tshark_proc.stdout_str.splitlines()
+ # XXX We don't currently check protos.
+ protos = [Proto(x) for x in lines if x[0] == "P"]
+ fields = [Field(x) for x in lines if x[0] == "F"]
+
+ err_list = []
+ for field in fields:
+ if field.bitmask != 0:
+ if field.ftype.find("FT_UINT") != 0 and \
+ field.ftype.find("FT_INT") != 0 and \
+ field.ftype != "FT_BOOLEAN" and \
+ field.ftype != "FT_CHAR":
+ err_list.append("%s has a bitmask 0x%x but is type %s" % \
+ (field.abbrev, field.bitmask, field.ftype))
+
+ self.assertEqual(len(err_list), 0, 'Found field type errors: \n' + '\n'.join(err_list))