mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
meson: tests: add file access test setup
We need to modify check-file-access.py to be usable as wrapper for libvirt tests. This way we can run the tests using this command: meson test --setup access which will run all tests using check-file-access.py as a wrapper. With autotools all file access are written into single file for all tests and compared once the whole test suite is done. With Meson we will compare the file access after every single test because it is used as wrapper now. That requires writing the file access into separate files for every single test as they are executed in parallel. Since the wrapper is used for all tests in Meson including tests outside of tests directory we have to check for presence of the output file. We should also cleanup after ourselves. Signed-off-by: Pavel Hrdina <phrdina@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Neal Gompa <ngompa13@gmail.com>
This commit is contained in:
parent
59cafec0a4
commit
9d40698116
@ -37,9 +37,6 @@ srpm: clean
|
|||||||
|
|
||||||
check-local: all tests
|
check-local: all tests
|
||||||
|
|
||||||
check-access: all
|
|
||||||
@($(MAKE) $(AM_MAKEFLAGS) -C tests check-access)
|
|
||||||
|
|
||||||
dist-hook: gen-AUTHORS
|
dist-hook: gen-AUTHORS
|
||||||
|
|
||||||
.PHONY: gen-AUTHORS
|
.PHONY: gen-AUTHORS
|
||||||
|
@ -21,22 +21,36 @@
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
import tempfile
|
||||||
|
|
||||||
if len(sys.argv) != 3:
|
abs_builddir = os.environ.get('abs_builddir', '')
|
||||||
print("syntax: %s ACCESS-FILE PERMITTED-ACCESS-FILE")
|
abs_srcdir = os.environ.get('abs_srcdir', '')
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
access_file = sys.argv[1]
|
access_fd, access_file = tempfile.mkstemp(dir=abs_builddir,
|
||||||
permitted_file = sys.argv[2]
|
prefix='file-access-',
|
||||||
|
suffix='.txt')
|
||||||
|
permitted_file = os.path.join(abs_srcdir, 'permitted_file_access.txt')
|
||||||
|
|
||||||
|
os.environ['VIR_TEST_FILE_ACCESS_OUTPUT'] = access_file
|
||||||
|
|
||||||
|
test = ' '.join(sys.argv[1:])
|
||||||
|
|
||||||
|
ret = os.system(test)
|
||||||
|
|
||||||
|
if ret != 0 or os.read(access_fd, 10) == b'':
|
||||||
|
os.close(access_fd)
|
||||||
|
os.remove(access_file)
|
||||||
|
sys.exit(ret)
|
||||||
|
|
||||||
known_actions = ["open", "fopen", "access", "stat", "lstat", "connect"]
|
known_actions = ["open", "fopen", "access", "stat", "lstat", "connect"]
|
||||||
|
|
||||||
files = []
|
files = []
|
||||||
permitted = []
|
permitted = []
|
||||||
|
|
||||||
with open(access_file, "r") as fh:
|
with os.fdopen(access_fd, "r") as fh:
|
||||||
for line in fh:
|
for line in fh:
|
||||||
line = line.rstrip("\n")
|
line = line.rstrip("\n")
|
||||||
|
|
||||||
@ -120,6 +134,8 @@ for file in files:
|
|||||||
print(": %s" % file["testname"], end="")
|
print(": %s" % file["testname"], end="")
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
|
os.remove(access_file)
|
||||||
|
|
||||||
if err:
|
if err:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
@ -16,17 +16,6 @@
|
|||||||
## License along with this library. If not, see
|
## License along with this library. If not, see
|
||||||
## <http://www.gnu.org/licenses/>.
|
## <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
if WITH_LINUX
|
|
||||||
check-access: file-access-clean
|
|
||||||
VIR_TEST_FILE_ACCESS=1 $(MAKE) $(AM_MAKEFLAGS) check
|
|
||||||
$(RUNUTF8) $(PYTHON) $(top_srcdir)/scripts/check-file-access.py \
|
|
||||||
$(abs_builddir)/test_file_access.txt \
|
|
||||||
$(abs_srcdir)/permitted_file_access.txt | sort -u
|
|
||||||
|
|
||||||
file-access-clean:
|
|
||||||
> test_file_access.txt
|
|
||||||
endif WITH_LINUX
|
|
||||||
|
|
||||||
VALGRIND = valgrind --quiet --leak-check=full --trace-children=yes \
|
VALGRIND = valgrind --quiet --leak-check=full --trace-children=yes \
|
||||||
--trace-children-skip="*/tools/virsh","*/tests/commandhelper","/usr/bin/*" \
|
--trace-children-skip="*/tools/virsh","*/tests/commandhelper","/usr/bin/*" \
|
||||||
--suppressions=$(abs_srcdir)/.valgrind.supp
|
--suppressions=$(abs_srcdir)/.valgrind.supp
|
||||||
|
@ -678,3 +678,12 @@ foreach name : test_scripts
|
|||||||
script = find_program(name)
|
script = find_program(name)
|
||||||
test(name, script, env: tests_env)
|
test(name, script, env: tests_env)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
add_test_setup(
|
||||||
|
'access',
|
||||||
|
env: [
|
||||||
|
'VIR_TEST_FILE_ACCESS=1',
|
||||||
|
runutf8,
|
||||||
|
],
|
||||||
|
exe_wrapper: [ python3_prog, check_file_access_prog.path() ],
|
||||||
|
)
|
||||||
|
@ -69,7 +69,7 @@ printFile(const char *file,
|
|||||||
output = VIR_FILE_ACCESS_DEFAULT;
|
output = VIR_FILE_ACCESS_DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(fp = real_fopen(output, "a"))) {
|
if (!(fp = real_fopen(output, "w"))) {
|
||||||
fprintf(stderr, "Unable to open %s: %s\n", output, g_strerror(errno));
|
fprintf(stderr, "Unable to open %s: %s\n", output, g_strerror(errno));
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user