diff options
author | João Valverde <j@v6e.pt> | 2023-06-24 14:54:03 +0100 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2023-06-26 00:46:18 +0000 |
commit | bd25b9f4cdce820dcb1951fd3c0acff6c5306d6b (patch) | |
tree | 516b2768d7d08e1e49cd94ff971e98da42ca3e5e /test/suite_dfilter | |
parent | bf9c4ff0fff01f46affa4c130cf9c4fce84c4bfa (diff) |
dfilter: Make string slices a return an FT_STRING
Allow string slices (indexing) to work with internationalized
strings. The old behavior of indexing on byte boundaries can
be obtained using raw slices.
Diffstat (limited to 'test/suite_dfilter')
-rw-r--r-- | test/suite_dfilter/dfiltertest.py | 15 | ||||
-rw-r--r-- | test/suite_dfilter/group_string.py | 42 |
2 files changed, 52 insertions, 5 deletions
diff --git a/test/suite_dfilter/dfiltertest.py b/test/suite_dfilter/dfiltertest.py index c464c5edaa..6a92c8f337 100644 --- a/test/suite_dfilter/dfiltertest.py +++ b/test/suite_dfilter/dfiltertest.py @@ -8,7 +8,7 @@ import pytest @pytest.fixture def dfilter_cmd(cmd_tshark, capture_file, request): - def wrapped(dfilter, frame_number=None): + def wrapped(dfilter, frame_number=None, prefs=None): cmd = [ cmd_tshark, "-n", # No name resolution @@ -24,6 +24,11 @@ def dfilter_cmd(cmd_tshark, capture_file, request): "-Y", # packet display filter (used to be -R) dfilter ]) + if prefs: + cmd.extend([ + "-o", + prefs + ]) return cmd return wrapped @@ -34,9 +39,9 @@ def cmd_dftest(program): @pytest.fixture def checkDFilterCount(dfilter_cmd, base_env): - def checkDFilterCount_real(dfilter, expected_count): + def checkDFilterCount_real(dfilter, expected_count, prefs=None): """Run a display filter and expect a certain number of packets.""" - output = subprocess.check_output(dfilter_cmd(dfilter), + output = subprocess.check_output(dfilter_cmd(dfilter, prefs=prefs), universal_newlines=True, stderr=subprocess.STDOUT, env=base_env) @@ -49,9 +54,9 @@ def checkDFilterCount(dfilter_cmd, base_env): @pytest.fixture def checkDFilterCountWithSelectedFrame(dfilter_cmd, base_env): - def checkDFilterCount_real(dfilter, expected_count, selected_frame): + def checkDFilterCount_real(dfilter, expected_count, selected_frame, prefs=None): """Run a display filter and expect a certain number of packets.""" - output = subprocess.check_output(dfilter_cmd(dfilter, frame_number=selected_frame), + output = subprocess.check_output(dfilter_cmd(dfilter, frame_number=selected_frame, prefs=prefs), universal_newlines=True, stderr=subprocess.STDOUT, env=base_env) diff --git a/test/suite_dfilter/group_string.py b/test/suite_dfilter/group_string.py index e8694010ce..8d77b3e662 100644 --- a/test/suite_dfilter/group_string.py +++ b/test/suite_dfilter/group_string.py @@ -196,3 +196,45 @@ class TestDfilterStringz: def test_stringz_3(self, checkDFilterCount): dfilter = 'tftp.type == junk' checkDFilterCount(dfilter, 0) + +class TestDfilterStringIndex: + trace_file = "data-utf8.pcap" + + def test_index_1(self, checkDFilterCount): + dfilter = 'data.text[3] == "á"' + prefs = "data.show_as_text:true" + checkDFilterCount(dfilter, 1, prefs) + + def test_index_2(self, checkDFilterCount): + dfilter = 'data.text[3] == "a"' + prefs = "data.show_as_text:true" + checkDFilterCount(dfilter, 0, prefs) + + def test_index_3(self, checkDFilterCount): + dfilter = 'data.text[40:] == "cão preguiçoso"' + prefs = "data.show_as_text:true" + checkDFilterCount(dfilter, 1, prefs) + + def test_index_4(self, checkDFilterCount): + # Byte offset + dfilter = '@data.text[41:] == "cão preguiçoso"' + prefs = "data.show_as_text:true" + checkDFilterCount(dfilter, 1, prefs) + + def test_index_5(self, checkDFilterCount): + # Byte offset + dfilter = '@data.text[41:] == 63:c3:a3:6f:20:70:72:65:67:75:69:c3:a7:6f:73:6f' + prefs = "data.show_as_text:true" + checkDFilterCount(dfilter, 1, prefs) + + def test_strlen_1(self, checkDFilterCount): + dfilter = 'len(data.text) == 54' + prefs = "data.show_as_text:true" + checkDFilterCount(dfilter, 1, prefs) + + def test_strlen_2(self, checkDFilterCount): + # Byte length + dfilter = 'len(@data.text) == 57' + prefs = "data.show_as_text:true" + checkDFilterCount(dfilter, 1, prefs) + |