Michal Luscon dfbd3a2
diff --git a/dnf.spec b/dnf.spec
Michal Luscon dfbd3a2
index 2deea95..00025db 100644
Michal Luscon dfbd3a2
--- a/dnf.spec
Michal Luscon dfbd3a2
+++ b/dnf.spec
Michal Luscon dfbd3a2
@@ -11,7 +11,7 @@
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 Name:		dnf
Michal Luscon dfbd3a2
 Version:	0.6.4
Michal Luscon dfbd3a2
-Release:	5%{?snapshot}%{?dist}
Michal Luscon dfbd3a2
+Release:	6%{?snapshot}%{?dist}
Michal Luscon dfbd3a2
 Summary:	Package manager forked from Yum, using libsolv as a dependency resolver
Michal Luscon dfbd3a2
 # For a breakdown of the licensing, see PACKAGE-LICENSING
Michal Luscon dfbd3a2
 License:	GPLv2+ and GPLv2 and GPL
Michal Luscon dfbd3a2
@@ -125,6 +125,7 @@ mkdir -p $RPM_BUILD_ROOT%{pluginconfpath}
Michal Luscon dfbd3a2
 mkdir -p $RPM_BUILD_ROOT%{py2pluginpath}
Michal Luscon dfbd3a2
 mkdir -p $RPM_BUILD_ROOT%{py3pluginpath}/__pycache__
Michal Luscon dfbd3a2
 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log
Michal Luscon dfbd3a2
+mkdir -p $RPM_BUILD_ROOT%{_var}/cache/dnf
Michal Luscon dfbd3a2
 touch $RPM_BUILD_ROOT%{_localstatedir}/log/%{name}.log
Michal Luscon dfbd3a2
 ln -sr $RPM_BUILD_ROOT%{_bindir}/dnf $RPM_BUILD_ROOT%{_bindir}/yum
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
@@ -152,6 +153,7 @@ popd
Michal Luscon dfbd3a2
 %{_mandir}/man5/dnf.conf.5.gz
Michal Luscon dfbd3a2
 %{_unitdir}/dnf-makecache.service
Michal Luscon dfbd3a2
 %{_unitdir}/dnf-makecache.timer
Michal Luscon dfbd3a2
+%{_var}/cache/dnf
Michal Luscon dfbd3a2
 %{_tmpfilesdir}/dnf.conf
Michal Luscon dfbd3a2
 %exclude %{python_sitelib}/dnf/automatic
Michal Luscon dfbd3a2
 %{python_sitelib}/dnf/
Michal Luscon dfbd3a2
@@ -187,6 +189,13 @@ popd
Michal Luscon dfbd3a2
 %postun
Michal Luscon dfbd3a2
 %systemd_postun_with_restart dnf-makecache.timer
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
+%posttrans
Michal Luscon dfbd3a2
+# cleanup pre-1.0.2 style cache
Michal Luscon dfbd3a2
+for arch in armv7hl i686 x86_64 ; do
Michal Luscon dfbd3a2
+    rm -rf /var/cache/dnf/$arch
Michal Luscon dfbd3a2
+done
Michal Luscon dfbd3a2
+exit 0
Michal Luscon dfbd3a2
+
Michal Luscon dfbd3a2
 %post automatic
Michal Luscon dfbd3a2
 %systemd_post dnf-automatic.timer
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
@@ -197,12 +206,19 @@ popd
Michal Luscon dfbd3a2
 %systemd_postun_with_restart dnf-automatic.timer
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 %changelog
Michal Luscon dfbd3a2
+* Wed Aug 26 2015 Michal Luscon <mluscon@redhat.com> 0.6.4-6
Michal Luscon dfbd3a2
+- test: don't compute hash from absolute local file path (introduced in
Michal Luscon dfbd3a2
+  10518b6) 
Michal Luscon dfbd3a2
+- cleanup old cache in posttrans 
Michal Luscon dfbd3a2
+- include /var/cache/dnf into rpm 
Michal Luscon dfbd3a2
+- do not use releasever in cache path (related to RhBug:1173107)
Michal Luscon dfbd3a2
+
Michal Luscon dfbd3a2
 * Thu Apr 16 2015 Michal Luscon <mluscon@redhat.com> 0.6.4-5
