diff options
| author | Pavel Zhukov <pavel@zhukoff.net> | 2022-05-06 16:17:35 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2022-06-08 21:53:15 +0100 |
| commit | c6afc6d6ede401397419e067e8c229395a2afff0 (patch) | |
| tree | c8701de277e86a595494b7d8b303f9eb5995f61a /bitbake/lib | |
| parent | 53ed421226228f60a89a1868819b6c3ed6d45026 (diff) | |
| download | poky-c6afc6d6ede401397419e067e8c229395a2afff0.tar.gz | |
bitbake: Add tests to cover BB_FETCH_PREMIRRORONLY functionality
Basic test to cover functionality of BB_FETCH_PREMIRRORONLY using
local git repository. Local repository has been chosen to allow easy
manipulation with the repo to simulate behaviour reported in
[Yocto 13233]
(Bitbake rev: 773e0815ba0c2183afcb169cda525b7625e60e42)
Signed-off-by: Pavel Zhukov <pavel.zhukov@huawei.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
| -rw-r--r-- | bitbake/lib/bb/tests/fetch.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py index 1152e89c0d..a09c414ad8 100644 --- a/bitbake/lib/bb/tests/fetch.py +++ b/bitbake/lib/bb/tests/fetch.py | |||
| @@ -2802,3 +2802,66 @@ class GitSharedTest(FetcherTest): | |||
| 2802 | fetcher.unpack(self.unpackdir) | 2802 | fetcher.unpack(self.unpackdir) |
| 2803 | alt = os.path.join(self.unpackdir, 'git/.git/objects/info/alternates') | 2803 | alt = os.path.join(self.unpackdir, 'git/.git/objects/info/alternates') |
| 2804 | self.assertFalse(os.path.exists(alt)) | 2804 | self.assertFalse(os.path.exists(alt)) |
| 2805 | |||
| 2806 | |||
| 2807 | class FetchPremirroronlyLocalTest(FetcherTest): | ||
| 2808 | |||
| 2809 | def git(self, cmd, cwd=None): | ||
| 2810 | if isinstance(cmd, str): | ||
| 2811 | cmd = 'git ' + cmd | ||
| 2812 | else: | ||
| 2813 | cmd = ['git'] + cmd | ||
| 2814 | if cwd is None: | ||
| 2815 | cwd = self.gitdir | ||
| 2816 | return bb.process.run(cmd, cwd=cwd)[0] | ||
| 2817 | |||
| 2818 | def setUp(self): | ||
| 2819 | super(FetchPremirroronlyLocalTest, self).setUp() | ||
| 2820 | self.mirrordir = os.path.join(self.tempdir, "mirrors") | ||
| 2821 | os.mkdir(self.mirrordir) | ||
| 2822 | self.reponame = "bitbake" | ||
| 2823 | self.gitdir = os.path.join(self.tempdir, "git", self.reponame) | ||
| 2824 | self.recipe_url = "git://git.fake.repo/bitbake" | ||
| 2825 | self.d.setVar("BB_FETCH_PREMIRRORONLY", "1") | ||
| 2826 | self.d.setVar("BB_NO_NETWORK", "1") | ||
| 2827 | self.d.setVar("PREMIRRORS", self.recipe_url + " " + "file://{}".format(self.mirrordir) + " \n") | ||
| 2828 | |||
| 2829 | def make_git_repo(self): | ||
| 2830 | self.mirrorname = "git2_git.fake.repo.bitbake.tar.gz" | ||
| 2831 | recipeurl = "git:/git.fake.repo/bitbake" | ||
| 2832 | os.makedirs(self.gitdir) | ||
| 2833 | self.git("init", self.gitdir) | ||
| 2834 | for i in range(0): | ||
| 2835 | self.git_new_commit() | ||
| 2836 | bb.process.run('tar -czvf {} .'.format(os.path.join(self.mirrordir, self.mirrorname)), cwd = self.gitdir) | ||
| 2837 | |||
| 2838 | def git_new_commit(self): | ||
| 2839 | import random | ||
| 2840 | testfilename = "bibake-fetch.test" | ||
| 2841 | os.unlink(os.path.join(self.mirrordir, self.mirrorname)) | ||
| 2842 | with open(os.path.join(self.gitdir, testfilename), "w") as testfile: | ||
| 2843 | testfile.write("Useless random data {}".format(random.random())) | ||
| 2844 | self.git("add {}".format(testfilename), self.gitdir) | ||
| 2845 | self.git("commit -a -m \"This random commit {}. I'm useless.\"".format(random.random()), self.gitdir) | ||
| 2846 | bb.process.run('tar -czvf {} .'.format(os.path.join(self.mirrordir, self.mirrorname)), cwd = self.gitdir) | ||
| 2847 | return self.git("rev-parse HEAD", self.gitdir).strip() | ||
| 2848 | |||
| 2849 | def test_mirror_commit_nonexistent(self): | ||
| 2850 | self.make_git_repo() | ||
| 2851 | self.d.setVar("SRCREV", "0"*40) | ||
| 2852 | fetcher = bb.fetch.Fetch([self.recipe_url], self.d) | ||
| 2853 | with self.assertRaises(bb.fetch2.NetworkAccess): | ||
| 2854 | fetcher.download() | ||
| 2855 | |||
| 2856 | def test_mirror_commit_exists(self): | ||
| 2857 | self.make_git_repo() | ||
| 2858 | self.d.setVar("SRCREV", self.git_new_commit()) | ||
| 2859 | fetcher = bb.fetch.Fetch([self.recipe_url], self.d) | ||
| 2860 | fetcher.download() | ||
| 2861 | fetcher.unpack(self.unpackdir) | ||
| 2862 | |||
| 2863 | def test_mirror_tarball_nonexistent(self): | ||
| 2864 | self.d.setVar("SRCREV", "0"*40) | ||
| 2865 | fetcher = bb.fetch.Fetch([self.recipe_url], self.d) | ||
| 2866 | with self.assertRaises(bb.fetch2.NetworkAccess): | ||
| 2867 | fetcher.download() | ||
