summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikko Rapeli <mikko.rapeli@linaro.org>2025-07-07 10:21:32 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-07-10 10:47:30 +0100
commite5e8f2aa0a63df555f79b79205c3900c33d90d50 (patch)
tree1d199ef9d54808cd68f176f4409647ba53389001
parent458c39ac1f81932bb92afaef098ea618c54bb737 (diff)
downloadpoky-e5e8f2aa0a63df555f79b79205c3900c33d90d50.tar.gz
testexport.bbclass oe-test: capture all tests and data from all layers
testexport.bbclass only copied files from core layer to the testexport.tar.gz to run tests. Then it filtered out tests and files which were not specified in TEST_SUITES variable. Remove filtering of files to include parselogs.py test data files which are machine and/or layer specific. TEST_SUITES variable is now read from build time exported data store when running tests so there is no need to remove files from exported tests in testexport.bbclass. Adapt oe-test script to find "lib" directories from the new structure with layer specific paths which are used to find tests and test data files. (From OE-Core rev: 5c39fedee1dd0e101e2611b71a895c0251ba968d) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes-recipe/testexport.bbclass43
-rwxr-xr-xscripts/oe-test12
2 files changed, 30 insertions, 25 deletions
diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass
index cc4088c71a..843d777e3b 100644
--- a/meta/classes-recipe/testexport.bbclass
+++ b/meta/classes-recipe/testexport.bbclass
@@ -85,6 +85,7 @@ def copy_needed_files(d, tc):
85 85
86 export_path = d.getVar('TEST_EXPORT_DIR') 86 export_path = d.getVar('TEST_EXPORT_DIR')
87 corebase_path = d.getVar('COREBASE') 87 corebase_path = d.getVar('COREBASE')
88 bblayers = d.getVar('BBLAYERS').split()
88 89
89 # Clean everything before starting 90 # Clean everything before starting
90 oe.path.remove(export_path) 91 oe.path.remove(export_path)
@@ -92,17 +93,11 @@ def copy_needed_files(d, tc):
92 93
93 # The source of files to copy are relative to 'COREBASE' directory 94 # The source of files to copy are relative to 'COREBASE' directory
94 # The destination is relative to 'TEST_EXPORT_DIR' 95 # The destination is relative to 'TEST_EXPORT_DIR'
95 # Because we are squashing the libraries, we need to remove 96 # core files/dirs first
96 # the layer/script directory 97 core_files_to_copy = [ os.path.join('scripts', 'oe-test'),
97 files_to_copy = [ os.path.join('meta', 'lib', 'oeqa', 'core'),
98 os.path.join('meta', 'lib', 'oeqa', 'runtime'),
99 os.path.join('meta', 'lib', 'oeqa', 'files'),
100 os.path.join('meta', 'lib', 'oeqa', 'utils'),
101 os.path.join('scripts', 'oe-test'),
102 os.path.join('scripts', 'lib', 'argparse_oe.py'), 98 os.path.join('scripts', 'lib', 'argparse_oe.py'),
103 os.path.join('scripts', 'lib', 'scriptutils.py'), ] 99 os.path.join('scripts', 'lib', 'scriptutils.py'), ]
104 100 for f in core_files_to_copy:
105 for f in files_to_copy:
106 src = os.path.join(corebase_path, f) 101 src = os.path.join(corebase_path, f)
107 dst = os.path.join(export_path, f.split('/', 1)[-1]) 102 dst = os.path.join(export_path, f.split('/', 1)[-1])
108 if os.path.isdir(src): 103 if os.path.isdir(src):
@@ -110,18 +105,21 @@ def copy_needed_files(d, tc):
110 else: 105 else:
111 shutil.copy2(src, dst) 106 shutil.copy2(src, dst)
112 107
113 # Remove cases and just copy the ones specified 108 # layer specific files/dirs
114 cases_path = os.path.join(export_path, 'lib', 'oeqa', 'runtime', 'cases') 109 layer_files_to_copy = [ os.path.join('lib', 'oeqa', 'core'),
115 oe.path.remove(cases_path) 110 os.path.join('lib', 'oeqa', 'runtime'),
116 bb.utils.mkdirhier(cases_path) 111 os.path.join('lib', 'oeqa', 'files'),
117 test_paths = get_runtime_paths(d) 112 os.path.join('lib', 'oeqa', 'utils'),]
118 test_modules = d.getVar('TEST_SUITES').split() 113 for layer in bblayers:
119 tc.loadTests(test_paths, modules=test_modules) 114 meta = os.path.basename(layer)
120 for f in getSuiteCasesFiles(tc.suites): 115 for f in layer_files_to_copy:
121 shutil.copy2(f, cases_path) 116 src = os.path.join(layer, f)
122 json_file = _get_json_file(f) 117 dst = os.path.join(export_path, meta, f)
123 if json_file: 118 if os.path.exists(src):
124 shutil.copy2(json_file, cases_path) 119 if os.path.isdir(src):
120 oe.path.copytree(src, dst)
121 else:
122 shutil.copy2(src, dst)
125 123
126 # Copy test data 124 # Copy test data
127 image_name = ("%s/%s" % (d.getVar('DEPLOY_DIR_IMAGE'), 125 image_name = ("%s/%s" % (d.getVar('DEPLOY_DIR_IMAGE'),
@@ -142,6 +140,9 @@ def copy_needed_files(d, tc):
142 testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR")) 140 testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
143 141
144 # Copy packages needed for runtime testing 142 # Copy packages needed for runtime testing
143 test_paths = get_runtime_paths(d)
144 test_modules = d.getVar('TEST_SUITES').split()
145 tc.loadTests(test_paths, modules=test_modules)
145 package_extraction(d, tc.suites) 146 package_extraction(d, tc.suites)
146 test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR") 147 test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR")
147 if os.path.isdir(test_pkg_dir) and os.listdir(test_pkg_dir): 148 if os.path.isdir(test_pkg_dir) and os.listdir(test_pkg_dir):
diff --git a/scripts/oe-test b/scripts/oe-test
index 55985b0b24..3a00369e01 100755
--- a/scripts/oe-test
+++ b/scripts/oe-test
@@ -7,14 +7,18 @@
7# SPDX-License-Identifier: MIT 7# SPDX-License-Identifier: MIT
8# 8#
9 9
10import os
11import sys
12import argparse 10import argparse
11import glob
13import logging 12import logging
13import os
14import sys
14 15
15scripts_path = os.path.dirname(os.path.realpath(__file__)) 16scripts_path = os.path.dirname(os.path.realpath(__file__))
16lib_path = scripts_path + '/lib' 17lib_path = os.path.join(scripts_path, 'lib')
17sys.path = sys.path + [lib_path] 18sys.path.append(lib_path)
19meta_lib_paths = glob.glob(scripts_path + '/*/lib', recursive=True)
20for p in meta_lib_paths:
21 sys.path.append(p)
18import argparse_oe 22import argparse_oe
19import scriptutils 23import scriptutils
20 24