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:

    test/run

in the U-Boot directory. Note that only the pytest suite is run using this
comment.


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 test 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 tools/tbot/README 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 lagacy 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)

The above should be converted to run as part of the pytest suite.


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.
