summaryrefslogtreecommitdiff
path: root/tests/mkdir
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2006-10-06 20:44:31 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2006-10-06 20:44:31 +0000
commit4767fc607e5fd38b2a9c8db2d876125aaa10e578 (patch)
treeb4468e643bfee985d4a797ce142567f17dbfe7a5 /tests/mkdir
parent0fc6edb71490b03c79dd03c903a4b72ce2a23d81 (diff)
downloadcoreutils-4767fc607e5fd38b2a9c8db2d876125aaa10e578.tar.gz
coreutils-4767fc607e5fd38b2a9c8db2d876125aaa10e578.tar.bz2
coreutils-4767fc607e5fd38b2a9c8db2d876125aaa10e578.zip
Fix bug reported today by Mike Frysinger: mkdir -pv is logging the
wrong file name in some cases. * src/install.c (struct install_options): New type. (install_file_in_file_parents, main): Use it instead of struct cp_options. (process_dir): Remember the full name. (announce_mkdir, make_ancestor): Use the full name in announcements. * src/mkdir.c (struct mkdir_options): Add full_name member. (make_ancestor): Use the full name in announcements. (process_dir): Remember the full name. * tests/mkdir/Makefile.am (TESTS): Add p-v. * tests/mkdir/p-v: New file, to test this bug.
Diffstat (limited to 'tests/mkdir')
-rw-r--r--tests/mkdir/Makefile.am2
-rwxr-xr-xtests/mkdir/p-v56
2 files changed, 57 insertions, 1 deletions
diff --git a/tests/mkdir/Makefile.am b/tests/mkdir/Makefile.am
index 7512f7b4b..7f4351655 100644
--- a/tests/mkdir/Makefile.am
+++ b/tests/mkdir/Makefile.am
@@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = 1.1 gnits
TESTS = \
p-thru-slink \
- p-3 p-1 p-2 special-1 perm parents t-slash p-slashdot
+ p-3 p-1 p-2 p-v special-1 perm parents t-slash p-slashdot
EXTRA_DIST = $(TESTS)
TESTS_ENVIRONMENT = \
srcdir=$(srcdir) \
diff --git a/tests/mkdir/p-v b/tests/mkdir/p-v
new file mode 100755
index 000000000..c80e0acda
--- /dev/null
+++ b/tests/mkdir/p-v
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Test mkdir -pv.
+
+# Copyright (C) 2006 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
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+if test "$VERBOSE" = yes; then
+ set -x
+ mkdir --version
+fi
+
+# Make sure we get English translations.
+LANGUAGE=C
+export LANGUAGE
+LC_ALL=C
+export LC_ALL
+LANG=C
+export LANG
+
+pwd=`pwd`
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$
+trap 'status=$?; cd $pwd; rm -rf $t0 && exit $status' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp || framework_failure=1
+cd $tmp || framework_failure=1
+
+if test $framework_failure = 1; then
+ echo "$0: failure in testing framework" 1>&2
+ (exit 1); exit 1
+fi
+
+mkdir -pv foo/a/b/c/d 2>out || exit
+
+diff - out <<\EOF
+mkdir: created directory `foo'
+mkdir: created directory `foo/a'
+mkdir: created directory `foo/a/b'
+mkdir: created directory `foo/a/b/c'
+mkdir: created directory `foo/a/b/c/d'
+EOF