annotate tests/test-mkdirat.c @ 12517:013b270a78b9

tests: don't require debug system() to pass When running a cross-compilation to mingw on a Linux host, but without a valid mingw rm executable, the debug-only system() call would fail. This is not fatal to the test, since the call is merely a debugging aid if a prior call to the test encountered a failure and left garbage; in general, the tests should pass and the system() call have nothing to clean in the first place. Also, the system() call only needs to happen once at startup, not once per iteration into the tests performed by .h files. * tests/test-lstat.h (test_lstat_func): Move debug cleanup... * tests/test-rmdir.h (test_rmdir_func): Likewise. * tests/test-unlink.h (test_unlink_func): Likewise. * tests/test-fstatat.c (main): ...into callers. * tests/test-lstat.c (main): Likewise. * tests/test-rmdir.c (main): Likewise. * tests/test-unlink.c (main): Likewise. * tests/test-unlinkat.c (main): Likewise. * tests/test-areadlink-with-size.c (main): Don't require a debug-only system call to pass, aiding cross-testing to mingw. * tests/test-areadlink.c (main): Likewise. * tests/test-areadlinkat-with-size.c (main): Likewise. * tests/test-areadlinkat.c (main): Likewise. * tests/test-canonicalize-lgpl.c (main): Likewise. * tests/test-canonicalize.c (main): Likewise. * tests/test-chown.c (main): Likewise. * tests/test-fchownat.c (main): Likewise. * tests/test-lchown.c (main): Likewise. * tests/test-fdutimensat.c (main): Likewise. * tests/test-futimens.c (main): Likewise. * tests/test-link.c (main): Likewise. * tests/test-linkat.c (main): Likewise. * tests/test-mkdir.c (main): Likewise. * tests/test-mkdirat.c (main): Likewise. * tests/test-mkfifo.c (main): Likewise. * tests/test-mkfifoat.c (main): Likewise. * tests/test-mknod.c (main): Likewise. * tests/test-readlink.c (main): Likewise. * tests/test-remove.c (main): Likewise. * tests/test-rename.c (main): Likewise. * tests/test-renameat.c (main): Likewise. * tests/test-symlink.c (main): Likewise. * tests/test-symlinkat.c (main): Likewise. * tests/test-utimens.c (main): Likewise. * tests/test-utimensat.c (main): Likewise. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Tue, 29 Dec 2009 06:58:18 -0700
parents a48d3d749ca5
children c2cbabec01dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12130
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
1 /* Tests of mkdirat.
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
2 Copyright (C) 2009 Free Software Foundation, Inc.
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
3
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
4 This program is free software: you can redistribute it and/or modify
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
6 the Free Software Foundation; either version 3 of the License, or
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
7 (at your option) any later version.
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
8
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
12 GNU General Public License for more details.
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
13
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
16
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
17 /* Written by Eric Blake <ebb9@byu.net>, 2009. */
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
18
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
19 #include <config.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
20
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
21 #include <sys/stat.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
22
12489
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12197
diff changeset
23 #include "signature.h"
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12197
diff changeset
24 SIGNATURE_CHECK (mkdirat, int, (int, char const *, mode_t));
33ab12a7cea2 tests: add signature checks
Eric Blake <ebb9@byu.net>
parents: 12197
diff changeset
25
12130
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
26 #include <fcntl.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
27 #include <errno.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
28 #include <stdbool.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
29 #include <stdio.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
30 #include <stdlib.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
31 #include <unistd.h>
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
32
12496
a48d3d749ca5 Refactor common macros used in tests.
Bruno Haible <bruno@clisp.org>
parents: 12489
diff changeset
33 #include "macros.h"
12130
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
34
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
35 #define BASE "test-mkdirat.t"
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
36
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
37 #include "test-mkdir.h"
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
38
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
39 static int dfd = AT_FDCWD;
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
40
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
41 /* Wrapper to test mkdirat like mkdir. */
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
42 static int
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
43 do_mkdir (char const *name, mode_t mode)
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
44 {
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
45 return mkdirat (dfd, name, mode);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
46 }
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
47
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
48 int
12197
e45d9bb2233e tests: avoid several compiler warnings
Eric Blake <ebb9@byu.net>
parents: 12130
diff changeset
49 main (void)
12130
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
50 {
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
51 int result;
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
52
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
53 /* Clean up any trash from prior testsuite runs. */
12517
013b270a78b9 tests: don't require debug system() to pass
Eric Blake <ebb9@byu.net>
parents: 12496
diff changeset
54 system ("rm -rf " BASE "*");
12130
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
55
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
56 /* Test basic mkdir functionality. */
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
57 result = test_mkdir (do_mkdir, false);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
58 dfd = open (".", O_RDONLY);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
59 ASSERT (0 <= dfd);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
60 ASSERT (test_mkdir (do_mkdir, false) == result);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
61
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
62 /* Tests specific to mkdirat. */
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
63 ASSERT (mkdirat (dfd, BASE "dir1", 0700) == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
64 ASSERT (chdir (BASE "dir1") == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
65 ASSERT (close (dfd) == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
66 dfd = open ("..", O_RDONLY);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
67 ASSERT (0 <= dfd);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
68 ASSERT (mkdirat (dfd, BASE "dir2", 0700) == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
69 ASSERT (close (dfd) == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
70 errno = 0;
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
71 ASSERT (mkdirat (dfd, BASE "dir3", 0700) == -1);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
72 ASSERT (errno == EBADF);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
73 dfd = open ("/dev/null", O_RDONLY);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
74 ASSERT (0 <= dfd);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
75 errno = 0;
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
76 ASSERT (mkdirat (dfd, "dir3", 0700) == -1);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
77 ASSERT (errno == ENOTDIR);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
78 ASSERT (close (dfd) == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
79 ASSERT (chdir ("..") == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
80 ASSERT (rmdir (BASE "dir1") == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
81 ASSERT (rmdir (BASE "dir2") == 0);
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
82
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
83 return result;
885b12200361 mkdir, mkdirat: add tests
Eric Blake <ebb9@byu.net>
parents:
diff changeset
84 }