cache decision for repository depend on his url.
authorJosef Reidinger <jreidinger@suse.cz>
Fri, 2 May 2008 07:32:24 +0000 (07:32 +0000)
committerJosef Reidinger <jreidinger@suse.cz>
Fri, 2 May 2008 07:32:24 +0000 (07:32 +0000)
http,ftp and smb cache packages.

tests/zypp/RepoManager_test.cc
zypp/RepoInfo.cc
zypp/RepoInfo.h

index 366ab8e..f4d4071 100644 (file)
@@ -137,3 +137,18 @@ BOOST_AUTO_TEST_CASE(repomanager_test)
   manager.buildCache(repo);
 }
 
+BOOST_AUTO_TEST_CASE(repo_seting_test)
+{
+  RepoInfo repo;
+  repo.setAlias("foo");
+  repo.addBaseUrl(string("http://test.org"));
+  BOOST_CHECK_MESSAGE( repo.keepPackages(), "http scheme is not cached");
+  repo.setBaseUrl(string("ftp://test.org"));
+  BOOST_CHECK_MESSAGE( repo.keepPackages(), "ftp scheme is not cached");
+  repo.setBaseUrl(string("smb://test.org"));
+  BOOST_CHECK_MESSAGE( repo.keepPackages(), "smb scheme is not cached");
+  repo.setBaseUrl(string("file:///test.txt"));
+  BOOST_CHECK_MESSAGE( !repo.keepPackages(), "file scheme is cached");
+  repo.setBaseUrl(string("http://test.org"));
+  BOOST_CHECK_MESSAGE( repo.keepPackages(), "cache is depend on second url.");
+}
index a4a0a8e..6599c11 100644 (file)
@@ -146,6 +146,15 @@ namespace zypp
 
   RepoInfo & RepoInfo::addBaseUrl( const Url &url )
   {
+    if ( _pimpl->baseUrls.size()==0 ) //first url
+    {
+      string scheme = url.getScheme();
+      if ( scheme == "http" || scheme == "ftp" || scheme == "smb" )
+        setKeepPackages(true);
+      else
+        setKeepPackages(false);
+    }
+
     _pimpl->baseUrls.insert(url);
     return *this;
   }
index 58b1a0c..0903701 100644 (file)
@@ -242,6 +242,7 @@ namespace zypp
     /**
      * Add a base url. \see baseUrls
      * \param url The base url for the repository.
+     * \note can change keepPackages,so change it after this call
      *
      * To recreate the base URLs list, use \ref setBaseUrl(const Url &) followed
      * by addBaseUrl().
@@ -250,6 +251,7 @@ namespace zypp
 
     /**
      * Clears current base URL list and adds \a url.
+     * \note can change keepPackages,so change it after this call
      */
     RepoInfo & setBaseUrl( const Url &url );