added functional tests to make-check

This commit is contained in:
BVK Chaitanya 2010-01-08 16:35:32 +05:30
parent 6fc804ffbb
commit 169b1cd2d8
7 changed files with 41 additions and 41 deletions

View file

@ -141,7 +141,6 @@ PROGRAMS = $(bin_UTILITIES) $(sbin_UTILITIES)
SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS) $(grub-mkconfig_SCRIPTS) \ SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS) $(grub-mkconfig_SCRIPTS) \
$(lib_SCRIPTS) $(lib_SCRIPTS)
INFOS = $(info_INFOS) INFOS = $(info_INFOS)
TESTS = $(check_UNITTESTS) $(check_FUNCTIONALTESTS) $(check_SCRIPTEDTESTS)
CLEANFILES = CLEANFILES =
MOSTLYCLEANFILES = MOSTLYCLEANFILES =
@ -461,19 +460,27 @@ distcheck: dist
@echo "$(distdir).tar.gz is ready for distribution" | \ @echo "$(distdir).tar.gz is ready for distribution" | \
sed 'h;s/./=/g;p;x;p;x' sed 'h;s/./=/g;p;x;p;x'
$(TESTS): $(check_SCRIPTS) $(check_MODULES) $(check_PROGRAMS) TESTS = $(check_UTILITIES) $(check_SCRIPTS) $(check_MODULES)
$(TESTS): $(test_framework_SCRIPTS) $(test_framework_MODULES)
check: all $(TESTS) check: all $(TESTS)
@list="$(check_UNITTESTS) $(check_SCRIPTEDTESTS)"; \ @list="$(check_UTILITIES)"; \
for file in $$list; do \ for file in $$list; do \
$(builddir)/$$file; \
done
@list="$(check_SCRIPTS)"; \
for file in $$list; do \
echo "$$file:"; \
if $(builddir)/$$file; then \ if $(builddir)/$$file; then \
echo "$$file: PASS"; \ echo "$$file: PASS"; \
else \ else \
echo "$$file: FAIL"; \ echo "$$file: FAIL"; \
fi; \ fi; \
done done
@list="$(check_FUNCTIONALTESTS)"; \ @list="$(check_MODULES)"; \
for test in $$list; do \ for file in $$list; do \
echo "insmod functional_test; insmod $test; functional_test" \ mod=`basename $$file .mod`; \
echo "insmod functional_test; insmod $$mod; functional_test" \
| $(builddir)/grub-shell; \ | $(builddir)/grub-shell; \
done done

View file

@ -4,38 +4,38 @@
grub-shell: tests/util/grub-shell.in config.status grub-shell: tests/util/grub-shell.in config.status
./config.status --file=$@:$< ./config.status --file=$@:$<
chmod +x $@ chmod +x $@
check_SCRIPTS += grub-shell test_framework_SCRIPTS += grub-shell
CLEANFILES += grub-shell CLEANFILES += grub-shell
# For grub-shell-tester # For grub-shell-tester
grub-shell-tester: tests/util/grub-shell-tester.in config.status grub-shell-tester: tests/util/grub-shell-tester.in config.status
./config.status --file=$@:$< ./config.status --file=$@:$<
chmod +x $@ chmod +x $@
check_SCRIPTS += grub-shell-tester test_framework_SCRIPTS += grub-shell-tester
CLEANFILES += grub-shell-tester CLEANFILES += grub-shell-tester
check_MODULES += functional_test.mod test_framework_MODULES += functional_test.mod
functional_test_mod_SOURCES = tests/lib/functional_test.c tests/lib/test.c functional_test_mod_SOURCES = tests/lib/functional_test.c tests/lib/test.c
functional_test_mod_CFLAGS = $(COMMON_CFLAGS) functional_test_mod_CFLAGS = $(COMMON_CFLAGS)
functional_test_mod_LDFLAGS = $(COMMON_LDFLAGS) functional_test_mod_LDFLAGS = $(COMMON_LDFLAGS)
# Unit tests # Unit tests
check_UNITTESTS += example_unit_test check_UTILITIES += example_unit_test
example_unit_test_SOURCES = tests/example_unit_test.c kern/list.c kern/misc.c tests/lib/test.c tests/lib/unit_test.c example_unit_test_SOURCES = tests/example_unit_test.c kern/list.c kern/misc.c tests/lib/test.c tests/lib/unit_test.c
example_unit_test_CFLAGS = -Wno-format example_unit_test_CFLAGS = -Wno-format
# Functional tests # Functional tests
check_FUNCTIONALTESTS += example_functional_test.mod check_MODULES += example_functional_test.mod
example_functional_test_mod_SOURCES = tests/example_functional_test.c example_functional_test_mod_SOURCES = tests/example_functional_test.c
example_functional_test_mod_CFLAGS = -Wno-format $(COMMON_CFLAGS) example_functional_test_mod_CFLAGS = -Wno-format $(COMMON_CFLAGS)
example_functional_test_mod_LDFLAGS = $(COMMON_LDFLAGS) example_functional_test_mod_LDFLAGS = $(COMMON_LDFLAGS)
# Scripted tests # Scripted tests
check_SCRIPTEDTESTS += example_scripted_test check_SCRIPTS += example_scripted_test
example_scripted_test_SOURCES = tests/example_scripted_test.in example_scripted_test_SOURCES = tests/example_scripted_test.in
check_SCRIPTEDTESTS += example_grub_script_test check_SCRIPTS += example_grub_script_test
example_grub_script_test_SOURCES = tests/example_grub_script_test.in example_grub_script_test_SOURCES = tests/example_grub_script_test.in

