summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/tests/fetch.py
diff options
context:
space:
mode:
authorPeter Kjellerstedt <peter.kjellerstedt@axis.com>2022-01-29 03:29:35 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-02-05 17:46:44 +0000
commitd40357665fd4c795080c794cbf4866ac305adff4 (patch)
treef61ad387af9d338416698c9c44d4192403c155a8 /bitbake/lib/bb/tests/fetch.py
parentc1117a8eaa60a995968bb32ef0964c07e44524c7 (diff)
downloadpoky-d40357665fd4c795080c794cbf4866ac305adff4.tar.gz
bitbake: tests/fetch: Unify how git commands are run
This unifies the three separate implementations of git() from GitMakeShallowTest, GitShallowTest and GitLfsTest into one implementation in FetcherTest. It also makes use of this in FetcherLocalTest and FetcherNetworkTest. (Bitbake rev: 8c8b418c3e6f8ab2535ad405e8006ee1012f3484) Signed-off-by: Peter Kjellerstedt <peter.kjellerstedt@axis.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests/fetch.py')
-rw-r--r--bitbake/lib/bb/tests/fetch.py73
1 files changed, 27 insertions, 46 deletions
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py
index 5cccdf6ef4..b1ff2c005f 100644
--- a/bitbake/lib/bb/tests/fetch.py
+++ b/bitbake/lib/bb/tests/fetch.py
@@ -393,6 +393,15 @@ class FetcherTest(unittest.TestCase):
393 bb.process.run('chmod u+rw -R %s' % self.tempdir) 393 bb.process.run('chmod u+rw -R %s' % self.tempdir)
394 bb.utils.prunedir(self.tempdir) 394 bb.utils.prunedir(self.tempdir)
395 395
396 def git(self, cmd, cwd=None):
397 if isinstance(cmd, str):
398 cmd = 'git ' + cmd
399 else:
400 cmd = ['git'] + cmd
401 if cwd is None:
402 cwd = self.gitdir
403 return bb.process.run(cmd, cwd=cwd)[0]
404
396class MirrorUriTest(FetcherTest): 405class MirrorUriTest(FetcherTest):
397 406
398 replaceuris = { 407 replaceuris = {
@@ -699,28 +708,24 @@ class FetcherLocalTest(FetcherTest):
699 # Create dummy local Git repo 708 # Create dummy local Git repo
700 src_dir = tempfile.mkdtemp(dir=self.tempdir, 709 src_dir = tempfile.mkdtemp(dir=self.tempdir,
701 prefix='gitfetch_localusehead_') 710 prefix='gitfetch_localusehead_')
702 src_dir = os.path.abspath(src_dir) 711 self.gitdir = os.path.abspath(src_dir)
703 bb.process.run("git init", cwd=src_dir) 712 self.git('init')
704 bb.process.run("git config user.email 'you@example.com'", cwd=src_dir) 713 self.git('config user.email "you@example.com"')
705 bb.process.run("git config user.name 'Your Name'", cwd=src_dir) 714 self.git('config user.name "Your Name"')
706 bb.process.run("git commit --allow-empty -m'Dummy commit'", 715 self.git(['commit', '--allow-empty', '-m', 'Dummy commit'])
707 cwd=src_dir)
708 # Use other branch than master 716 # Use other branch than master
709 bb.process.run("git checkout -b my-devel", cwd=src_dir) 717 self.git(['checkout', '-b', 'my-devel'])
710 bb.process.run("git commit --allow-empty -m'Dummy commit 2'", 718 self.git(['commit', '--allow-empty', '-m', 'Dummy commit 2'])
711 cwd=src_dir) 719 orig_rev = self.git(['rev-parse', 'HEAD']).strip()
712 stdout = bb.process.run("git rev-parse HEAD", cwd=src_dir)
713 orig_rev = stdout[0].strip()
714 720
715 # Fetch and check revision 721 # Fetch and check revision
716 self.d.setVar("SRCREV", "AUTOINC") 722 self.d.setVar("SRCREV", "AUTOINC")
717 url = "git://" + src_dir + ";protocol=file;" + suffix 723 url = "git://" + self.gitdir + ";protocol=file;" + suffix
718 fetcher = bb.fetch.Fetch([url], self.d) 724 fetcher = bb.fetch.Fetch([url], self.d)
719 fetcher.download() 725 fetcher.download()
720 fetcher.unpack(self.unpackdir) 726 fetcher.unpack(self.unpackdir)
721 stdout = bb.process.run("git rev-parse HEAD", 727 unpack_rev = self.git(['rev-parse', 'HEAD'],
722 cwd=os.path.join(self.unpackdir, 'git')) 728 cwd=os.path.join(self.unpackdir, 'git')).strip()
723 unpack_rev = stdout[0].strip()
724 self.assertEqual(orig_rev, unpack_rev) 729 self.assertEqual(orig_rev, unpack_rev)
725 730
726 def test_local_gitfetch_usehead(self): 731 def test_local_gitfetch_usehead(self):
@@ -920,7 +925,8 @@ class FetcherNetworkTest(FetcherTest):
920 def gitfetcher(self, url1, url2): 925 def gitfetcher(self, url1, url2):
921 def checkrevision(self, fetcher): 926 def checkrevision(self, fetcher):
922 fetcher.unpack(self.unpackdir) 927 fetcher.unpack(self.unpackdir)
923 revision = bb.process.run("git rev-parse HEAD", shell=True, cwd=self.unpackdir + "/git")[0].strip() 928 revision = self.git(['rev-parse', 'HEAD'],
929 cwd=os.path.join(self.unpackdir, 'git')).strip()
924 self.assertEqual(revision, "270a05b0b4ba0959fe0624d2a4885d7b70426da5") 930 self.assertEqual(revision, "270a05b0b4ba0959fe0624d2a4885d7b70426da5")
925 931
926 self.d.setVar("BB_GENERATE_MIRROR_TARBALLS", "1") 932 self.d.setVar("BB_GENERATE_MIRROR_TARBALLS", "1")
@@ -996,7 +1002,7 @@ class FetcherNetworkTest(FetcherTest):
996 recipeurl = "git://someserver.org/bitbake" 1002 recipeurl = "git://someserver.org/bitbake"
997 self.sourcedir = self.unpackdir.replace("unpacked", "sourcemirror.git") 1003 self.sourcedir = self.unpackdir.replace("unpacked", "sourcemirror.git")
998 os.chdir(self.tempdir) 1004 os.chdir(self.tempdir)
999 bb.process.run("git clone %s %s 2> /dev/null" % (realurl, self.sourcedir), shell=True) 1005 self.git(['clone', realurl, self.sourcedir], cwd=self.tempdir)
1000 self.d.setVar("PREMIRRORS", "%s git://%s;protocol=file" % (recipeurl, self.sourcedir)) 1006 self.d.setVar("PREMIRRORS", "%s git://%s;protocol=file" % (recipeurl, self.sourcedir))
1001 self.gitfetcher(recipeurl, recipeurl) 1007 self.gitfetcher(recipeurl, recipeurl)
1002 1008
@@ -1437,9 +1443,9 @@ class GitMakeShallowTest(FetcherTest):
1437 FetcherTest.setUp(self) 1443 FetcherTest.setUp(self)
1438 self.gitdir = os.path.join(self.tempdir, 'gitshallow') 1444 self.gitdir = os.path.join(self.tempdir, 'gitshallow')
1439 bb.utils.mkdirhier(self.gitdir) 1445 bb.utils.mkdirhier(self.gitdir)
1440 bb.process.run('git init', cwd=self.gitdir) 1446 self.git('init')
1441 bb.process.run('git config user.email "you@example.com"', cwd=self.gitdir) 1447 self.git('config user.email "you@example.com"')
1442 bb.process.run('git config user.name "Your Name"', cwd=self.gitdir) 1448 self.git('config user.name "Your Name"')
1443 1449
1444 def assertRefs(self, expected_refs): 1450 def assertRefs(self, expected_refs):
1445 actual_refs = self.git(['for-each-ref', '--format=%(refname)']).splitlines() 1451 actual_refs = self.git(['for-each-ref', '--format=%(refname)']).splitlines()
@@ -1453,13 +1459,6 @@ class GitMakeShallowTest(FetcherTest):
1453 actual_count = len(revs.splitlines()) 1459 actual_count = len(revs.splitlines())
1454 self.assertEqual(expected_count, actual_count, msg='Object count `%d` is not the expected `%d`' % (actual_count, expected_count)) 1460 self.assertEqual(expected_count, actual_count, msg='Object count `%d` is not the expected `%d`' % (actual_count, expected_count))
1455 1461
1456 def git(self, cmd):
1457 if isinstance(cmd, str):
1458 cmd = 'git ' + cmd
1459 else:
1460 cmd = ['git'] + cmd
1461 return bb.process.run(cmd, cwd=self.gitdir)[0]
1462
1463 def make_shallow(self, args=None): 1462 def make_shallow(self, args=None):
1464 if args is None: 1463 if args is None:
1465 args = ['HEAD'] 1464 args = ['HEAD']
@@ -1595,15 +1594,6 @@ class GitShallowTest(FetcherTest):
1595 actual_count = len(revs.splitlines()) 1594 actual_count = len(revs.splitlines())
1596 self.assertEqual(expected_count, actual_count, msg='Object count `%d` is not the expected `%d`' % (actual_count, expected_count)) 1595 self.assertEqual(expected_count, actual_count, msg='Object count `%d` is not the expected `%d`' % (actual_count, expected_count))
1597 1596
1598 def git(self, cmd, cwd=None):
1599 if isinstance(cmd, str):
1600 cmd = 'git ' + cmd
1601 else:
1602 cmd = ['git'] + cmd
1603 if cwd is None:
1604 cwd = self.gitdir
1605 return bb.process.run(cmd, cwd=cwd)[0]
1606
1607 def add_empty_file(self, path, cwd=None, msg=None): 1597 def add_empty_file(self, path, cwd=None, msg=None):
1608 if msg is None: 1598 if msg is None:
1609 msg = path 1599 msg = path
@@ -2140,7 +2130,7 @@ class GitLfsTest(FetcherTest):
2140 2130
2141 self.gitdir = os.path.join(self.tempdir, 'git') 2131 self.gitdir = os.path.join(self.tempdir, 'git')
2142 self.srcdir = os.path.join(self.tempdir, 'gitsource') 2132 self.srcdir = os.path.join(self.tempdir, 'gitsource')
2143 2133
2144 self.d.setVar('WORKDIR', self.tempdir) 2134 self.d.setVar('WORKDIR', self.tempdir)
2145 self.d.setVar('S', self.gitdir) 2135 self.d.setVar('S', self.gitdir)
2146 self.d.delVar('PREMIRRORS') 2136 self.d.delVar('PREMIRRORS')
@@ -2158,15 +2148,6 @@ class GitLfsTest(FetcherTest):
2158 self.git(['add', '.gitattributes'], cwd=self.srcdir) 2148 self.git(['add', '.gitattributes'], cwd=self.srcdir)
2159 self.git(['commit', '-m', "attributes", '.gitattributes'], cwd=self.srcdir) 2149 self.git(['commit', '-m', "attributes", '.gitattributes'], cwd=self.srcdir)
2160 2150
2161 def git(self, cmd, cwd=None):
2162 if isinstance(cmd, str):
2163 cmd = 'git ' + cmd
2164 else:
2165 cmd = ['git'] + cmd
2166 if cwd is None:
2167 cwd = self.gitdir
2168 return bb.process.run(cmd, cwd=cwd)[0]
2169
2170 def fetch(self, uri=None, download=True): 2151 def fetch(self, uri=None, download=True):
2171 uris = self.d.getVar('SRC_URI').split() 2152 uris = self.d.getVar('SRC_URI').split()
2172 uri = uris[0] 2153 uri = uris[0]