[git commit] testsuite: fix one bug, one warning; extend README (one TODO added)

Denys Vlasenko vda.linux at googlemail.com
Thu Jul 23 11:27:05 UTC 2009


commit: http://git.uclibc.org/uClibc/commit/?id=05c69924b14d68027a90695a4d8da4ec70c9a886
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 test/README              |   33 +++++++++++++++++++++------------
 test/pwd_grp/getgroups.c |    2 +-
 test/stdlib/qsort.c      |   10 +++++++++-
 3 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/test/README b/test/README
index fcb4148..8fb12d9 100644
--- a/test/README
+++ b/test/README
@@ -9,9 +9,8 @@ This will compile and link the tests
 
 make run
 
-This will check for binaries if they are not there it
-will call 'compile' target then it will execute all the
-tests.
+This will check for binaries, if they are not there it
+will call 'compile' target, then it will execute all the tests.
 
 make check
 make all
@@ -23,7 +22,7 @@ The following make variables may help you in testing:
  - UCLIBC_ONLY  - only run tests against uClibc
  - GLIBC_ONLY   - only run tests against glibc
  - V / VERBOSE  - run tests with a lot of output
- - TEST_INSTALLED_UCLIBC - Test installed libraries 
+ - TEST_INSTALLED_UCLIBC - Test installed libraries
                            under /lib and /usr/lib.
  - TIMEOUTFACTOR=nn - increase test timeout nn times.
                   At least REGEX_OLD + regex/tst-regex2 needs it increased.
@@ -31,6 +30,16 @@ The following make variables may help you in testing:
 So, to just run the uClibc tests, try this:
 make check UCLIBC_ONLY=1
 
+If you need to test just a subset of all test, delete subdirectories
+you do not need.
+
+As of 2009-07, build machinery does not track dependencies on uclibc.
+If you edit a header and re-run "make compile", it does not re-install it
+into ../install_dir. If you delete ../install_dir, "make compile"
+rebuilds uclibc as needed and re-installs ../install_dir,
+but still does not rebuild testcases.
+(You can work around it by "touch */*.c" for now).
+
 ----------------
  For: Developer
 ----------------
@@ -45,12 +54,12 @@ The structure of this test system is:
                           makefiles plus Makefile.in
  test/subdir/*.c          the tests
 
-Each subdir has a Makefile (same for any subdir) that must include in strict order :
-  - the upper-level Rules.mak file.
-  - the Makefile.in .
-  - the upper-level Test.mak file.
-Makefile.in may be used to define the TESTS and TESTS_DISABLED variables.  If you do not, TESTS
-is built automatically based upon all the .c files in the subdir.
+Each subdir has a Makefile (same for any subdir) that must include in strict order:
+  - the upper-level Rules.mak file
+  - the Makefile.in
+  - the upper-level Test.mak file
+Makefile.in may be used to define the TESTS and TESTS_DISABLED variables.
+If you do not, TESTS is built automatically based upon all the .c files in the subdir.
 TESTS := foo
 TESTS_DISABLED := bar
 Each test must use a similar .c name; so the "foo" test needs a "foo.c".
@@ -68,8 +77,8 @@ EXTRA_CLEAN   := extra files to remove in the clean target
 EXTRA_DIRS    := extra directories to remove in the clean target
 EXTRA_CFLAGS  := -DFOO
 EXTRA_LDFLAGS := -lpthread
-OPTS          := 
-WRAPPER       := 
+OPTS          :=
+WRAPPER       :=
 
 If you want to compare the output of a test with known good output, then just
 create a local file named "foo.out.good" and the output generated by the test
diff --git a/test/pwd_grp/getgroups.c b/test/pwd_grp/getgroups.c
index 0c09308..5769b18 100644
--- a/test/pwd_grp/getgroups.c
+++ b/test/pwd_grp/getgroups.c
@@ -53,7 +53,7 @@ static int xgetgroups(gid_t gid, int *n_groups, gid_t ** groups)
 	if (ng < 0) {
 		warn("cannot get supplemental group list");
 		++fail;
-		free(groups);
+		free(g);
 	}
 	if (!fail) {
 		*n_groups = ng;
diff --git a/test/stdlib/qsort.c b/test/stdlib/qsort.c
index abc505e..74f9331 100644
--- a/test/stdlib/qsort.c
+++ b/test/stdlib/qsort.c
@@ -34,7 +34,15 @@ int main(void)
 		printf("[%d] %s\n", i, dirbuf->d_name);
 	}
 	printf("\nCalling qsort()\n");
-	qsort(array, numdir, sizeof(struct dirent *), alphasort);
+	/* Even though some manpages say that alphasort should be
+	 * int alphasort(const void *a, const void *b),
+	 * in reality glibc and uclibc have const struct dirent**
+	 * instead of const void*.
+	 * Therefore we get a warning here unless we use a cast,
+	 * which makes people think that alphasort prototype
+	 * needs to be fixed in uclibc headers.
+	 */
+	qsort(array, numdir, sizeof(struct dirent *), (void*) alphasort);
 	for (i = 0; i < numdir; ++i) {
 		dirbuf = array[i];
 		printf("[%d] %s\n", i, dirbuf->d_name);
-- 
1.6.3.3



More information about the uClibc-cvs mailing list