Michal Luscon dfbd3a2
 - Revert "completion: work with just python(3)-dnf"
Michal Luscon dfbd3a2
 - Revert "bash-completion: use python method to get commands (RhBug:1187579)"
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 * Thu Apr 16 2015 Michal Luscon <mluscon@redhat.com> 0.6.4-4
Michal Luscon dfbd3a2
-- upload correct source archive 0.6.4 
Michal Luscon dfbd3a2
+- upload correct source archive 0.6.4
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 * Mon Apr 13 2015 Michal Luscon <mluscon@redhat.com> 0.6.4-3
Michal Luscon dfbd3a2
 - rel-eng: use distro releaser
Michal Luscon dfbd3a2
diff --git a/dnf/base.py b/dnf/base.py
Michal Luscon dfbd3a2
index 725937b..f3df45c 100644
Michal Luscon dfbd3a2
--- a/dnf/base.py
Michal Luscon dfbd3a2
+++ b/dnf/base.py
Michal Luscon dfbd3a2
@@ -127,9 +127,8 @@ class Base(object):
Michal Luscon dfbd3a2
         subst = conf.substitutions
Michal Luscon dfbd3a2
         if 'releasever' not in subst:
Michal Luscon dfbd3a2
             subst['releasever'] = \
Michal Luscon dfbd3a2
-                dnf.rpm.detect_releasever(conf.installroot) or ''
Michal Luscon dfbd3a2
-        suffix = dnf.conf.parser.substitute(dnf.const.CACHEDIR_SUFFIX, subst)
Michal Luscon dfbd3a2
-        cache_dirs = dnf.conf.CliCache(conf.cachedir, suffix)
Michal Luscon dfbd3a2
+                dnf.rpm.detect_releasever(conf.installroot)
Michal Luscon dfbd3a2
+        cache_dirs = dnf.conf.CliCache(conf.cachedir)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
         conf.cachedir = cache_dirs.cachedir
Michal Luscon dfbd3a2
         return conf
Michal Luscon dfbd3a2
diff --git a/dnf/cli/cli.py b/dnf/cli/cli.py
Michal Luscon dfbd3a2
index 2c6c40e..0bbd337 100644
Michal Luscon dfbd3a2
--- a/dnf/cli/cli.py
Michal Luscon dfbd3a2
+++ b/dnf/cli/cli.py
Michal Luscon dfbd3a2
@@ -101,9 +101,7 @@ def _list_cmd_calc_columns(output, ypl):
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 def cachedir_fit(conf):
Michal Luscon dfbd3a2
-    subst = conf.substitutions
Michal Luscon dfbd3a2
-    suffix = dnf.conf.parser.substitute(dnf.const.CACHEDIR_SUFFIX, subst)
Michal Luscon dfbd3a2
-    cli_cache = dnf.conf.CliCache(conf.cachedir, suffix)
Michal Luscon dfbd3a2
+    cli_cache = dnf.conf.CliCache(conf.cachedir)
Michal Luscon dfbd3a2
     return cli_cache.cachedir, cli_cache.system_cachedir
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
@@ -1021,10 +1019,6 @@ class Cli(object):
Michal Luscon dfbd3a2
         conf.read(path)
Michal Luscon dfbd3a2
         if releasever is None:
Michal Luscon dfbd3a2
             releasever = dnf.rpm.detect_releasever(root)
Michal Luscon dfbd3a2
-            if releasever is None:
Michal Luscon dfbd3a2
-                msg = _('releasever not given and can not be detected '
Michal Luscon dfbd3a2
-                        'from the installroot.')
Michal Luscon dfbd3a2
-                raise dnf.exceptions.ConfigError(msg)
Michal Luscon dfbd3a2
         conf.releasever = releasever
Michal Luscon dfbd3a2
         subst = conf.substitutions
Michal Luscon dfbd3a2
         subst.update_from_etc(root)
Michal Luscon dfbd3a2
@@ -1039,12 +1033,6 @@ class Cli(object):
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
         self.base.logging.setup_from_dnf_conf(conf)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
