Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
136
sources/poky/meta/lib/oeqa/selftest/cases/gitarchivetests.py
Normal file
136
sources/poky/meta/lib/oeqa/selftest/cases/gitarchivetests.py
Normal file
@@ -0,0 +1,136 @@
|
||||
#
|
||||
# Copyright OpenEmbedded Contributors
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
import os
|
||||
import sys
|
||||
basepath = os.path.abspath(os.path.dirname(__file__) + '/../../../../../')
|
||||
lib_path = basepath + '/scripts/lib'
|
||||
sys.path = sys.path + [lib_path]
|
||||
import oeqa.utils.gitarchive as ga
|
||||
from oeqa.utils.git import GitError
|
||||
import tempfile
|
||||
import shutil
|
||||
import scriptutils
|
||||
import logging
|
||||
from oeqa.selftest.case import OESelftestTestCase
|
||||
|
||||
logger = scriptutils.logger_create('resulttool')
|
||||
|
||||
def create_fake_repository(commit, tag_list=[], add_remote=True):
|
||||
""" Create a testing git directory
|
||||
|
||||
Initialize a simple git repository with one initial commit, and as many
|
||||
tags on this commit as listed in tag_list
|
||||
Returns both git directory path and gitarchive git object
|
||||
If commit is true, fake data will be commited, otherwise it will stay in staging area
|
||||
If commit is true and tag_lsit is non empty, all tags in tag_list will be
|
||||
created on the initial commit
|
||||
Fake remote will also be added to make git ls-remote work
|
||||
"""
|
||||
fake_data_file = "fake_data.txt"
|
||||
tempdir = tempfile.mkdtemp(prefix='fake_results.')
|
||||
repo = ga.init_git_repo(tempdir, False, False, logger)
|
||||
if add_remote:
|
||||
repo.run_cmd(["remote", "add", "origin", "."])
|
||||
with open(os.path.join(tempdir, fake_data_file), "w") as fake_data:
|
||||
fake_data.write("Fake data")
|
||||
if commit:
|
||||
repo.run_cmd(["add", fake_data_file])
|
||||
repo.run_cmd(["commit", "-m", "\"Add fake data\""])
|
||||
for tag in tag_list:
|
||||
repo.run_cmd(["tag", tag])
|
||||
|
||||
return tempdir, repo
|
||||
|
||||
def delete_fake_repository(path):
|
||||
shutil.rmtree(path)
|
||||
|
||||
def tag_exists(git_obj, target_tag):
|
||||
for tag in git_obj.run_cmd(["tag"]).splitlines():
|
||||
if target_tag == tag:
|
||||
return True
|
||||
return False
|
||||
|
||||
class GitArchiveTests(OESelftestTestCase):
|
||||
TEST_BRANCH="main"
|
||||
TEST_COMMIT="0f7d5df"
|
||||
TEST_COMMIT_COUNT="42"
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.log = logging.getLogger('gitarchivetests')
|
||||
cls.log.setLevel(logging.DEBUG)
|
||||
|
||||
def test_create_first_test_tag(self):
|
||||
path, git_obj = create_fake_repository(False)
|
||||
keywords = {'commit': self.TEST_COMMIT, 'branch': self.TEST_BRANCH, "commit_count": self.TEST_COMMIT_COUNT}
|
||||
target_tag = f"{self.TEST_BRANCH}/{self.TEST_COMMIT_COUNT}-g{self.TEST_COMMIT}/0"
|
||||
|
||||
ga.gitarchive(path, path, True, False,
|
||||
"Results of {branch}:{commit}", "branch: {branch}\ncommit: {commit}", "{branch}",
|
||||
False, "{branch}/{commit_count}-g{commit}/{tag_number}",
|
||||
'Test run #{tag_number} of {branch}:{commit}', '',
|
||||
[], [], False, keywords, logger)
|
||||
self.assertTrue(tag_exists(git_obj, target_tag), msg=f"Tag {target_tag} has not been created")
|
||||
delete_fake_repository(path)
|
||||
|
||||
def test_create_second_test_tag(self):
|
||||
first_tag = f"{self.TEST_BRANCH}/{self.TEST_COMMIT_COUNT}-g{self.TEST_COMMIT}/0"
|
||||
second_tag = f"{self.TEST_BRANCH}/{self.TEST_COMMIT_COUNT}-g{self.TEST_COMMIT}/1"
|
||||
keywords = {'commit': self.TEST_COMMIT, 'branch': self.TEST_BRANCH, "commit_count": self.TEST_COMMIT_COUNT}
|
||||
|
||||
path, git_obj = create_fake_repository(True, [first_tag])
|
||||
ga.gitarchive(path, path, True, False,
|
||||
"Results of {branch}:{commit}", "branch: {branch}\ncommit: {commit}", "{branch}",
|
||||
False, "{branch}/{commit_count}-g{commit}/{tag_number}",
|
||||
'Test run #{tag_number} of {branch}:{commit}', '',
|
||||
[], [], False, keywords, logger)
|
||||
self.assertTrue(tag_exists(git_obj, second_tag), msg=f"Second tag {second_tag} has not been created")
|
||||
delete_fake_repository(path)
|
||||
|
||||
def test_get_revs_on_branch(self):
|
||||
fake_tags_list=["main/10-g0f7d5df/0", "main/10-g0f7d5df/1", "foo/20-g2468f5d/0"]
|
||||
tag_name = "{branch}/{commit_number}-g{commit}/{tag_number}"
|
||||
|
||||
path, git_obj = create_fake_repository(True, fake_tags_list)
|
||||
revs = ga.get_test_revs(logger, git_obj, tag_name, branch="main")
|
||||
self.assertEqual(len(revs), 1)
|
||||
self.assertEqual(revs[0].commit, "0f7d5df")
|
||||
self.assertEqual(len(revs[0].tags), 2)
|
||||
self.assertEqual(revs[0].tags, ['main/10-g0f7d5df/0', 'main/10-g0f7d5df/1'])
|
||||
delete_fake_repository(path)
|
||||
|
||||
def test_get_tags_without_valid_remote(self):
|
||||
url = 'git://git.yoctoproject.org/poky'
|
||||
path, git_obj = create_fake_repository(False, None, False)
|
||||
|
||||
tags = ga.get_tags(git_obj, self.log, pattern="yocto-*", url=url)
|
||||
"""Test for some well established tags (released tags)"""
|
||||
self.assertIn("yocto-4.0", tags)
|
||||
self.assertIn("yocto-4.1", tags)
|
||||
self.assertIn("yocto-4.2", tags)
|
||||
delete_fake_repository(path)
|
||||
|
||||
def test_get_tags_with_only_local_tag(self):
|
||||
fake_tags_list=["main/10-g0f7d5df/0", "main/10-g0f7d5df/1", "foo/20-g2468f5d/0"]
|
||||
path, git_obj = create_fake_repository(True, fake_tags_list, False)
|
||||
|
||||
"""No remote is configured and no url is passed: get_tags must fall
|
||||
back to local tags
|
||||
"""
|
||||
tags = ga.get_tags(git_obj, self.log)
|
||||
self.assertCountEqual(tags, fake_tags_list)
|
||||
delete_fake_repository(path)
|
||||
|
||||
def test_get_tags_without_valid_remote_and_wrong_url(self):
|
||||
url = 'git://git.foo.org/bar'
|
||||
path, git_obj = create_fake_repository(False, None, False)
|
||||
|
||||
"""Test for some well established tags (released tags)"""
|
||||
with self.assertRaises(GitError):
|
||||
tags = ga.get_tags(git_obj, self.log, pattern="yocto-*", url=url)
|
||||
delete_fake_repository(path)
|
||||
Reference in New Issue
Block a user