Author: jreidinger
Date: Tue Apr 15 12:54:12 2008
New Revision: 9644
URL: http://svn.opensuse.org/viewcvs/zypp?rev=9644&view=rev
Log:
save do nothing if no locks added/removed
fix bug with multiple save lock
don't save same query multiple times
improve tests
Modified:
trunk/libzypp/tests/zypp/Locks_test.cc
trunk/libzypp/zypp/Locks.cc
Modified: trunk/libzypp/tests/zypp/Locks_test.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/tests/zypp/Locks_test.cc?rev=9644&r1=9643&r2=9644&view=diff
==============================================================================
--- trunk/libzypp/tests/zypp/Locks_test.cc (original)
+++ trunk/libzypp/tests/zypp/Locks_test.cc Tue Apr 15 12:54:12 2008
@@ -23,8 +23,6 @@
zypp::PoolItem pi( zypp::ResPool::instance().find( solvable ) );
if( pi.status().isLocked() )
return true;
- cout << "non-locked resolvable" << pi.resolvable() << endl;
- // name: yast2-sound 2.16.2-9 i586
return false;
}
@@ -51,23 +49,10 @@
// 0xx basic queries
/////////////////////////////////////////////////////////////////////////////
-// no conditions, default query
-// result: all available resolvables
-BOOST_AUTO_TEST_CASE(locks_1)
-{
- cout << "****000****" << endl;
- PoolQuery q;
- Locks::instance().addLock(q);
- for_(it,q.begin(),q.end())
- {
- BOOST_CHECK(isLocked(*it));
- }
-}
-
// default query + one search string
// q.addString("foo");
// result: all resolvables having at least one attribute matching foo
-BOOST_AUTO_TEST_CASE(locks_2)
+BOOST_AUTO_TEST_CASE(locks_1)
{
cout << "****001****" << endl;
PoolQuery q;
@@ -77,6 +62,7 @@
{
BOOST_CHECK(isLocked(*it));
}
+ Locks::instance().removeLock(q); //clear before next test
}
BOOST_AUTO_TEST_CASE(locks_save_load)
@@ -91,30 +77,49 @@
{
BOOST_CHECK(isLocked(*it));
}
- Locks::instance().removeLock(q);
- for_(it,q.begin(),q.end())
- {
- BOOST_CHECK(!isLocked(*it));
- }
#if 1
filesystem::TmpFile testfile;
//Pathname testfile(TESTS_SRC_DIR);
// testfile += "/zypp/data/Locks/testlocks";
+ Locks::instance().removeLock(q);
Locks::instance().save(testfile);
Locks::instance().readAndApply(testfile);
- //still locked
- for_(it,q.begin(),q.end())
- {
- BOOST_CHECK(isLocked(*it));
- }
- Locks::instance().removeLock(q); //need twice because finded from previous test
- Locks::instance().save(testfile);
- Locks::instance().readAndApply(testfile);
- //now unlocked - first unlock remove indetical lock from previous test
- //and next unlock remove lock from lockfile
+ //now unlocked
for_(it,q.begin(),q.end())
{
BOOST_CHECK(!isLocked(*it));
}
+ BOOST_CHECK(Locks::instance().size()==0);
#endif
}
+
+BOOST_AUTO_TEST_CASE(locks_save_without_redundancy)
+{
+ cout << "****save without redundancy****" << endl;
+ PoolQuery q;
+ q.addString("zypper");
+ Locks& locks = Locks::instance();
+ locks.addLock(q);
+ locks.addLock(q);
+ locks.save("/dev/null");
+ BOOST_CHECK( locks.size()==1 );
+ locks.addLock(q);
+ locks.save("/dev/null");
+ BOOST_CHECK( locks.size()==1 );
+ locks.removeLock(q);
+ locks.save("/dev/null");
+ BOOST_CHECK( locks.size() == 0 );
+}
+
+BOOST_AUTO_TEST_CASE( locks_empty )
+{
+ cout << "****test and clear empty locks****" << endl;
+ PoolQuery q;
+ q.addString("foo-bar-nonexist");
+ Locks& locks = Locks::instance();
+ locks.addLock(q);
+ locks.save( "/dev/null" ); //only need merge list
+ BOOST_CHECK( locks.existEmpty() );
+ locks.removeEmpty();
+ BOOST_CHECK( locks.size() == 0 );
+}
Modified: trunk/libzypp/zypp/Locks.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Locks.cc?rev=9644&r1=9643&r2=9644&view=diff
==============================================================================
--- trunk/libzypp/zypp/Locks.cc (original)
+++ trunk/libzypp/zypp/Locks.cc Tue Apr 15 12:54:12 2008
@@ -11,6 +11,7 @@
#include <fstream>
#include