-        # repos are ver/arch specific so add $basearch/$releasever
Michal Luscon dfbd3a2
-        conf._repos_persistdir = os.path.normpath(
Michal Luscon dfbd3a2
-            '%s/repos/%s/%s/' % (conf.persistdir,
Michal Luscon dfbd3a2
-                                 subst.get('basearch', '$basearch'),
Michal Luscon dfbd3a2
-                                 subst.get('releasever', '$releasever')))
Michal Luscon dfbd3a2
-
Michal Luscon dfbd3a2
         timer()
Michal Luscon dfbd3a2
         return conf
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
diff --git a/dnf/conf/__init__.py b/dnf/conf/__init__.py
Michal Luscon dfbd3a2
index f26f81b..ec03229 100644
Michal Luscon dfbd3a2
--- a/dnf/conf/__init__.py
Michal Luscon dfbd3a2
+++ b/dnf/conf/__init__.py
Michal Luscon dfbd3a2
@@ -49,10 +49,9 @@ logger = logging.getLogger('dnf')
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 class CliCache(object):
Michal Luscon dfbd3a2
-    def __init__(self, prefix, suffix):
Michal Luscon dfbd3a2
+    def __init__(self, prefix):
Michal Luscon dfbd3a2
         # set from the client, at most once:
Michal Luscon dfbd3a2
         self.prefix = prefix
Michal Luscon dfbd3a2
-        self.suffix = suffix
Michal Luscon dfbd3a2
         # internal:
Michal Luscon dfbd3a2
         self._ready = False
Michal Luscon dfbd3a2
         self._cachedir = None
Michal Luscon dfbd3a2
@@ -63,19 +62,16 @@ class CliCache(object):
Michal Luscon dfbd3a2
             return
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
         self._ready = True
Michal Luscon dfbd3a2
-        self._system_cachedir = self._retdir(self.prefix)
Michal Luscon dfbd3a2
+        self._system_cachedir = self.prefix
Michal Luscon dfbd3a2
         if util.am_i_root():
Michal Luscon dfbd3a2
             self._cachedir = self._system_cachedir
Michal Luscon dfbd3a2
         else:
Michal Luscon dfbd3a2
             try:
Michal Luscon dfbd3a2
                 user_prefix = misc.getCacheDir()
Michal Luscon dfbd3a2
-                self._cachedir = self._retdir(user_prefix)
Michal Luscon dfbd3a2
+                self._cachedir = user_prefix
Michal Luscon dfbd3a2
             except (IOError, OSError) as e:
Michal Luscon dfbd3a2
                 logger.critical(_('Could not set cachedir: %s'), ucd(e))
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
-    def _retdir(self, dir):
Michal Luscon dfbd3a2
-        return os.path.join(dir, self.suffix)
Michal Luscon dfbd3a2
-
Michal Luscon dfbd3a2
     @property
Michal Luscon dfbd3a2
     def cachedir(self):
Michal Luscon dfbd3a2
         self._make_ready()
Michal Luscon dfbd3a2
diff --git a/dnf/const.py.in b/dnf/const.py.in
Michal Luscon dfbd3a2
index 3c498c9..652ec62 100644
Michal Luscon dfbd3a2
--- a/dnf/const.py.in
Michal Luscon dfbd3a2
+++ b/dnf/const.py.in
Michal Luscon dfbd3a2
@@ -21,7 +21,6 @@
Michal Luscon dfbd3a2
 from __future__ import unicode_literals
Michal Luscon dfbd3a2
 import distutils.sysconfig
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
-CACHEDIR_SUFFIX='$basearch/$releasever'
Michal Luscon dfbd3a2
 CONF_FILENAME='/etc/dnf/dnf.conf' # :api
Michal Luscon dfbd3a2
 CONF_AUTOMATIC_FILENAME='/etc/dnf/automatic.conf'
Michal Luscon dfbd3a2
 DISTROVERPKG=('system-release(releasever)', 'redhat-release')
