* [PATCH v2 1/6] oeqa runtime: set self.runner and handle None
@ 2025-07-01 7:33 Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting Mikko Rapeli
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Mikko Rapeli @ 2025-07-01 7:33 UTC (permalink / raw)
To: openembedded-core; +Cc: Mikko Rapeli
Set default self.runner to None. qemu target sets
the runner to qemu. Then handle self.runner None in
run_network_serialdebug(). This way ssh runner
and failing ping or ssh tests handle the error cases.
Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
meta/lib/oeqa/core/target/__init__.py | 1 +
meta/lib/oeqa/runtime/case.py | 2 ++
2 files changed, 3 insertions(+)
v2: setting self.runner for all target types instead of target conditional
paths in tests
v1: https://lists.openembedded.org/g/openembedded-core/message/219377
and https://lists.openembedded.org/g/openembedded-core/message/219378
diff --git a/meta/lib/oeqa/core/target/__init__.py b/meta/lib/oeqa/core/target/__init__.py
index 1382aa9b5239..177f648fe358 100644
--- a/meta/lib/oeqa/core/target/__init__.py
+++ b/meta/lib/oeqa/core/target/__init__.py
@@ -10,6 +10,7 @@ class OETarget(object):
def __init__(self, logger, *args, **kwargs):
self.logger = logger
+ self.runner = None
@abstractmethod
def start(self):
diff --git a/meta/lib/oeqa/runtime/case.py b/meta/lib/oeqa/runtime/case.py
index 9515ca2f3d62..2a47771a3d47 100644
--- a/meta/lib/oeqa/runtime/case.py
+++ b/meta/lib/oeqa/runtime/case.py
@@ -23,6 +23,8 @@ class OERuntimeTestCase(OETestCase):
uninstall_package(self)
def run_network_serialdebug(runner):
+ if not runner:
+ return
status, output = runner.run_serial("ip addr")
print("ip addr on target: %s %s" % (output, status))
status, output = runner.run_serial("ping -c 1 %s" % self.target.server_ip)
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting
2025-07-01 7:33 [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Mikko Rapeli
@ 2025-07-01 7:33 ` Mikko Rapeli
2025-07-02 9:42 ` [OE-core] " Richard Purdie
2025-07-01 7:33 ` [PATCH v2 3/6] oeqa context.py: use TEST_SUITES if set Mikko Rapeli
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Mikko Rapeli @ 2025-07-01 7:33 UTC (permalink / raw)
To: openembedded-core; +Cc: Mikko Rapeli
Check that shell commands succeeded and fix quoting
warning:
core-image-minimal/lib/oeqa/runtime/cases/apt.py:44: SyntaxWarning: invalid escape sequence '\['
self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's|\[trusted=yes\] http://bogus_ip:bogus_port|%s|g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
meta/lib/oeqa/runtime/cases/apt.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/meta/lib/oeqa/runtime/cases/apt.py b/meta/lib/oeqa/runtime/cases/apt.py
index 8000645843aa..b7cda0095394 100644
--- a/meta/lib/oeqa/runtime/cases/apt.py
+++ b/meta/lib/oeqa/runtime/cases/apt.py
@@ -36,12 +36,12 @@ class AptRepoTest(AptTest):
def setup_source_config_for_package_install(self):
apt_get_source_server = 'http://%s:%s/' % (self.tc.target.server_ip, self.repo_server.port)
apt_get_sourceslist_dir = '/etc/apt/'
- self.target.run('cd %s; echo deb [ allow-insecure=yes ] %s/all ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
+ self.target.run('cd %s && echo "deb [ allow-insecure=yes ] %s/all ./" > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
def setup_source_config_for_package_install_signed(self):
apt_get_source_server = 'http://%s:%s' % (self.tc.target.server_ip, self.repo_server.port)
apt_get_sourceslist_dir = '/etc/apt/'
- self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's|\[trusted=yes\] http://bogus_ip:bogus_port|%s|g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
+ self.target.run("cd %s && cp sources.list sources.list.bak && sed -i 's|[trusted=yes] http://bogus_ip:bogus_port|%s|g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
def cleanup_source_config_for_package_install(self):
apt_get_sourceslist_dir = '/etc/apt/'
@@ -49,12 +49,12 @@ class AptRepoTest(AptTest):
def cleanup_source_config_for_package_install_signed(self):
apt_get_sourceslist_dir = '/etc/apt/'
- self.target.run('cd %s; mv sources.list.bak sources.list' % (apt_get_sourceslist_dir))
+ self.target.run('cd %s && mv sources.list.bak sources.list' % (apt_get_sourceslist_dir))
def setup_key(self):
# the key is found on the target /etc/pki/packagefeed-gpg/
# named PACKAGEFEED-GPG-KEY-poky-branch
- self.target.run('cd %s; apt-key add P*' % ('/etc/pki/packagefeed-gpg'))
+ self.target.run('cd %s && apt-key add P*' % ('/etc/pki/packagefeed-gpg'))
@skipIfNotFeature('package-management',
'Test requires package-management to be in IMAGE_FEATURES')
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 3/6] oeqa context.py: use TEST_SUITES if set
2025-07-01 7:33 [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting Mikko Rapeli
@ 2025-07-01 7:33 ` Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 4/6] testexport.bbclass oe-test: capture all tests and data from all layers Mikko Rapeli
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Mikko Rapeli @ 2025-07-01 7:33 UTC (permalink / raw)
To: openembedded-core; +Cc: Mikko Rapeli
If build target has set TEST_SUITES, then that should
be the default test modules to execute. Fixes testexport.bbclass
to run same tests as testimage.bbclass which already
uses TEST_SUITES.
Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
meta/lib/oeqa/core/context.py | 7 +++++++
1 file changed, 7 insertions(+)
v2: added check for unset TEST_SUITES variable which caused
failures in autobuilder
v1: https://lists.openembedded.org/g/openembedded-core/message/219380
diff --git a/meta/lib/oeqa/core/context.py b/meta/lib/oeqa/core/context.py
index 9313271f5865..46de9135c179 100644
--- a/meta/lib/oeqa/core/context.py
+++ b/meta/lib/oeqa/core/context.py
@@ -179,9 +179,16 @@ class OETestContextExecutor(object):
else:
self.tc_kwargs['init']['td'] = {}
+ # Run image specific TEST_SUITE like testimage.bbclass by default
+ test_suites = self.tc_kwargs['init']['td'].get("TEST_SUITES")
+ if test_suites:
+ test_suites = test_suites.split()
+
if args.run_tests:
self.tc_kwargs['load']['modules'] = args.run_tests
self.tc_kwargs['load']['modules_required'] = args.run_tests
+ elif test_suites:
+ self.tc_kwargs['load']['modules'] = test_suites
else:
self.tc_kwargs['load']['modules'] = []
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 4/6] testexport.bbclass oe-test: capture all tests and data from all layers
2025-07-01 7:33 [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 3/6] oeqa context.py: use TEST_SUITES if set Mikko Rapeli
@ 2025-07-01 7:33 ` Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 5/6] testexport.bbclass: use image suffix in testexport tar ball name Mikko Rapeli
2025-07-02 6:30 ` [OE-core] [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Antonin Godard
4 siblings, 0 replies; 9+ messages in thread
From: Mikko Rapeli @ 2025-07-01 7:33 UTC (permalink / raw)
To: openembedded-core; +Cc: Mikko Rapeli
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.
Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
meta/classes-recipe/testexport.bbclass | 43 +++++++++++++-------------
scripts/oe-test | 12 ++++---
2 files changed, 30 insertions(+), 25 deletions(-)
v2: tried to improve commit message to clearly say that test filtering is removed
v1: https://lists.openembedded.org/g/openembedded-core/message/219381
diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass
index cc4088c71a13..843d777e3bb9 100644
--- a/meta/classes-recipe/testexport.bbclass
+++ b/meta/classes-recipe/testexport.bbclass
@@ -85,6 +85,7 @@ def copy_needed_files(d, tc):
export_path = d.getVar('TEST_EXPORT_DIR')
corebase_path = d.getVar('COREBASE')
+ bblayers = d.getVar('BBLAYERS').split()
# Clean everything before starting
oe.path.remove(export_path)
@@ -92,17 +93,11 @@ def copy_needed_files(d, tc):
# The source of files to copy are relative to 'COREBASE' directory
# The destination is relative to 'TEST_EXPORT_DIR'
- # Because we are squashing the libraries, we need to remove
- # the layer/script directory
- files_to_copy = [ os.path.join('meta', 'lib', 'oeqa', 'core'),
- os.path.join('meta', 'lib', 'oeqa', 'runtime'),
- os.path.join('meta', 'lib', 'oeqa', 'files'),
- os.path.join('meta', 'lib', 'oeqa', 'utils'),
- os.path.join('scripts', 'oe-test'),
+ # core files/dirs first
+ core_files_to_copy = [ os.path.join('scripts', 'oe-test'),
os.path.join('scripts', 'lib', 'argparse_oe.py'),
os.path.join('scripts', 'lib', 'scriptutils.py'), ]
-
- for f in files_to_copy:
+ for f in core_files_to_copy:
src = os.path.join(corebase_path, f)
dst = os.path.join(export_path, f.split('/', 1)[-1])
if os.path.isdir(src):
@@ -110,18 +105,21 @@ def copy_needed_files(d, tc):
else:
shutil.copy2(src, dst)
- # Remove cases and just copy the ones specified
- cases_path = os.path.join(export_path, 'lib', 'oeqa', 'runtime', 'cases')
- oe.path.remove(cases_path)
- bb.utils.mkdirhier(cases_path)
- test_paths = get_runtime_paths(d)
- test_modules = d.getVar('TEST_SUITES').split()
- tc.loadTests(test_paths, modules=test_modules)
- for f in getSuiteCasesFiles(tc.suites):
- shutil.copy2(f, cases_path)
- json_file = _get_json_file(f)
- if json_file:
- shutil.copy2(json_file, cases_path)
+ # layer specific files/dirs
+ layer_files_to_copy = [ os.path.join('lib', 'oeqa', 'core'),
+ os.path.join('lib', 'oeqa', 'runtime'),
+ os.path.join('lib', 'oeqa', 'files'),
+ os.path.join('lib', 'oeqa', 'utils'),]
+ for layer in bblayers:
+ meta = os.path.basename(layer)
+ for f in layer_files_to_copy:
+ src = os.path.join(layer, f)
+ dst = os.path.join(export_path, meta, f)
+ if os.path.exists(src):
+ if os.path.isdir(src):
+ oe.path.copytree(src, dst)
+ else:
+ shutil.copy2(src, dst)
# Copy test data
image_name = ("%s/%s" % (d.getVar('DEPLOY_DIR_IMAGE'),
@@ -142,6 +140,9 @@ def copy_needed_files(d, tc):
testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
# Copy packages needed for runtime testing
+ test_paths = get_runtime_paths(d)
+ test_modules = d.getVar('TEST_SUITES').split()
+ tc.loadTests(test_paths, modules=test_modules)
package_extraction(d, tc.suites)
test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR")
if os.path.isdir(test_pkg_dir) and os.listdir(test_pkg_dir):
diff --git a/scripts/oe-test b/scripts/oe-test
index 55985b0b2453..efb83c3e7809 100755
--- a/scripts/oe-test
+++ b/scripts/oe-test
@@ -7,14 +7,18 @@
# SPDX-License-Identifier: MIT
#
-import os
-import sys
import argparse
+import glob
import logging
+import os
+import sys
scripts_path = os.path.dirname(os.path.realpath(__file__))
-lib_path = scripts_path + '/lib'
-sys.path = sys.path + [lib_path]
+lib_path = os.path.join(scripts_path, 'lib')
+sys.path.append(lib_path)
+meta_lib_paths = glob.glob(scripts_path + '/*/lib', root_dir=scripts_path, recursive=True)
+for p in meta_lib_paths:
+ sys.path.append(p)
import argparse_oe
import scriptutils
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 5/6] testexport.bbclass: use image suffix in testexport tar ball name
2025-07-01 7:33 [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Mikko Rapeli
` (2 preceding siblings ...)
2025-07-01 7:33 ` [PATCH v2 4/6] testexport.bbclass oe-test: capture all tests and data from all layers Mikko Rapeli
@ 2025-07-01 7:33 ` Mikko Rapeli
2025-07-02 6:30 ` [OE-core] [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Antonin Godard
4 siblings, 0 replies; 9+ messages in thread
From: Mikko Rapeli @ 2025-07-01 7:33 UTC (permalink / raw)
To: openembedded-core; +Cc: Mikko Rapeli
testexport.tar.gz is image specific. Thus add same image name
suffix to the tar ball name. For example genericarm64 machine
core-image-minimal image tar ball changes name from
testexport.tar.gz to testexport-core-image-minimal-genericarm64.tar.gz
This way testexport from multiple images can exists in the same
directory.
Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
---
meta/classes-recipe/testexport.bbclass | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass
index 843d777e3bb9..3005fc0dfa52 100644
--- a/meta/classes-recipe/testexport.bbclass
+++ b/meta/classes-recipe/testexport.bbclass
@@ -136,8 +136,12 @@ def copy_needed_files(d, tc):
if dir == '__pycache__':
shutil.rmtree(os.path.join(subdir, dir))
+ image_basename = d.getVar('IMAGE_BASENAME')
+ image_machine_suffix = d.getVar('IMAGE_MACHINE_SUFFIX')
+
# Create tar file for common parts of testexport
- testexport_create_tarball(d, "testexport.tar.gz", d.getVar("TEST_EXPORT_DIR"))
+ testexport_create_tarball(d, "testexport-%s%s.tar.gz" %
+ (image_basename, image_machine_suffix), d.getVar("TEST_EXPORT_DIR"))
# Copy packages needed for runtime testing
test_paths = get_runtime_paths(d)
@@ -149,7 +153,7 @@ def copy_needed_files(d, tc):
export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR"), "packages")
oe.path.copytree(test_pkg_dir, export_pkg_dir)
# Create tar file for packages needed by the DUT
- testexport_create_tarball(d, "testexport_packages_%s.tar.gz" % d.getVar("MACHINE"), export_pkg_dir)
+ testexport_create_tarball(d, "testexport_packages%s.tar.gz" % image_machine_suffix, export_pkg_dir)
# Copy SDK
if d.getVar("TEST_EXPORT_SDK_ENABLED") == "1":
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH v2 1/6] oeqa runtime: set self.runner and handle None
2025-07-01 7:33 [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Mikko Rapeli
` (3 preceding siblings ...)
2025-07-01 7:33 ` [PATCH v2 5/6] testexport.bbclass: use image suffix in testexport tar ball name Mikko Rapeli
@ 2025-07-02 6:30 ` Antonin Godard
2025-07-02 7:24 ` Mikko Rapeli
4 siblings, 1 reply; 9+ messages in thread
From: Antonin Godard @ 2025-07-02 6:30 UTC (permalink / raw)
To: mikko.rapeli, openembedded-core
On Tue Jul 1, 2025 at 9:33 AM CEST, Mikko Rapeli via lists.openembedded.org wrote:
> Set default self.runner to None. qemu target sets
> the runner to qemu. Then handle self.runner None in
> run_network_serialdebug(). This way ssh runner
> and failing ping or ssh tests handle the error cases.
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> ---
> meta/lib/oeqa/core/target/__init__.py | 1 +
> meta/lib/oeqa/runtime/case.py | 2 ++
> 2 files changed, 3 insertions(+)
>
> v2: setting self.runner for all target types instead of target conditional
> paths in tests
>
> v1: https://lists.openembedded.org/g/openembedded-core/message/219377
> and https://lists.openembedded.org/g/openembedded-core/message/219378
>
> diff --git a/meta/lib/oeqa/core/target/__init__.py b/meta/lib/oeqa/core/target/__init__.py
> index 1382aa9b5239..177f648fe358 100644
> --- a/meta/lib/oeqa/core/target/__init__.py
> +++ b/meta/lib/oeqa/core/target/__init__.py
> @@ -10,6 +10,7 @@ class OETarget(object):
>
> def __init__(self, logger, *args, **kwargs):
> self.logger = logger
> + self.runner = None
>
> @abstractmethod
> def start(self):
> diff --git a/meta/lib/oeqa/runtime/case.py b/meta/lib/oeqa/runtime/case.py
> index 9515ca2f3d62..2a47771a3d47 100644
> --- a/meta/lib/oeqa/runtime/case.py
> +++ b/meta/lib/oeqa/runtime/case.py
> @@ -23,6 +23,8 @@ class OERuntimeTestCase(OETestCase):
> uninstall_package(self)
>
> def run_network_serialdebug(runner):
> + if not runner:
> + return
> status, output = runner.run_serial("ip addr")
> print("ip addr on target: %s %s" % (output, status))
> status, output = runner.run_serial("ping -c 1 %s" % self.target.server_ip)
Hi Mikko,
I think this series caused some issues on the Autobuilder:
AssertionError: 100 != 0 : apt-get install --yes run-postinsts-dev
https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/2031
https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/1879
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/1816
Can you have a look?
Antonin
--
Antonin Godard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH v2 1/6] oeqa runtime: set self.runner and handle None
2025-07-02 6:30 ` [OE-core] [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Antonin Godard
@ 2025-07-02 7:24 ` Mikko Rapeli
0 siblings, 0 replies; 9+ messages in thread
From: Mikko Rapeli @ 2025-07-02 7:24 UTC (permalink / raw)
To: Antonin Godard; +Cc: openembedded-core
Hi,
On Wed, Jul 02, 2025 at 08:30:52AM +0200, Antonin Godard wrote:
> On Tue Jul 1, 2025 at 9:33 AM CEST, Mikko Rapeli via lists.openembedded.org wrote:
> > Set default self.runner to None. qemu target sets
> > the runner to qemu. Then handle self.runner None in
> > run_network_serialdebug(). This way ssh runner
> > and failing ping or ssh tests handle the error cases.
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> > ---
> > meta/lib/oeqa/core/target/__init__.py | 1 +
> > meta/lib/oeqa/runtime/case.py | 2 ++
> > 2 files changed, 3 insertions(+)
> >
> > v2: setting self.runner for all target types instead of target conditional
> > paths in tests
> >
> > v1: https://lists.openembedded.org/g/openembedded-core/message/219377
> > and https://lists.openembedded.org/g/openembedded-core/message/219378
> >
> > diff --git a/meta/lib/oeqa/core/target/__init__.py b/meta/lib/oeqa/core/target/__init__.py
> > index 1382aa9b5239..177f648fe358 100644
> > --- a/meta/lib/oeqa/core/target/__init__.py
> > +++ b/meta/lib/oeqa/core/target/__init__.py
> > @@ -10,6 +10,7 @@ class OETarget(object):
> >
> > def __init__(self, logger, *args, **kwargs):
> > self.logger = logger
> > + self.runner = None
> >
> > @abstractmethod
> > def start(self):
> > diff --git a/meta/lib/oeqa/runtime/case.py b/meta/lib/oeqa/runtime/case.py
> > index 9515ca2f3d62..2a47771a3d47 100644
> > --- a/meta/lib/oeqa/runtime/case.py
> > +++ b/meta/lib/oeqa/runtime/case.py
> > @@ -23,6 +23,8 @@ class OERuntimeTestCase(OETestCase):
> > uninstall_package(self)
> >
> > def run_network_serialdebug(runner):
> > + if not runner:
> > + return
> > status, output = runner.run_serial("ip addr")
> > print("ip addr on target: %s %s" % (output, status))
> > status, output = runner.run_serial("ping -c 1 %s" % self.target.server_ip)
>
> Hi Mikko,
>
> I think this series caused some issues on the Autobuilder:
>
> AssertionError: 100 != 0 : apt-get install --yes run-postinsts-dev
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/2031
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/1879
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/1816
>
> Can you have a look?
Ok the apt test changes are causing these failures. I will drop
those changes.
Sorry about this,
-Mikko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting
2025-07-01 7:33 ` [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting Mikko Rapeli
@ 2025-07-02 9:42 ` Richard Purdie
2025-07-02 9:50 ` Mikko Rapeli
0 siblings, 1 reply; 9+ messages in thread
From: Richard Purdie @ 2025-07-02 9:42 UTC (permalink / raw)
To: mikko.rapeli, openembedded-core
On Tue, 2025-07-01 at 10:33 +0300, Mikko Rapeli via lists.openembedded.org wrote:
> Check that shell commands succeeded and fix quoting
> warning:
>
> core-image-minimal/lib/oeqa/runtime/cases/apt.py:44: SyntaxWarning: invalid escape sequence '\['
> self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's|\[trusted=yes\] http://bogus_ip:bogus_port|%s|g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
>
> Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> ---
> meta/lib/oeqa/runtime/cases/apt.py | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/meta/lib/oeqa/runtime/cases/apt.py b/meta/lib/oeqa/runtime/cases/apt.py
> index 8000645843aa..b7cda0095394 100644
> --- a/meta/lib/oeqa/runtime/cases/apt.py
> +++ b/meta/lib/oeqa/runtime/cases/apt.py
> @@ -36,12 +36,12 @@ class AptRepoTest(AptTest):
> def setup_source_config_for_package_install(self):
> apt_get_source_server = 'http://%s:%s/' % (self.tc.target.server_ip, self.repo_server.port)
> apt_get_sourceslist_dir = '/etc/apt/'
> - self.target.run('cd %s; echo deb [ allow-insecure=yes ] %s/all ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
> + self.target.run('cd %s && echo "deb [ allow-insecure=yes ] %s/all ./" > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
>
> def setup_source_config_for_package_install_signed(self):
> apt_get_source_server = 'http://%s:%s' % (self.tc.target.server_ip, self.repo_server.port)
> apt_get_sourceslist_dir = '/etc/apt/'
> - self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's|\[trusted=yes\] http://bogus_ip:bogus_port|%s|g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
> + self.target.run("cd %s && cp sources.list sources.list.bak && sed -i 's|[trusted=yes] http://bogus_ip:bogus_port|%s|g' sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
>
> def cleanup_source_config_for_package_install(self):
> apt_get_sourceslist_dir = '/etc/apt/'
> @@ -49,12 +49,12 @@ class AptRepoTest(AptTest):
>
> def cleanup_source_config_for_package_install_signed(self):
> apt_get_sourceslist_dir = '/etc/apt/'
> - self.target.run('cd %s; mv sources.list.bak sources.list' % (apt_get_sourceslist_dir))
> + self.target.run('cd %s && mv sources.list.bak sources.list' % (apt_get_sourceslist_dir))
>
> def setup_key(self):
> # the key is found on the target /etc/pki/packagefeed-gpg/
> # named PACKAGEFEED-GPG-KEY-poky-branch
> - self.target.run('cd %s; apt-key add P*' % ('/etc/pki/packagefeed-gpg'))
> + self.target.run('cd %s && apt-key add P*' % ('/etc/pki/packagefeed-gpg'))
>
> @skipIfNotFeature('package-management',
> 'Test requires package-management to be in IMAGE_FEATURES')
>
This breaks the test on the autobuilder:
https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/1885
(or it was broken and hiding an error)
Either way, we need to fix this before it can merge.
Cheers,
Richard
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [OE-core] [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting
2025-07-02 9:42 ` [OE-core] " Richard Purdie
@ 2025-07-02 9:50 ` Mikko Rapeli
0 siblings, 0 replies; 9+ messages in thread
From: Mikko Rapeli @ 2025-07-02 9:50 UTC (permalink / raw)
To: Richard Purdie; +Cc: openembedded-core
Hi,
On Wed, Jul 02, 2025 at 10:42:26AM +0100, Richard Purdie wrote:
> On Tue, 2025-07-01 at 10:33 +0300, Mikko Rapeli via lists.openembedded.org wrote:
> > Check that shell commands succeeded and fix quoting
> > warning:
> >
> > core-image-minimal/lib/oeqa/runtime/cases/apt.py:44: SyntaxWarning: invalid escape sequence '\['
> > � self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's|\[trusted=yes\] http://bogus_ip:bogus_port|%s|g'�sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
> >
> > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org>
> > ---
> > �meta/lib/oeqa/runtime/cases/apt.py | 8 ++++----
> > �1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/meta/lib/oeqa/runtime/cases/apt.py b/meta/lib/oeqa/runtime/cases/apt.py
> > index 8000645843aa..b7cda0095394 100644
> > --- a/meta/lib/oeqa/runtime/cases/apt.py
> > +++ b/meta/lib/oeqa/runtime/cases/apt.py
> > @@ -36,12 +36,12 @@ class AptRepoTest(AptTest):
> > ���� def setup_source_config_for_package_install(self):
> > �������� apt_get_source_server = 'http://%s:%s/'�% (self.tc.target.server_ip, self.repo_server.port)
> > �������� apt_get_sourceslist_dir = '/etc/apt/'
> > -������� self.target.run('cd %s; echo deb [ allow-insecure=yes ] %s/all ./ > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
> > +������� self.target.run('cd %s && echo "deb [ allow-insecure=yes ] %s/all ./" > sources.list' % (apt_get_sourceslist_dir, apt_get_source_server))
> > �
> > ���� def setup_source_config_for_package_install_signed(self):
> > �������� apt_get_source_server = 'http://%s:%s'�% (self.tc.target.server_ip, self.repo_server.port)
> > �������� apt_get_sourceslist_dir = '/etc/apt/'
> > -������� self.target.run("cd %s; cp sources.list sources.list.bak; sed -i 's|\[trusted=yes\] http://bogus_ip:bogus_port|%s|g'�sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
> > +������� self.target.run("cd %s && cp sources.list sources.list.bak && sed -i 's|[trusted=yes] http://bogus_ip:bogus_port|%s|g'�sources.list" % (apt_get_sourceslist_dir, apt_get_source_server))
> > �
> > ���� def cleanup_source_config_for_package_install(self):
> > �������� apt_get_sourceslist_dir = '/etc/apt/'
> > @@ -49,12 +49,12 @@ class AptRepoTest(AptTest):
> > �
> > ���� def cleanup_source_config_for_package_install_signed(self):
> > �������� apt_get_sourceslist_dir = '/etc/apt/'
> > -������� self.target.run('cd %s; mv sources.list.bak sources.list' % (apt_get_sourceslist_dir))
> > +������� self.target.run('cd %s && mv sources.list.bak sources.list' % (apt_get_sourceslist_dir))
> > �
> > ���� def setup_key(self):
> > �������� # the key is found on the target /etc/pki/packagefeed-gpg/
> > �������� # named PACKAGEFEED-GPG-KEY-poky-branch
> > -������� self.target.run('cd %s; apt-key add P*' % ('/etc/pki/packagefeed-gpg'))
> > +������� self.target.run('cd %s && apt-key add P*' % ('/etc/pki/packagefeed-gpg'))
> > �
> > ���� @skipIfNotFeature('package-management',
> > ���������������������� 'Test requires package-management to be in IMAGE_FEATURES')
> >
>
> This breaks the test on the autobuilder:
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/35/builds/1885
>
> (or it was broken and hiding an error)
>
> Either way, we need to fix this before it can merge.
Thanks, I came to the same conclusion from the failures reported by Antonin.
I dropped this change from the testexport related series in v3.
Cheers,
-Mikko
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-07-02 9:50 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-01 7:33 [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 2/6] oeqa runtime apt.py: check errors and fix quoting Mikko Rapeli
2025-07-02 9:42 ` [OE-core] " Richard Purdie
2025-07-02 9:50 ` Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 3/6] oeqa context.py: use TEST_SUITES if set Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 4/6] testexport.bbclass oe-test: capture all tests and data from all layers Mikko Rapeli
2025-07-01 7:33 ` [PATCH v2 5/6] testexport.bbclass: use image suffix in testexport tar ball name Mikko Rapeli
2025-07-02 6:30 ` [OE-core] [PATCH v2 1/6] oeqa runtime: set self.runner and handle None Antonin Godard
2025-07-02 7:24 ` Mikko Rapeli
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.