mirror of
				https://review.coreboot.org/flashrom.git
				synced 2025-11-04 07:00:39 +01:00 
			
		
		
		
	tests: Detect gcov run and redirect to real I/O functions
Code coverage writes data to disk, we need to use real io functions at this point so that the data is really written. BUG=b:187647884 BRANCH=None TEST=meson test TEST=ninja coverage Change-Id: If06053ecd78e886c8f7fc55813f4b5635be78c6b Signed-off-by: Evan Benn <evanbenn@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/69266 Reviewed-by: Anastasia Klimchuk <aklm@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
		
				
					committed by
					
						
						Anastasia Klimchuk
					
				
			
			
				
	
			
			
			
						parent
						
							2c3bbd91e4
						
					
				
				
					commit
					bcaaae15ae
				
			@@ -48,6 +48,18 @@ ninja -C builddir install
 | 
			
		||||
ninja -C builddir test
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Run unit tests with code coverage
 | 
			
		||||
#### gcov
 | 
			
		||||
Due to a bug in lcov, the html file will only be correct if lcov is not
 | 
			
		||||
installed and gcovr is installed. See
 | 
			
		||||
https://github.com/linux-test-project/lcov/issues/168
 | 
			
		||||
https://github.com/mesonbuild/meson/issues/6747
 | 
			
		||||
```
 | 
			
		||||
meson setup buildcov -Db_coverage=true
 | 
			
		||||
ninja -C buildcov test
 | 
			
		||||
ninja -C buildcov coverage
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## System specific information
 | 
			
		||||
### Ubuntu / Debian (Linux)
 | 
			
		||||
  * __linux-headers__ are version specific
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,7 @@
 | 
			
		||||
#include "io_mock.h"
 | 
			
		||||
#include "tests.h"
 | 
			
		||||
#include "wraps.h"
 | 
			
		||||
#include "io_real.h"
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
@@ -77,6 +78,7 @@ uint8_t __wrap_sio_read(uint16_t port, uint8_t reg)
 | 
			
		||||
 | 
			
		||||
static int mock_open(const char *pathname, int flags, mode_t mode)
 | 
			
		||||
{
 | 
			
		||||
	maybe_unmock_io(pathname);
 | 
			
		||||
	if (get_io() && get_io()->iom_open)
 | 
			
		||||
		return get_io()->iom_open(get_io()->state, pathname, flags, mode);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user