Added SFTP directory listing test case 613.

This commit is contained in:
Dan Fandrich
2007-05-14 22:03:42 +00:00
parent 85707460e5
commit b0a4c992e7
6 changed files with 138 additions and 3 deletions

View File

@@ -5,6 +5,9 @@
\___|\___/|_| \_\_____| \___|\___/|_| \_\_____|
Changelog Changelog
Dan F (14 May 2007)
- Added SFTP directory listing test case 613.
Dan F (9 May 2007) Dan F (9 May 2007)
- Kristian Gunstone fixed a problem where overwriting an uploaded file with - Kristian Gunstone fixed a problem where overwriting an uploaded file with
sftp didn't truncate it first, which would corrupt the file if the new sftp didn't truncate it first, which would corrupt the file if the new

View File

@@ -900,7 +900,7 @@ default config file search path.
commands are commands are
sent BEFORE the transfer is taking place (just after the initial PWD command sent BEFORE the transfer is taking place (just after the initial PWD command
to be exact). To make commands take place after a successful transfer, prefix to be exact). To make commands take place after a successful transfer, prefix
them with a dash '-' (only the latter is support with SFTP). To make them with a dash '-' (only the latter is supported with SFTP). To make
commands get sent after libcurl has changed working directory, just commands get sent after libcurl has changed working directory, just
before the transfer command(s), prefix the command with '+'. You may before the transfer command(s), prefix the command with '+'. You may
specify any amount of commands. If the server returns failure for one specify any amount of commands. If the server returns failure for one

View File

@@ -41,4 +41,4 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
test603 test401 test402 test290 test291 test292 test293 test403 test404 \ test603 test401 test402 test290 test291 test292 test293 test403 test404 \
test405 test604 test605 test606 test607 test608 test609 test294 test295 \ test405 test604 test605 test606 test607 test608 test609 test294 test295 \
test296 test297 test298 test610 test611 test612 test406 test407 test408 \ test296 test297 test298 test610 test611 test612 test406 test407 test408 \
test409 test409 test613

48
tests/data/test613 Normal file
View File

@@ -0,0 +1,48 @@
<testcase>
<info>
<keywords>
SFTP
directory
</keywords>
</info>
#
# Server-side
<reply>
<datacheck>
d????????? N U U N ??? N NN:NN .
d????????? N U U N ??? N NN:NN ..
d????????? N U U N ??? N NN:NN asubdir
-rw?rw?rw? 1 U U 37 Jan 1 2000 plainfile.txt
-r-?r-?r-? 1 U U 47 Dec 31 2000 rofile.txt
</datacheck>
</reply>
#
# Client-side
<client>
<server>
sftp
</server>
<precheck>
perl %SRCDIR/libtest/test613.pl prepare %PWD/log/test613.dir
</precheck>
<name>
SFTP directory retrieval
</name>
<command>
--key curl_client_key --pubkey curl_client_key.pub -u %USER: sftp://%HOSTIP:%SSHPORT%PWD/log/test613.dir/
</command>
<postcheck>
perl %SRCDIR/libtest/test613.pl postprocess %PWD/log/test613.dir %PWD/log/curl613.out
</postcheck>
</client>
#
# Verify data after the test has been "shot"
<verify>
<valgrind>
disable
</valgrind>
</verify>
</testcase>

View File

@@ -35,7 +35,7 @@ INCLUDES = -I$(top_srcdir)/include/curl \
LIBDIR = $(top_builddir)/lib LIBDIR = $(top_builddir)/lib
EXTRA_DIST = test75.pl test307.pl test610.pl EXTRA_DIST = test75.pl test307.pl test610.pl test613.pl
# files used only in some libcurl test programs # files used only in some libcurl test programs
TESTUTIL = testutil.c testutil.h TESTUTIL = testutil.c testutil.h

84
tests/libtest/test613.pl Executable file
View File

@@ -0,0 +1,84 @@
#!/usr/bin/env perl
# Prepare a directory with known files and clean up afterwards
use Time::Local;
if ( $#ARGV < 1 )
{
print "Usage: $0 prepare|postprocess dir [logfile]\n";
exit 1;
}
# <precheck> expects an error message on stdout
sub errout {
print $_[0] . "\n";
exit 1;
}
if ($ARGV[0] eq "prepare")
{
my $dirname = $ARGV[1];
mkdir $dirname || errout "$!";
chdir $dirname;
# Create the files in alphabetical order, to increase the chances
# of receiving a consistent set of directory contents regardless
# of whether the server alphabetizes the results or not.
mkdir "asubdir" || errout "$!";
chmod 0777, "asubdir";
open(FILE, ">plainfile.txt") || errout "$!";
binmode FILE;
print FILE "Test file to support curl test suite\n";
close(FILE);
utime time, timegm(0,0,12,1,0,100), "plainfile.txt";
chmod 0666, "plainfile.txt";
open(FILE, ">rofile.txt") || errout "$!";
binmode FILE;
print FILE "Read-only test file to support curl test suite\n";
close(FILE);
utime time, timegm(0,0,12,31,11,100), "rofile.txt";
chmod 0444, "rofile.txt";
exit 0;
}
elsif ($ARGV[0] eq "postprocess")
{
my $dirname = $ARGV[1];
my $logfile = $ARGV[2];
# Clean up the test directory
unlink "$dirname/rofile.txt";
unlink "$dirname/plainfile.txt";
rmdir "$dirname/asubdir";
rmdir $dirname || die "$!";
if ($logfile) {
# Process the directory file to remove all information that could
# be inconsistent from one test run to the next (e.g. file date)
# or may be unsupported on some platforms (e.g. Windows)
my $newfile = $logfile . ".new";
open(OUT, ">$newfile") || die "$!";
open(IN, "<$logfile") || die "$!";
while (<IN>) {
s/^(.)(..).(..).(..).(.{4}?).{6}?.{6}?(.{12}?)/\1\2?\3?\4?\5 U U\6/;
if ($1 eq "d") {
# Erase inodes, size, mode, time fields for directories
s/^.{14}?(.{12}?).{11}? ... .\d \d\d:\d\d/d????????? N\1 N ??? N NN:NN/;
}
print OUT $_;
}
close(IN);
close(OUT);
unlink $logfile;
rename $newfile, $logfile;
}
exit 0;
}
print "Unsupported command $ARGV[0]\n";
exit 1;