X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-dirname.c;h=1ddf229b58a7b53cc7f11692255237316757ab76;hb=0e24c5989ff4b5f886f10ad2b066d793caca7ff2;hp=debda3f1c9808ecb6451b7ba19f790f59355efe3;hpb=48e0ba6d23bdc0fcad1b620cb410bb0a57684edc;p=gnulib.git diff --git a/tests/test-dirname.c b/tests/test-dirname.c index debda3f1c..1ddf229b5 100644 --- a/tests/test-dirname.c +++ b/tests/test-dirname.c @@ -1,5 +1,5 @@ /* Test the gnulib dirname module. - Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2005-2007, 2009-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,108 +24,108 @@ #include struct test { - const char *name; /* Name under test. */ - const char *dir; /* dir_name (name). */ - const char *last; /* last_component (name). */ - const char *base; /* base_name (name). */ - const char *stripped; /* name after strip_trailing_slashes (name). */ + const char *name; /* Name under test. */ + const char *dir; /* dir_name (name). */ + const char *last; /* last_component (name). */ + const char *base; /* base_name (name). */ + const char *stripped; /* name after strip_trailing_slashes (name). */ bool modified; /* result of strip_trailing_slashes (name). */ - bool absolute; /* IS_ABSOLUTE_FILE_NAME (name). */ + bool absolute; /* IS_ABSOLUTE_FILE_NAME (name). */ }; static struct test tests[] = { - {"d/f", "d", "f", "f", "d/f", false, false}, - {"/d/f", "/d", "f", "f", "/d/f", false, true}, - {"d/f/", "d", "f/", "f/", "d/f", true, false}, - {"d/f//", "d", "f//", "f/", "d/f", true, false}, - {"f", ".", "f", "f", "f", false, false}, - {"/", "/", "", "/", "/", false, true}, + {"d/f", "d", "f", "f", "d/f", false, false}, + {"/d/f", "/d", "f", "f", "/d/f", false, true}, + {"d/f/", "d", "f/", "f/", "d/f", true, false}, + {"d/f//", "d", "f//", "f/", "d/f", true, false}, + {"f", ".", "f", "f", "f", false, false}, + {"/", "/", "", "/", "/", false, true}, #if DOUBLE_SLASH_IS_DISTINCT_ROOT - {"//", "//", "", "//", "//", false, true}, - {"//d", "//", "d", "d", "//d", false, true}, + {"//", "//", "", "//", "//", false, true}, + {"//d", "//", "d", "d", "//d", false, true}, #else - {"//", "/", "", "/", "/", true, true}, - {"//d", "/", "d", "d", "//d", false, true}, + {"//", "/", "", "/", "/", true, true}, + {"//d", "/", "d", "d", "//d", false, true}, #endif - {"///", "/", "", "/", "/", true, true}, - {"///a///", "/", "a///", "a/", "///a", true, true}, + {"///", "/", "", "/", "/", true, true}, + {"///a///", "/", "a///", "a/", "///a", true, true}, /* POSIX requires dirname("") and basename("") to both return ".", but dir_name and base_name are defined differently. */ - {"", ".", "", "", "", false, false}, - {".", ".", ".", ".", ".", false, false}, - {"..", ".", "..", "..", "..", false, false}, -#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR - {"a\\", ".", "a\\", "a\\", "a", true, false}, - {"a\\b", "a", "b", "b", "a\\b", false, false}, - {"\\", "\\", "", "\\", "\\", false, true}, - {"\\/\\", "\\", "", "\\", "\\", true, true}, - {"\\\\/", "\\", "", "\\", "\\", true, true}, - {"\\//", "\\", "", "\\", "\\", true, true}, - {"//\\", "/", "", "/", "/", true, true}, + {"", ".", "", "", "", false, false}, + {".", ".", ".", ".", ".", false, false}, + {"..", ".", "..", "..", "..", false, false}, +#if ISSLASH ('\\') + {"a\\", ".", "a\\", "a\\", "a", true, false}, + {"a\\b", "a", "b", "b", "a\\b", false, false}, + {"\\", "\\", "", "\\", "\\", false, true}, + {"\\/\\", "\\", "", "\\", "\\", true, true}, + {"\\\\/", "\\", "", "\\", "\\", true, true}, + {"\\//", "\\", "", "\\", "\\", true, true}, + {"//\\", "/", "", "/", "/", true, true}, #else - {"a\\", ".", "a\\", "a\\", "a\\", false, false}, - {"a\\b", ".", "a\\b", "a\\b", "a\\b", false, false}, - {"\\", ".", "\\", "\\", "\\", false, false}, - {"\\/\\", "\\", "\\", "\\", "\\/\\",false, false}, - {"\\\\/", ".", "\\\\/","\\\\/","\\\\", true, false}, - {"\\//", ".", "\\//", "\\/", "\\", true, false}, + {"a\\", ".", "a\\", "a\\", "a\\", false, false}, + {"a\\b", ".", "a\\b", "a\\b", "a\\b", false, false}, + {"\\", ".", "\\", "\\", "\\", false, false}, + {"\\/\\", "\\", "\\", "\\", "\\/\\",false, false}, + {"\\\\/", ".", "\\\\/","\\\\/","\\\\", true, false}, + {"\\//", ".", "\\//", "\\/", "\\", true, false}, # if DOUBLE_SLASH_IS_DISTINCT_ROOT - {"//\\", "//", "\\", "\\", "//\\", false, true}, + {"//\\", "//", "\\", "\\", "//\\", false, true}, # else - {"//\\", "/", "\\", "\\", "//\\", false, true}, + {"//\\", "/", "\\", "\\", "//\\", false, true}, # endif #endif -#if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX +#if ISSLASH ('\\') # if FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE - {"c:", "c:", "", "c:", "c:", false, false}, - {"c:/", "c:/", "", "c:/", "c:/", false, true}, - {"c://", "c:/", "", "c:/", "c:/", true, true}, - {"c:/d", "c:/", "d", "d", "c:/d", false, true}, - {"c://d", "c:/", "d", "d", "c://d",false, true}, - {"c:/d/", "c:/", "d/", "d/", "c:/d", true, true}, - {"c:/d/f", "c:/d", "f", "f", "c:/d/f",false, true}, - {"c:d", "c:.", "d", "d", "c:d", false, false}, - {"c:d/", "c:.", "d/", "d/", "c:d", true, false}, - {"c:d/f", "c:d", "f", "f", "c:d/f",false, false}, - {"a:b:c", "a:.", "b:c", "./b:c","a:b:c",false, false}, - {"a/b:c", "a", "b:c", "./b:c","a/b:c",false, false}, - {"a/b:c/", "a", "b:c/", "./b:c/","a/b:c",true, false}, + {"c:", "c:", "", "c:", "c:", false, false}, + {"c:/", "c:/", "", "c:/", "c:/", false, true}, + {"c://", "c:/", "", "c:/", "c:/", true, true}, + {"c:/d", "c:/", "d", "d", "c:/d", false, true}, + {"c://d", "c:/", "d", "d", "c://d",false, true}, + {"c:/d/", "c:/", "d/", "d/", "c:/d", true, true}, + {"c:/d/f", "c:/d", "f", "f", "c:/d/f",false, true}, + {"c:d", "c:.", "d", "d", "c:d", false, false}, + {"c:d/", "c:.", "d/", "d/", "c:d", true, false}, + {"c:d/f", "c:d", "f", "f", "c:d/f",false, false}, + {"a:b:c", "a:.", "b:c", "./b:c","a:b:c",false, false}, + {"a/b:c", "a", "b:c", "./b:c","a/b:c",false, false}, + {"a/b:c/", "a", "b:c/", "./b:c/","a/b:c",true, false}, # else /* ! FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE */ - {"c:", "c:", "", "c:", "c:", false, true}, - {"c:/", "c:", "", "c:", "c:", true, true}, - {"c://", "c:", "", "c:", "c:", true, true}, - {"c:/d", "c:", "d", "d", "c:/d", false, true}, - {"c://d", "c:", "d", "d", "c://d",false, true}, - {"c:/d/", "c:", "d/", "d/", "c:/d", true, true}, - {"c:/d/f", "c:/d", "f", "f", "c:/d/f",false, true}, - {"c:d", "c:", "d", "d", "c:d", false, true}, - {"c:d/", "c:", "d/", "d/", "c:d", true, true}, - {"c:d/f", "c:d", "f", "f", "c:d/f",false, true}, - {"a:b:c", "a:", "b:c", "./b:c","a:b:c",false, true}, - {"a/b:c", "a", "b:c", "./b:c","a/b:c",false, false}, - {"a/b:c/", "a", "b:c/", "./b:c/","a/b:c",true, false}, + {"c:", "c:", "", "c:", "c:", false, true}, + {"c:/", "c:", "", "c:", "c:", true, true}, + {"c://", "c:", "", "c:", "c:", true, true}, + {"c:/d", "c:", "d", "d", "c:/d", false, true}, + {"c://d", "c:", "d", "d", "c://d",false, true}, + {"c:/d/", "c:", "d/", "d/", "c:/d", true, true}, + {"c:/d/f", "c:/d", "f", "f", "c:/d/f",false, true}, + {"c:d", "c:", "d", "d", "c:d", false, true}, + {"c:d/", "c:", "d/", "d/", "c:d", true, true}, + {"c:d/f", "c:d", "f", "f", "c:d/f",false, true}, + {"a:b:c", "a:", "b:c", "./b:c","a:b:c",false, true}, + {"a/b:c", "a", "b:c", "./b:c","a/b:c",false, false}, + {"a/b:c/", "a", "b:c/", "./b:c/","a/b:c",true, false}, # endif -#else /* ! FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX */ - {"c:", ".", "c:", "c:", "c:", false, false}, - {"c:/", ".", "c:/", "c:/", "c:", true, false}, - {"c://", ".", "c://", "c:/", "c:", true, false}, - {"c:/d", "c:", "d", "d", "c:/d", false, false}, - {"c://d", "c:", "d", "d", "c://d",false, false}, - {"c:/d/", "c:", "d/", "d/", "c:/d", true, false}, - {"c:/d/f", "c:/d", "f", "f", "c:/d/f",false, false}, - {"c:d", ".", "c:d", "c:d", "c:d", false, false}, - {"c:d/", ".", "c:d/", "c:d/", "c:d", true, false}, - {"c:d/f", "c:d", "f", "f", "c:d/f",false, false}, - {"a:b:c", ".", "a:b:c","a:b:c","a:b:c",false, false}, - {"a/b:c", "a", "b:c", "b:c", "a/b:c",false, false}, - {"a/b:c/", "a", "b:c/", "b:c/", "a/b:c",true, false}, +#else /* ! ISSLASH ('\\') */ + {"c:", ".", "c:", "c:", "c:", false, false}, + {"c:/", ".", "c:/", "c:/", "c:", true, false}, + {"c://", ".", "c://", "c:/", "c:", true, false}, + {"c:/d", "c:", "d", "d", "c:/d", false, false}, + {"c://d", "c:", "d", "d", "c://d",false, false}, + {"c:/d/", "c:", "d/", "d/", "c:/d", true, false}, + {"c:/d/f", "c:/d", "f", "f", "c:/d/f",false, false}, + {"c:d", ".", "c:d", "c:d", "c:d", false, false}, + {"c:d/", ".", "c:d/", "c:d/", "c:d", true, false}, + {"c:d/f", "c:d", "f", "f", "c:d/f",false, false}, + {"a:b:c", ".", "a:b:c","a:b:c","a:b:c",false, false}, + {"a/b:c", "a", "b:c", "b:c", "a/b:c",false, false}, + {"a/b:c/", "a", "b:c/", "b:c/", "a/b:c",true, false}, #endif - {"1:", ".", "1:", "1:", "1:", false, false}, - {"1:/", ".", "1:/", "1:/", "1:", true, false}, - {"/:", "/", ":", ":", "/:", false, true}, - {"/:/", "/", ":/", ":/", "/:", true, true}, + {"1:", ".", "1:", "1:", "1:", false, false}, + {"1:/", ".", "1:/", "1:/", "1:", true, false}, + {"/:", "/", ":", ":", "/:", false, true}, + {"/:/", "/", ":/", ":/", "/:", true, true}, /* End sentinel. */ - {NULL, NULL, NULL, NULL, NULL, false, false} + {NULL, NULL, NULL, NULL, NULL, false, false} }; int @@ -145,44 +145,44 @@ main (void) bool modified = strip_trailing_slashes (stripped); bool absolute = IS_ABSOLUTE_FILE_NAME (t->name); if (! (strcmp (dir, t->dir) == 0 - && (dirlen == strlen (dir) - || (dirlen + 1 == strlen (dir) && dir[dirlen] == '.')))) - { - ok = false; - printf ("dir_name `%s': got `%s' len %d, expected `%s' len %ld\n", - t->name, dir, dirlen, - t->dir, (unsigned long) strlen (t->dir)); - } + && (dirlen == strlen (dir) + || (dirlen + 1 == strlen (dir) && dir[dirlen] == '.')))) + { + ok = false; + printf ("dir_name `%s': got `%s' len %d, expected `%s' len %ld\n", + t->name, dir, dirlen, + t->dir, (unsigned long) strlen (t->dir)); + } if (strcmp (last, t->last)) - { - ok = false; - printf ("last_component `%s': got `%s', expected `%s'\n", - t->name, last, t->last); - } + { + ok = false; + printf ("last_component `%s': got `%s', expected `%s'\n", + t->name, last, t->last); + } if (! (strcmp (base, t->base) == 0 - && (baselen == strlen (base) - || (baselen + 1 == strlen (base) - && ISSLASH (base[baselen]))))) - { - ok = false; - printf ("base_name `%s': got `%s' len %d, expected `%s' len %ld\n", - t->name, base, baselen, - t->base, (unsigned long) strlen (t->base)); - } + && (baselen == strlen (base) + || (baselen + 1 == strlen (base) + && ISSLASH (base[baselen]))))) + { + ok = false; + printf ("base_name `%s': got `%s' len %d, expected `%s' len %ld\n", + t->name, base, baselen, + t->base, (unsigned long) strlen (t->base)); + } if (strcmp (stripped, t->stripped) || modified != t->modified) - { - ok = false; - printf ("strip_trailing_slashes `%s': got %s %s, expected %s %s\n", - t->name, stripped, modified ? "changed" : "unchanged", - t->stripped, t->modified ? "changed" : "unchanged"); - } + { + ok = false; + printf ("strip_trailing_slashes `%s': got %s %s, expected %s %s\n", + t->name, stripped, modified ? "changed" : "unchanged", + t->stripped, t->modified ? "changed" : "unchanged"); + } if (t->absolute != absolute) - { - ok = false; - printf ("`%s': got %s, expected %s\n", t->name, - absolute ? "absolute" : "relative", - t->absolute ? "absolute" : "relative"); - } + { + ok = false; + printf ("`%s': got %s, expected %s\n", t->name, + absolute ? "absolute" : "relative", + t->absolute ? "absolute" : "relative"); + } free (dir); free (base); free (stripped);