Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-projects commit in portage-utils/tests/mkdir: Makefile dotest test.c
Date: Wed, 02 Mar 2011 01:19:36
Message-Id: 20110302011927.AB32E20057@flycatcher.gentoo.org
1 vapier 11/03/02 01:19:27
2
3 Added: Makefile dotest test.c
4 Log:
5 add test for mkdir_p/rm_rf code
6
7 Revision Changes Path
8 1.1 portage-utils/tests/mkdir/Makefile
9
10 file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/tests/mkdir/Makefile?rev=1.1&view=markup
11 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/tests/mkdir/Makefile?rev=1.1&content-type=text/plain
12
13 Index: Makefile
14 ===================================================================
15 CFLAGS += -Wall
16
17 all: m
18
19 m: test.c
20 $(CC) $(CFLAGS) test.c -o m
21
22 test check: dotest
23
24 dotest: m
25 ./dotest
26
27 clean:
28 rm -f m
29
30 .PHONY: all basic dotest test check clean
31
32
33
34 1.1 portage-utils/tests/mkdir/dotest
35
36 file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/tests/mkdir/dotest?rev=1.1&view=markup
37 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/tests/mkdir/dotest?rev=1.1&content-type=text/plain
38
39 Index: dotest
40 ===================================================================
41 #!/bin/bash
42
43 . ../init.sh
44
45 set -e
46
47 _m=${PWD}/m
48 mktmpdir
49
50 # check mkdir
51 m="${_m} m"
52 for d in a a/ a/b a/b/ a/b/c a/b/c/ ; do
53 $m ${d}
54
55 rmdir ${d}
56 d=${d%/}
57 while [[ ${d} == */* ]] ; do
58 d=${d%/*}
59 rmdir ${d}
60 done
61 done
62
63 for d in a a/ a/b a/b/ a/b/c a/b/c/ ; do
64 mkdir -p ${d}
65 $m ${d}
66
67 rmdir ${d}
68 d=${d%/}
69 while [[ ${d} == */* ]] ; do
70 d=${d%/*}
71 rmdir ${d}
72 done
73 done
74
75 # check rm_rf
76 m="${_m} rm"
77
78 mkdir -p a/b/c/d
79 $m a/b/
80 rmdir a
81
82 mkdir -p a/b/c/d
83 $m a/b
84 rmdir a
85
86 mkdir -p a/b/c/d
87 cd a
88 $m . || : # ignore EBUSY failure
89 cd ..
90 rmdir a
91
92 mkdir -p a/b/c/d
93 ln -s . a/b/d
94 ln -s c a/b/cc
95 ln -s .. a/b/dd
96 ln -s x a/b/x
97 touch a/b/f
98 ln -s ../f a/b/c/f
99 $m a
100 [ ! -e a ]
101
102 cd ..
103 rmdir tmp
104
105 pass
106
107
108
109 1.1 portage-utils/tests/mkdir/test.c
110
111 file : http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/tests/mkdir/test.c?rev=1.1&view=markup
112 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-projects/portage-utils/tests/mkdir/test.c?rev=1.1&content-type=text/plain
113
114 Index: test.c
115 ===================================================================
116 /*
117 * Copyright 2005-2008 Gentoo Foundation
118 * Distributed under the terms of the GNU General Public License v2
119 * $Header: /var/cvsroot/gentoo-projects/portage-utils/tests/mkdir/test.c,v 1.1 2011/03/02 01:19:27 vapier Exp $
120 *
121 * Copyright 2005-2008 Ned Ludd - <solar@g.o>
122 * Copyright 2005-2008 Mike Frysinger - <vapier@g.o>
123 */
124
125 #define _GNU_SOURCE
126
127 #include <stdio.h>
128 #include <stdbool.h>
129 #include <stdlib.h>
130 #include <sys/types.h>
131 #include <string.h>
132 #include <unistd.h>
133 #include <sys/stat.h>
134 #include <time.h>
135 #include <ctype.h>
136 #include <dirent.h>
137 #include <getopt.h>
138 #include <regex.h>
139 #include <errno.h>
140 #include <libgen.h>
141 #include <limits.h>
142 #include <assert.h>
143
144 #define warnf(fmt, args...) fprintf(stderr, fmt "\n", ## args)
145 #define errf(fmt, args...) \
146 do { \
147 warnf(fmt, ## args); \
148 exit(EXIT_FAILURE); \
149 } while (0)
150 #define err(...) errf(__VA_ARGS__)
151 #define errp(...) errf(__VA_ARGS__)
152
153 #include "../../libq/xmalloc.c"
154 #include "../../libq/xstrdup.c"
155 #include "../../libq/xmkdir.c"
156
157 int main(int argc, char *argv[])
158 {
159 int i, ret;
160
161 if (argc <= 1)
162 return 1;
163
164 ret = 0;
165
166 if (!strcmp(argv[1], "m")) {
167 for (i = 2; i < argc; ++i)
168 ret += mkdir_p(argv[i], 0755);
169 } else if (!strcmp(argv[1], "rm")) {
170 for (i = 2; i < argc; ++i)
171 ret += rm_rf(argv[i]);
172 }
173
174 return ret;
175 }