[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kio
From: David Faure <faure () kde ! org>
Date: 2006-10-09 17:29:40
Message-ID: 1160414980.394421.8532.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 593968 by dfaure:
Unbreak KTar after the KTemporaryFile commit. Please, please, run make test after \
changing code in kdelibs! (the file->close() in writeBackTempFile was the problem)
CCMAIL: lee.jaison@gmail.com
Also detected wrong logic with QIODevice::ReadWrite tests while being in gdb.
M +14 -7 kio/ktar.cpp
M +31 -12 tests/karchivetest.cpp
M +1 -0 tests/karchivetest.h
--- trunk/KDE/kdelibs/kio/kio/ktar.cpp #593967:593968
@@ -275,6 +275,8 @@
if( filterDev ) {
QFile* file = tmpFile;
+ Q_ASSERT(file->isOpen());
+ Q_ASSERT(file->openMode() & QIODevice::WriteOnly);
file->seek(0);
QByteArray buffer;
buffer.resize(8*1024);
@@ -300,6 +302,8 @@
file->flush();
file->seek(0);
+ Q_ASSERT(file->isOpen());
+ Q_ASSERT(file->openMode() & QIODevice::ReadOnly);
}
else
kDebug( 7041 ) << "KTar::openArchive: no filterdevice found!" << endl;
@@ -483,7 +487,6 @@
QIODevice *dev = KFilterDev::deviceForFile( fileName, mimetype, forced );
if( dev ) {
QFile* file = tmpFile;
- file->close();
if ( !dev->open(QIODevice::WriteOnly) )
{
file->close();
@@ -492,6 +495,7 @@
}
if ( forced )
static_cast<KFilterDev *>(dev)->setOrigFileName( origFileName );
+ file->seek(0);
QByteArray buffer;
buffer.resize(8*1024);
qint64 len;
@@ -529,7 +533,7 @@
bool KTar::doFinishWriting( qint64 size ) {
// Write alignment
int rest = size % 0x200;
- if ( mode() & QIODevice::ReadWrite )
+ if ( ( mode() & QIODevice::ReadWrite ) == QIODevice::ReadWrite )
d->tarEnd = device()->pos() + (rest ? 0x200 - rest : 0); // Record our new \
end of archive if ( rest )
{
@@ -685,7 +689,8 @@
char buffer[ 0x201 ];
memset( buffer, 0, 0x200 );
- if ( mode() & QIODevice::ReadWrite ) device()->seek(d->tarEnd); // Go to end of \
archive as might have moved with a read + if ( ( mode() & QIODevice::ReadWrite ) \
== QIODevice::ReadWrite ) + device()->seek(d->tarEnd); // Go to end of archive \
as might have moved with a read
// provide converted stuff we need later on
const QByteArray encodedFileName = QFile::encodeName(fileName);
@@ -737,7 +742,8 @@
char buffer[ 0x201 ];
memset( buffer, 0, 0x200 );
- if ( mode() & QIODevice::ReadWrite ) device()->seek(d->tarEnd); // Go to end of \
archive as might have moved with a read + if ( ( mode() & QIODevice::ReadWrite ) \
== QIODevice::ReadWrite ) + device()->seek(d->tarEnd); // Go to end of archive \
as might have moved with a read
// provide converted stuff we need lateron
QByteArray encodedDirname = QFile::encodeName(dirName);
@@ -760,7 +766,7 @@
// Write header
device()->write( buffer, 0x200 );
- if ( mode() & QIODevice::ReadWrite )
+ if ( ( mode() & QIODevice::ReadWrite ) == QIODevice::ReadWrite )
d->tarEnd = device()->pos();
d->dirList.append( dirName ); // contains trailing slash
@@ -787,7 +793,8 @@
char buffer[ 0x201 ];
memset( buffer, 0, 0x200 );
- if ( mode() & QIODevice::ReadWrite ) device()->seek(d->tarEnd); // Go to end of \
archive as might have moved with a read + if ( ( mode() & QIODevice::ReadWrite ) \
== QIODevice::ReadWrite ) + device()->seek(d->tarEnd); // Go to end of archive \
as might have moved with a read
// provide converted stuff we need lateron
QByteArray encodedFileName = QFile::encodeName(fileName);
@@ -816,7 +823,7 @@
// Write header
bool retval = device()->write( buffer, 0x200 ) == 0x200;
- if ( mode() & QIODevice::ReadWrite )
+ if ( ( mode() & QIODevice::ReadWrite ) == QIODevice::ReadWrite )
d->tarEnd = device()->pos();
return retval;
}
--- trunk/KDE/kdelibs/kio/tests/karchivetest.cpp #593967:593968
@@ -174,8 +174,9 @@
QCOMPARE(fileInfo4.size(), Q_INT64_C(29));
}
-static const char* s_tarFileName = "karchivetest.tar.gz";
-static const char* s_tarMaxLengthFileName = "karchivetest-maxlength.tar.gz";
+static const char* s_tarFileName = "karchivetest.tar";
+static const char* s_tarGzFileName = "karchivetest.tar.gz";
+static const char* s_tarGzMaxLengthFileName = "karchivetest-maxlength.tar.gz";
static const char* s_zipFileName = "karchivetest.zip";
static const char* s_zipMaxLengthFileName = "karchivetest-maxlength.zip";
@@ -194,13 +195,31 @@
QFileInfo fileInfo( QFile::encodeName( s_tarFileName ) );
QVERIFY( fileInfo.exists() );
// We can't check for an exact size because of the addLocalFile, whose data is \
system-dependent + QVERIFY( fileInfo.size() > 450 );
+}
+
+void KArchiveTest::testCreateTarGz()
+{
+ KTar tar( s_tarGzFileName );
+
+ bool ok = tar.open( QIODevice::WriteOnly );
+ QVERIFY( ok );
+
+ writeTestFilesToArchive( &tar );
+
+ ok = tar.close();
+ QVERIFY( ok );
+
+ QFileInfo fileInfo( QFile::encodeName( s_tarGzFileName ) );
+ QVERIFY( fileInfo.exists() );
+ // We can't check for an exact size because of the addLocalFile, whose data is \
system-dependent QVERIFY( fileInfo.size() > 350 );
}
void KArchiveTest::testReadTar()
{
// testCreateTar must have been run first.
- KTar tar( s_tarFileName );
+ KTar tar( s_tarGzFileName );
bool ok = tar.open( QIODevice::ReadOnly );
QVERIFY( ok );
@@ -240,8 +259,8 @@
void KArchiveTest::testUncompress()
{
// testCreateTar must have been run first.
- QVERIFY( QFile::exists( s_tarFileName ) );
- QIODevice *filterDev = KFilterDev::deviceForFile( s_tarFileName, \
"application/x-gzip", true ); + QVERIFY( QFile::exists( s_tarGzFileName ) );
+ QIODevice *filterDev = KFilterDev::deviceForFile( s_tarGzFileName, \
"application/x-gzip", true ); QVERIFY( filterDev );
QByteArray buffer;
buffer.resize(8*1024);
@@ -265,7 +284,7 @@
void KArchiveTest::testTarFileData()
{
// testCreateTar must have been run first.
- KTar tar( s_tarFileName );
+ KTar tar( s_tarGzFileName );
bool ok = tar.open( QIODevice::ReadOnly );
QVERIFY( ok );
@@ -278,7 +297,7 @@
void KArchiveTest::testTarCopyTo()
{
// testCreateTar must have been run first.
- KTar tar( s_tarFileName );
+ KTar tar( s_tarGzFileName );
bool ok = tar.open( QIODevice::ReadOnly );
QVERIFY( ok );
@@ -290,7 +309,7 @@
void KArchiveTest::testTarMaxLength()
{
- KTar tar( s_tarMaxLengthFileName );
+ KTar tar( s_tarGzMaxLengthFileName );
bool ok = tar.open( QIODevice::WriteOnly );
QVERIFY( ok );
@@ -476,8 +495,8 @@
void KArchiveTest::cleanupTestCase()
{
- QVERIFY( QFile::remove("karchivetest-maxlength.tar.gz") );
- QVERIFY( QFile::remove("karchivetest-maxlength.zip") );
- QVERIFY( QFile::remove("karchivetest.tar.gz") );
- QVERIFY( QFile::remove("karchivetest.zip") );
+ QFile::remove("karchivetest-maxlength.tar.gz");
+ QFile::remove("karchivetest-maxlength.zip");
+ QFile::remove("karchivetest.tar.gz");
+ QFile::remove("karchivetest.zip");
}
--- trunk/KDE/kdelibs/kio/tests/karchivetest.h #593967:593968
@@ -27,6 +27,7 @@
Q_OBJECT
private Q_SLOTS:
void testCreateTar();
+ void testCreateTarGz();
void testReadTar();
void testUncompress();
void testTarFileData();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic