mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-17 10:26:15 +00:00
ffbc8cc0f2
In python 3, the default encoding was switched from ascii character sets to unicode character sets in order to support internationalization by default. Some interfaces, like ioctls and packets, however, specify data in terms of non-unicode encodings formats, either in host endian (`fcntl.ioctl`) or network endian (`dpkt`) byte order/format. This change alters assumptions made by previous code where it was all data objects were assumed to be basestrings, when they should have been treated as byte arrays. In order to achieve this the following are done: * str objects with encodings needing to be encoded as ascii byte arrays are done so via `.encode("ascii")`. In order for this to work on python 3 in a type agnostic way (as it anecdotally varied depending on the caller), call `.encode("ascii")` only on str objects with python 3 to cast them to ascii byte arrays in a helper function name `str_to_ascii(..)`. * `dpkt.Packet` objects needing to be passed in to `fcntl.ioctl(..)` are done so by casting them to byte arrays via `bytes()`, which calls `dpkt.Packet__str__` under the covers and does the necessary str to byte array conversion needed for the `dpkt` APIs and `struct` module. In order to accomodate this change, apply the necessary typecasting for the byte array literal in order to search `fop.name` for nul bytes. This resolves all remaining python 2.x and python 3.x compatibility issues on amd64. More work needs to be done for the tests to function with i386, in general (this is a legacy issue). PR: 237403 MFC after: 1 week Tested with: python 2.7.16 (amd64), python 3.6.8 (amd64) |
||
---|---|---|
.. | ||
etc | ||
freebsd_test_suite | ||
sys | ||
Kyuafile | ||
Makefile | ||
Makefile.depend | ||
Makefile.inc0 | ||
README |
src/tests: The FreeBSD test suite ================================= To run the FreeBSD test suite: (1) Make sure that kyua is installed: pkg install kyua (2) To run the tests: kyua test -k /usr/tests/Kyuafile (3) To see the test results: kyua report For further information on using the test suite, read tests(7): man tests Description of FreeBSD test suite ================================= The build of the test suite is organized in the following manner: * The build of all test artifacts is protected by the MK_TESTS knob. The user can disable these with the WITHOUT_TESTS setting in src.conf(5). * The goal for /usr/tests/ (the installed test programs) is to follow the same hierarchy as /usr/src/ wherever possible, which in turn drives several of the design decisions described below. This simplifies the discoverability of tests. We want a mapping such as: /usr/src/bin/cp/ -> /usr/tests/bin/cp/ /usr/src/lib/libc/ -> /usr/tests/lib/libc/ /usr/src/usr.bin/cut/ -> /usr/tests/usr.bin/cut/ ... and many more ... * Test programs for specific utilities and libraries are located next to the source code of such programs. For example, the tests for the src/lib/libcrypt/ library live in src/lib/libcrypt/tests/. The tests/ subdirectory is optional and should, in general, be avoided. * The src/tests/ hierarchy (this directory) provides generic test infrastructure and glue code to join all test programs together into a single test suite definition. * The src/tests/ hierarchy also includes cross-functional test programs: i.e. test programs that cover more than a single utility or library and thus don't fit anywhere else in the tree. Consider this to follow the same rationale as src/share/man/: this directory contains generic manual pages while the manual pages that are specific to individual tools or libraries live next to the source code. In order to keep the src/tests/ hierarchy decoupled from the actual test programs being installed --which is a worthy goal because it simplifies the addition of new test programs and simplifies the maintenance of the tree-- the top-level Kyuafile does not know which subdirectories may exist upfront. Instead, such Kyuafile automatically detects, at run-time, which */Kyuafile files exist and uses those directly. Similarly, every directory in src/ that wants to install a Kyuafile to just recurse into other subdirectories reuses this Kyuafile with auto-discovery features. As an example, take a look at src/lib/tests/ whose sole purpose is to install a Kyuafile into /usr/tests/lib/. The goal in this specific case is for /usr/tests/lib/ to be generated entirely from src/lib/. -- $FreeBSD$