aboutsummaryrefslogtreecommitdiffstats
path: root/test/conftest.py
AgeCommit message (Collapse)AuthorFilesLines
2020-11-05Tools+test: Call python3 explicitly.Gerald Combs1-1/+0
PEP 394[1] says, "In cases where the script is expected to be executed outside virtual environments, developers will need to be aware of the following discrepancies across platforms and installation methods: * Older Linux distributions will provide a python command that refers to Python 2, and will likely not provide a python2 command. * Some newer Linux distributions will provide a python command that refers to Python 3. * Some Linux distributions will not provide a python command at all by default, but will provide a python3 command by default." Debian has forced the issue by choosing the third option[2]: "NOTE: Debian testing (bullseye) has removed the "python" package and the '/usr/bin/python' symlink due to the deprecation of Python 2." Switch our shebang from "#!/usr/bin/env python" to "#!/usr/bin/env python3" in some places. Remove some 2/3 version checks if we know we're running under Python 3. Remove the "coding: utf-8" in a bunch of places since that's the default in Python 3. [1]https://www.python.org/dev/peps/pep-0394/#for-python-script-publishers [2]https://wiki.debian.org/Python
2019-01-24Test: enable capture tests by default using the Loopback interfacePeter Wu1-3/+0
Avoid pinging www.wireshark.org, this removes an external dependency. Instead send small UDP datagrams to UDP port 9 (discard) every 50ms. Enable this for all platforms (including macOS and Linux) by default. On Windows the tests requires Npcap and will be skipped with WinPcap. Remove the --capture-interface option since it is no longer needed. Copy WSDG Wireshark Tests Quick Start to README.test and add a link. Change-Id: Id4105a6b1e95407ebf69b871c785c68f9ae26368 Reviewed-on: https://code.wireshark.org/review/31677 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2019-01-21test: fail tests when programs are missingPeter Wu1-0/+3
Building only a subset of programs is not a very common situation, it is more likely that some feature was accidentally disabled. For that reason, fail tests by default unless a program is explicitly permitted to be missing. The '-v' test is now dropped from the Travis tests, the sole reason of adding it was to see which tests got (accidentally) skipped. Change-Id: I725f4508541d8ed980e17d69fb7aee1ad2875d73 Reviewed-on: https://code.wireshark.org/review/31660 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2019-01-05test: allow running pytest without specifying the tests directoryPeter Wu1-2/+7
This allows `pytest` to be executed from the top-level source or build directory (or any other directory below). Change-Id: Ib7af2ea2aaf01319d6839d2dc67228fbb5a7bc34 Reviewed-on: https://code.wireshark.org/review/31370 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-11-16test: convert capture tests to use fixtures, fix tests without dumpcapPeter Wu1-13/+16
Add a new --capture-interface option to pytest, similar to test.py. It will grab some Ethernet interface on Windows. An empty value overrides this and disables capture tests. Remove the test.py --enable-capture option since that is implied by the --capture-interface option. Port the `test.py --program-path` option to pytest and additionally make the pytest look in the current working directory if neither WS_BIN_PATH nor --program-path are specified. Drop config.setProgramPath, this allows tests to be run even if not all binaries are available. With all capture tests converted to fixtures, it is now possible to run tests when Wireshark is not built with libpcap as tests that depend on cmd_dumpcap (or capture_interface) will be skipped. Bug: 14949 Change-Id: Ie802c07904936de4cd30a4c68b6a5139e6680fbd Reviewed-on: https://code.wireshark.org/review/30656 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2018-11-09test: make it possible to use pytest-style test fixturesPeter Wu1-1/+5
Currently all binaries must be available or no tests will be executed. This is inconvenient if you just want to test a single binary (e.g. text2pcap) without having to build epan. The problem is essentially that tests lack dependency annotations. To solve this problem, add the required dependencies as parameters to each test (so-called 'fixtures' in pytest). Skip a test if a binary (such as tshark) is unavailable. As a demonstration, suite_dissection.py is converted. Over time, tests should no longer depend on config.py due to explicit dependencies fixtures (listed in fixtures_ws.py). Since the unittest module does not support such dependency injections, create a small glue for use with pytest and an (incomplete) emulation layer for use with test.py. Tested with pytest 3.8.2 + Python 3.7.0 and pytest 3.0.3 + Python 3.4.3. Python 2.7 is not supported and will fail. Test commands: ~/wireshark/test/test.py -p ~/build/run WS_BIN_PATH=~/build/run pytest ~/wireshark/test -ra Change-Id: I6dc8c28f5c8b7bbc8f4c04838e9bf085cd22eb0b Ping-Bug: 14949 Reviewed-on: https://code.wireshark.org/review/30220 Tested-by: Petri Dish Buildbot Petri-Dish: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-07-17Tests: add minimal pytest supportPeter Wu1-0/+34
pytest is a powerful test framework. The initial motivation is to have much better detailed reporting when a test fails, see for example https://docs.pytest.org/en/latest/ Additionally, it has full parallelization support at the test level (via the pytest-xdist plugin) instead of being limited to the suite level (which currently has to be hard-coded via CMakeLists.txt). Usage with the build dir in /tmp/wsbuild and src dir in /tmp/wireshark: export WS_BIN_PATH=/tmp/wsbuild/run pytest /tmp/wireshark/tests For parallelization support and verbose printing: pip install pytest-xdist pytest -nauto -v /tmp/wireshark/tests To limit yourself to a case based on a pattern: pytest -nauto -v /tmp/wireshark/tests -k test_unit_ctest_coverage Tested on Arch Linux with Python 3.6.5, pytest-3.6.2, xdist-1.22.2. pytest -n8 finished in 82 seconds while ctest -j8 required 87 seconds. Change-Id: I832f4dd9f988d6656df795327e81610accf54b9f Reviewed-on: https://code.wireshark.org/review/28651 Reviewed-by: Gerald Combs <gerald@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>