Patchtest

== Patchtest ==
Patchtest is a tool designed for improving the quality of Yocto Project and OpenEmbedded contributors' patch submissions, while simultaneously reducing the level of review effort required from project maintainers. It does this by providing a set of scripts that users can test their patches with prior to submission ("host" mode), and which can be used as part of an automated service that provides periodic feedback for patches received by Patchwork ("guest" mode).
=== Using Patchtest ===
See the patchtest README for instructions on how to use patchtest in your local workspace, and the meta-patchtest README for details on automated/guest mode setup.
=== Patchtest "FAIL:" Descriptions ===
The patchtest feedback email is designed to provide concise instructions when one or more of the tests has failed, but additional information on specific failures is provided below:
Testcase 	Details 	Further information
test_upstream_status_presence_format 	This testcase checks if newly introduced *.patch files contain a valid upstream status, if not included the testcase fails 	https://docs.yoctoproject.org/dev/contributor-guide/recipe-style-guide.html?highlight=upstream+status#patch-upstream-status
test_signed_off_by_presence 	This testcase checks if newly introduced *.patch files contain a Signed-off-by, if not included the testcase fails 	https://docs.yoctoproject.org/dev/contributor-guide/recipe-style-guide.html?highlight=signed+off#patch-upstream-status
test_cve_tag_format 	Whenever a submission adds a CVE patch, patchtest will check both the patch and the parent mbox's commit message for a "CVE: CVE-YYYY-XXXX" tag. While this has historically not been required, including the tag in both locations aids review and maintenance. 	https://docs.yoctoproject.org/dev/contributor-guide/recipe-style-guide.html?highlight=signed+off#cve-patches
test_signed_off_by_presence 	This testcase checks if the tested patch contains a valid Signed-off-by 	If it fails you can add it manually or with "git commit --amend -s", See also https://docs.yoctoproject.org/dev/contributor-guide/submit-changes.html#implement-and-commit-changes
test_shortlog_format 	This testcases checks the format of the shortlog (header line in the commit message). The expected format is: <target>: <summary>, where component is a recipe name or the short form path to the file being changed 	https://docs.yoctoproject.org/dev/contributor-guide/submit-changes.html#implement-and-commit-changes
test_shortlog_length 	This failure indicates that the shortlog (i.e. the subject line) for the patch is so long that it may not be easily readable on some mail clients. Some subject prefixes (e.g. the branch name when submitting a patch for an older release) may unavoidably inflate the length, but the shortlog should be kept as short and concise as possible so that it is clear what the patch does and what it changes. Extra information can always be provided in the commit message.	https://docs.yoctoproject.org/dev/contributor-guide/submit-changes.html#implement-and-commit-changes
test_series_merge_on_head 	Checks if series applies on top of target branch. Temporary disabled, but ensure your series applies cleanly 	https://docs.yoctoproject.org/overview-manual/development-environment.html?highlight=git#git
test_target_mailing_list 	Checks if series is sent to the correct mailing list for all files in the series. Poky is a combo layer combining bitbake, openembedded-core, meta-yocto and yocto-docs. Please create and submit patches against the individual components. 	https://docs.yoctoproject.org/contributor-guide/identify-component.html
test_mbox_format 	Checks if the patch has no malformed diff lines and can be applied cleanly. 	Create the series again using git-format-patch and ensure it applies using git am. See also: https://docs.yoctoproject.org/overview-manual/development-environment.html?highlight=git#git
test_commit_message_presence 	This testcases fails if a submission has an empty commit message. Provide for example detailed information on what you changed and why, how you tested it. 	https://docs.yoctoproject.org/dev/contributor-guide/submit-changes.html#implement-and-commit-changes
test_bugzilla_entry_format 	Checks that the Bugzilla issue ID, if mentioned in the commit message, is correctly formatted. Format is: "[YOCTO #<bugzilla ID>]. 	https://docs.yoctoproject.org/dev/contributor-guide/submit-changes.html#implement-and-commit-changes
test_author_valid 	A patch authored by an invalid author was detected. 	You can amend the author via git commit --amend
test_non_auh_upgrade 	A patch authored by the Auto-Upgrade Helper (AUH) was detected. These patches are meant to provide maintainers with a sanity check for recipe upgrades and a starting point for testing them, so patches submitted with that authorship are marked as failures to indicate that they have not been fully validated. 	For a overview of AUH see also: https://docs.yoctoproject.org/dev/dev-manual/upgrading-recipes.html#using-the-auto-upgrade-helper-auh
test_pylint 	Fails if patch contains .py files and pylint detected new issues if the patch is applied 	Check changes with pylint and amend patch
test_license_presence 	Checks to ensure that LICENSE is set for a newly added recipe. 	https://docs.yoctoproject.org/dev/ref-manual/variables.html#term-LICENSE
test_lic_files_chksum_presence 	Checks to ensure that LIC_FILES_CHKSUM is present, if not then this test will fail. 	https://docs.yoctoproject.org/dev/dev-manual/licenses.html#tracking-license-changes
test_lic_files_chksum_modified_not_mentioned	Checks to ensure that any changes made to LIC_FILES_CHKSUM lines (including checksums for new files) are accounted for in the commit message with at least one "License-Update: <reason>" tag. If this is not present, then this test will fail. 	https://docs.yoctoproject.org/dev/contributor-guide/recipe-style-guide.html?highlight=license+update#license-updates
test_max_line_length 	Checks if any line in the meta-data changed in series contains no lines that are longer that 200 characters. 	Please ensure that lines do not exceed this length and amend your patch
test_src_uri_left_files 	Checks if all files removed from SRC_URI are also removed from the tree. 	Please remove files that are not included in the SRC_URI from the tree as wll, e.g. with git rm <file>
test_summary_presence 	Checks if SUMMARY is set for newly added recipes. Should be set to a short description of the package created by the recipe. 	https://docs.yoctoproject.org/dev/ref-manual/variables.html#term-SUMMARY
test_cve_check_ignore 	Fails if the deprecated CVE_CHECK_INGNORE is used instead of CVE_STATUS. 	https://docs.yoctoproject.org/dev/ref-manual/variables.html#term-CVE_STATUS
==== Tests failed for the patch, but the results log could not be processed due to excessive result line length. ====
The patchtest-send-results script checks the test results' maximum line length to help ensure that no unintended and/or malicious code is sent to the mailing list with the results. If this message is present, the user should re-test their patch(es) locally using the patchtest script in openembedded-core/scripts before further escalation. If the issue persists after re-testing and re-submission it should be reported on the Yocto Project Bugzilla under the "Yocto Project Subprojects" -> "Patchtest" category with a "Major" priority (include the patch file as an attachment).
=== Submitting Bug Reports ===
If you suspect there is an issue with the patchtest feedback emails, the service itself, or any of the documentation, please submit an issue on the Yocto Project Bugzilla Bugzilla under the "Yocto Project Subprojects" -> "Patchtest" category.
=== Patchtest Architecture Notes ===
 Test Suite Details
