€•µ¬Œsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ"/translations/zh_CN/dev-tools/ktap”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ"/translations/zh_TW/dev-tools/ktap”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ"/translations/it_IT/dev-tools/ktap”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ"/translations/ja_JP/dev-tools/ktap”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ"/translations/ko_KR/dev-tools/ktap”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ"/translations/pt_BR/dev-tools/ktap”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ"/translations/sp_SP/dev-tools/ktap”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³Œ`_. The Linux Kernel largely uses TAP output for test results. However, Kernel testing frameworks have special needs for test results which don't align with the original TAP specification. Thus, a "Kernel TAP" (KTAP) format is specified to extend and alter TAP to support these use-cases. This specification describes the generally accepted format of KTAP as it is currently used in the kernel.”h]”(hŒ™TAP, or the Test Anything Protocol is a format for specifying test results used by a number of projects. Its website and specification are found at this ”…”�”}”(hhßh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ#`link `_”h]”hŒlink”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œlink”Œrefuri”Œhttps://testanything.org/”uh1hçhhßubhŒtarget”“”)�”}”(hŒ ”h]”h}”(h]”Œlink”ah ]”h"]”Œlink”ah$]”h&]”Œrefuri”húuh1hûŒ referenced”KhhßubhXŽ. The Linux Kernel largely uses TAP output for test results. However, Kernel testing frameworks have special needs for test results which don’t align with the original TAP specification. Thus, a “Kernel TAPâ€� (KTAP) format is specified to extend and alter TAP to support these use-cases. This specification describes the generally accepted format of KTAP as it is currently used in the kernel.”…”�”}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hX@KTAP test results describe a series of tests (which may be nested: i.e., test can have subtests), each of which can contain both diagnostic data -- e.g., log lines -- and a final result. The test structure and results are machine-readable, whereas the diagnostic data is unstructured and is there to aid human debugging.”h]”hX@KTAP test results describe a series of tests (which may be nested: i.e., test can have subtests), each of which can contain both diagnostic data -- e.g., log lines -- and a final result. The test structure and results are machine-readable, whereas the diagnostic data is unstructured and is there to aid human debugging.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒ8KTAP output is built from four different types of lines:”h]”hŒ8KTAP output is built from four different types of lines:”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒ Version lines”h]”hÞ)�”}”(hj:h]”hŒ Version lines”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒ Plan lines”h]”hÞ)�”}”(hjQh]”hŒ Plan lines”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒTest case result lines”h]”hÞ)�”}”(hjhh]”hŒTest case result lines”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubj7)�”}”(hŒDiagnostic lines ”h]”hÞ)�”}”(hŒDiagnostic lines”h]”hŒDiagnostic lines”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj3h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j1h³hÇh´KhhÊh²hubhÞ)�”}”(hXQIn general, valid KTAP output should also form valid TAP output, but some information, in particular nested test results, may be lost. Also note that there is a stagnant draft specification for TAP14, KTAP diverges from this in a couple of places (notably the "Subtest" header), which are described where relevant later in this document.”h]”hXUIn general, valid KTAP output should also form valid TAP output, but some information, in particular nested test results, may be lost. Also note that there is a stagnant draft specification for TAP14, KTAP diverges from this in a couple of places (notably the “Subtestâ€� header), which are described where relevant later in this document.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Version lines”h]”hŒ Version lines”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj«h²hh³hÇh´K$ubhÞ)�”}”(hŒ‰All KTAP-formatted results begin with a "version line" which specifies which version of the (K)TAP standard the result is compliant with.”h]”hŒ�All KTAP-formatted results begin with a “version lineâ€� which specifies which version of the (K)TAP standard the result is compliant with.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K&hj«h²hubhÞ)�”}”(hŒ For example:”h]”hŒ For example:”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hj«h²hubj2)�”}”(hhh]”(j7)�”}”(hŒ"KTAP version 1"”h]”hÞ)�”}”(hjÝh]”hŒ“KTAP version 1â€�”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjØh²hh³hÇh´Nubj7)�”}”(hŒ"TAP version 13"”h]”hÞ)�”}”(hjôh]”hŒ“TAP version 13â€�”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K,hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjØh²hh³hÇh´Nubj7)�”}”(hŒ"TAP version 14" ”h]”hÞ)�”}”(hŒ"TAP version 14"”h]”hŒ“TAP version 14â€�”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjØh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j›jœuh1j1h³hÇh´K+hj«h²hubhÞ)�”}”(hŒ¯Note that, in KTAP, subtests also begin with a version line, which denotes the start of the nested test results. This differs from TAP14, which uses a separate "Subtest" line.”h]”hŒ³Note that, in KTAP, subtests also begin with a version line, which denotes the start of the nested test results. This differs from TAP14, which uses a separate “Subtestâ€� line.”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hj«h²hubhÞ)�”}”(hŒÝWhile, going forward, "KTAP version 1" should be used by compliant tests, it is expected that most parsers and other tooling will accept the other versions listed here for compatibility with existing tests and frameworks.”h]”hŒáWhile, going forward, “KTAP version 1â€� should be used by compliant tests, it is expected that most parsers and other tooling will accept the other versions listed here for compatibility with existing tests and frameworks.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hj«h²hubeh}”(h]”Œ version-lines”ah ]”h"]”Œ version lines”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K$ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Plan lines”h]”hŒ Plan lines”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjKh²hh³hÇh´K8ubhÞ)�”}”(hŒJA test plan provides the number of tests (or subtests) in the KTAP output.”h]”hŒJA test plan provides the number of tests (or subtests) in the KTAP output.”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjKh²hubhÞ)�”}”(hŒŸPlan lines must follow the format of "1..N" where N is the number of tests or subtests. Plan lines follow version lines to indicate the number of nested tests.”h]”hŒ£Plan lines must follow the format of “1..Nâ€� where N is the number of tests or subtests. Plan lines follow version lines to indicate the number of nested tests.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K [][ # [] []]”h]”hŒG [][ # [] []]”…”�”}”hj¯sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”Œnone”Œhighlight_args”}”uh1j­h³hÇh´KIhjŽh²hubhÞ)�”}”(hŒ|The result can be either "ok", which indicates the test case passed, or "not ok", which indicates that the test case failed.”h]”hŒ„The result can be either “okâ€�, which indicates the test case passed, or “not okâ€�, which indicates that the test case failed.”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KMhjŽh²hubhÞ)�”}”(hŒÔ represents the number of the test being performed. The first test must have the number 1 and the number then must increase by 1 for each additional subtest within the same test at the same nesting level.”h]”hŒÔ represents the number of the test being performed. The first test must have the number 1 and the number then must increase by 1 for each additional subtest within the same test at the same nesting level.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhjŽh²hubhÞ)�”}”(hŒ»The description is a description of the test, generally the name of the test, and can be any string of characters other than # or a newline. The description is optional, but recommended.”h]”hŒ»The description is a description of the test, generally the name of the test, and can be any string of characters other than # or a newline. The description is optional, but recommended.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KThjŽh²hubhÞ)�”}”(hŒlThe directive and any diagnostic data is optional. If either are present, they must follow a hash sign, "#".”h]”hŒpThe directive and any diagnostic data is optional. If either are present, they must follow a hash sign, “#â€�.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhjŽh²hubhÞ)�”}”(hX8A directive is a keyword that indicates a different outcome for a test other than passed and failed. The directive is optional, and consists of a single keyword preceding the diagnostic data. In the event that a parser encounters a directive it doesn't support, it should fall back to the "ok" / "not ok" result.”h]”hXBA directive is a keyword that indicates a different outcome for a test other than passed and failed. The directive is optional, and consists of a single keyword preceding the diagnostic data. In the event that a parser encounters a directive it doesn’t support, it should fall back to the “okâ€� / “not okâ€� result.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K[hjŽh²hubhÞ)�”}”(hŒ"Currently accepted directives are:”h]”hŒ"Currently accepted directives are:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KahjŽh²hubj2)�”}”(hhh]”(j7)�”}”(hŒ–"SKIP", which indicates a test was skipped (note the result of the test case result line can be either "ok" or "not ok" if the SKIP directive is used)”h]”hÞ)�”}”(hŒ–"SKIP", which indicates a test was skipped (note the result of the test case result line can be either "ok" or "not ok" if the SKIP directive is used)”h]”hŒ¢â€œSKIPâ€�, which indicates a test was skipped (note the result of the test case result line can be either “okâ€� or “not okâ€� if the SKIP directive is used)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kchjubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hŒÚ"TODO", which indicates that a test is not expected to pass at the moment, e.g. because the feature it is testing is known to be broken. While this directive is inherited from TAP, its use in the kernel is discouraged.”h]”hÞ)�”}”(hŒÚ"TODO", which indicates that a test is not expected to pass at the moment, e.g. because the feature it is testing is known to be broken. While this directive is inherited from TAP, its use in the kernel is discouraged.”h]”hŒÞ“TODOâ€�, which indicates that a test is not expected to pass at the moment, e.g. because the feature it is testing is known to be broken. While this directive is inherited from TAP, its use in the kernel is discouraged.”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kehj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hŒ€"XFAIL", which indicates that a test is expected to fail. This is similar to "TODO", above, and is used by some kselftest tests.”h]”hÞ)�”}”(hŒ€"XFAIL", which indicates that a test is expected to fail. This is similar to "TODO", above, and is used by some kselftest tests.”h]”hŒˆâ€œXFAILâ€�, which indicates that a test is expected to fail. This is similar to “TODOâ€�, above, and is used by some kselftest tests.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hŒšâ€œTIMEOUTâ€�, which indicates a test has timed out (note the result of the test case result line should be “not okâ€� if the TIMEOUT directive is used)”h]”hÞ)�”}”(hŒšâ€œTIMEOUTâ€�, which indicates a test has timed out (note the result of the test case result line should be “not okâ€� if the TIMEOUT directive is used)”h]”hŒšâ€œTIMEOUTâ€�, which indicates a test has timed out (note the result of the test case result line should be “not okâ€� if the TIMEOUT directive is used)”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kjhjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubj7)�”}”(hŒë“ERRORâ€�, which indicates that the execution of a test has failed due to a specific error that is included in the diagnostic data. (note the result of the test case result line should be “not okâ€� if the ERROR directive is used) ”h]”hÞ)�”}”(hŒê“ERRORâ€�, which indicates that the execution of a test has failed due to a specific error that is included in the diagnostic data. (note the result of the test case result line should be “not okâ€� if the ERROR directive is used)”h]”hŒê“ERRORâ€�, which indicates that the execution of a test has failed due to a specific error that is included in the diagnostic data. (note the result of the test case result line should be “not okâ€� if the ERROR directive is used)”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Klhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j›jœuh1j1h³hÇh´KchjŽh²hubhÞ)�”}”(hŒíThe diagnostic data is a plain-text field which contains any additional details about why this result was produced. This is typically an error message for ERROR or failed tests, or a description of missing dependencies for a SKIP result.”h]”hŒíThe diagnostic data is a plain-text field which contains any additional details about why this result was produced. This is typically an error message for ERROR or failed tests, or a description of missing dependencies for a SKIP result.”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KphjŽh²hubhÞ)�”}”(hŒ™The diagnostic data field is optional, and results which have neither a directive nor any diagnostic data do not need to include the "#" field separator.”h]”hŒ�The diagnostic data field is optional, and results which have neither a directive nor any diagnostic data do not need to include the “#â€� field separator.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KthjŽh²hubhÞ)�”}”(hŒExample result lines include::”h]”hŒExample result lines include:”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KxhjŽh²hubj®)�”}”(hŒok 1 test_case_name”h]”hŒok 1 test_case_name”…”�”}”hjÁsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´KzhjŽh²hubhÞ)�”}”(hŒ!The test "test_case_name" passed.”h]”hŒ%The test “test_case_nameâ€� passed.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K|hjŽh²hubj®)�”}”(hŒnot ok 1 test_case_name”h]”hŒnot ok 1 test_case_name”…”�”}”hjÝsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´K€hjŽh²hubhÞ)�”}”(hŒ!The test "test_case_name" failed.”h]”hŒ%The test “test_case_nameâ€� failed.”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K‚hjŽh²hubj®)�”}”(hŒ1ok 1 test # SKIP necessary dependency unavailable”h]”hŒ1ok 1 test # SKIP necessary dependency unavailable”…”�”}”hjùsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´K†hjŽh²hubhÞ)�”}”(hŒ[The test "test" was SKIPPED with the diagnostic message "necessary dependency unavailable".”h]”hŒcThe test “testâ€� was SKIPPED with the diagnostic message “necessary dependency unavailableâ€�.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KˆhjŽh²hubj®)�”}”(hŒ"not ok 1 test # TIMEOUT 30 seconds”h]”hŒ"not ok 1 test # TIMEOUT 30 seconds”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´K�hjŽh²hubhÞ)�”}”(hŒ=The test "test" timed out, with diagnostic data "30 seconds".”h]”hŒEThe test “testâ€� timed out, with diagnostic data “30 secondsâ€�.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hjŽh²hubj®)�”}”(hŒ ok 5 check return code # rcode=0”h]”hŒ ok 5 check return code # rcode=0”…”�”}”hj1sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´K“hjŽh²hubhÞ)�”}”(hŒRThe test "check return code" passed, with additional diagnostic data “rcode=0â€�”h]”hŒVThe test “check return codeâ€� passed, with additional diagnostic data “rcode=0â€�”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K•hjŽh²hubeh}”(h]”Œtest-case-result-lines”ah ]”h"]”Œtest case result lines”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KDubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒDiagnostic lines”h]”hŒDiagnostic lines”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjUh²hh³hÇh´K™ubhÞ)�”}”(hX#If tests wish to output any further information, they should do so using "diagnostic lines". Diagnostic lines are optional, freeform text, and are often used to describe what is being tested and any intermediate results in more detail than the final result and diagnostic data line provides.”h]”hX'If tests wish to output any further information, they should do so using “diagnostic linesâ€�. Diagnostic lines are optional, freeform text, and are often used to describe what is being tested and any intermediate results in more detail than the final result and diagnostic data line provides.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K›hjUh²hubhÞ)�”}”(hXDiagnostic lines are formatted as "# ", where the description can be any string. Diagnostic lines can be anywhere in the test output. As a rule, diagnostic lines regarding a test are directly before the test result line for that test.”h]”hXDiagnostic lines are formatted as “# â€�, where the description can be any string. Diagnostic lines can be anywhere in the test output. As a rule, diagnostic lines regarding a test are directly before the test result line for that test.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hjUh²hubhÞ)�”}”(hX3Note that most tools will treat unknown lines (see below) as diagnostic lines, even if they do not start with a "#": this is to capture any other useful kernel output which may help debug the test. It is nevertheless recommended that tests always prefix any diagnostic output they have with a "#" character.”h]”hX;Note that most tools will treat unknown lines (see below) as diagnostic lines, even if they do not start with a “#â€�: this is to capture any other useful kernel output which may help debug the test. It is nevertheless recommended that tests always prefix any diagnostic output they have with a “#â€� character.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¥hjUh²hubeh}”(h]”Œdiagnostic-lines”ah ]”h"]”Œdiagnostic lines”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K™ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Unknown lines”h]”hŒ Unknown lines”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj˜h²hh³hÇh´K«ubhÞ)�”}”(hŒÄThere may be lines within KTAP output that do not follow the format of one of the four formats for lines described above. This is allowed, however, they will not influence the status of the tests.”h]”hŒÄThere may be lines within KTAP output that do not follow the format of one of the four formats for lines described above. This is allowed, however, they will not influence the status of the tests.”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K­hj˜h²hubhÞ)�”}”(hX§This is an important difference from TAP. Kernel tests may print messages to the system console or a log file. Both of these destinations may contain messages either from unrelated kernel or userspace activity, or kernel messages from non-test code that is invoked by the test. The kernel code invoked by the test likely is not aware that a test is in progress and thus can not print the message as a diagnostic message.”h]”hX§This is an important difference from TAP. Kernel tests may print messages to the system console or a log file. Both of these destinations may contain messages either from unrelated kernel or userspace activity, or kernel messages from non-test code that is invoked by the test. The kernel code invoked by the test likely is not aware that a test is in progress and thus can not print the message as a diagnostic message.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K±hj˜h²hubeh}”(h]”Œ unknown-lines”ah ]”h"]”Œ unknown lines”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K«ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Nested tests”h]”hŒ Nested tests”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÍh²hh³hÇh´K¹ubhÞ)�”}”(hŒìIn KTAP, tests can be nested. This is done by having a test include within its output an entire set of KTAP-formatted results. This can be used to categorize and group related tests, or to split out different results from the same test.”h]”hŒìIn KTAP, tests can be nested. This is done by having a test include within its output an entire set of KTAP-formatted results. This can be used to categorize and group related tests, or to split out different results from the same test.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K»hjÍh²hubhÞ)�”}”(hŒîThe "parent" test's result should consist of all of its subtests' results, starting with another KTAP version line and test plan, and end with the overall result. If one of the subtests fail, for example, the parent test should also fail.”h]”hŒöThe “parentâ€� test’s result should consist of all of its subtests’ results, starting with another KTAP version line and test plan, and end with the overall result. If one of the subtests fail, for example, the parent test should also fail.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¿hjÍh²hubhÞ)�”}”(hŒÌAdditionally, all lines in a subtest should be indented. One level of indentation is two spaces: " ". The indentation should begin at the version line and should end before the parent test's result line.”h]”hŒÒAdditionally, all lines in a subtest should be indented. One level of indentation is two spaces: “ “. The indentation should begin at the version line and should end before the parent test’s result line.”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhjÍh²hubhÞ)�”}”(hŒw"Unknown lines" are not considered to be lines in a subtest and thus are allowed to be either indented or not indented.”h]”hŒ{“Unknown linesâ€� are not considered to be lines in a subtest and thus are allowed to be either indented or not indented.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÈhjÍh²hubhÞ)�”}”(hŒ.An example of a test with two nested subtests:”h]”hŒ.An example of a test with two nested subtests:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KËhjÍh²hubj®)�”}”(hŒmKTAP version 1 1..1 KTAP version 1 1..2 ok 1 test_1 not ok 2 test_2 # example failed not ok 1 example”h]”hŒmKTAP version 1 1..1 KTAP version 1 1..2 ok 1 test_1 not ok 2 test_2 # example failed not ok 1 example”…”�”}”hj$sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´KÏhjÍh²hubhÞ)�”}”(hŒ9An example format with multiple levels of nested testing:”h]”hŒ9An example format with multiple levels of nested testing:”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KØhjÍh²hubj®)�”}”(hŒ¾KTAP version 1 1..2 KTAP version 1 1..2 KTAP version 1 1..2 not ok 1 test_1 ok 2 test_2 not ok 1 test_3 ok 2 test_4 # SKIP not ok 1 example_test_1 ok 2 example_test_2”h]”hŒ¾KTAP version 1 1..2 KTAP version 1 1..2 KTAP version 1 1..2 not ok 1 test_1 ok 2 test_2 not ok 1 test_3 ok 2 test_4 # SKIP not ok 1 example_test_1 ok 2 example_test_2”…”�”}”hj@sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´KÜhjÍh²hubeh}”(h]”Œ nested-tests”ah ]”h"]”Œ nested tests”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K¹ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ&Major differences between TAP and KTAP”h]”hŒ&Major differences between TAP and KTAP”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjVh²hh³hÇh´KëubhŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K2uh1jqhjnubjr)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K uh1jqhjnubjr)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jqhjnubhŒthead”“”)�”}”(hhh]”hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒFeature”h]”hŒFeature”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kîhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj˜ubjœ)�”}”(hhh]”hÞ)�”}”(hŒTAP”h]”hŒTAP”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kîhj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj˜ubjœ)�”}”(hhh]”hÞ)�”}”(hŒKTAP”h]”hŒKTAP”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KîhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j–hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjnubhŒtbody”“”)�”}”(hhh]”(j—)�”}”(hhh]”(jœ)�”}”(hhh]”hÞ)�”}”(hŒ"yaml and json in diagnosic message”h]”hŒ"yaml and json in diagnosic message”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kðhjöubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubjœ)�”}”(hhh]”hÞ)�”}”(hŒok”h]”hŒok”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kðhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubjœ)�”}”(hhh]”hÞ)�”}”(hŒnot recommended”h]”hŒnot recommended”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kðhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjóubeh}”(h]”h ]”h"]”h$]”h&]”uh1j–hjðubj—)�”}”(hhh]”(jœ)�”}”(hhh]”hÞ)�”}”(hŒTODO directive”h]”hŒTODO directive”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KñhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjAubjœ)�”}”(hhh]”hÞ)�”}”(hŒok”h]”hŒok”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kñhj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjAubjœ)�”}”(hhh]”hÞ)�”}”(hŒnot recognized”h]”hŒnot recognized”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kñhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j–hjðubj—)�”}”(hhh]”(jœ)�”}”(hhh]”hÞ)�”}”(hŒ0allows an arbitrary number of tests to be nested”h]”hŒ0allows an arbitrary number of tests to be nested”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kòhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�ubjœ)�”}”(hhh]”hÞ)�”}”(hŒno”h]”hŒno”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kòhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�ubjœ)�”}”(hhh]”hÞ)�”}”(hŒyes”h]”hŒyes”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KòhjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j–hjðubj—)�”}”(hhh]”(jœ)�”}”(hhh]”hÞ)�”}”(hŒ2"Unknown lines" are in category of "Anything else"”h]”hŒ:“Unknown linesâ€� are in category of “Anything elseâ€�”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kóhjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÝubjœ)�”}”(hhh]”hÞ)�”}”(hŒyes”h]”hŒyes”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kóhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÝubjœ)�”}”(hhh]”hÞ)�”}”(hŒno”h]”hŒno”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kóhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j–hjðubj—)�”}”(hhh]”(jœ)�”}”(hhh]”hÞ)�”}”(hŒ"Unknown lines" are”h]”hŒ“Unknown linesâ€� are”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kôhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj+ubjœ)�”}”(hhh]”hÞ)�”}”(hŒ incorrect”h]”hŒ incorrect”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KôhjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj+ubjœ)�”}”(hhh]”hÞ)�”}”(hŒallowed”h]”hŒallowed”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kôhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j›hj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j–hjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jîhjnubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jlhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jghjVh²hh³hÇh´NubhÞ)�”}”(hŒºThe TAP14 specification does permit nested tests, but instead of using another nested version line, uses a line of the form "Subtest: " where is the name of the parent test.”h]”hŒ¾The TAP14 specification does permit nested tests, but instead of using another nested version line, uses a line of the form “Subtest: â€� where is the name of the parent test.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K÷hjVh²hubeh}”(h]”Œ&major-differences-between-tap-and-ktap”ah ]”h"]”Œ&major differences between tap and ktap”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KëubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒExample KTAP output”h]”hŒExample KTAP output”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¢h²hh³hÇh´Küubj®)�”}”(hX�KTAP version 1 1..1 KTAP version 1 1..3 KTAP version 1 1..1 # test_1: initializing test_1 ok 1 test_1 ok 1 example_test_1 KTAP version 1 1..2 ok 1 test_1 # SKIP test_1 skipped ok 2 test_2 ok 2 example_test_2 KTAP version 1 1..3 ok 1 test_1 # test_2: FAIL not ok 2 test_2 ok 3 test_3 # SKIP test_3 skipped not ok 3 example_test_3 not ok 1 main_test”h]”hX�KTAP version 1 1..1 KTAP version 1 1..3 KTAP version 1 1..1 # test_1: initializing test_1 ok 1 test_1 ok 1 example_test_1 KTAP version 1 1..2 ok 1 test_1 # SKIP test_1 skipped ok 2 test_2 ok 2 example_test_2 KTAP version 1 1..3 ok 1 test_1 # test_2: FAIL not ok 2 test_2 ok 3 test_3 # SKIP test_3 skipped not ok 3 example_test_3 not ok 1 main_test”…”�”}”hj³sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j­h³hÇh´Kÿhj¢h²hubhÞ)�”}”(hŒ,This output defines the following hierarchy:”h]”hŒ,This output defines the following hierarchy:”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¢h²hubhÞ)�”}”(hŒFA single test called "main_test", which fails, and has three subtests:”h]”hŒJA single test called “main_testâ€�, which fails, and has three subtests:”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj¢h²hubj2)�”}”(hhh]”(j7)�”}”(hŒ’"example_test_1", which passes, and has one subtest: - "test_1", which passes, and outputs the diagnostic message "test_1: initializing test_1" ”h]”(hÞ)�”}”(hŒ4"example_test_1", which passes, and has one subtest:”h]”hŒ8“example_test_1â€�, which passes, and has one subtest:”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´MhjàubhŒ block_quote”“”)�”}”(hŒ[- "test_1", which passes, and outputs the diagnostic message "test_1: initializing test_1" ”h]”j2)�”}”(hhh]”j7)�”}”(hŒY"test_1", which passes, and outputs the diagnostic message "test_1: initializing test_1" ”h]”hÞ)�”}”(hŒX"test_1", which passes, and outputs the diagnostic message "test_1: initializing test_1"”h]”hŒ`“test_1â€�, which passes, and outputs the diagnostic message “test_1: initializing test_1â€�”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hjøubah}”(h]”h ]”h"]”h$]”h&]”j›jœuh1j1h³hÇh´Mhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÇh´Mhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÝh²hh³hÇh´Nubj7)�”}”(hŒ–"example_test_2", which passes, and has two subtests: - "test_1", which is skipped, with the explanation "test_1 skipped" - "test_2", which passes ”h]”(hÞ)�”}”(hŒ5"example_test_2", which passes, and has two subtests:”h]”hŒ9“example_test_2â€�, which passes, and has two subtests:”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Mhj%ubjó)�”}”(hŒ]- "test_1", which is skipped, with the explanation "test_1 skipped" - "test_2", which passes ”h]”j2)�”}”(hhh]”(j7)�”}”(hŒA"test_1", which is skipped, with the explanation "test_1 skipped"”h]”hÞ)�”}”(hj@h]”hŒI“test_1â€�, which is skipped, with the explanation “test_1 skippedâ€�”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj;ubj7)�”}”(hŒ"test_2", which passes ”h]”hÞ)�”}”(hŒ"test_2", which passes”h]”hŒ“test_2â€�, which passes”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M!hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj;ubeh}”(h]”h ]”h"]”h$]”h&]”j›jœuh1j1h³hÇh´M hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÇh´M hj%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÝh²hh³hÇh´Nubj7)�”}”(hŒß"example_test_3", which fails, and has three subtests - "test_1", which passes - "test_2", which outputs the diagnostic line "test_2: FAIL", and fails. - "test_3", which is skipped with the explanation "test_3 skipped" ”h]”(hÞ)�”}”(hŒ5"example_test_3", which fails, and has three subtests”h]”hŒ9“example_test_3â€�, which fails, and has three subtests”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M#hjubjó)�”}”(hŒ¥- "test_1", which passes - "test_2", which outputs the diagnostic line "test_2: FAIL", and fails. - "test_3", which is skipped with the explanation "test_3 skipped" ”h]”j2)�”}”(hhh]”(j7)�”}”(hŒ"test_1", which passes”h]”hÞ)�”}”(hjšh]”hŒ“test_1â€�, which passes”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M%hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj•ubj7)�”}”(hŒF"test_2", which outputs the diagnostic line "test_2: FAIL", and fails.”h]”hÞ)�”}”(hj±h]”hŒN“test_2â€�, which outputs the diagnostic line “test_2: FAILâ€�, and fails.”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M&hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj•ubj7)�”}”(hŒA"test_3", which is skipped with the explanation "test_3 skipped" ”h]”hÞ)�”}”(hŒ@"test_3", which is skipped with the explanation "test_3 skipped"”h]”hŒH“test_3â€�, which is skipped with the explanation “test_3 skippedâ€�”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M'hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj•ubeh}”(h]”h ]”h"]”h$]”h&]”j›jœuh1j1h³hÇh´M%hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jòh³hÇh´M%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j6hjÝh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j›jœuh1j1h³hÇh´Mhj¢h²hubhÞ)�”}”(hX�Note that the individual subtests with the same names do not conflict, as they are found in different parent tests. This output also exhibits some sensible rules for "bubbling up" test results: a test fails if any of its subtests fail. Skipped tests do not affect the result of the parent test (though it often makes sense for a test to be marked skipped if _all_ of its subtests have been skipped).”h]”hX“Note that the individual subtests with the same names do not conflict, as they are found in different parent tests. This output also exhibits some sensible rules for “bubbling upâ€� test results: a test fails if any of its subtests fail. Skipped tests do not affect the result of the parent test (though it often makes sense for a test to be marked skipped if _all_ of its subtests have been skipped).”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M)hj¢h²hubeh}”(h]”Œexample-ktap-output”ah ]”h"]”Œexample ktap output”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KüubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ See also:”h]”hŒ See also:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´M1ubj2)�”}”(hhh]”(j7)�”}”(hŒQThe TAP specification: https://testanything.org/tap-version-13-specification.html”h]”hÞ)�”}”(hŒQThe TAP specification: https://testanything.org/tap-version-13-specification.html”h]”(hŒThe TAP specification: ”…”�”}”(hj$ h²hh³Nh´Nubhè)�”}”(hŒ:https://testanything.org/tap-version-13-specification.html”h]”hŒ:https://testanything.org/tap-version-13-specification.html”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”j. uh1hçhj$ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M3hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj h²hh³hÇh´Nubj7)�”}”(hŒ…The (stagnant) TAP version 14 specification: https://github.com/TestAnything/Specification/blob/tap-14-specification/specification.md”h]”hÞ)�”}”(hŒ…The (stagnant) TAP version 14 specification: https://github.com/TestAnything/Specification/blob/tap-14-specification/specification.md”h]”(hŒ-The (stagnant) TAP version 14 specification: ”…”�”}”(hjK h²hh³Nh´Nubhè)�”}”(hŒXhttps://github.com/TestAnything/Specification/blob/tap-14-specification/specification.md”h]”hŒXhttps://github.com/TestAnything/Specification/blob/tap-14-specification/specification.md”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jU uh1hçhjK ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M5hjG ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj h²hh³hÇh´Nubj7)�”}”(hŒBThe kselftest documentation: Documentation/dev-tools/kselftest.rst”h]”hÞ)�”}”(hŒBThe kselftest documentation: Documentation/dev-tools/kselftest.rst”h]”hŒBThe kselftest documentation: Documentation/dev-tools/kselftest.rst”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M7hjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj h²hh³hÇh´Nubj7)�”}”(hŒ@The KUnit documentation: Documentation/dev-tools/kunit/index.rst”h]”hÞ)�”}”(hŒ@The KUnit documentation: Documentation/dev-tools/kunit/index.rst”h]”hŒ@The KUnit documentation: Documentation/dev-tools/kunit/index.rst”…”�”}”(hjŠ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´M9hj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1j6hj h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”j›jœuh1j1h³hÇh´M3hj h²hubeh}”(h]”Œsee-also”ah ]”h"]”Œ see also:”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M1ubeh}”(h]”Œ0the-kernel-test-anything-protocol-ktap-version-1”ah ]”h"]”Œ3the kernel test anything protocol (ktap), version 1”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”j›Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÖ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j± j® jjjHjEj‹jˆjRjOj•j’jÊjÇjSjPjŸjœj j j© j¦ uŒ nametypes”}”(j± ‰jˆjH‰j‹‰jR‰j•‰jʉjS‰jŸ‰j ‰j© ‰uh}”(j® hÊjhýjEj«jˆjKjOjŽj’jUjÇj˜jPjÍjœjVj j¢j¦ j uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.