소스 검색

support '-' and no parameter for stdin in apt-helper cat-file

This way it works more similar to the compressor binaries, which we
can relief in this way from their job in the test framework avoiding the
need of adding e.g. liblz4-tool to the test dependencies.
David Kalnischkies 10 년 전
부모
커밋
abec2980ef
2개의 변경된 파일22개의 추가작업 그리고 22개의 파일을 삭제
  1. 17 3
      cmdline/apt-helper.cc
  2. 5 19
      test/integration/framework

+ 17 - 3
cmdline/apt-helper.cc

@@ -145,14 +145,28 @@ static bool DoCatFile(CommandLine &CmdL)				/*{{{*/
    }
    }
 
 
    if (CmdL.FileSize() <= 1)
    if (CmdL.FileSize() <= 1)
-      return _error->Error("Must specify at least one file name");
+   {
+      if (fd.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+	 return false;
+      if (CopyFile(fd, out) == false)
+         return false;
+      return true;
+   }
 
 
    for(size_t i = 1; CmdL.FileList[i] != NULL; ++i)
    for(size_t i = 1; CmdL.FileList[i] != NULL; ++i)
    {
    {
       std::string const name = CmdL.FileList[i];
       std::string const name = CmdL.FileList[i];
 
 
-      if (fd.Open(name, FileFd::ReadOnly, FileFd::Extension) == false)
-         return false;
+      if (name != "-")
+      {
+	 if (fd.Open(name, FileFd::ReadOnly, FileFd::Extension) == false)
+	    return false;
+      }
+      else
+      {
+	 if (fd.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly) == false)
+	    return false;
+      }
 
 
       if (CopyFile(fd, out) == false)
       if (CopyFile(fd, out) == false)
          return false;
          return false;

+ 5 - 19
test/integration/framework

@@ -520,13 +520,13 @@ EOF
 	testsuccess --nomsg gcc -Wall -fPIC -shared -o noopchroot.so noopchroot.c -ldl
 	testsuccess --nomsg gcc -Wall -fPIC -shared -o noopchroot.so noopchroot.c -ldl
 }
 }
 configcompression() {
 configcompression() {
+	local CMD='apthelper cat-file -C'
 	while [ -n "$1" ]; do
 	while [ -n "$1" ]; do
 		case "$1" in
 		case "$1" in
 		'.') printf ".\t.\tcat\n";;
 		'.') printf ".\t.\tcat\n";;
-		'gz') printf "gzip\tgz\tgzip\n";;
-		'bz2') printf "bzip2\tbz2\tbzip2\n";;
-		'lzma') printf "lzma\tlzma\txz --format=lzma\n";;
-		*) printf "$1\t$1\t$1\n";;
+		'gz') printf "gzip\tgz\t$CMD $1\n";;
+		'bz2') printf "bzip2\tbz2\t$CMD $1\n";;
+		*) printf "$1\t$1\t$CMD $1\n";;
 		esac
 		esac
 		shift
 		shift
 	done > "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
 	done > "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
@@ -550,7 +550,7 @@ confighashes() {
 forcecompressor() {
 forcecompressor() {
 	COMPRESSOR="$1"
 	COMPRESSOR="$1"
 	COMPRESS="$1"
 	COMPRESS="$1"
-	COMPRESSOR_CMD="$1"
+	COMPRESSOR_CMD="apthelper cat-file -C $1"
 	case $COMPRESSOR in
 	case $COMPRESSOR in
 	gzip) COMPRESS='gz';;
 	gzip) COMPRESS='gz';;
 	bzip2) COMPRESS='bz2';;
 	bzip2) COMPRESS='bz2';;
@@ -558,20 +558,6 @@ forcecompressor() {
 	local CONFFILE="${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/00force-compressor"
 	local CONFFILE="${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/00force-compressor"
 	echo "Acquire::CompressionTypes::Order { \"${COMPRESS}\"; };
 	echo "Acquire::CompressionTypes::Order { \"${COMPRESS}\"; };
 Dir::Bin::uncompressed \"/does/not/exist\";" > "$CONFFILE"
 Dir::Bin::uncompressed \"/does/not/exist\";" > "$CONFFILE"
-	for COMP in $(aptconfig dump APT::Compressor --format '%t %v%n' | sed -n 's#^Name \([^.].\+\)$#\1#p'); do
-		echo "Dir::Bin::${COMP} \"/does/not/exist\";"
-	done >> "$CONFFILE"
-	if [ -e "/bin/${COMPRESSOR}" ]; then
-		echo "Dir::Bin::${COMPRESSOR} \"/bin/${COMPRESSOR}\";" >> "$CONFFILE"
-	elif [ -e "/usr/bin/${COMPRESSOR}" ]; then
-		echo "Dir::Bin::${COMPRESSOR} \"/usr/bin/${COMPRESSOR}\";" >> "$CONFFILE"
-	elif [ "${COMPRESSOR}" = 'lzma' ]; then
-		echo 'Dir::Bin::xz "/usr/bin/xz";' >> "$CONFFILE"
-		COMPRESSOR_CMD='xz --format=lzma'
-	else
-		msgtest 'Test for availability of compressor' "${COMPRESSOR}"
-		msgfail "${COMPRESSOR} not available"
-	fi
 }
 }
 
 
 setupsimplenativepackage() {
 setupsimplenativepackage() {