From: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
To: openembedded-core@lists.openembedded.org
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Subject: [PATCH 4/4] oe-selftest: devtool: Add test for add/finish workflow
Date: Fri, 14 Aug 2026 18:26:37 +0200 [thread overview]
Message-ID: <20260814-mathieu-devtool-v1-4-985e81a17bb3@bootlin.com> (raw)
In-Reply-To: <20260814-mathieu-devtool-v1-0-985e81a17bb3@bootlin.com>
Add test for devtool add/build/finish workflow, inclusing a test for
finish --force.
---
meta/lib/oeqa/selftest/cases/devtool.py | 58 +++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/meta/lib/oeqa/selftest/cases/devtool.py b/meta/lib/oeqa/selftest/cases/devtool.py
index d84a18e8b69b..d549be9f7965 100644
--- a/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/meta/lib/oeqa/selftest/cases/devtool.py
@@ -713,6 +713,64 @@ class DevtoolAddTests(DevtoolBase):
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
result = runCmd('devtool add %s %s -f %s' % (testrecipe, srcdir, url))
+ def test_devtool_add_build_finish(self):
+ url = 'https://ftp.gnu.org/gnu/hello/hello-2.12.3.tar.gz'
+ pn = 'hello'
+ recipe = 'hello_2.12.3.bb'
+ # Test devtool add
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake -c cleansstate %s' % pn)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ result = runCmd('devtool add %s' % (url, ))
+ self.assertExists(os.path.join(self.workspacedir, 'conf', 'layer.conf'),
+ 'Workspace directory not created')
+ # Test devtool build
+ result = runCmd('devtool build %s' % pn)
+ bb_vars = get_bb_vars(['D', 'bindir'], pn)
+ installdir = bb_vars['D']
+ self.assertTrue(installdir, 'Could not query installdir variable')
+ # devtool finish
+ result = runCmd('devtool finish %s meta-selftest' % pn,
+ ignore_status=True)
+ self.assertNotEqual(result.status, 0,
+ 'devtool finish should have failed on a dirty directory. devtool output: %s' %
+ (result.output))
+ # clean directory
+ sourcedir = os.path.join(self.workspacedir, 'sources', 'hello')
+ runCmd('git reset --hard; git clean -dxf', cwd=sourcedir)
+ # devtool finish (again)
+ self.assertExists(os.path.join(self.workspacedir, 'recipes', pn),
+ 'Recipe directory should exist before finish')
+ result = runCmd('devtool finish %s meta-selftest' % pn)
+ self.assertNotExists(os.path.join(self.workspacedir, 'recipes', pn),
+ 'Recipe directory should not exist after finish')
+ # Check recipe got created as expected
+ self.assertExists(os.path.join(get_test_layer(), f'recipes-{pn}', pn, recipe),
+ 'Recipe should exist in the layer after finish')
+
+ def test_devtool_add_build_finish_force(self):
+ url = 'https://ftp.gnu.org/gnu/hello/hello-2.12.3.tar.gz'
+ pn = 'hello'
+ recipe = 'hello_2.12.3.bb'
+ # Test devtool add
+ self.track_for_cleanup(self.workspacedir)
+ self.add_command_to_tearDown('bitbake -c cleansstate %s' % pn)
+ self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+ result = runCmd('devtool add %s' % (url, ))
+ self.assertExists(os.path.join(self.workspacedir, 'conf', 'layer.conf'),
+ 'Workspace directory not created')
+ # Test devtool build
+ result = runCmd('devtool build %s' % pn)
+ bb_vars = get_bb_vars(['D', 'bindir'], pn)
+ installdir = bb_vars['D']
+ self.assertTrue(installdir, 'Could not query installdir variable')
+ # devtool finish
+ result = runCmd('devtool finish %s meta-selftest --force' % pn)
+ # Check recipe got created as expected
+ self.assertExists(os.path.join(get_test_layer(), f'recipes-{pn}', pn, recipe),
+ 'Recipe should exist in the layer after finish')
+
+
class DevtoolModifyTests(DevtoolBase):
def test_devtool_modify(self):
--
2.47.3
next prev parent reply other threads:[~2026-08-14 16:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-14 16:26 [PATCH 0/4] devtool: standard: Fix file copy on finish --force Mathieu Dubois-Briand
2026-08-14 16:26 ` [PATCH 1/4] scripts: scriptutils: Use LicenseRef-Proprietary LICENSE while fetching Mathieu Dubois-Briand
2026-08-14 16:26 ` [PATCH 2/4] devtool: standard: Fix file copy on finish --force Mathieu Dubois-Briand
2026-08-14 16:32 ` Patchtest results for " patchtest
2026-08-14 17:13 ` [OE-core] " Mathieu Dubois-Briand
2026-08-14 16:26 ` [PATCH 3/4] devtool: standard: Remove unused variable Mathieu Dubois-Briand
2026-08-14 16:32 ` Patchtest results for " patchtest
2026-08-14 16:26 ` Mathieu Dubois-Briand [this message]
2026-08-14 16:32 ` Patchtest results for [PATCH 4/4] oe-selftest: devtool: Add test for add/finish workflow patchtest
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260814-mathieu-devtool-v1-4-985e81a17bb3@bootlin.com \
--to=mathieu.dubois-briand@bootlin.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.