oe-selftest: devtool: rework devtool upgrade test

* Use a more real-world test of a recipe pointing to a remote file
* The cleanup tracking / teardown commands need to be added towards the
  top, or they won't have the desired effect of cleaning up if the test
  fails.
* Check that a versioned subdirectory gets renamed to match the new
  version
* Ensure the recipe contents gets changed as we expect it to
* Check that the recipe directory is deleted by devtool reset at the end

(From OE-Core rev: d0ae258e963f9bafffc4ca43c87497d27e57c127)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2016-02-24 16:51:30 +13:00 committed by Richard Purdie
parent 10290f2245
commit 4bae2f25b8
8 changed files with 73 additions and 61 deletions

View File

@ -0,0 +1,25 @@
From 1478846ebfac690684e9c48049d08e0065f97a36 Mon Sep 17 00:00:00 2001
From: Paul Eggleton <paul.eggleton@linux.intel.com>
Date: Wed, 24 Feb 2016 17:43:03 +1300
Subject: [PATCH] Add a note line to the quick reference
A test patch so we have a file to move around.
---
doc/quickref.1.in | 1 +
1 file changed, 1 insertion(+)
diff --git a/doc/quickref.1.in b/doc/quickref.1.in
index 389008b..226615c 100644
--- a/doc/quickref.1.in
+++ b/doc/quickref.1.in
@@ -560,6 +560,7 @@ you want, at runtime, to change the parameters of.
.P
If you find any other problems, please report them.
+NOTE: this is an important note.
.SH REPORTING BUGS
Report bugs in
--
2.5.0

View File

@ -0,0 +1,16 @@
SUMMARY = "Pipe viewer test recipe for devtool upgrade test"
LICENSE = "Artistic-2.0"
LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
SRC_URI = "http://www.ivarch.com/programs/sources/pv-${PV}.tar.gz \
file://0001-Add-a-note-line-to-the-quick-reference.patch"
SRC_URI[md5sum] = "9365d86bd884222b4bf1039b5a9ed1bd"
SRC_URI[sha256sum] = "681bcca9784bf3cb2207e68236d1f68e2aa7b80f999b5750dc77dcd756e81fbc"
PR = "r5"
S = "${WORKDIR}/pv-${PV}"
inherit autotools

View File

@ -0,0 +1,14 @@
SUMMARY = "Pipe viewer test recipe for devtool upgrade test"
LICENSE = "Artistic-2.0"
LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
SRC_URI = "http://www.ivarch.com/programs/sources/pv-${PV}.tar.gz \
file://0001-Add-a-note-line-to-the-quick-reference.patch"
SRC_URI[md5sum] = "062bca5ff33df1dd09472e7fc3bbe332"
SRC_URI[sha256sum] = "9dd45391806b0ed215abee4c5ac1597d018c386fe9c1f5afd2f6bc3b07fd82c3"
S = "${WORKDIR}/pv-${PV}"
inherit autotools

View File

@ -1,25 +0,0 @@
#
# This file was derived from the 'Hello World!' example recipe in the
# Yocto Project Development Manual.
#
DESCRIPTION = "Simple helloworld application used to test the devtool upgrade feature"
SECTION = "devtool"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r0"
SRC_URI = "file://${THISDIR}/files/${P}.tar.gz \
file://0001-helloword.c-exit-with-EXIT_SUCCESS-instead-of-a-magi.patch \
"
S = "${WORKDIR}/${P}"
do_compile() {
${CC} helloworld.c -o helloworld
}
do_install() {
install -d ${D}${bindir}
install -m 0755 helloworld ${D}${bindir}
}

View File

@ -1,27 +0,0 @@
From 0f37affbc6e6c71687301d99d7259f1968e57c48 Mon Sep 17 00:00:00 2001
From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Date: Wed, 26 Aug 2015 12:42:23 +0000
Subject: [PATCH] helloword.c: exit with EXIT_SUCCESS instead of a magic number
---
helloworld.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/helloworld.c b/helloworld.c
index 71f2e46..54bf50b 100644
--- a/helloworld.c
+++ b/helloworld.c
@@ -1,8 +1,9 @@
#include <stdio.h>
+#include <stdlib.h>
int main(int argc, char **argv)
{
printf("Hello World!\n");
- return 0;
+ return EXIT_SUCCESS;
}
--
1.8.4.5

View File

@ -1095,14 +1095,18 @@ class DevtoolTests(DevtoolBase):
def test_devtool_upgrade(self):
# Check preconditions
self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
self.track_for_cleanup(self.workspacedir)
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
# Check parameters
result = runCmd('devtool upgrade -h')
for param in 'recipename srctree --version -V --branch -b --keep-temp --no-patch'.split():
self.assertIn(param, result.output)
# For the moment, we are using a real recipe.
recipe='devtool-upgrade'
version='0.2'
recipe = 'devtool-upgrade-test1'
version = '1.6.0'
oldrecipefile = get_bb_var('FILE', recipe)
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
self.track_for_cleanup(tempdir)
# Check that recipe is not already under devtool control
result = runCmd('devtool status')
self.assertNotIn(recipe, result.output)
@ -1110,22 +1114,27 @@ class DevtoolTests(DevtoolBase):
# we are downgrading instead of upgrading.
result = runCmd('devtool upgrade %s %s -V %s' % (recipe, tempdir, version))
# Check if srctree at least is populated
self.assertTrue(len(os.listdir(tempdir)) > 0, 'scrtree (%s) should be populated with new (%s) source code' % (tempdir, version))
# Check new recipe folder is present
self.assertTrue(os.path.exists(os.path.join(self.workspacedir,'recipes',recipe)), 'Recipe folder should exist')
self.assertTrue(len(os.listdir(tempdir)) > 0, 'srctree (%s) should be populated with new (%s) source code' % (tempdir, version))
# Check new recipe subdirectory is present
self.assertTrue(os.path.exists(os.path.join(self.workspacedir, 'recipes', recipe, '%s-%s' % (recipe, version))), 'Recipe folder should exist')
# Check new recipe file is present
self.assertTrue(os.path.exists(os.path.join(self.workspacedir,'recipes',recipe,"%s_%s.bb" % (recipe,version))), 'Recipe folder should exist')
newrecipefile = os.path.join(self.workspacedir, 'recipes', recipe, '%s_%s.bb' % (recipe, version))
self.assertTrue(os.path.exists(newrecipefile), 'Recipe file should exist after upgrade')
# Check devtool status and make sure recipe is present
result = runCmd('devtool status')
self.assertIn(recipe, result.output)
self.assertIn(tempdir, result.output)
# Check recipe got changed as expected
with open(oldrecipefile + '.upgraded', 'r') as f:
desiredlines = f.readlines()
with open(newrecipefile, 'r') as f:
newlines = f.readlines()
self.assertEqual(desiredlines, newlines)
# Check devtool reset recipe
result = runCmd('devtool reset %s -n' % recipe)
result = runCmd('devtool status')
self.assertNotIn(recipe, result.output)
self.track_for_cleanup(tempdir)
self.track_for_cleanup(self.workspacedir)
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
self.assertFalse(os.path.exists(os.path.join(self.workspacedir, 'recipes', recipe)), 'Recipe directory should not exist after resetting')
@testcase(1352)
def test_devtool_layer_plugins(self):