mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 14:00:19 +00:00 
			
		
		
		
	Move test/README to the 'Develop U-Boot' chapter of the HTML documentation. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
Testing in U-Boot
 | 
						|
=================
 | 
						|
 | 
						|
U-Boot has a large amount of code. This file describes how this code is
 | 
						|
tested and what tests you should write when adding a new feature.
 | 
						|
 | 
						|
 | 
						|
Running tests
 | 
						|
-------------
 | 
						|
 | 
						|
To run most tests on sandbox, type this:
 | 
						|
 | 
						|
    make check
 | 
						|
 | 
						|
in the U-Boot directory. Note that only the pytest suite is run using this
 | 
						|
command.
 | 
						|
 | 
						|
Some tests take ages to run. To run just the quick ones, type this:
 | 
						|
 | 
						|
    make qcheck
 | 
						|
 | 
						|
 | 
						|
Sandbox
 | 
						|
-------
 | 
						|
U-Boot can be built as a user-space application (e.g. for Linux). This
 | 
						|
allows test to be executed without needing target hardware. The 'sandbox'
 | 
						|
target provides this feature and it is widely used in tests.
 | 
						|
 | 
						|
 | 
						|
Pytest Suite
 | 
						|
------------
 | 
						|
 | 
						|
Many tests are available using the pytest suite, in test/py. This can run
 | 
						|
either on sandbox or on real hardware. It relies on the U-Boot console to
 | 
						|
inject test commands and check the result. It is slower to run than C code,
 | 
						|
but provides the ability to unify lots of tests and summarise their results.
 | 
						|
 | 
						|
You can run the tests on sandbox with:
 | 
						|
 | 
						|
	./test/py/test.py --bd sandbox --build
 | 
						|
 | 
						|
This will produce HTML output in build-sandbox/test-log.html
 | 
						|
 | 
						|
See test/py/README.md for more information about the pytest suite.
 | 
						|
 | 
						|
 | 
						|
tbot
 | 
						|
----
 | 
						|
 | 
						|
Tbot provides a way to execute tests on target hardware. It is intended for
 | 
						|
trying out both U-Boot and Linux (and potentially other software) on a
 | 
						|
number of boards automatically. It can be used to create a continuous test
 | 
						|
environment. See http://www.tbot.tools for more information.
 | 
						|
 | 
						|
 | 
						|
Ad-hoc tests
 | 
						|
------------
 | 
						|
 | 
						|
There are several ad-hoc tests which run outside the pytest environment:
 | 
						|
 | 
						|
   test/fs	- File system test (shell script)
 | 
						|
   test/image	- FIT and legacy image tests (shell script and Python)
 | 
						|
   test/stdint	- A test that stdint.h can be used in U-Boot (shell script)
 | 
						|
   trace	- Test for the tracing feature (shell script)
 | 
						|
 | 
						|
TODO: Move these into pytest.
 | 
						|
 | 
						|
 | 
						|
When to write tests
 | 
						|
-------------------
 | 
						|
 | 
						|
If you add code to U-Boot without a test you are taking a risk. Even if you
 | 
						|
perform thorough manual testing at the time of submission, it may break when
 | 
						|
future changes are made to U-Boot. It may even break when applied to mainline,
 | 
						|
if other changes interact with it. A good mindset is that untested code
 | 
						|
probably doesn't work and should be deleted.
 | 
						|
 | 
						|
You can assume that the Pytest suite will be run before patches are accepted
 | 
						|
to mainline, so this provides protection against future breakage.
 | 
						|
 | 
						|
On the other hand there is quite a bit of code that is not covered with tests,
 | 
						|
or is covered sparingly. So here are some suggestions:
 | 
						|
 | 
						|
- If you are adding a new uclass, add a sandbox driver and a test that uses it
 | 
						|
- If you are modifying code covered by an existing test, add a new test case
 | 
						|
  to cover your changes
 | 
						|
- If the code you are modifying has not tests, consider writing one. Even a
 | 
						|
  very basic test is useful, and may be picked up and enhanced by others. It
 | 
						|
  is much easier to add onto a test - writing a new large test can seem
 | 
						|
  daunting to most contributors.
 | 
						|
 | 
						|
 | 
						|
Future work
 | 
						|
-----------
 | 
						|
 | 
						|
Converting existing shell scripts into pytest tests.
 |