[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdepim-runtime] resources: Improve error handling.
From: Andras Mantia <amantia () kde ! org>
Date: 2013-11-15 20:06:59
Message-ID: E1VhPfP-0002MQ-LS () scm ! kde ! org
[Download RAW message or body]
Git commit 12fd0533d1b9d31aeec26e8cd28b7ef7161e7c51 by Andras Mantia.
Committed on 15/11/2013 at 19:27.
Pushed by amantia into branch 'master'.
Improve error handling.
M +2 -3 resources/maildir/configdialog.cpp
M +53 -26 resources/maildir/libmaildir/maildir.cpp
M +8 -12 resources/maildir/libmaildir/maildir.h
M +3 -4 resources/maildir/libmaildir/tests/testmaildir.cpp
M +23 -17 resources/maildir/maildirresource.cpp
M +2 -3 resources/mixedmaildir/configdialog.cpp
M +14 -8 resources/mixedmaildir/mixedmaildirstore.cpp
M +14 -14 resources/mixedmaildir/tests/itemfetchtest.cpp
http://commits.kde.org/kdepim-runtime/12fd0533d1b9d31aeec26e8cd28b7ef7161e7c51
diff --git a/resources/maildir/configdialog.cpp b/resources/maildir/configdialog.cpp
index ebea669..e898e8c 100644
--- a/resources/maildir/configdialog.cpp
+++ b/resources/maildir/configdialog.cpp
@@ -60,15 +60,14 @@ void ConfigDialog::checkPath()
if ( d.exists() ) {
Maildir md( d.path() );
- QString error;
- if ( !md.isValid( error, false ) ) {
+ if ( !md.isValid( false ) ) {
Maildir md2( d.path(), true );
if ( md2.isValid( false ) ) {
ui.statusLabel->setText( i18n( "The selected path contains valid Maildir folders." ) \
); mToplevelIsContainer = true;
ok = true;
} else {
- ui.statusLabel->setText( error );
+ ui.statusLabel->setText( md.lastError() );
}
} else {
ui.statusLabel->setText( i18n( "The selected path is a valid Maildir." ) );
diff --git a/resources/maildir/libmaildir/maildir.cpp \
b/resources/maildir/libmaildir/maildir.cpp index 4a932db..712994d 100644
--- a/resources/maildir/libmaildir/maildir.cpp
+++ b/resources/maildir/libmaildir/maildir.cpp
@@ -91,7 +91,7 @@ public:
{
return path == rhs.path;
}
- bool accessIsPossible( QString& error, bool createMissingFolders = true ) const;
+ bool accessIsPossible( bool createMissingFolders = true );
bool canAccess( const QString& path ) const;
QStringList subPaths() const
@@ -191,6 +191,7 @@ public:
QString path;
bool isRoot;
QString hostName;
+ QString lastError;
};
Maildir::Maildir( const QString& path, bool isRoot )
@@ -240,26 +241,26 @@ bool Maildir::Private::canAccess( const QString& path ) const
return d.isReadable() && d.isWritable();
}
-bool Maildir::Private::accessIsPossible( QString& error, bool createMissingFolders ) const
+bool Maildir::Private::accessIsPossible( bool createMissingFolders )
{
QStringList paths = subPaths();
-
+
paths.prepend( path );
Q_FOREACH ( const QString &p, paths ) {
if ( !QFile::exists( p ) ) {
if ( !createMissingFolders ) {
- error = i18n( "Error opening %1; this folder is missing.", p );
+ lastError = i18n( "Error opening %1; this folder is missing.", p );
return false;
}
QDir().mkpath( p );
if ( !QFile::exists( p ) ) {
- error = i18n( "Error opening %1; this folder is missing.", p );
+ lastError = i18n( "Error opening %1; this folder is missing.", p );
return false;
}
}
if ( !canAccess( p ) ) {
- error = i18n( "Error opening %1; either this is not a valid "
+ lastError = i18n( "Error opening %1; either this is not a valid "
"maildir folder, or you do not have sufficient access permissions." ,p );
return false;
}
@@ -269,21 +270,17 @@ bool Maildir::Private::accessIsPossible( QString& error, bool \
createMissingFolde
bool Maildir::isValid( bool createMissingFolders ) const
{
- QString error;
- return isValid( error, createMissingFolders );
-}
-
-bool Maildir::isValid( QString &error, bool createMissingFolders ) const
-{
if ( !d->isRoot ) {
- if ( d->accessIsPossible( error, createMissingFolders ) ) {
+ if ( d->accessIsPossible( createMissingFolders ) ) {
return true;
}
} else {
Q_FOREACH ( const QString &sf, subFolderList() ) {
const Maildir subMd = Maildir( path() + QLatin1Char( '/' ) + sf );
- if ( !subMd.isValid( error ) )
+ if ( !subMd.isValid() ) {
+ d->lastError = subMd.lastError();
return false;
+ }
}
return true;
}
@@ -458,11 +455,15 @@ QByteArray Maildir::readEntry( const QString& key ) const
if ( realKey.isEmpty() ) {
// FIXME error handling?
qWarning() << "Maildir::readEntry unable to find: " << key;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( key );
return result;
}
QFile f( realKey );
- f.open( QIODevice::ReadOnly );
+ if ( !f.open( QIODevice::ReadOnly ) ) {
+ d->lastError = i18n( "Cannot open mail file %1." ).arg( realKey );
+ return result;
+ }
// FIXME be safer than this
result = f.readAll();
@@ -475,12 +476,15 @@ qint64 Maildir::size( const QString& key ) const
if ( realKey.isEmpty() ) {
// FIXME error handling?
qWarning() << "Maildir::size unable to find: " << key;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( key );
return -1;
}
QFileInfo info( realKey );
- if ( !info.exists() )
+ if ( !info.exists() ) {
+ d->lastError = i18n( "Cannot open mail file %1." ).arg( realKey );
return -1;
+ }
return info.size();
}
@@ -490,6 +494,7 @@ QDateTime Maildir::lastModified(const QString& key) const
const QString realKey( d->findRealKey( key ) );
if ( realKey.isEmpty() ) {
qWarning() << "Maildir::lastModified unable to find: " << key;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( key );
return QDateTime();
}
@@ -508,6 +513,7 @@ QByteArray Maildir::readEntryHeadersFromFile( const QString& file ) const
if ( !f.open( QIODevice::ReadOnly ) ) {
// FIXME error handling?
qWarning() << "Maildir::readEntryHeaders unable to find: " << file;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( file );
return result;
}
f.map( 0, qMin( (qint64)8000, f.size() ) );
@@ -525,6 +531,7 @@ QByteArray Maildir::readEntryHeaders( const QString& key ) const
const QString realKey( d->findRealKey( key ) );
if ( realKey.isEmpty() ) {
qWarning() << "Maildir::readEntryHeaders unable to find: " << key;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( key );
return QByteArray();
}
@@ -543,18 +550,25 @@ static QString createUniqueFileName()
return fileName;
}
-void Maildir::writeEntry( const QString& key, const QByteArray& data )
+bool Maildir::writeEntry( const QString& key, const QByteArray& data )
{
QString realKey( d->findRealKey( key ) );
if ( realKey.isEmpty() ) {
// FIXME error handling?
qWarning() << "Maildir::writeEntry unable to find: " << key;
- return;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( key );
+ return false;
}
+ bool result;
QFile f( realKey );
- f.open( QIODevice::WriteOnly );
- f.write( data );
+ result = f.open( QIODevice::WriteOnly );
+ result &= ( f.write( data ) != -1 );
f.close();
+ if ( !result) {
+ d->lastError = i18n( "Cannot write to mail file %1." ).arg( realKey );
+ return false;
+ }
+ return true;
}
QString Maildir::addEntry( const QByteArray& data )
@@ -573,10 +587,15 @@ QString Maildir::addEntry( const QByteArray& data )
curKey = d->path + QLatin1String( "/cur/" ) + uniqueKey;
} while ( QFile::exists( key ) || QFile::exists( finalKey ) || QFile::exists( curKey ) );
+ bool result;
QFile f( key );
- f.open( QIODevice::WriteOnly );
- f.write( data );
+ result = f.open( QIODevice::WriteOnly );
+ result &= ( f.write( data ) != -1 );
f.close();
+ if ( !result) {
+ d->lastError = i18n( "Cannot write to mail file %1." ).arg( key );
+ return QString();
+ }
/*
* FIXME:
*
@@ -588,6 +607,8 @@ QString Maildir::addEntry( const QByteArray& data )
*/
if ( !f.rename( finalKey ) ) {
qWarning() << "Maildir: Failed to add entry: " << finalKey << "! Error: " << \
f.errorString(); + d->lastError = i18n( "Failed to create mail file %1. The error was: \
%2" ).arg( finalKey, f.errorString() ); + return QString();
}
KeyCache *keyCache = KeyCache::self();
keyCache->removeKey( d->path, key ); //remove all keys, be it "cur" or "new" first
@@ -599,7 +620,6 @@ bool Maildir::removeEntry( const QString& key )
{
QString realKey( d->findRealKey( key ) );
if ( realKey.isEmpty() ) {
- // FIXME error handling?
qWarning() << "Maildir::removeEntry unable to find: " << key;
return false;
}
@@ -612,9 +632,9 @@ QString Maildir::changeEntryFlags(const QString& key, const \
Akonadi::Item::Flags {
QString realKey( d->findRealKey( key ) );
if ( realKey.isEmpty() ) {
- // FIXME error handling?
qWarning() << "Maildir::changeEntryFlags unable to find: " << key;
- return key;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( key );
+ return QString();
}
const QRegExp rx = *( statusSeparatorRx() );
@@ -679,6 +699,7 @@ QString Maildir::changeEntryFlags(const QString& key, const \
Akonadi::Item::Flags
if ( !f.rename( finalKey ) ) {
qWarning() << "Maildir: Failed to rename entry: " << f.fileName() << " to " << \
finalKey << "! Error: " << f.errorString(); + d->lastError = i18n("Failed to update the \
file name %1 to %2 on the disk. The error was: \
%3.").arg(f.fileName()).arg(finalKey).arg(f.errorString()); return QString();
}
@@ -753,7 +774,7 @@ QString Maildir::moveEntryTo( const QString &key, const Maildir \
&destination ) {
const QString realKey( d->findRealKey( key ) );
if ( realKey.isEmpty() ) {
- kDebug() << "Unable to find" << key;
+ d->lastError = i18n( "Cannot locate mail file %1." ).arg( key );
return QString();
}
QFile f( realKey );
@@ -761,6 +782,7 @@ QString Maildir::moveEntryTo( const QString &key, const Maildir \
&destination ) const QString targetKey = destination.path() + QDir::separator() + \
QLatin1String( "new" ) + QDir::separator() + key; if ( !f.rename( targetKey ) ) {
kDebug() << "Failed to rename" << realKey << "to" << targetKey << "! Error: " << \
f.errorString();; + d->lastError = f.errorString();
return QString();
}
@@ -797,3 +819,8 @@ void Maildir::refreshKeyCache()
{
KeyCache::self()->refreshKeys( d->path );
}
+
+QString Maildir::lastError() const
+{
+ return d->lastError;
+}
diff --git a/resources/maildir/libmaildir/maildir.h b/resources/maildir/libmaildir/maildir.h
index 506e4c7..b23fb7a 100644
--- a/resources/maildir/libmaildir/maildir.h
+++ b/resources/maildir/libmaildir/maildir.h
@@ -59,16 +59,6 @@ public:
bool isValid( bool createMissingFolders = true ) const;
/**
- * Returns whether the maildir is valid, and sets the error out-parameter
- * so it can be used to signal the kind of error to the user.
- * @see isValid
- *
- * @param error will contain the error message
- * @param createMissingFolders if true (the default), the cur/new/tmp folders are created \
if they are missing
- */
- bool isValid( QString &error, bool createMissingFolders = true ) const;
-
- /**
* Returns whether this is a normal maildir or a container containing maildirs.
*/
bool isRoot() const;
@@ -185,8 +175,9 @@ public:
/**
* Write the given @p data to a file in the maildir with the given @p key.
+ * Returns true in case of success, false in case of any error.
*/
- void writeEntry( const QString& key, const QByteArray& data );
+ bool writeEntry( const QString& key, const QByteArray& data );
/**
* Adds the given @p data to the maildir. Returns the key of the entry.
@@ -218,7 +209,7 @@ public:
* Moves the file with the given @p key into the Maildir @p destination.
* @returns The new file name inside @p destination.
*/
- QString moveEntryTo( const QString &key, const Maildir &destination );
+ QString moveEntryTo( const QString& key, const KPIM::Maildir& destination );
/**
* Creates the maildir tree structure specific directory path that the
@@ -247,6 +238,11 @@ public:
/** Reloads the keys associated with the maildir in the key cache*/
void refreshKeyCache();
+ /** Return the last error message string. The error might not come from the last performed \
operation, + if that was sucessful. The caller should always check the return value of the \
methods before + querying the last error string. */
+ QString lastError() const;
+
private:
void swap( const Maildir& );
class Private;
diff --git a/resources/maildir/libmaildir/tests/testmaildir.cpp \
b/resources/maildir/libmaildir/tests/testmaildir.cpp index ed312ea..47bc5c9 100644
--- a/resources/maildir/libmaildir/tests/testmaildir.cpp
+++ b/resources/maildir/libmaildir/tests/testmaildir.cpp
@@ -121,9 +121,8 @@ void MaildirTest::testMaildirInstantiation()
QDir temp( m_temp->name() );
temp.rmdir( QLatin1String( "new" ) );
- QString error;
- QVERIFY( !good.isValid( error, false ) );
- QVERIFY( !error.isEmpty() );
+ QVERIFY( !good.isValid( false ) );
+ QVERIFY( !good.lastError().isEmpty() );
Maildir root1( QLatin1String( "/foo/bar/Mail" ), true );
QVERIFY( root1.isRoot() );
@@ -182,7 +181,7 @@ void MaildirTest::testMaildirWrite()
QByteArray data = d.readEntry( entries[0] );
QByteArray data2 = "changed\n";
- d.writeEntry( entries[0], data2 );
+ QVERIFY( d.writeEntry( entries[0], data2 ) );
QCOMPARE( data2, d.readEntry( entries[0] ) );
}
diff --git a/resources/maildir/maildirresource.cpp b/resources/maildir/maildirresource.cpp
index 932f7d4..9265352 100644
--- a/resources/maildir/maildirresource.cpp
+++ b/resources/maildir/maildirresource.cpp
@@ -266,9 +266,8 @@ void MaildirResource::itemAdded( const Akonadi::Item & item, const \
Akonadi::Coll return;
}
Maildir dir = maildirForCollection( collection );
- QString errMsg;
- if ( mSettings->readOnly() || !dir.isValid( errMsg ) ) {
- cancelTask( errMsg );
+ if ( mSettings->readOnly() || !dir.isValid() ) {
+ cancelTask( dir.lastError() );
return;
}
@@ -283,6 +282,12 @@ void MaildirResource::itemAdded( const Akonadi::Item & item, const \
Akonadi::Coll
const QString rid = dir.addEntry( mail->encodedContent() );
+ if ( rid.isEmpty() ) {
+ restartMaildirScan( dir );
+ cancelTask( dir.lastError() );
+ return;
+ }
+
restartMaildirScan( dir );
Item i( item );
@@ -318,9 +323,8 @@ void MaildirResource::itemChanged( const Akonadi::Item& item, const \
QSet<QByteAr }
Maildir dir = maildirForCollection( item.parentCollection() );
- QString errMsg;
- if ( !dir.isValid( errMsg ) ) {
- cancelTask( errMsg );
+ if ( !dir.isValid() ) {
+ cancelTask( dir.lastError() );
return;
}
@@ -333,7 +337,7 @@ void MaildirResource::itemChanged( const Akonadi::Item& item, const \
QSet<QByteAr
const QString newKey = dir.changeEntryFlags( item.remoteId(), item.flags() );
if ( newKey.isEmpty() ) {
restartMaildirScan( dir );
- cancelTask( i18n( "Failed to change the flags for the mail." ) );
+ cancelTask( i18n( "Failed to change the flags for the mail. %1" ).arg( \
dir.lastError() ) ); return;
}
newItem.setRemoteId( newKey );
@@ -354,7 +358,11 @@ void MaildirResource::itemChanged( const Akonadi::Item& item, const \
QSet<QByteAr mail->parse();
data = mail->encodedContent();
}
- dir.writeEntry( newItem.remoteId(), data );
+ if ( !dir.writeEntry( newItem.remoteId(), data ) ) {
+ restartMaildirScan( dir );
+ cancelTask( dir.lastError() );
+ return;
+ }
}
}
@@ -379,15 +387,14 @@ void MaildirResource::itemMoved( const Item &item, const Collection \
&source, con }
Maildir sourceDir = maildirForCollection( source );
- QString errMsg;
- if ( !sourceDir.isValid( errMsg ) ) {
- cancelTask( i18n( "Source folder is invalid: '%1'.", errMsg ) );
+ if ( !sourceDir.isValid() ) {
+ cancelTask( i18n( "Source folder is invalid: '%1'.", sourceDir.lastError() ) );
return;
}
Maildir destDir = maildirForCollection( destination );
- if ( !destDir.isValid( errMsg ) ) {
- cancelTask( i18n( "Destination folder is invalid: '%1'.", errMsg ) );
+ if ( !destDir.isValid() ) {
+ cancelTask( i18n( "Destination folder is invalid: '%1'.", destDir.lastError() ) );
return;
}
@@ -400,7 +407,7 @@ void MaildirResource::itemMoved( const Item &item, const Collection \
&source, con restartMaildirScan( destDir );
if ( newRid.isEmpty() ) {
- cancelTask( i18n( "Could not move message '%1' from '%2' to '%3'.", item.remoteId(), \
sourceDir.path(), destDir.path() ) ); + cancelTask( i18n( "Could not move message '%1' from \
'%2' to '%3'. The error was %4.", item.remoteId(), sourceDir.path(), destDir.path(), \
sourceDir.lastError() ) ); return;
}
@@ -463,9 +470,8 @@ Collection::List MaildirResource::listRecursive( const Collection &root, \
const M void MaildirResource::retrieveCollections()
{
Maildir dir( mSettings->path(), mSettings->topLevelIsContainer() );
- QString errMsg;
- if ( !dir.isValid( errMsg ) ) {
- emit error( errMsg );
+ if ( !dir.isValid() ) {
+ emit error( dir.lastError() );
collectionsRetrieved( Collection::List() );
return;
}
diff --git a/resources/mixedmaildir/configdialog.cpp b/resources/mixedmaildir/configdialog.cpp
index 9c5a85b..90374ae 100644
--- a/resources/mixedmaildir/configdialog.cpp
+++ b/resources/mixedmaildir/configdialog.cpp
@@ -58,15 +58,14 @@ void ConfigDialog::checkPath()
if ( d.exists() ) {
Maildir md( d.path() );
- QString error;
- if ( !md.isValid( error ) ) {
+ if ( !md.isValid() ) {
Maildir md2( d.path(), true );
if ( md2.isValid() ) {
ui.statusLabel->setText( i18n( "The selected path contains valid Maildir folders." ) \
); mToplevelIsContainer = true;
ok = true;
} else {
- ui.statusLabel->setText( error );
+ ui.statusLabel->setText( md.lastError() );
}
} else {
ui.statusLabel->setText( i18n( "The selected path is a valid Maildir." ) );
diff --git a/resources/mixedmaildir/mixedmaildirstore.cpp \
b/resources/mixedmaildir/mixedmaildirstore.cpp index 922071c..80f5735 100644
--- a/resources/mixedmaildir/mixedmaildirstore.cpp
+++ b/resources/mixedmaildir/mixedmaildirstore.cpp
@@ -318,6 +318,8 @@ class MaildirContext
QString addEntry( const QByteArray &data ) {
const QString result = mMaildir.addEntry( data );
if ( !result.isEmpty() && mHasIndexData ) {
+ //TODO: use the error string?
+ kWarning() << mMaildir.lastError();
mIndexData.insert( result, KMIndexDataPtr( new KMIndexData ) );
Q_ASSERT( mIndexData.value( result )->isEmpty() );
}
@@ -326,7 +328,7 @@ class MaildirContext
}
void writeEntry( const QString &key, const QByteArray &data ) {
- mMaildir.writeEntry( key, data );
+ mMaildir.writeEntry( key, data ); //TODO: error handling
if ( mHasIndexData ) {
mIndexData.insert( key, KMIndexDataPtr( new KMIndexData ) );
}
@@ -344,6 +346,8 @@ class MaildirContext
QString moveEntryTo( const QString &key, MaildirContext &destination ) {
const QString result = mMaildir.moveEntryTo( key, destination.mMaildir );
if ( !result.isEmpty() ) {
+ //TODO error handling?
+ kWarning() << mMaildir.lastError();
if ( mHasIndexData ) {
mIndexData.remove( key );
}
@@ -365,7 +369,9 @@ class MaildirContext
}
bool isValid( QString &error ) const {
- return mMaildir.isValid( error );
+ bool result = mMaildir.isValid();
+ if ( !result ) error = mMaildir.lastError();
+ return result;
}
bool isValidEntry( const QString &entry ) const {
@@ -829,7 +835,7 @@ bool MixedMaildirStore::Private::fillItem( MBoxPtr &mbox, bool \
includeHeaders, b if ( !ok || !mbox->isValidOffset( offset ) ) {
return false;
}
-
+
// TODO: size and modification timestamp?
if ( includeHeaders || includeBody ) {
@@ -855,7 +861,7 @@ bool MixedMaildirStore::Private::fillItem( const MaildirPtr &md, bool \
includeHea const qint64 entrySize = md->maildir().size( item.remoteId() );
if ( entrySize < 0 )
return false;
-
+
item.setSize( entrySize );
item.setModificationTime( md->maildir().lastModified( item.remoteId() ) );
@@ -1731,7 +1737,7 @@ bool MixedMaildirStore::Private::visit( FileStore::ItemModifyJob *job )
const bool payloadChangedButIgnored = payloadChanged && job->ignorePayload();
const bool ignoreModifyIfValid = nothingChanged ||
( payloadChangedButIgnored && !flagsChanged );
-
+
Item item = job->item();
const Collection collection = item.parentCollection();
QString path;
@@ -1791,7 +1797,7 @@ bool MixedMaildirStore::Private::visit( FileStore::ItemModifyJob *job )
q->notifyItemsProcessed( Item::List() << item );
return true;
}
-
+
// make sure to read the index (if available) before modifying the data, which would
// make the index invalid
mbox->readIndexData();
@@ -1865,8 +1871,8 @@ bool MixedMaildirStore::Private::visit( FileStore::ItemModifyJob *job )
Maildir md( mdPtr->maildir() );
newKey = md.changeEntryFlags( item.remoteId(), item.flags() );
if ( newKey.isEmpty() ) {
- errorText = i18nc( "@info:status", "Cannot modify emails in folder %1",
- collection.name() );
+ errorText = i18nc( "@info:status", "Cannot modify emails in folder %1. %2",
+ collection.name(), md.lastError() );
kError() << errorText << "FolderType=" << folderType;
q->notifyError( FileStore::Job::InvalidJobContext, errorText );
return false;
diff --git a/resources/mixedmaildir/tests/itemfetchtest.cpp \
b/resources/mixedmaildir/tests/itemfetchtest.cpp index 13ac8fa..28a0f6e 100644
--- a/resources/mixedmaildir/tests/itemfetchtest.cpp
+++ b/resources/mixedmaildir/tests/itemfetchtest.cpp
@@ -208,7 +208,7 @@ void ItemFetchTest::testListingMaildir()
QCOMPARE( items[ 1 ].parentCollection(), collection1 );
QCOMPARE( items[ 2 ].parentCollection(), collection1 );
QCOMPARE( items[ 3 ].parentCollection(), collection1 );
-
+
QVERIFY( !items[ 0 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
@@ -219,7 +219,7 @@ void ItemFetchTest::testListingMaildir()
++flagCounts[ flag ];
}
}
-
+
// no flags from maildir file name, no advanced flags without index
QCOMPARE( flagCounts.count(), 0 );
QCOMPARE( flagCounts[ "\\SEEN" ], 0 );
@@ -282,7 +282,7 @@ void ItemFetchTest::testListingMaildir()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
// see data/README
Q_FOREACH( const Item &item, items ) {
Q_FOREACH( const QByteArray &flag, item.flags() ) {
@@ -349,14 +349,14 @@ void ItemFetchTest::testListingMaildir()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
// see data/README
Q_FOREACH( const Item &item, items ) {
Q_FOREACH( const QByteArray &flag, item.flags() ) {
++flagCounts[ flag ];
}
}
-
+
// 2x \SEEN flags: 2x from index, none from file name
QCOMPARE( flagCounts[ "\\SEEN" ], 2 );
QCOMPARE( flagCounts[ "\\FLAGGED" ], 1 );
@@ -405,7 +405,7 @@ void ItemFetchTest::testListingMaildir()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
// see data/README
Q_FOREACH( const Item &item, items ) {
Q_FOREACH( const QByteArray &flag, item.flags() ) {
@@ -482,7 +482,7 @@ void ItemFetchTest::testListingMaildir()
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 4 ].hasPayload<KMime::Message::Ptr>() );
-
+
// not flags from index, no flags from file names
QCOMPARE( items[ 0 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 1 ].flags(), QSet<QByteArray>() );
@@ -580,7 +580,7 @@ void ItemFetchTest::testListingMBox()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
QCOMPARE( items[ 0 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 1 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 2 ].flags(), QSet<QByteArray>() );
@@ -640,7 +640,7 @@ void ItemFetchTest::testListingMBox()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
// see data/README
QCOMPARE( items[ 0 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 1 ].flags(), QSet<QByteArray>() << "\\SEEN" << "$TODO" );
@@ -701,7 +701,7 @@ void ItemFetchTest::testListingMBox()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
// see data/README
QCOMPARE( items[ 0 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 1 ].flags(), QSet<QByteArray>() << "\\SEEN" << "$TODO" );
@@ -749,7 +749,7 @@ void ItemFetchTest::testListingMBox()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
// see data/README
QCOMPARE( items[ 0 ].flags(), QSet<QByteArray>() << "\\SEEN" );
QCOMPARE( items[ 1 ].flags(), QSet<QByteArray>() << "\\DELETED" );
@@ -806,7 +806,7 @@ void ItemFetchTest::testListingMBox()
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
-
+
QCOMPARE( items[ 0 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 1 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 2 ].flags(), QSet<QByteArray>() );
@@ -857,9 +857,9 @@ void ItemFetchTest::testListingMBox()
QVERIFY( !items[ 0 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 1 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 2 ].hasPayload<KMime::Message::Ptr>() );
- QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
+ QVERIFY( !items[ 3 ].hasPayload<KMime::Message::Ptr>() );
QVERIFY( !items[ 4 ].hasPayload<KMime::Message::Ptr>() );
-
+
// see data/README
QCOMPARE( items[ 0 ].flags(), QSet<QByteArray>() );
QCOMPARE( items[ 1 ].flags(), QSet<QByteArray>() << "\\SEEN" << "$TODO" );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic