# # BitBake Test for lib/bb/siggen.py # # Copyright (C) 2020 Jean-François Dagenais # # SPDX-License-Identifier: GPL-2.0-only # import unittest import logging import bb import time logger = logging.getLogger('BitBake.TestSiggen') import bb.siggen class SiggenTest(unittest.TestCase): def test_clean_basepath_simple_target_basepath(self): basepath = '/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask' expected_cleaned = 'helloworld/helloworld_1.2.3.bb:do_sometask' actual_cleaned = bb.siggen.clean_basepath(basepath) self.assertEqual(actual_cleaned, expected_cleaned) def test_clean_basepath_basic_virtual_basepath(self): basepath = 'virtual:something:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask' expected_cleaned = 'helloworld/helloworld_1.2.3.bb:do_sometask:virtual:something' actual_cleaned = bb.siggen.clean_basepath(basepath) self.assertEqual(actual_cleaned, expected_cleaned) def test_clean_basepath_mc_basepath(self): basepath = 'mc:somemachine:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask' expected_cleaned = 'helloworld/helloworld_1.2.3.bb:do_sometask:mc:somemachine' actual_cleaned = bb.siggen.clean_basepath(basepath) self.assertEqual(actual_cleaned, expected_cleaned) def test_clean_basepath_virtual_long_prefix_basepath(self): basepath = 'virtual:something:A:B:C:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask' expected_cleaned = 'helloworld/helloworld_1.2.3.bb:do_sometask:virtual:something:A:B:C' actual_cleaned = bb.siggen.clean_basepath(basepath) self.assertEqual(actual_cleaned, expected_cleaned) def test_clean_basepath_mc_virtual_basepath(self): basepath = 'mc:somemachine:virtual:something:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask' expected_cleaned = 'helloworld/helloworld_1.2.3.bb:do_sometask:virtual:something:mc:somemachine' actual_cleaned = bb.siggen.clean_basepath(basepath) self.assertEqual(actual_cleaned, expected_cleaned) def test_clean_basepath_mc_virtual_long_prefix_basepath(self): basepath = 'mc:X:virtual:something:C:B:A:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask' expected_cleaned = 'helloworld/helloworld_1.2.3.bb:do_sometask:virtual:something:C:B:A:mc:X' actual_cleaned = bb.siggen.clean_basepath(basepath) self.assertEqual(actual_cleaned, expected_cleaned) # def test_clean_basepath_performance(self): # input_basepaths = [ # 'mc:X:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask', # 'mc:X:virtual:something:C:B:A:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask', # 'virtual:something:C:B:A:/different/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask', # 'virtual:something:A:/full/path/to/poky/meta/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask', # '/this/is/most/common/input/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask', # '/and/should/be/tested/with/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask', # '/more/weight/recipes-whatever/helloworld/helloworld_1.2.3.bb:do_sometask', # ] # time_start = time.time() # i = 2000000 # while i >= 0: # for basepath in input_basepaths: # bb.siggen.clean_basepath(basepath) # i -= 1 # elapsed = time.time() - time_start # print('{} ({}s)'.format(self.id(), round(elapsed, 3))) # self.assertTrue(False)