View file

@ -407,12 +407,12 @@ while l = gets
Image.new(prefix, img) Image.new(prefix, img)
end end
when 'MODULES', 'FUNCTIONALTESTS' when 'MODULES'
pmodules += args.split(/\s+/).collect do |pmod| pmodules += args.split(/\s+/).collect do |pmod|
PModule.new(prefix, pmod) PModule.new(prefix, pmod)
end end
when 'UTILITIES', 'UNITTESTS' when 'UTILITIES'
utils += args.split(/\s+/).collect do |util| utils += args.split(/\s+/).collect do |util|
Utility.new(prefix, util) Utility.new(prefix, util)
end end
@ -422,7 +422,7 @@ while l = gets
Program.new(prefix, prog) Program.new(prefix, prog)
end end
when 'SCRIPTS', 'SCRIPTEDTESTS' when 'SCRIPTS'
scripts += args.split(/\s+/).collect do |script| scripts += args.split(/\s+/).collect do |script|
Script.new(prefix, script) Script.new(prefix, script)
end end

View file

@ -27,7 +27,7 @@ void EXPORT_FUNC (grub_test_register) (const char *name, void (*test) (void));
void EXPORT_FUNC (grub_test_unregister) (const char *name); void EXPORT_FUNC (grub_test_unregister) (const char *name);
/* Execute a test and print results. */ /* Execute a test and print results. */
int grub_test_run (const char *name); int grub_test_run (grub_test_t test);
/* Test `cond' for nonzero; log failure otherwise. */ /* Test `cond' for nonzero; log failure otherwise. */
void grub_test_nonzero (int cond, const char *file, void grub_test_nonzero (int cond, const char *file,

View file

@ -45,19 +45,16 @@ grub_functional_test (struct grub_extcmd *cmd __attribute__ ((unused)),
int argc __attribute__ ((unused)), int argc __attribute__ ((unused)),
char **args __attribute__ ((unused))) char **args __attribute__ ((unused)))
{ {
int i; auto int run_test (grub_test_t test);
int status; int run_test (grub_test_t test)
grub_test_t test; {
grub_test_run (test);
return 0;
}
status = 0; grub_list_iterate (GRUB_AS_LIST (grub_test_list),
for (i = 0; i < argc; i++) (grub_list_hook_t) run_test);
{ return GRUB_ERR_NONE;
test = grub_named_list_find (GRUB_AS_NAMED_LIST (grub_test_list),
args[i]);
status = grub_test_run (test->name) ? : status;
}
return status;
} }
static grub_extcmd_t cmd; static grub_extcmd_t cmd;

View file

@ -117,10 +117,8 @@ grub_test_unregister (const char *name)
} }
int int
grub_test_run (const char *name) grub_test_run (grub_test_t test)
{ {
grub_test_t test;
auto int print_failure (grub_test_failure_t item); auto int print_failure (grub_test_failure_t item);
int print_failure (grub_test_failure_t item) int print_failure (grub_test_failure_t item)
{ {
@ -133,18 +131,16 @@ grub_test_run (const char *name)
return 0; return 0;
} }
test = grub_named_list_find (GRUB_AS_NAMED_LIST (grub_test_list), name);
if (!test)
return GRUB_ERR_FILE_NOT_FOUND;
test->main (); test->main ();
if (!failure_list)
return GRUB_ERR_NONE;
grub_test_printf ("%s:\n", test->name); grub_test_printf ("%s:\n", test->name);
grub_list_iterate (GRUB_AS_LIST (failure_list), grub_list_iterate (GRUB_AS_LIST (failure_list),
(grub_list_hook_t) print_failure); (grub_list_hook_t) print_failure);
if (!failure_list)
grub_test_printf ("%s: PASS\n", test->name);
else
grub_test_printf ("%s: FAIL\n", test->name);
free_failures (); free_failures ();
return GRUB_ERR_TEST_FAILURE; return GRUB_ERR_NONE;
} }

View file

@ -56,7 +56,7 @@ main (int argc __attribute__ ((unused)),
auto int run_test (grub_test_t test); auto int run_test (grub_test_t test);
int run_test (grub_test_t test) int run_test (grub_test_t test)
{ {
status = grub_test_run (test->name) ? : status; status = grub_test_run (test) ? : status;
return 0; return 0;
} }