oe-selftest: move recipetool tests to their own module
These tests really belong in their own module; if we refactor out a base class from DevtoolTests with shared functions then we can move them out easily. Also create temp directory in setupLocal() so we don't have to do that in individual tests anymore. (From OE-Core rev: 2f88f6e7b2e54b13376338354aae1d61c0c0db60) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
2298b4a03e
commit
c63adf5c5b
|
@ -11,7 +11,28 @@ from oeqa.selftest.base import oeSelfTest
|
|||
from oeqa.utils.commands import runCmd, bitbake, get_bb_var
|
||||
from oeqa.utils.decorators import testcase
|
||||
|
||||
class DevtoolTests(oeSelfTest):
|
||||
class DevtoolBase(oeSelfTest):
|
||||
|
||||
def _test_recipe_contents(self, recipefile, checkvars, checkinherits):
|
||||
with open(recipefile, 'r') as f:
|
||||
for line in f:
|
||||
if '=' in line:
|
||||
splitline = line.split('=', 1)
|
||||
var = splitline[0].rstrip()
|
||||
value = splitline[1].strip().strip('"')
|
||||
if var in checkvars:
|
||||
needvalue = checkvars.pop(var)
|
||||
self.assertEqual(value, needvalue, 'values for %s do not match' % var)
|
||||
if line.startswith('inherit '):
|
||||
inherits = line.split()[1:]
|
||||
|
||||
self.assertEqual(checkvars, {}, 'Some variables not found: %s' % checkvars)
|
||||
|
||||
for inherit in checkinherits:
|
||||
self.assertIn(inherit, inherits, 'Missing inherit of %s' % inherit)
|
||||
|
||||
|
||||
class DevtoolTests(DevtoolBase):
|
||||
|
||||
def test_create_workspace(self):
|
||||
# Check preconditions
|
||||
|
@ -35,64 +56,6 @@ class DevtoolTests(oeSelfTest):
|
|||
self.assertNotIn(tempdir, result.output)
|
||||
self.assertIn(workspacedir, result.output)
|
||||
|
||||
def _test_recipe_contents(self, recipefile, checkvars, checkinherits):
|
||||
with open(recipefile, 'r') as f:
|
||||
for line in f:
|
||||
if '=' in line:
|
||||
splitline = line.split('=', 1)
|
||||
var = splitline[0].rstrip()
|
||||
value = splitline[1].strip().strip('"')
|
||||
if var in checkvars:
|
||||
needvalue = checkvars.pop(var)
|
||||
self.assertEqual(value, needvalue, 'values for %s do not match' % var)
|
||||
if line.startswith('inherit '):
|
||||
inherits = line.split()[1:]
|
||||
|
||||
self.assertEqual(checkvars, {}, 'Some variables not found: %s' % checkvars)
|
||||
|
||||
for inherit in checkinherits:
|
||||
self.assertIn(inherit, inherits, 'Missing inherit of %s' % inherit)
|
||||
|
||||
def test_recipetool_create(self):
|
||||
# Try adding a recipe
|
||||
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
|
||||
self.track_for_cleanup(tempdir)
|
||||
tempsrc = os.path.join(tempdir, 'srctree')
|
||||
os.makedirs(tempsrc)
|
||||
recipefile = os.path.join(tempdir, 'logrotate_3.8.7.bb')
|
||||
srcuri = 'https://fedorahosted.org/releases/l/o/logrotate/logrotate-3.8.7.tar.gz'
|
||||
result = runCmd('recipetool create -o %s %s -x %s' % (recipefile, srcuri, tempsrc))
|
||||
self.assertTrue(os.path.isfile(recipefile))
|
||||
checkvars = {}
|
||||
checkvars['LICENSE'] = 'GPLv2'
|
||||
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING;md5=18810669f13b87348459e611d31ab760'
|
||||
checkvars['SRC_URI'] = 'https://fedorahosted.org/releases/l/o/logrotate/logrotate-${PV}.tar.gz'
|
||||
checkvars['SRC_URI[md5sum]'] = '99e08503ef24c3e2e3ff74cc5f3be213'
|
||||
checkvars['SRC_URI[sha256sum]'] = 'f6ba691f40e30e640efa2752c1f9499a3f9738257660994de70a45fe00d12b64'
|
||||
self._test_recipe_contents(recipefile, checkvars, [])
|
||||
|
||||
def test_recipetool_create_git(self):
|
||||
# Ensure we have the right data in shlibs/pkgdata
|
||||
bitbake('libpng pango libx11 libxext jpeg')
|
||||
# Try adding a recipe
|
||||
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
|
||||
self.track_for_cleanup(tempdir)
|
||||
tempsrc = os.path.join(tempdir, 'srctree')
|
||||
os.makedirs(tempsrc)
|
||||
recipefile = os.path.join(tempdir, 'libmatchbox.bb')
|
||||
srcuri = 'git://git.yoctoproject.org/libmatchbox'
|
||||
result = runCmd('recipetool create -o %s %s -x %s' % (recipefile, srcuri, tempsrc))
|
||||
self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
|
||||
checkvars = {}
|
||||
checkvars['LICENSE'] = 'LGPLv2.1'
|
||||
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34'
|
||||
checkvars['S'] = '${WORKDIR}/git'
|
||||
checkvars['PV'] = '1.0+git${SRCPV}'
|
||||
checkvars['SRC_URI'] = srcuri
|
||||
checkvars['DEPENDS'] = 'libpng pango libx11 libxext jpeg'
|
||||
inherits = ['autotools', 'pkgconfig']
|
||||
self._test_recipe_contents(recipefile, checkvars, inherits)
|
||||
|
||||
def test_devtool_add(self):
|
||||
# Check preconditions
|
||||
workspacedir = os.path.join(self.builddir, 'workspace')
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
import unittest
|
||||
import os
|
||||
import logging
|
||||
import re
|
||||
import tempfile
|
||||
|
||||
import oeqa.utils.ftools as ftools
|
||||
from oeqa.selftest.base import oeSelfTest
|
||||
from oeqa.utils.commands import runCmd, bitbake, get_bb_var
|
||||
from oeqa.utils.decorators import testcase
|
||||
from oeqa.selftest.devtool import DevtoolBase
|
||||
|
||||
|
||||
class RecipetoolTests(DevtoolBase):
|
||||
|
||||
def setUpLocal(self):
|
||||
self.tempdir = tempfile.mkdtemp(prefix='recipetoolqa')
|
||||
self.track_for_cleanup(self.tempdir)
|
||||
|
||||
def test_recipetool_create(self):
|
||||
# Try adding a recipe
|
||||
tempsrc = os.path.join(self.tempdir, 'srctree')
|
||||
os.makedirs(tempsrc)
|
||||
recipefile = os.path.join(self.tempdir, 'logrotate_3.8.7.bb')
|
||||
srcuri = 'https://fedorahosted.org/releases/l/o/logrotate/logrotate-3.8.7.tar.gz'
|
||||
result = runCmd('recipetool create -o %s %s -x %s' % (recipefile, srcuri, tempsrc))
|
||||
self.assertTrue(os.path.isfile(recipefile))
|
||||
checkvars = {}
|
||||
checkvars['LICENSE'] = 'GPLv2'
|
||||
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING;md5=18810669f13b87348459e611d31ab760'
|
||||
checkvars['SRC_URI'] = 'https://fedorahosted.org/releases/l/o/logrotate/logrotate-${PV}.tar.gz'
|
||||
checkvars['SRC_URI[md5sum]'] = '99e08503ef24c3e2e3ff74cc5f3be213'
|
||||
checkvars['SRC_URI[sha256sum]'] = 'f6ba691f40e30e640efa2752c1f9499a3f9738257660994de70a45fe00d12b64'
|
||||
self._test_recipe_contents(recipefile, checkvars, [])
|
||||
|
||||
def test_recipetool_create_git(self):
|
||||
# Ensure we have the right data in shlibs/pkgdata
|
||||
bitbake('libpng pango libx11 libxext jpeg')
|
||||
# Try adding a recipe
|
||||
tempsrc = os.path.join(self.tempdir, 'srctree')
|
||||
os.makedirs(tempsrc)
|
||||
recipefile = os.path.join(self.tempdir, 'libmatchbox.bb')
|
||||
srcuri = 'git://git.yoctoproject.org/libmatchbox'
|
||||
result = runCmd('recipetool create -o %s %s -x %s' % (recipefile, srcuri, tempsrc))
|
||||
self.assertTrue(os.path.isfile(recipefile), 'recipetool did not create recipe file; output:\n%s' % result.output)
|
||||
checkvars = {}
|
||||
checkvars['LICENSE'] = 'LGPLv2.1'
|
||||
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING;md5=7fbc338309ac38fefcd64b04bb903e34'
|
||||
checkvars['S'] = '${WORKDIR}/git'
|
||||
checkvars['PV'] = '1.0+git${SRCPV}'
|
||||
checkvars['SRC_URI'] = srcuri
|
||||
checkvars['DEPENDS'] = 'libpng pango libx11 libxext jpeg'
|
||||
inherits = ['autotools', 'pkgconfig']
|
||||
self._test_recipe_contents(recipefile, checkvars, inherits)
|
||||
|
Loading…
Reference in New Issue