[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdelibs/frameworks] tier1/karchive: KArchive: warn instead of asserting, if filename is empty or de
From:       David Faure <faure () kde ! org>
Date:       2013-10-29 8:18:10
Message-ID: E1Vb4V8-0003Qn-6x () scm ! kde ! org
[Download RAW message or body]

Git commit fb9fa220df2aa43ecdd07cc3629b167297a866f2 by David Faure.
Committed on 29/10/2013 at 08:17.
Pushed by dfaure into branch 'frameworks'.

KArchive: warn instead of asserting, if filename is empty or device is null

Testcases by Sune.

M  +20   -1    tier1/karchive/autotests/karchivetest.cpp
M  +3    -0    tier1/karchive/autotests/karchivetest.h
M  +6    -2    tier1/karchive/src/karchive.cpp
M  +0    -1    tier1/karchive/src/ktar.cpp

http://commits.kde.org/kdelibs/fb9fa220df2aa43ecdd07cc3629b167297a866f2

diff --git a/tier1/karchive/autotests/karchivetest.cpp b/tier1/karchive/autotests/karchivetest.cpp
index 8fe8e81..ad68515 100644
--- a/tier1/karchive/autotests/karchivetest.cpp
+++ b/tier1/karchive/autotests/karchivetest.cpp
@@ -327,8 +327,27 @@ void KArchiveTest::initTestCase()
         QVERIFY(false);
     }
 #endif
+}
+
+void KArchiveTest::testEmptyFilename()
+{
+    QTest::ignoreMessage(QtWarningMsg, "KArchive: No file name specified");
+    KTar tar(QLatin1String(""));
+    QVERIFY(!tar.open(QIODevice::ReadOnly));
+}
 
-    QVERIFY(QFileInfo(":/qt-project.org/qmime/freedesktop.org.xml").exists());
+void KArchiveTest::testNullDevice()
+{
+    QIODevice* nil = 0;
+    QTest::ignoreMessage(QtWarningMsg, "KArchive: Null device specified");
+    KTar tar(nil);
+    QVERIFY(!tar.open(QIODevice::ReadOnly));
+}
+
+void KArchiveTest::testNonExistentFile()
+{
+    KTar tar(QLatin1String("nonexistant.tar.gz"));
+    QVERIFY(!tar.open(QIODevice::ReadOnly));
 }
 
 void KArchiveTest::testCreateTar_data()
diff --git a/tier1/karchive/autotests/karchivetest.h b/tier1/karchive/autotests/karchivetest.h
index d117a13..b132e7d 100644
--- a/tier1/karchive/autotests/karchivetest.h
+++ b/tier1/karchive/autotests/karchivetest.h
@@ -34,6 +34,9 @@ class KArchiveTest : public QObject
 private Q_SLOTS:
     void initTestCase();
 
+    void testEmptyFilename();
+    void testNullDevice();
+    void testNonExistentFile();
     void testCreateTar_data();
     void testCreateTar();
     void testCreateTarXXX_data(){ setupData(); }
diff --git a/tier1/karchive/src/karchive.cpp b/tier1/karchive/src/karchive.cpp
index f3ad532..42fc413 100644
--- a/tier1/karchive/src/karchive.cpp
+++ b/tier1/karchive/src/karchive.cpp
@@ -56,7 +56,8 @@
 KArchive::KArchive( const QString& fileName )
     : d(new KArchivePrivate)
 {
-    Q_ASSERT( !fileName.isEmpty() );
+    if (fileName.isEmpty())
+        qWarning("KArchive: No file name specified");
     d->fileName = fileName;
     // This constructor leaves the device set to 0.
     // This is for the use of QSaveFile, see open().
@@ -65,6 +66,8 @@ KArchive::KArchive( const QString& fileName )
 KArchive::KArchive( QIODevice * dev )
     : d(new KArchivePrivate)
 {
+    if (!dev)
+        qWarning("KArchive: Null device specified");
     d->dev = dev;
 }
 
@@ -90,7 +93,8 @@ bool KArchive::open( QIODevice::OpenMode mode )
             return false;
     }
 
-    Q_ASSERT( d->dev );
+    if (!d->dev)
+        return false;
 
     if ( !d->dev->isOpen() && !d->dev->open( mode ) )
         return false;
diff --git a/tier1/karchive/src/ktar.cpp b/tier1/karchive/src/ktar.cpp
index b1cf4ab..d1e96e7 100644
--- a/tier1/karchive/src/ktar.cpp
+++ b/tier1/karchive/src/ktar.cpp
@@ -80,7 +80,6 @@ KTar::KTar( const QString& fileName, const QString & _mimetype )
 KTar::KTar( QIODevice * dev )
     : KArchive( dev ), d(new KTarPrivate(this))
 {
-    Q_ASSERT( dev );
 }
 
 // Only called when a filename was given
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic