Hello community, here is the log from the commit of package kdepimlibs4 for openSUSE:Factory checked in at 2013-08-16 13:38:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kdepimlibs4 (Old) and /work/SRC/openSUSE:Factory/.kdepimlibs4.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kdepimlibs4" Changes: -------- --- /work/SRC/openSUSE:Factory/kdepimlibs4/kdepimlibs4.changes 2013-07-30 16:00:33.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kdepimlibs4.new/kdepimlibs4.changes 2013-08-16 13:38:49.000000000 +0200 @@ -1,0 +2,7 @@ +Thu Aug 8 14:56:31 UTC 2013 - [email protected] + +- Update to 4.11.0 + * KDE 4.11 Final release + * See http://www.kde.org/announcements/4.11/ + +------------------------------------------------------------------- Old: ---- kdepimlibs-4.10.97.tar.xz New: ---- kdepimlibs-4.11.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepimlibs4.spec ++++++ --- /var/tmp/diff_new_pack.bj92d5/_old 2013-08-16 13:38:50.000000000 +0200 +++ /var/tmp/diff_new_pack.bj92d5/_new 2013-08-16 13:38:50.000000000 +0200 @@ -17,7 +17,7 @@ Name: kdepimlibs4 -Version: 4.10.97 +Version: 4.11.0 Release: 0 Summary: KDE PIM Libraries License: LGPL-2.1+ ++++++ kdepimlibs-4.10.97.tar.xz -> kdepimlibs-4.11.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/CMakeLists.txt new/kdepimlibs-4.11.0/CMakeLists.txt --- old/kdepimlibs-4.10.97/CMakeLists.txt 2013-07-24 00:20:07.000000000 +0200 +++ new/kdepimlibs-4.11.0/CMakeLists.txt 2013-08-06 23:51:42.000000000 +0200 @@ -6,8 +6,8 @@ ############### The kdepimlibs version (used e.g. in KdepimLibsConfig.cmake) ############### set(KDEPIMLIBS_VERSION_MAJOR 4) -set(KDEPIMLIBS_VERSION_MINOR 10) -set(KDEPIMLIBS_VERSION_PATCH 97) +set(KDEPIMLIBS_VERSION_MINOR 11) +set(KDEPIMLIBS_VERSION_PATCH 0) set(KDEPIMLIBS_VERSION ${KDEPIMLIBS_VERSION_MAJOR}.${KDEPIMLIBS_VERSION_MINOR}.${KDEPIMLIBS_VERSION_PATCH}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase.cpp new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase.cpp --- old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase.cpp 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -49,6 +49,7 @@ CalendarBasePrivate::CalendarBasePrivate( CalendarBase *qq ) : QObject() , mIncidenceChanger( new IncidenceChanger() ) , mBatchInsertionCancelled( false ) + , mListensForNewItems( false ) , q( qq ) { connect( mIncidenceChanger, @@ -217,7 +218,7 @@ { Q_UNUSED( changeId ); Q_UNUSED( item ); - if ( resultCode == IncidenceChanger::ResultCodeSuccess ) { + if ( resultCode == IncidenceChanger::ResultCodeSuccess && !mListensForNewItems) { Q_ASSERT( item.isValid() ); Q_ASSERT( item.hasPayload<KCalCore::Incidence::Ptr>() ); internalInsert( item ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase_p.h new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase_p.h --- old/kdepimlibs-4.10.97/akonadi/calendar/calendarbase_p.h 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/calendar/calendarbase_p.h 2013-08-06 14:46:05.000000000 +0200 @@ -68,6 +68,7 @@ QWeakPointer<CalendarBase> mWeakPointer; Akonadi::Collection mCollectionForBatchInsertion; bool mBatchInsertionCancelled; + bool mListensForNewItems; // does this model detect new item creations ? private: CalendarBase *const q; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/calendar/etmcalendar.cpp new/kdepimlibs-4.11.0/akonadi/calendar/etmcalendar.cpp --- old/kdepimlibs-4.10.97/akonadi/calendar/etmcalendar.cpp 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/calendar/etmcalendar.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -55,6 +55,7 @@ , mCollectionFilteringEnabled( true ) , q( qq ) { + mListensForNewItems = true; } void ETMCalendarPrivate::init() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/entitycache_p.h new/kdepimlibs-4.11.0/akonadi/entitycache_p.h --- old/kdepimlibs-4.10.97/akonadi/entitycache_p.h 2013-07-14 12:02:21.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/entitycache_p.h 2013-08-06 14:46:05.000000000 +0200 @@ -311,7 +311,7 @@ } if ( !toRequest.isEmpty() ) { - request( toRequest, scope ); + request( toRequest, scope, ids ); return false; } @@ -355,10 +355,10 @@ a token to indicate which request has been finished in the dataAvailable() signal. */ - void request( const QList<Entity::Id> &ids, const FetchScope &scope ) + void request( const QList<Entity::Id> &ids, const FetchScope &scope, const QList<Entity::Id> &preserveIds = QList<Entity::Id>() ) { Q_ASSERT( isNotRequested( ids ) ); - shrinkCache(); + shrinkCache( preserveIds ); foreach( Entity::Id id, ids ) { EntityListCacheNode<T> *node = new EntityListCacheNode<T>( id ); mCache.insert( id, node ); @@ -393,12 +393,12 @@ private: /** Tries to reduce the cache size until at least one more object fits in. */ - void shrinkCache() + void shrinkCache( const QList<Entity::Id> &preserveIds ) { typename QHash< Entity::Id, EntityListCacheNode<T>* >::Iterator iter = mCache.begin(); while ( iter != mCache.end() && mCache.size() >= mCapacity ) { - if ( iter.value()->pending ) { + if ( iter.value()->pending || preserveIds.contains( iter.key() ) ) { ++iter; continue; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/item.h new/kdepimlibs-4.11.0/akonadi/item.h --- old/kdepimlibs-4.10.97/akonadi/item.h 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/item.h 2013-08-06 14:46:05.000000000 +0200 @@ -417,6 +417,7 @@ //@cond PRIVATE friend class ItemCreateJob; friend class ItemModifyJob; + friend class ItemModifyJobPrivate; friend class ItemSync; friend class ProtocolHelper; PayloadBase* payloadBase() const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/itemmodifyjob.cpp new/kdepimlibs-4.11.0/akonadi/itemmodifyjob.cpp --- old/kdepimlibs-4.10.97/akonadi/itemmodifyjob.cpp 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/itemmodifyjob.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -99,6 +99,16 @@ } +QString ItemModifyJobPrivate::jobDebuggingString() const +{ + try { + return QString::fromUtf8( fullCommand() ); + } catch ( const Exception &e ) { + return QString::fromUtf8( e.what() ); + } +} + + ItemModifyJob::ItemModifyJob( const Item &item, QObject * parent ) : Job( new ItemModifyJobPrivate( this ), parent ) { @@ -134,13 +144,11 @@ { } -void ItemModifyJob::doStart() +QByteArray ItemModifyJobPrivate::fullCommand() const { - Q_D( ItemModifyJob ); - - const Akonadi::Item item = d->mItems.first(); + const Akonadi::Item item = mItems.first(); QList<QByteArray> changes; - foreach ( int op, d->mOperations ) { + foreach ( int op, mOperations ) { switch ( op ) { case ItemModifyJobPrivate::RemoteId: if ( !item.remoteId().isNull() ) { @@ -187,23 +195,14 @@ } // nothing to do - if ( changes.isEmpty() && d->mParts.isEmpty() && item.attributes().isEmpty() ) { - emitResult(); - return; + if ( changes.isEmpty() && mParts.isEmpty() && item.attributes().isEmpty() ) { + return QByteArray(); } - d->mTag = d->newTag(); - QByteArray command = d->mTag; - try { - command += ProtocolHelper::entitySetToByteArray( d->mItems, "STORE" ); - } catch ( const Exception &e ) { - setError( Job::Unknown ); - setErrorText( QString::fromUtf8( e.what() ) ); - emitResult(); - return; - } + QByteArray command; + command += ProtocolHelper::entitySetToByteArray( mItems, "STORE" ); // can throw an exception command += ' '; - if ( !d->mRevCheck || item.revision() < 0 ) { + if ( !mRevCheck || item.revision() < 0 ) { command += "NOREV "; } else { command += "REV " + QByteArray::number( item.revision() ) + ' '; @@ -216,7 +215,32 @@ const QByteArray attrs = ProtocolHelper::attributesToByteArray( item, true ); if ( !attrs.isEmpty() ) command += ' ' + attrs; + return command; +} + +void ItemModifyJob::doStart() +{ + Q_D( ItemModifyJob ); + + QByteArray command; + try { + command = d->fullCommand(); + } catch ( const Exception &e ) { + setError( Job::Unknown ); + setErrorText( QString::fromUtf8( e.what() ) ); + emitResult(); + return; + } + if ( command.isEmpty() ) { + emitResult(); + return; + } + + d->mTag = d->newTag(); + command.prepend( d->mTag ); + command += d->nextPartHeader(); + d->writeData( command ); d->newTag(); // hack to circumvent automatic response handling } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/itemmodifyjob_p.h new/kdepimlibs-4.11.0/akonadi/itemmodifyjob_p.h --- old/kdepimlibs-4.10.97/akonadi/itemmodifyjob_p.h 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/itemmodifyjob_p.h 2013-08-06 14:46:05.000000000 +0200 @@ -47,6 +47,9 @@ void doUpdateItemRevision( Entity::Id, int oldRevision, int newRevision ); + QString jobDebuggingString() const /*Q_DECL_OVERRIDE*/; + QByteArray fullCommand() const; + Q_DECLARE_PUBLIC( ItemModifyJob ) QSet<int> mOperations; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/monitor_p.cpp new/kdepimlibs-4.11.0/akonadi/monitor_p.cpp --- old/kdepimlibs-4.10.97/akonadi/monitor_p.cpp 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/monitor_p.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -118,10 +118,13 @@ || ( op == NotificationMessageV2::Remove && q_ptr->receivers( SIGNAL(itemRemoved(Akonadi::Item)) ) == 0 && q_ptr->receivers( SIGNAL(itemsRemoved(Akonadi::Item::List)) ) == 0 ) || ( op == NotificationMessageV2::Modify && q_ptr->receivers( SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>)) ) == 0 ) - || ( op == NotificationMessageV2::ModifyFlags && q_ptr->receivers( SIGNAL(itemsFlagsChanged(Akonadi::Item::List,QSet<QByteArray>,QSet<QByteArray>)) ) == 0 ) + || ( op == NotificationMessageV2::ModifyFlags && + ( q_ptr->receivers( SIGNAL(itemsFlagsChanged(Akonadi::Item::List,QSet<QByteArray>,QSet<QByteArray>)) ) == 0 // Newly delivered ModifyFlags notifications will be converted to // itemChanged(item, "FLAGS") for legacy clients. - || ( op == NotificationMessageV2::ModifyFlags && ( !allowModifyFlagsConversion || q_ptr->receivers( SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>)) ) == 0 ) ) + && ( !allowModifyFlagsConversion || q_ptr->receivers( SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>)) ) == 0 ) + ) + ) || ( op == NotificationMessageV2::Move && q_ptr->receivers( SIGNAL(itemMoved(Akonadi::Item,Akonadi::Collection,Akonadi::Collection)) ) == 0 && q_ptr->receivers( SIGNAL(itemsMoved(Akonadi::Item::List,Akonadi::Collection,Akonadi::Collection)) ) == 0 ) || ( op == NotificationMessageV2::Link && q_ptr->receivers( SIGNAL(itemLinked(Akonadi::Item,Akonadi::Collection)) ) == 0 @@ -547,11 +550,15 @@ const int appended = translateAndCompress( pendingNotifications, msg ); if ( appended > 0 ) { appendedMessages += appended; - // translateAndCompress can remove an existing "modify" when msg is a "delete". We need to detect that, for ChangeRecorder. - if ( pendingNotifications.count() != oldSize + 1 ) - ++erasedMessages; - } else + } else { ++modifiedMessages; + } + // translateAndCompress can remove an existing "modify" when msg is a "delete". + // Or it can merge two ModifyFlags and return false. + // We need to detect such removals, for ChangeRecorder. + if ( pendingNotifications.count() != oldSize + appended ) { + ++erasedMessages; // this count isn't exact, but it doesn't matter + } } else if ( needsSplit ) { // If it's not queued at least make sure we fetch all the items from split // notifications in one go. @@ -572,7 +579,7 @@ } // tell ChangeRecorder (even if 0 appended, the compression could have made changes to existing messages) - if ( appendedMessages > 0 || modifiedMessages > 0 ) { + if ( appendedMessages > 0 || modifiedMessages > 0 || erasedMessages > 0 ) { if ( erasedMessages > 0 ) notificationsErased(); else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/akonadi/tests/entitycachetest.cpp new/kdepimlibs-4.11.0/akonadi/tests/entitycachetest.cpp --- old/kdepimlibs-4.10.97/akonadi/tests/entitycachetest.cpp 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/akonadi/tests/entitycachetest.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -150,6 +150,25 @@ QCOMPARE( item.id(), 1ll ); QVERIFY( item.hasPayload<QByteArray>() ); } + + void testListCache_ensureCached() + { + ItemFetchScope scope; + + EntityListCache<Item, ItemFetchJob, ItemFetchScope> cache( 3 ); + QSignalSpy spy( &cache, SIGNAL(dataAvailable()) ); + QVERIFY( spy.isValid() ); + + cache.request( QList<Entity::Id>() << 1 << 2 << 3, scope ); + QTest::qWait( 1000 ); + QCOMPARE( spy.count(), 1 ); + QVERIFY( cache.isCached( QList<Entity::Id>() << 1 << 2 << 3 ) ); + + cache.ensureCached( QList<Entity::Id>() << 1 << 2 << 3 << 4, scope ); + QTest::qWait( 1000 ); + QCOMPARE( spy.count(), 2 ); + QVERIFY( cache.isCached( QList<Entity::Id>() << 1 << 2 << 3 << 4 ) ); + } }; QTEST_AKONADIMAIN( EntityCacheTest, NoGUI ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kabc/plugins/dir/dir.desktop new/kdepimlibs-4.11.0/kabc/plugins/dir/dir.desktop --- old/kdepimlibs-4.10.97/kabc/plugins/dir/dir.desktop 2013-07-23 11:00:40.000000000 +0200 +++ new/kdepimlibs-4.11.0/kabc/plugins/dir/dir.desktop 2013-08-06 14:46:05.000000000 +0200 @@ -62,6 +62,7 @@ Comment[fr]=Fournit un accès aux contacts dont chacun est enregistré dans un fichier, dans le dossier indiqué. Le format « vCard » et d'autres formats sont pris en charge selon les modules externes disponibles. Comment[hu]=Névjegyek elérését biztosítja. Minden névjegy külön fájlban található, egy adott mappában. Támogatja a szabványos vCard fájlt és az elérhető bővítményektől függően más formátumokat. Comment[ia]=Il provide accessos a contactos, cata un immagazinate in un singule file, in un date dossier. Il supporta file de standard VCard e altere formatos dependente ab le disponibilitate de plugins. +Comment[it]=Fornisce accesso a contatti, ciascuno dei quali memorizzato in un singolo file in una cartella data. Gestisce file in standard vCard e altri formati in base alle estensioni disponibili. Comment[kk]=Көрсетілген қапшықта, әрбірі бөлек файлда сақталған контакттарға қатынау мүмкіндігін береді. Плагині бар-жоғына қарай, vCard және басқа да пішімдерді тани алады. Comment[nb]=Gir tilgang til kontakter, lagret hver for seg i en enkelt fil, i en gitt mappe. Støtter standard vCard og andre formater avhengig av tilgjengelige programtillegg. Comment[nl]=Geeft toegang tot contactpersonen, elk opgeslagen in een enkel bestand in een opgegeven map. Ondersteunt standaard vCard-bestand en andere van beschikbare plug-ins afhankelijke formaten diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kabc/plugins/file/file.desktop new/kdepimlibs-4.11.0/kabc/plugins/file/file.desktop --- old/kdepimlibs-4.10.97/kabc/plugins/file/file.desktop 2013-07-23 11:00:40.000000000 +0200 +++ new/kdepimlibs-4.11.0/kabc/plugins/file/file.desktop 2013-08-06 14:46:05.000000000 +0200 @@ -67,6 +67,7 @@ Comment[fr]=Fournit un accès aux contacts enregistrés dans un unique fichier local. Le format « vCard » et d'autres formats sont pris en charge selon les modules externes disponibles. Comment[hu]=Névjegyek elérését biztosítja. Minden névjegy egy közös helyi fájlban található. Támogatja a szabványos vCard fájlt és az elérhető bővítményektől függően más formátumokat. Comment[ia]=Il provide accessos a contactos immagazinate in un singule file local. Il supporta files de standard VCard e altere formatos in dependentia de plugins disponibile. +Comment[it]=Fornisce accesso a contatti memorizzati in un singolo file locale. Gestisce file in standard vCard e altri formati in base alle estensioni disponibili. Comment[kk]=Бір файлда сақталған контакттарға қатынау мүмкіндігін береді. Плагині бар-жоғына қарай, vCard және басқа да пішімдерді тани алады. Comment[nb]=Gir tilgang til kontakter, lagret i en enkelt lokal fil. Støtter standard vCard og andre formater avhengig av tilgjengelige programtillegg. Comment[nl]=Geeft toegang tot in een enkel lokaal bestand opgeslagen contactpersonen. Ondersteunt standaard vCard-bestanden en andere van beschikbare plug-ins afhankelijke formaten. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kabc/plugins/net/net.desktop new/kdepimlibs-4.11.0/kabc/plugins/net/net.desktop --- old/kdepimlibs-4.10.97/kabc/plugins/net/net.desktop 2013-07-23 11:00:40.000000000 +0200 +++ new/kdepimlibs-4.11.0/kabc/plugins/net/net.desktop 2013-08-06 14:46:05.000000000 +0200 @@ -67,6 +67,7 @@ Comment[fr]=Fournit un accès aux contacts enregistrés dans des fichiers distants en utilisant le mécanisme réseau KIO de KDE. Le format « vCard » et d'autres formats sont pris en charge selon les modules externes disponibles. Comment[hu]=Távoli fájlokban található névjegyek elérését biztosítja a KDE KIO hálózati keretrendszeren keresztül. Támogatja a szabványos vCard fájlt és az elérhető bővítményektől függően más formátumokat. Comment[ia]=Il provide accesso a contactos in files remote usante le schema de rete de KDE KIO. Il suppporta files de standard VCard e altere formatos in dependentia de plugins disponibile. +Comment[it]=Fornisce accesso a contatti su file remoti usando KIO, l'infrastruttura di rete di KDE. Gestisce file in standard vCard e altri formati in base alle estensioni disponibili. Comment[kk]=KDE-нің KIO желі құрылымы арқылы қашықтағы файлдарда сақталған контакттарға қатынау мүмкіндігін береді. Плагині бар-жоғына қарай, vCard және басқа да пішімдерді тани алады. Comment[nb]=Gir tilgang til kontakter i nettverksfiler, ved bruk av KDEs rammeverk KIO for nettverk. Støtter standard vCard og andre formater avhengig av tilgjengelige programtillegg. Comment[nl]=Geeft toegang tot contactpersonen in externe bestanden gebruikmakend van KIO, een netwerkonderdeel van KDE. Ondersteunt standaard vCard-bestanden en andere van beschikbare plug-ins afhankelijke formaten. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kblog/CMakeLists.txt new/kdepimlibs-4.11.0/kblog/CMakeLists.txt --- old/kdepimlibs-4.10.97/kblog/CMakeLists.txt 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/kblog/CMakeLists.txt 2013-08-07 17:01:35.000000000 +0200 @@ -2,7 +2,7 @@ include_directories(${Boost_INCLUDE_DIR}) -add_subdirectory( tests ) +#add_subdirectory( tests ) ########### next target ############### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kcal/CMakeLists.txt new/kdepimlibs-4.11.0/kcal/CMakeLists.txt --- old/kdepimlibs-4.10.97/kcal/CMakeLists.txt 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/kcal/CMakeLists.txt 2013-08-07 17:01:35.000000000 +0200 @@ -13,9 +13,9 @@ include (ConfigureChecks.cmake) -if(KDE4_BUILD_TESTS) - add_definitions(-DCOMPILING_TESTS) -endif() +#if(KDE4_BUILD_TESTS) +# add_definitions(-DCOMPILING_TESTS) +#endif() include_directories( ${LIBICAL_INCLUDE_DIRS} @@ -142,7 +142,7 @@ install(TARGETS kcal_localdir DESTINATION ${PLUGIN_INSTALL_DIR}) endif() -add_subdirectory( tests ) +#add_subdirectory( tests ) ########### install files ############### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kcalcore/tests/readandwrite.cpp new/kdepimlibs-4.11.0/kcalcore/tests/readandwrite.cpp --- old/kdepimlibs-4.10.97/kcalcore/tests/readandwrite.cpp 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/kcalcore/tests/readandwrite.cpp 2013-08-07 21:56:57.000000000 +0200 @@ -23,6 +23,7 @@ #include "../icalformat.h" #include "../memorycalendar.h" #include "../vcalformat.h" +#include "../config-kcalcore.h" #include <kaboutdata.h> #include <kdebug.h> @@ -65,6 +66,16 @@ kDebug() << "Input file:" << input; kDebug() << "Output file:" << output; +#ifdef USE_ICAL_0_46 + // Jenkins is still running a old libical version. + // Add a workaround here since sysadmins don't have time to install libical 1.x before + // the 4.11 KDE release. + if (outputFileInfo.fileName() == QLatin1String("KOrganizer_3.1.ics.ical.out") || + outputFileInfo.fileName() == QLatin1String("KOrganizer_3.2.ics.ical.out")) { + return 0; + } +#endif + MemoryCalendar::Ptr cal( new MemoryCalendar( KDateTime::UTC ) ); FileStorage instore( cal, input ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kcalutils/incidenceformatter.cpp new/kdepimlibs-4.11.0/kcalutils/incidenceformatter.cpp --- old/kdepimlibs-4.10.97/kcalutils/incidenceformatter.cpp 2013-07-10 01:12:36.000000000 +0200 +++ new/kdepimlibs-4.11.0/kcalutils/incidenceformatter.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -3805,7 +3805,7 @@ KDateTime::Spec spec ) { ToolTipVisitor v; - if ( v.act( sourceName, incidence, date, richText, spec ) ) { + if ( incidence && v.act( sourceName, incidence, date, richText, spec ) ) { return v.result(); } else { return QString(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kimap/searchjob.cpp new/kdepimlibs-4.11.0/kimap/searchjob.cpp --- old/kdepimlibs-4.10.97/kimap/searchjob.cpp 2013-07-10 01:12:37.000000000 +0200 +++ new/kdepimlibs-4.11.0/kimap/searchjob.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -123,9 +123,9 @@ } if ( d->logic == SearchJob::Not ) { - searchKey += "NOT"; - } else if ( d->logic == SearchJob::Or ) { - searchKey += "OR"; + searchKey += "NOT "; + } else if ( d->logic == SearchJob::Or && d->criterias.size() > 1 ) { + searchKey += "OR "; } if ( d->logic == SearchJob::And ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kimap/tests/CMakeLists.txt new/kdepimlibs-4.11.0/kimap/tests/CMakeLists.txt --- old/kdepimlibs-4.10.97/kimap/tests/CMakeLists.txt 2013-07-10 01:12:37.000000000 +0200 +++ new/kdepimlibs-4.11.0/kimap/tests/CMakeLists.txt 2013-08-06 14:46:05.000000000 +0200 @@ -42,6 +42,7 @@ imapsettest idlejobtest quotarootjobtest + searchjobtest ) ########### manual tests ############### diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kimap/tests/searchjobtest.cpp new/kdepimlibs-4.11.0/kimap/tests/searchjobtest.cpp --- old/kdepimlibs-4.10.97/kimap/tests/searchjobtest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kdepimlibs-4.11.0/kimap/tests/searchjobtest.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -0,0 +1,129 @@ +/* + * Copyright (C) 2013 Daniel Vrátil <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include <qtest_kde.h> + +#include "kimaptest/fakeserver.h" +#include "kimap/loginjob.h" +#include "kimap/session.h" +#include "kimap/searchjob.h" + +#include <QTcpSocket> +#include <QtTest> +#include <KDebug> + +typedef QPair< KIMAP::SearchJob::SearchCriteria, QByteArray > SearchCriteriaValuePair; + +Q_DECLARE_METATYPE(QList<SearchCriteriaValuePair>) +Q_DECLARE_METATYPE(KIMAP::SearchJob::SearchLogic) + +#define searchPair(a,b) qMakePair<KIMAP::SearchJob::SearchCriteria, QByteArray>( a, b ) + +class SearchJobTest: public QObject { + Q_OBJECT + +private Q_SLOTS: + +void testSearch_data() { + QTest::addColumn<QList<QByteArray> >( "scenario" ); + QTest::addColumn<bool>( "uidbased" ); + QTest::addColumn<int>( "expectedResultsCount" ); + QTest::addColumn<KIMAP::SearchJob::SearchLogic>( "searchLogic" ); + QTest::addColumn<QList<SearchCriteriaValuePair> >( "searchCriteria" ); + + QList<QByteArray> scenario; + QList<SearchCriteriaValuePair> criteria; + scenario << FakeServer::preauth() + << "C: A000001 UID SEARCH HEADER Message-Id <[email protected]>" + << "S: * SEARCH 10 12" + << "S: A000001 OK search done"; + + criteria << searchPair( KIMAP::SearchJob::Header, "Message-Id <[email protected]>" ); + QTest::newRow( "uidbased header search") << scenario << true << 2 << KIMAP::SearchJob::And << criteria; + + scenario.clear(); + criteria.clear(); + scenario << FakeServer::preauth() + << "C: A000001 SEARCH OR (NEW) (HEADER Message-Id <[email protected]>)" + << "S: * SEARCH" + << "S: A000001 OK search done"; + + criteria << searchPair( KIMAP::SearchJob::New, QByteArray() ) + << searchPair( KIMAP::SearchJob::Header, "Message-Id <[email protected]>" ); + QTest::newRow( "OR search with no results") << scenario << false << 0 << KIMAP::SearchJob::Or << criteria; + + scenario.clear(); + criteria.clear(); + scenario << FakeServer::preauth() + << "C: A000001 SEARCH TO {25}\r\n<[email protected]>" + << "S: * SEARCH 1" + << "S: A000001 OK search done"; + criteria << searchPair( KIMAP::SearchJob::To, "<[email protected]>" ); + QTest::newRow( "literal data search") << scenario << false << 1 << KIMAP::SearchJob::And << criteria; + + scenario.clear(); + criteria.clear(); + scenario << FakeServer::preauth() + << "C: A000001 UID SEARCH NOT (NEW)" + << "S: * SEARCH 1 2 3 4 5 6" + << "S: A000001 OK search done"; + criteria << searchPair( KIMAP::SearchJob::New, QByteArray() ); + QTest::newRow( "uidbased NOT NEW search") << scenario << true << 6 << KIMAP::SearchJob::Not << criteria; +} + +void testSearch() +{ + QFETCH( QList<QByteArray>, scenario ); + QFETCH( bool, uidbased ); + QFETCH( int, expectedResultsCount ); + QFETCH( KIMAP::SearchJob::SearchLogic, searchLogic ); + QFETCH( QList<SearchCriteriaValuePair>, searchCriteria ); + + FakeServer fakeServer; + fakeServer.setScenario( scenario ); + fakeServer.startAndWait(); + + KIMAP::Session session( "127.0.0.1", 5989 ); + + KIMAP::SearchJob *job = new KIMAP::SearchJob( &session ); + job->setUidBased( uidbased ); + job->setSearchLogic( searchLogic ); + Q_FOREACH ( const SearchCriteriaValuePair &pair, searchCriteria ) { + if ( pair.second.isEmpty() ) { + job->addSearchCriteria( pair.first ); + } else { + job->addSearchCriteria( pair.first, pair.second ); + } + } + + bool result = job->exec(); + QVERIFY( result ); + if ( result ) { + QList<qint64> foundItems = job->results(); + QCOMPARE( foundItems.size(), expectedResultsCount ); + } + + fakeServer.quit(); +} + +}; + +QTEST_KDEMAIN_CORE( SearchJobTest ) + +#include "searchjobtest.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kdepimlibs-4.10.97/kpimtextedit/insertimagewidget.cpp new/kdepimlibs-4.11.0/kpimtextedit/insertimagewidget.cpp --- old/kdepimlibs-4.10.97/kpimtextedit/insertimagewidget.cpp 2013-07-10 01:12:37.000000000 +0200 +++ new/kdepimlibs-4.11.0/kpimtextedit/insertimagewidget.cpp 2013-08-06 14:46:05.000000000 +0200 @@ -138,7 +138,6 @@ void InsertImageWidgetPrivate::_k_slotUrlChanged( const QString &text ) { - q->enableButtonOk( !text.isEmpty() ); QImage image( text ); if ( !image.isNull() ) { height->setValue( image.height() ); @@ -150,7 +149,7 @@ preview->clear(); imageRatio = -1; } - q->enableButtonOk( !text.isEmpty() && !image.isNull() ); + q->enableButtonOk( !text.isEmpty() ); } void InsertImageWidgetPrivate::_k_slotImageWidthChanged( int value ) -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