Test Name 	Category 	Uses Tinfoil	Notes
test_upstream_status_presence_format 	TestPatch 	No 	
test_signed_off_by_presence 	TestPatch 	No 	Same test name as similar test in TestMbox
test_cve_tag_format 	TestPatch 	No 	
test_signed_off_by_presence 	TestMbox 	No 	Same test name as similar test in TestPatch
test_shortlog_format 	TestMbox 	No 	
test_shortlog_length 	TestMbox 	No 	
test_series_merge_on_head 	TestMbox 	No 	Temporarily disabled
test_target_mailing_list 	TestMbox 	No 	
test_mbox_format 	TestMbox 	No 	
test_commit_message_presence 	TestMbox 	No 	
test_bugzilla_entry_format 	TestMbox 	No 	
test_author_valid 	TestMbox 	No 	
test_non_auh_upgrade 	TestMbox 	No 	
test_pylint 	PyLint 	No 	
test_license_presence 	TestMetadata	Yes 	
test_lic_files_chksum_presence 	TestMetadata	Yes 	
test_lic_files_chksum_modified_not_mentioned	TestMetadata	No 	
test_max_line_length 	TestMetadata	No 	
test_src_uri_left_files 	TestMetadata	Yes 	Has a linked pretest: pretest_src_uri_left_files
test_summary_presence 	TestMetadata	Yes 	
test_cve_check_ignore 	TestMetadata	Yes