Michal Luscon dfbd3a2
diff --git a/dnf/repo.py b/dnf/repo.py
Michal Luscon dfbd3a2
index 5b9bddf..d0c6f33 100644
Michal Luscon dfbd3a2
--- a/dnf/repo.py
Michal Luscon dfbd3a2
+++ b/dnf/repo.py
Michal Luscon dfbd3a2
@@ -33,6 +33,7 @@ import dnf.util
Michal Luscon dfbd3a2
 import dnf.yum.config
Michal Luscon dfbd3a2
 import dnf.yum.misc
Michal Luscon dfbd3a2
 import functools
Michal Luscon dfbd3a2
+import hashlib
Michal Luscon dfbd3a2
 import hawkey
Michal Luscon dfbd3a2
 import logging
Michal Luscon dfbd3a2
 import librepo
Michal Luscon dfbd3a2
@@ -447,7 +448,14 @@ class Repo(dnf.yum.config.RepoConf):
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
     @property
Michal Luscon dfbd3a2
     def cachedir(self):
Michal Luscon dfbd3a2
-        return os.path.join(self.basecachedir, self.id)
Michal Luscon dfbd3a2
+        url = self.metalink or self.mirrorlist \
Michal Luscon dfbd3a2
+              or (self.baseurl and self.baseurl[0])
Michal Luscon dfbd3a2
+        if url:
Michal Luscon dfbd3a2
+            digest = hashlib.sha256(url.encode('utf8')).hexdigest()[:16]
Michal Luscon dfbd3a2
+            repodir = "%s-%s" % (self.id, digest)
Michal Luscon dfbd3a2
+        else:
Michal Luscon dfbd3a2
+            repodir = self.id
Michal Luscon dfbd3a2
+        return os.path.join(self.basecachedir, repodir)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
     @property
Michal Luscon dfbd3a2
     def filelists_fn(self):
Michal Luscon dfbd3a2
diff --git a/rel-eng/packages/dnf b/rel-eng/packages/dnf
Michal Luscon dfbd3a2
index 126e3e7..40ad0fa 100644
Michal Luscon dfbd3a2
--- a/rel-eng/packages/dnf
Michal Luscon dfbd3a2
+++ b/rel-eng/packages/dnf
Michal Luscon dfbd3a2
@@ -1 +1 @@
Michal Luscon dfbd3a2
-0.6.4-5 ./
Michal Luscon dfbd3a2
+0.6.4-6 ./
Michal Luscon dfbd3a2
diff --git a/tests/test_base.py b/tests/test_base.py
Michal Luscon dfbd3a2
index 4014c95..c56f94f 100644
Michal Luscon dfbd3a2
--- a/tests/test_base.py
Michal Luscon dfbd3a2
+++ b/tests/test_base.py
Michal Luscon dfbd3a2
@@ -42,7 +42,7 @@ class BaseTest(support.TestCase):
Michal Luscon dfbd3a2
         base = dnf.Base()
Michal Luscon dfbd3a2
         self.assertIsNotNone(base.conf)
Michal Luscon dfbd3a2
         self.assertIsNotNone(base.conf.cachedir)
Michal Luscon dfbd3a2
-        reg = re.compile('/var/cache/dnf/[a-zA-Z0-9_]+/x')
Michal Luscon dfbd3a2
+        reg = re.compile('/var/cache/dnf')
Michal Luscon dfbd3a2
         self.assertIsNotNone(reg.match(base.conf.cachedir))
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
     @mock.patch('dnf.rpm.detect_releasever', lambda x: 'x')
Michal Luscon dfbd3a2
@@ -51,7 +51,7 @@ class BaseTest(support.TestCase):
Michal Luscon dfbd3a2
         base = dnf.Base()
Michal Luscon dfbd3a2
         self.assertIsNotNone(base.conf)
Michal Luscon dfbd3a2
         self.assertIsNotNone(base.conf.cachedir)
Michal Luscon dfbd3a2
-        reg = re.compile('/var/tmp/dnf-[a-zA-Z0-9_-]+/[a-zA-Z0-9_]+/x')
Michal Luscon dfbd3a2
+        reg = re.compile('/var/tmp/dnf-[a-zA-Z0-9_-]+')
Michal Luscon dfbd3a2
         self.assertIsNotNone(reg.match(base.conf.cachedir))
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
     def test_reset(self):
