diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile.main | 6 | ||||
-rw-r--r-- | ccan/Makefile.check | 43 | ||||
-rw-r--r-- | ccan/array_size/test/run.c | 3 | ||||
-rw-r--r-- | ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c | 3 | ||||
-rw-r--r-- | ccan/check_type/test/run.c | 3 | ||||
-rw-r--r-- | ccan/config.h | 30 | ||||
-rw-r--r-- | ccan/container_of/test/run.c | 3 | ||||
-rw-r--r-- | ccan/endian/test/run.c | 3 | ||||
-rw-r--r-- | ccan/list/test/helper.c | 2 | ||||
-rw-r--r-- | ccan/list/test/run-check-corrupt.c | 6 | ||||
-rw-r--r-- | ccan/list/test/run-list_del_from-assert.c | 4 | ||||
-rw-r--r-- | ccan/list/test/run-single-eval.c | 3 | ||||
-rw-r--r-- | ccan/list/test/run.c | 4 | ||||
-rw-r--r-- | ccan/short_types/test/run.c | 3 | ||||
-rw-r--r-- | ccan/str/test/run-STR_MAX_CHARS.c | 9 | ||||
-rw-r--r-- | ccan/str/test/run.c | 3 | ||||
-rw-r--r-- | ccan/tap/tap.h | 25 |
18 files changed, 150 insertions, 5 deletions
@@ -18,6 +18,8 @@ cscope.out asm/asm-offsets.s include/asm-offsets.h version.c +ccan/*/test/*-gcov +ccan/*/test/gmon.out core/test/run-device core/test/run-malloc core/test/run-malloc-speed diff --git a/Makefile.main b/Makefile.main index d4249f0..4a8cbe4 100644 --- a/Makefile.main +++ b/Makefile.main @@ -167,8 +167,8 @@ coverage-report: skiboot.info genhtml -q -o $@ $< skiboot.info: coverage - lcov -q -c -d . -o $@ - + lcov -q -c -d . $(LCOV_DIRS) -o $@ + lcov -q -r $@ $(LCOV_EXCLUDE) -o $@ tags: find . -name '*.[chS]' | xargs ctags @@ -176,7 +176,7 @@ tags: TAGS: find . -name '*.[chS]' | xargs etags -.PHONY: tags TAGS check +.PHONY: tags TAGS check coverage cscope: find . -name '*.[chS]' | xargs cscope diff --git a/ccan/Makefile.check b/ccan/Makefile.check new file mode 100644 index 0000000..767b338 --- /dev/null +++ b/ccan/Makefile.check @@ -0,0 +1,43 @@ +CCAN_TEST_SRC := $(wildcard ccan/*/test/run*.c) + +LCOV_EXCLUDE += $(CCAN_TEST_SRC) ccan/list/test/helper.c + +CCAN_TEST := $(CCAN_TEST_SRC:%.c=%) + + +.PHONY: $(CCAN_TEST:%=%-gcov-run) ccan-check + +ccan-check: $(CCAN_TEST:%=%-check) + +check: ccan-check $(CCAN_TEST:%=%-gcov-run) + +.PHONY: ccan-coverage + +coverage: ccan-coverage + +ccan-coverage: $(CCAN_TEST:%=%-gcov-run) + +$(CCAN_TEST:%=%-gcov-run) : %-run: % + $(eval LCOV_DIRS += -d $(dir $<) ) + $(call Q, TEST-COVERAGE , (cd $(dir $<); GCOV_PREFIX_STRIP=`(c=0; while [ "\`pwd\`" != '/' ]; do cd ..; c=\`expr 1 + $$c\`; done; echo $$c)` ./$(notdir $<) ), $< ) + +$(CCAN_TEST:%=%-check) : %-check: % + $(call Q, RUN-TEST , $(VALGRIND) $<, $<) + +$(CCAN_TEST) : % : %.c + $(call Q, HOSTCC ,$(HOSTCC) $(HOSTCFLAGS) -O0 -g -I . -Iccan/ -o $@ $<,$<) + +$(CCAN_TEST:%=%-gcov): %-gcov : %.c + $(call Q, HOSTCC , (cd $(dir $<); $(HOSTCC) $(HOSTCFLAGS) -fprofile-arcs -ftest-coverage -O0 -g -I $(shell pwd) -I$(shell pwd)/./ccan/ -pg -o $(notdir $@) $(notdir $<) ), $<) + +-include $(wildcard ccan/*/test/*.d) + +clean: ccan-test-clean + +ccan-test-clean: + $(RM) -f $(CCAN_TEST) \ + $(CCAN_TEST:%=%-gcov) \ + $(CCAN_TEST:%=%.d) \ + $(CCAN_TEST:%=%.o) \ + $(CCAN_TEST:%=%-gcov.gcda) \ + $(CCAN_TEST:%=%-gcov.gcno)
\ No newline at end of file diff --git a/ccan/array_size/test/run.c b/ccan/array_size/test/run.c index 37b4200..284e315 100644 --- a/ccan/array_size/test/run.c +++ b/ccan/array_size/test/run.c @@ -18,6 +18,9 @@ static int array4_size = ARRAY_SIZE(array4); int main(int argc, char *argv[]) { + (void)argc; + (void)argv; + plan_tests(8); ok1(array1_size == 1); ok1(array2_size == 2); diff --git a/ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c b/ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c index 4185821..55e6f3c 100644 --- a/ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c +++ b/ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c @@ -3,6 +3,9 @@ int main(int argc, char *argv[]) { + (void)argc; + (void)argv; + plan_tests(1); ok1(BUILD_ASSERT_OR_ZERO(1 == 1) == 0); return exit_status(); diff --git a/ccan/check_type/test/run.c b/ccan/check_type/test/run.c index 83b903c..767c9fd 100644 --- a/ccan/check_type/test/run.c +++ b/ccan/check_type/test/run.c @@ -5,6 +5,9 @@ int main(int argc, char *argv[]) { int x = 0, y = 0; + (void)argc; + (void)argv; + plan_tests(9); ok1(check_type(argc, int) == 0); diff --git a/ccan/config.h b/ccan/config.h new file mode 100644 index 0000000..39c0b4b --- /dev/null +++ b/ccan/config.h @@ -0,0 +1,30 @@ +/* Copyright 2013-2014 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Dummy config.h for CCAN test suite */ + +#define HAVE_BUILTIN_TYPES_COMPATIBLE_P 1 +#define HAVE_TYPEOF 1 + +#ifndef HAVE_BIG_ENDIAN +#define HAVE_BIG_ENDIAN 0 +#endif + +#ifndef HAVE_LITTLE_ENDIAN +#define HAVE_LITTLE_ENDIAN 0 +#endif + +#define HAVE_BYTESWAP_H 0 +#define HAVE_BSWAP_64 0 diff --git a/ccan/container_of/test/run.c b/ccan/container_of/test/run.c index 96ef483..9e51b0d 100644 --- a/ccan/container_of/test/run.c +++ b/ccan/container_of/test/run.c @@ -12,6 +12,9 @@ int main(int argc, char *argv[]) int *intp = &foo.a; char *charp = &foo.b; + (void)argc; + (void)argv; + plan_tests(6); ok1(container_of(intp, struct foo, a) == &foo); ok1(container_of(charp, struct foo, b) == &foo); diff --git a/ccan/endian/test/run.c b/ccan/endian/test/run.c index a00fce7..e5b054b 100644 --- a/ccan/endian/test/run.c +++ b/ccan/endian/test/run.c @@ -18,6 +18,9 @@ int main(int argc, char *argv[]) unsigned char u16_bytes[2]; } u16; + (void)argc; + (void)argv; + plan_tests(48); /* Straight swap tests. */ diff --git a/ccan/list/test/helper.c b/ccan/list/test/helper.c index ca4700b..4fb1c5a 100644 --- a/ccan/list/test/helper.c +++ b/ccan/list/test/helper.c @@ -1,6 +1,6 @@ #include <stdlib.h> #include <stdbool.h> -#include <timebase.h> +#include <time.h> #include <ccan/list/list.h> #include "helper.h" diff --git a/ccan/list/test/run-check-corrupt.c b/ccan/list/test/run-check-corrupt.c index f4c20b5..da4578a 100644 --- a/ccan/list/test/run-check-corrupt.c +++ b/ccan/list/test/run-check-corrupt.c @@ -16,6 +16,9 @@ static int my_fprintf(FILE *stream, const char *format, ...) { va_list ap; int ret; + + (void)stream; + va_start(ap, format); ret = vsnprintf(printf_buffer, sizeof(printf_buffer), format, ap); va_end(ap); @@ -32,6 +35,9 @@ int main(int argc, char *argv[]) struct list_node n1; char expect[100]; + (void)argc; + (void)argv; + plan_tests(9); /* Empty list. */ list.n.next = &list.n; diff --git a/ccan/list/test/run-list_del_from-assert.c b/ccan/list/test/run-list_del_from-assert.c index 05d6cad..453dc0f 100644 --- a/ccan/list/test/run-list_del_from-assert.c +++ b/ccan/list/test/run-list_del_from-assert.c @@ -14,6 +14,9 @@ int main(int argc, char *argv[]) pid_t child; int status; + (void)argc; + (void)argv; + plan_tests(1); list_head_init(&list1); list_head_init(&list2); @@ -25,6 +28,7 @@ int main(int argc, char *argv[]) if (child) { wait(&status); } else { + close(2); /* Close stderr so we don't print confusing assert */ /* This should abort. */ list_del_from(&list1, &n3); exit(0); diff --git a/ccan/list/test/run-single-eval.c b/ccan/list/test/run-single-eval.c index f90eed3..3c17e03 100644 --- a/ccan/list/test/run-single-eval.c +++ b/ccan/list/test/run-single-eval.c @@ -28,6 +28,9 @@ int main(int argc, char *argv[]) node_count = 0; struct list_head list = LIST_HEAD_INIT(list); + (void)argc; + (void)argv; + plan_tests(74); /* Test LIST_HEAD, LIST_HEAD_INIT, list_empty and check_list */ ok1(list_empty(ref(&static_list, static_count))); diff --git a/ccan/list/test/run.c b/ccan/list/test/run.c index 1d02acd..bc9d266 100644 --- a/ccan/list/test/run.c +++ b/ccan/list/test/run.c @@ -1,3 +1,4 @@ +#include <ccan/list/test/helper.c> #include <ccan/list/list.h> #include <ccan/tap/tap.h> #include <ccan/list/list.c> @@ -25,6 +26,9 @@ int main(int argc, char *argv[]) opaque_t *q, *nq; struct list_head opaque_list = LIST_HEAD_INIT(opaque_list); + (void)argc; + (void)argv; + plan_tests(65); /* Test LIST_HEAD, LIST_HEAD_INIT, list_empty and check_list */ ok1(list_empty(&static_list)); diff --git a/ccan/short_types/test/run.c b/ccan/short_types/test/run.c index 5aa80d7..99f2138 100644 --- a/ccan/short_types/test/run.c +++ b/ccan/short_types/test/run.c @@ -5,6 +5,9 @@ int main(int argc, char *argv[]) { + (void)argc; + (void)argv; + plan_tests(22); ok1(sizeof(u64) == 8); diff --git a/ccan/str/test/run-STR_MAX_CHARS.c b/ccan/str/test/run-STR_MAX_CHARS.c index ae6969c..1343e04 100644 --- a/ccan/str/test/run-STR_MAX_CHARS.c +++ b/ccan/str/test/run-STR_MAX_CHARS.c @@ -6,7 +6,7 @@ int main(int argc, char *argv[]) { - char str[1000]; + char *str = (char*)malloc(sizeof(char)*1000); struct { uint8_t u1byte; int8_t s1byte; @@ -19,6 +19,11 @@ int main(int argc, char *argv[]) void *ptr; } types; + (void)argc; + (void)argv; + + assert(str); + plan_tests(13); memset(&types, 0xFF, sizeof(types)); @@ -55,5 +60,7 @@ int main(int argc, char *argv[]) sprintf(str, "%p", types.ptr); ok1(strlen(str) < STR_MAX_CHARS(types.ptr)); + free(str); + return exit_status(); } diff --git a/ccan/str/test/run.c b/ccan/str/test/run.c index 0f00ea3..216e141 100644 --- a/ccan/str/test/run.c +++ b/ccan/str/test/run.c @@ -25,6 +25,9 @@ int main(int argc, char *argv[]) { unsigned int i, j, n; char *strings[NUM_SUBSTRINGS * NUM_SUBSTRINGS]; + + (void)argc; + (void)argv; n = 0; for (i = 0; i < NUM_SUBSTRINGS; i++) { diff --git a/ccan/tap/tap.h b/ccan/tap/tap.h new file mode 100644 index 0000000..a772f1a --- /dev/null +++ b/ccan/tap/tap.h @@ -0,0 +1,25 @@ +/* Copyright 2013-2014 IBM Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + * implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* Dummy tap.h for ccan tests */ + +#include <assert.h> + +#define plan_tests(x) do { } while(0) +#define ok1(e) assert(e) +#define ok(e, ...) assert(e) +#define fail(...) assert(0) +#define exit_status() (0) |