This set of patches adds a simple unit-testing framework to Busybox unit-tests: add some helper macros for unit-test framework implementation unit-tests: implement the unit-testing framework unit-tests: add basic documentation on writing the unit test cases unit-tests: modify the Makefile 'test' target to run unit-tests too unit-tests: add two example test cases unit-tests: modify the existing strrstr test code to use the unit-test framework Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Busybox unit test framework
 | 
						|
===========================
 | 
						|
 | 
						|
This document describes what you need to do to write test cases using the
 | 
						|
Busybox unit test framework.
 | 
						|
 | 
						|
 | 
						|
Building unit tests
 | 
						|
-------------------
 | 
						|
 | 
						|
The framework and all tests are built as a regular Busybox applet if option
 | 
						|
CONFIG_UNIT_TEST (found in General Configuration -> Debugging Options) is set.
 | 
						|
 | 
						|
 | 
						|
Writing test cases
 | 
						|
------------------
 | 
						|
 | 
						|
Unit testing interface can be found in include/bbunit.h.
 | 
						|
 | 
						|
Tests can be placed in any .c file in Busybox tree - preferably right next to
 | 
						|
the functions they test. Test cases should be enclosed within an #if, and
 | 
						|
should start with BBUNIT_DEFINE_TEST macro and end with BBUNIT_ENDTEST within
 | 
						|
the test curly brackets. If an assertion fails the test ends immediately, ie.
 | 
						|
the following assertions will not be reached. Any code placed after
 | 
						|
BBUNIT_ENDTEST is executed regardless of the test result. Here's an example:
 | 
						|
 | 
						|
#if ENABLE_UNIT_TEST
 | 
						|
 | 
						|
BBUNIT_DEFINE_TEST(test_name)
 | 
						|
{
 | 
						|
	int *i;
 | 
						|
 | 
						|
	i = malloc(sizeof(int));
 | 
						|
	BBUNIT_ASSERT_NOTNULL(i);
 | 
						|
	*i = 2;
 | 
						|
	BBUNIT_ASSERT_EQ((*i)*(*i), 4);
 | 
						|
 | 
						|
	BBUNIT_ENDTEST;
 | 
						|
 | 
						|
	free(i);
 | 
						|
}
 | 
						|
 | 
						|
#endif /* ENABLE_UNIT_TEST */
 | 
						|
 | 
						|
 | 
						|
Running the unit test suite
 | 
						|
---------------------------
 | 
						|
 | 
						|
To run the tests you can either directly run 'busybox unit' or use 'make test'
 | 
						|
to run both the unit tests (if compiled) and regular test suite.
 |