Michal Luscon dfbd3a2
diff --git a/tests/test_cli.py b/tests/test_cli.py
Michal Luscon dfbd3a2
index b51a64f..34409da 100644
Michal Luscon dfbd3a2
--- a/tests/test_cli.py
Michal Luscon dfbd3a2
+++ b/tests/test_cli.py
Michal Luscon dfbd3a2
@@ -194,7 +194,7 @@ class ConfigureTest(TestCase):
Michal Luscon dfbd3a2
     def test_configure_user(self):
Michal Luscon dfbd3a2
         """ Test Cli.configure as user."""
Michal Luscon dfbd3a2
         self.cli.configure(['update', '-c', self.conffile])
Michal Luscon dfbd3a2
-        reg = re.compile('^/var/tmp/dnf-[a-zA-Z0-9_-]+/[a-zA-Z0-9_]+/[0-9]+$')
Michal Luscon dfbd3a2
+        reg = re.compile('^/var/tmp/dnf-[a-zA-Z0-9_-]+$')
Michal Luscon dfbd3a2
         self.assertIsNotNone(reg.match(self.base.conf.cachedir))
Michal Luscon dfbd3a2
         self.assertEqual(self.cli.cmdstring, "dnf update -c %s " % self.conffile)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
@@ -202,7 +202,7 @@ class ConfigureTest(TestCase):
Michal Luscon dfbd3a2
     def test_configure_root(self):
Michal Luscon dfbd3a2
         """ Test Cli.configure as root."""
Michal Luscon dfbd3a2
         self.cli.configure(['update', '-c', self.conffile])
Michal Luscon dfbd3a2
-        reg = re.compile('^/var/cache/dnf/[a-zA-Z0-9_]+/[0-9]+$')
Michal Luscon dfbd3a2
+        reg = re.compile('^/var/cache/dnf$')
Michal Luscon dfbd3a2
         self.assertIsNotNone(reg.match(self.base.conf.cachedir))
Michal Luscon dfbd3a2
         self.assertEqual(self.cli.cmdstring, "dnf update -c %s " % self.conffile)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
diff --git a/tests/test_config.py b/tests/test_config.py
Michal Luscon dfbd3a2
index 7f8d380..c59270e 100644
Michal Luscon dfbd3a2
--- a/tests/test_config.py
Michal Luscon dfbd3a2
+++ b/tests/test_config.py
Michal Luscon dfbd3a2
@@ -39,23 +39,26 @@ class OptionTest(unittest.TestCase):
Michal Luscon dfbd3a2
             self.fail("option should be deleted now.")
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 class CacheTest(TestCase):
Michal Luscon dfbd3a2
-     @mock.patch('dnf.util.am_i_root', return_value=True)
Michal Luscon dfbd3a2
-     def test_root(self, unused_am_i_root):
Michal Luscon dfbd3a2
-         cache = CliCache('/var/lib/spinning', 'i286/20')
Michal Luscon dfbd3a2
-         self.assertEqual(cache.system_cachedir, '/var/lib/spinning/i286/20')
Michal Luscon dfbd3a2
-         self.assertEqual(cache.cachedir, '/var/lib/spinning/i286/20')
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
-     @mock.patch('dnf.yum.misc.getCacheDir', return_value="/notmp/dnf-walr-yeAH")
Michal Luscon dfbd3a2
-     @mock.patch('dnf.util.am_i_root', return_value=False)
Michal Luscon dfbd3a2
-     def test_noroot(self, fn_root, fn_getcachedir):
Michal Luscon dfbd3a2
-         cache = CliCache('/var/lib/spinning', 'i286/20')
Michal Luscon dfbd3a2
-         self.assertEqual(fn_getcachedir.call_count, 0)
Michal Luscon dfbd3a2
-         self.assertEqual(cache.cachedir, '/notmp/dnf-walr-yeAH/i286/20')
Michal Luscon dfbd3a2
-         self.assertEqual(fn_getcachedir.call_count, 1)
Michal Luscon dfbd3a2
+    @mock.patch('dnf.util.am_i_root', return_value=True)
Michal Luscon dfbd3a2
+    def test_root(self, unused_am_i_root):
Michal Luscon dfbd3a2
+        cache = CliCache('/var/lib/spinning')
Michal Luscon dfbd3a2
+        self.assertEqual(cache.system_cachedir, '/var/lib/spinning')
Michal Luscon dfbd3a2
+        self.assertEqual(cache.cachedir, '/var/lib/spinning')
Michal Luscon dfbd3a2
+
Michal Luscon dfbd3a2
+    @mock.patch('dnf.yum.misc.getCacheDir',
Michal Luscon dfbd3a2
+                return_value="/notmp/dnf-walr-yeAH")
Michal Luscon dfbd3a2
+    @mock.patch('dnf.util.am_i_root', return_value=False)
Michal Luscon dfbd3a2
+    def test_noroot(self, fn_root, fn_getcachedir):
Michal Luscon dfbd3a2
+        cache = CliCache('/var/lib/spinning')
Michal Luscon dfbd3a2
+        self.assertEqual(fn_getcachedir.call_count, 0)
Michal Luscon dfbd3a2
+        self.assertEqual(cache.cachedir, '/notmp/dnf-walr-yeAH')
Michal Luscon dfbd3a2
+        self.assertEqual(fn_getcachedir.call_count, 1)
Michal Luscon dfbd3a2
+
Michal Luscon dfbd3a2
+        # the cachedirs are cached now, getCacheDir is not called again:
Michal Luscon dfbd3a2
+        self.assertEqual(cache.cachedir, '/notmp/dnf-walr-yeAH')
Michal Luscon dfbd3a2
+        self.assertEqual(fn_getcachedir.call_count, 1)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
-         # the cachedirs are cached now, getCacheDir is not called again:
Michal Luscon dfbd3a2
-         self.assertEqual(cache.cachedir, '/notmp/dnf-walr-yeAH/i286/20')
Michal Luscon dfbd3a2
-         self.assertEqual(fn_getcachedir.call_count, 1)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
 class YumConfTest(TestCase):
