[bitbake-devel] [PATCH 5/7] fetch2/git: prevent access to non-existing clonedir
Urs Fässler
urs.fassler at bbv.ch
Wed Oct 3 12:04:08 UTC 2018
A user friendly error is throw when neither the clonedir nor
fullshallow exist. Without the check, a difficult to interpret error
is throw from within the fetch command.
Signed-off-by: Urs Fässler <urs.fassler at bbv.ch>
Signed-off-by: Pascal Bach <pascal.bach at siemens.com>
---
lib/bb/fetch2/git.py | 4 +++-
lib/bb/tests/fetch.py | 13 +++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
index f13a25f9..fbd30011 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -479,8 +479,10 @@ class Git(FetchMethod):
if ud.shallow and os.path.exists(ud.fullshallow) and self.clonedir_need_update(ud, d):
bb.utils.mkdirhier(destdir)
runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=destdir)
- else:
+ elif not self.clonedir_need_update(ud, d):
runfetchcmd("%s clone %s %s/ %s" % (ud.basecmd, ud.cloneflags, ud.clonedir, destdir), d)
+ else:
+ bb.fatal("no up to date source found")
repourl = self._get_repo_url(ud)
runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir)
diff --git a/lib/bb/tests/fetch.py b/lib/bb/tests/fetch.py
index 2efef078..56c0c0db 100644
--- a/lib/bb/tests/fetch.py
+++ b/lib/bb/tests/fetch.py
@@ -28,6 +28,7 @@ import os
from bb.fetch2 import URI
from bb.fetch2 import FetchMethod
import bb
+from bb.tests.logrecord import LogRecord, logContains
def skipIfNoNetwork():
if os.environ.get("BB_SKIP_NETTESTS") == "yes":
@@ -1581,6 +1582,18 @@ class GitShallowTest(FetcherTest):
self.assertRefs(['master', 'origin/master'])
self.assertRevCount(orig_revs - 1758)
+ def test_that_unpack_throws_an_error_when_the_git_clone_nor_shallow_tarball_exist(self):
+ self.add_empty_file('a')
+ fetcher, ud = self.fetch()
+ bb.utils.remove(self.gitdir, recurse=True)
+ bb.utils.remove(self.dldir, recurse=True)
+
+ with LogRecord() as logs:
+ with self.assertRaises(Exception) as context:
+ fetcher.unpack(self.d.getVar('WORKDIR'))
+
+ self.assertTrue(logContains("no up to date source found", logs))
+
@skipIfNoNetwork()
def test_that_unpack_does_work_when_using_git_shallow_tarball_but_tarball_is_not_available(self):
self.d.setVar('SRCREV', 'e5939ff608b95cdd4d0ab0e1935781ab9a276ac0')
--
2.19.0
More information about the bitbake-devel
mailing list