OSDN Git Service

testsuite: fix one bug, one warning; extend README (one TODO added)
authorDenys Vlasenko <vda.linux@googlemail.com>
Thu, 23 Jul 2009 11:27:05 +0000 (13:27 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 23 Jul 2009 11:27:05 +0000 (13:27 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
test/README
test/pwd_grp/getgroups.c
test/stdlib/qsort.c

index fcb4148..8fb12d9 100644 (file)
@@ -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
index 0c09308..5769b18 100644 (file)
@@ -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;
index abc505e..74f9331 100644 (file)
@@ -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);