Michal Luscon dfbd3a2
     def test_bugtracker(self):
Michal Luscon dfbd3a2
diff --git a/tests/test_package.py b/tests/test_package.py
Michal Luscon dfbd3a2
index e30a2e5..225749c 100644
Michal Luscon dfbd3a2
--- a/tests/test_package.py
Michal Luscon dfbd3a2
+++ b/tests/test_package.py
Michal Luscon dfbd3a2
@@ -74,7 +74,8 @@ class PackageTest(support.TestCase):
Michal Luscon dfbd3a2
         self.assertEquals(self.pkg.localPkg(), '/mnt/cd/f/foo.rpm')
Michal Luscon dfbd3a2
         self.pkg.repo.baseurl = ['http://remote']
Michal Luscon dfbd3a2
         self.assertFalse(self.pkg.repo.local)
Michal Luscon dfbd3a2
-        self.assertEquals(self.pkg.localPkg(), '/cachedir/main/packages/foo.rpm')
Michal Luscon dfbd3a2
+        self.assertEquals(self.pkg.localPkg(),
Michal Luscon dfbd3a2
+                          self.pkg.repo.cachedir + '/packages/foo.rpm')
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
     def test_verify(self):
Michal Luscon dfbd3a2
         with mock.patch.object(self.pkg, 'localPkg',
Michal Luscon dfbd3a2
diff --git a/tests/test_repo.py b/tests/test_repo.py
Michal Luscon dfbd3a2
index 5677ea9..a9bd4fc 100644
Michal Luscon dfbd3a2
--- a/tests/test_repo.py
Michal Luscon dfbd3a2
+++ b/tests/test_repo.py
Michal Luscon dfbd3a2
@@ -142,9 +142,13 @@ class RepoTest(RepoTestMixin, support.TestCase):
Michal Luscon dfbd3a2
     def setUp(self):
Michal Luscon dfbd3a2
         self.repo = self.build_repo('r', 'r for riot')
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
+    def tearDown(self):
Michal Luscon dfbd3a2
+        dnf.util.rm_rf(self.repo.cachedir)
Michal Luscon dfbd3a2
+
Michal Luscon dfbd3a2
     def test_cachedir(self):
Michal Luscon dfbd3a2
+        self.repo.baseurl = ["http://download.repo.org/r"]
Michal Luscon dfbd3a2
         self.assertEqual(self.repo.cachedir,
Michal Luscon dfbd3a2
-                         os.path.join(self.TMP_CACHEDIR, self.repo.id))
Michal Luscon dfbd3a2
+                         os.path.join(self.TMP_CACHEDIR, 'r-0824b1db602c8695'))
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
     def test_dump(self):
