Added SFTP directory listing test case 613.
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
48
tests/data/test613
Normal 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>
|
@@ -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
84
tests/libtest/test613.pl
Executable 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;
|
Reference in New Issue
Block a user