summaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)Author
2025-05-27patman: Avoid touching the system or local configSimon Glass
Set the git variables to ensure that any local gitconfig is not used or affected by the tests. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Add a fourth series for testingSimon Glass
Create one more series to use for testing. This one has four separate patches. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Move common test code into a new moduleSimon Glass
The func_test file is quite large. In order to allow new tests to be added to a separate file, move the common test code into a separate class, to be inherited by other classes. Drop unnecessary imports in func_test Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Add a test for collecting a PATCH prefixSimon Glass
Add one more test for completeness, since this occurs commonly. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Use python3 with /usr/bin/envSimon Glass
If python2 is available then we must specify python3 here. Update the test to handle this. Signed-off-by: Simon Glass <[email protected]>
2025-05-27u_boot_pylib: Add more functions to gitutilSimon Glass
Add functions for checking a branch, showing a commit, etc. to support the new functionality. Git version 2.34.1 ignores --stat if --quiet is given, so adjust the args so that this performs as expected. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Deal with git safe-directory warningSimon Glass
When running tests where the .git directory is not owned by the current user, various warnings are produced and the tests fail. This happens in CI. For patman itself, modify the gitutil.get_top_level() function to return None in this case. Ensure that the warning is not shown, since it creates about 1000 lines of output. For checkpatch, the same warning is produced even though --no-tree is given. Suppress that as well. Signed-off-by: Simon Glass <[email protected]>
2025-05-27u_boot_pylib: Correct pylint warnings in gitutilSimon Glass
Correct various pylint warnings in this file. The remaining ones are three functions with too many arguments (R0913 and R0918) and use of global (W0603). Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Support collecting all lines in the commit messageSimon Glass
In some cases we want to collect all lines in the commit message so that the commit can be recreated with the same message as before, or perhaps with light filtering. Add support for this. Series-to: u-boot Cover-letter: patman: Minor improvements to prepare for series handling This series includes a number of internal improvements to patman: - Tidy-up of parsing - Adjust how tests create the git tree - Support for creating patches in a different git directory - Faster determination of the upstream branch - Ability to collect the body of a commit message as a series of lines END Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Tidy up function comments in the series moduleSimon Glass
This module is missing some comments, so add them. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Move -H out of the send commandSimon Glass
This is the help for the whole of patman, so move it to the start of the control function, rather than being inside 'patman send'. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Move arguments for sent into the correct parserSimon Glass
Most of the arguments for the main parser are actually arguments for the 'send' parser. Move them there, in a separate function. Fix a pylint warning for -D and the imports while here. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Split subparsers into their own functionsSimon Glass
Simplify the main parser by moving subparser code into separate functions. Fix a few pylint warnings while here. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Add tests for helpSimon Glass
Add a few tests to make sure that help is provided when requested. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Split parser creation from parsingSimon Glass
Tests may want to parse their own arguments. Refactor the parser code to support this and allow settings to receive arguments as well. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Correct some pylint and asyncio issuesSimon Glass
Correct some pylint warnings in this file. Make use of the existing asyncio event loop, instead of creating a new one, since this also destroys it afterwards, making it unavailable for tests which want to share an event loop. Use tools.write_file() to avoid a warning about encoding. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Use git to set up the test configSimon Glass
At present the branch information is dropped when writing the configuration. It is easier to get git to set up the config anyway, so update the test to do this. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Clean up creation of the git treeSimon Glass
The test starts with the HEAD pointing to the wrong place, so that the created files appear to be deleted. Fix this by resetting the tree before tests start. Add a check that the tree is clean. Update pygit2 so that the enums are available.
2025-05-27patman: Use variables for series ID and titleSimon Glass
Rather than hard-coding these values in the sample patches, use variables so that we can refer to these in tests. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Use .git as the git directorySimon Glass
In tests, the 'git' directory is a subdirectory of the temporary directory. Rename it to '.git' so that git will automatically find it when git operations are done in the temporary directory. Set up the config before the first git operation, so that this works correctly. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Use itr instead of lines for iteratorSimon Glass
The variables 'lines' is used to hold a list of output lines within a test, but also to hold an iterator through those lines. Use 'itr' for the latter, to avoid confusion. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Correct use of str in codeSimon Glass
Since str() is a reserved function we should not use it as a variable. Fix this in the send module. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Allow setting a git directory when sendingSimon Glass
Support specifying the git-directory when creating and sending patches. This will allow better testing of this functionality, since we can use a test directory. For count_commits_to_branch() support an end commit while we are here. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Allow setting the current directory when sendingSimon Glass
Plumb a current-working-directory (cwd) through from send all the way to the command gitutil libraries. This will allow better testing of this functionality, since we can use a test directory. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Add all files to __init__.pySimon Glass
Some files are missing from the __all__ list, so add then. Reformat the list to use more of the width of each line. Signed-off-by: Simon Glass <[email protected]>
2025-05-27u_boot_pylib: Speed up determining the upstream branchSimon Glass
Use --decorate to quickly detect the upstream branch, since this is much faster than using 'git name-rev' on every possible commit. Signed-off-by: Simon Glass <[email protected]>
2025-05-27u_boot_pylib: Provide directories to gitutil functionsSimon Glass
For testing it is useful to be able to set the current directory used for git operations, as well as the git-repo directory. Update some of the functions to support this. Signed-off-by: Simon Glass <[email protected]>
2025-05-27u_boot_pylib: Tidy up quoting of cc and toSimon Glass
The current approach to calling 'git send-email' puts double quotes around each email address to ensure that it will pass the shell correctly. This is a bit cumbersome and requires using a shell to sort it all out. Drop the quotes and use command.run() instead, to simplify things. This will also make it possible to (later) set the current directory. Signed-off-by: Simon Glass <[email protected]>
2025-05-27u_boot_pylib: Support a fatal level in toutSimon Glass
It is convenient to be able to print a message and exit. Add a new 'fatal' level to support this. Update some assumptions about the level, so that the tools continue to work as now. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Update Series.ShowActions() to pass aliasSimon Glass
Instead of using settings.alias pass this value in. This allows tests to work without using settings.alias Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Pass aliases to Series.MakeCcFile()Simon Glass
Rather than accessing settings directly, pass the aliases in, so that we can do the same from tests. With further work this will allow the tests to work without using settings.alias Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Pass the alias dict into gitutil.email_patches()Simon Glass
Rather than accessing the settings module in this function, require the alias dict to be passed in. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Pass the alias dict into gitutil.build_email_list()Simon Glass
Rather than accessing the settings module in this function, require the alias dict to be passed in. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Untangle settings from gitutilSimon Glass
The gitutil module is supposed to be independent from patman but one piece was missed in the series which separated them. Move the settings setup out of gitutil Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Drop the old status codeSimon Glass
Now that we have the new asyncio implementation, drop the unused ThreadPoolExecutor code. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Use a pager when outputting statusSimon Glass
The pager makes it easier to review large number of comments. Add it around the output. Patman normally sends multiple concurrent requests to the patchwork server, as this is faster. Provide an option to disable this. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Provide an option to run in single-threaded modeSimon Glass
Patman normally sends multiple concurrent requests to the patchwork server, as this is faster. Provide an option to disable this. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Switch over to asyncioSimon Glass
Now that all the pieces are in place, switch over from using an executor to using asyncio. While we are here, import defaultdict to avoid needing to specify its module. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Use defaultdict directlySimon Glass
Import defaultdict to avoid needing to specify its module in multiple places. Fix an extra blank line while here. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Add more information to PatchSimon Glass
The cover letter has some information on each patch, so allow this to be stored in the Patch object. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Show patches in yellowSimon Glass
When comments are shown below patches it can be hard to see the patch subject. Use yellow instead of blue, since it stands out better. Pass the colour object into show_responses() rather than creating a new one, since that is tidier. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Simplify test_find_new_responses()Simon Glass
This test uses the find_new_responses() function which combines accessing patchwork and processing the results. Since the test is aimed at testing processing, adjust it to call process_reviews() instead. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Adjust how the fake request() function is providedSimon Glass
Instead of passing the URL and function to each call, put the fake into the Patchwork object instead. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Split out the processing of find_new_responses()Simon Glass
This function does patchwork calls and then processes the results. Move the processing out so we can (later) test it separately. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Split up check_and_show_status()Simon Glass
This function has three phases: - collecting things from patchwork - doing some processing - showing the results to the user / creating a branch Refactor into two functions so we can eventually have the patchwork part fully separated out. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Rename check_patchwork_status()Simon Glass
This function actually shows the status and does some other things. Rename it to better reflect its purpose. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Add reading of series and patch statusSimon Glass
Expand the patchwork module so that it can match the current requirements of the 'patman status' command, i.e. reading the state of a series and the patches associated with it. Since the format of each patchwork response is a little tricky to understand, add examples in comments at the top of each function. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Move Patch and Review to patchwork moduleSimon Glass
These relate to information obtained from the patchwork server, so move their definition into the new patchwork module. Signed-off-by: Simon Glass <[email protected]>
2025-05-27patman: Create a module for handling patchworkSimon Glass
At present the patchwork implementation is very simple, just consisting of a function which calls the REST API. We want to create a fake patchwork for use in tests. So start a new module to encapsulate communication with the patchwork server. Use asyncio since it is easier to handle lots of concurrent requests from different parts of the code. Signed-off-by: Simon Glass <[email protected]>
2025-05-27CI: Add a dependency file for patmanSimon Glass
Now that patman has an unusual dependency, add a requirements.txt file and use it in CI Signed-off-by: Simon Glass <[email protected]>