Michal Luscon dfbd3a2
         dump = self.repo.dump()
Michal Luscon dfbd3a2
@@ -198,6 +202,7 @@ class RepoTest(RepoTestMixin, support.TestCase):
Michal Luscon dfbd3a2
         # the second time we only hit the cache:
Michal Luscon dfbd3a2
         del self.repo
Michal Luscon dfbd3a2
         self.repo = dnf.repo.Repo("r", self.TMP_CACHEDIR)
Michal Luscon dfbd3a2
+        self.repo.baseurl = [BASEURL]
Michal Luscon dfbd3a2
         self.assertFalse(self.repo.load())
Michal Luscon dfbd3a2
         self.assertIsNotNone(self.repo.metadata)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
@@ -206,7 +211,7 @@ class RepoTest(RepoTestMixin, support.TestCase):
Michal Luscon dfbd3a2
         self.assertIsNone(repo.metadata)
Michal Luscon dfbd3a2
         self.assertTrue(repo.load())
Michal Luscon dfbd3a2
         self.assertIsNotNone(repo.metadata)
Michal Luscon dfbd3a2
-        repomd = os.path.join(self.TMP_CACHEDIR, "r/repodata/repomd.xml")
Michal Luscon dfbd3a2
+        repomd = os.path.join(self.repo.cachedir, "repodata/repomd.xml")
Michal Luscon dfbd3a2
         self.assertTrue(os.path.isfile(repomd))
Michal Luscon dfbd3a2
         self.assertTrue(repo.metadata.fresh)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2
@@ -339,7 +344,8 @@ class LocalRepoTest(support.TestCase):
Michal Luscon dfbd3a2
                         ('sha1', 'd5f18c856e765cd88a50dbf1bfaea51de3b5e516'),
Michal Luscon dfbd3a2
                         ('sha256', 'ead48d5c448a481bd66a4413d7be28bd44ce5de1ee59ecb723c78dcf4e441696'),
Michal Luscon dfbd3a2
                         ('sha512', '9a3131485c0c0a3f65bb5f25155e89d2d6b09e74ffdaa1c3339d3874885d160d8b4667a4a83dbd7d2702a5d41a4e1bc5622c4783b77dcf1f69626c68975202ce')]}
Michal Luscon dfbd3a2
-        self.assertTrue(self.repo.load())
Michal Luscon dfbd3a2
+        with mock.patch('dnf.repo.Repo.cachedir', REPOS + "/rpm"):
Michal Luscon dfbd3a2
+            self.assertTrue(self.repo.load())
Michal Luscon dfbd3a2
         self.assertTrue(remote_handle_m.fetchmirrors)
Michal Luscon dfbd3a2
         self.assertFalse(self.repo._expired)
Michal Luscon dfbd3a2
         reset_age_m.assert_called()
Michal Luscon dfbd3a2
@@ -422,7 +428,7 @@ class DownloadPayloadsTest(RepoTestMixin, support.TestCase):
Michal Luscon dfbd3a2
         errs = dnf.repo.download_payloads([pload], drpm)
Michal Luscon dfbd3a2
         self.assertEmpty(errs.recoverable)
Michal Luscon dfbd3a2
         self.assertEmpty(errs.irrecoverable)
Michal Luscon dfbd3a2
-        path = os.path.join(self.TMP_CACHEDIR, 'r/packages/tour-4-4.noarch.rpm')
Michal Luscon dfbd3a2
+        path = os.path.join(repo.cachedir, 'packages/tour-4-4.noarch.rpm')
Michal Luscon dfbd3a2
         self.assertFile(path)
Michal Luscon dfbd3a2
 
Michal Luscon dfbd3a2