oe-selftest: add tests for simple devtool add / recipetool create URL case
Add an oe-selftest test case for the newly supported syntax with only the remote URL specified (auto-detecting name and version). (From OE-Core rev: 7c7df9f62fe15578af0420c63e320c317e058708) 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
891673101e
commit
c2435b1181
|
@ -15,18 +15,43 @@ class DevtoolBase(oeSelfTest):
|
|||
|
||||
def _test_recipe_contents(self, recipefile, checkvars, checkinherits):
|
||||
with open(recipefile, 'r') as f:
|
||||
invar = None
|
||||
invalue = None
|
||||
for line in f:
|
||||
if '=' in line:
|
||||
var = None
|
||||
if invar:
|
||||
value = line.strip().strip('"')
|
||||
if value.endswith('\\'):
|
||||
invalue += ' ' + value[:-1].strip()
|
||||
continue
|
||||
else:
|
||||
invalue += ' ' + value.strip()
|
||||
var = invar
|
||||
value = invalue
|
||||
invar = None
|
||||
elif '=' 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 '):
|
||||
if value.endswith('\\'):
|
||||
invalue = value[:-1].strip()
|
||||
invar = var
|
||||
continue
|
||||
elif line.startswith('inherit '):
|
||||
inherits = line.split()[1:]
|
||||
|
||||
self.assertEqual(checkvars, {}, 'Some variables not found: %s' % checkvars)
|
||||
if var and var in checkvars:
|
||||
needvalue = checkvars.pop(var)
|
||||
if needvalue is None:
|
||||
self.fail('Variable %s should not appear in recipe')
|
||||
self.assertEqual(value, needvalue, 'values for %s do not match' % var)
|
||||
|
||||
|
||||
missingvars = {}
|
||||
for var, value in checkvars.iteritems():
|
||||
if value is not None:
|
||||
missingvars[var] = value
|
||||
self.assertEqual(missingvars, {}, 'Some expected variables not found in recipe: %s' % checkvars)
|
||||
|
||||
for inherit in checkinherits:
|
||||
self.assertIn(inherit, inherits, 'Missing inherit of %s' % inherit)
|
||||
|
@ -304,6 +329,32 @@ class DevtoolTests(DevtoolBase):
|
|||
checkvars['SRCREV'] = checkrev
|
||||
self._test_recipe_contents(recipefile, checkvars, [])
|
||||
|
||||
def test_devtool_add_fetch_simple(self):
|
||||
# Fetch source from a remote URL, auto-detecting name
|
||||
tempdir = tempfile.mkdtemp(prefix='devtoolqa')
|
||||
self.track_for_cleanup(tempdir)
|
||||
testver = '1.6.0'
|
||||
url = 'http://www.ivarch.com/programs/sources/pv-%s.tar.bz2' % testver
|
||||
testrecipe = 'pv'
|
||||
srcdir = os.path.join(self.workspacedir, 'sources', testrecipe)
|
||||
# Test devtool add
|
||||
self.track_for_cleanup(self.workspacedir)
|
||||
self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
|
||||
result = runCmd('devtool add %s' % url)
|
||||
self.assertTrue(os.path.exists(os.path.join(self.workspacedir, 'conf', 'layer.conf')), 'Workspace directory not created. %s' % result.output)
|
||||
self.assertTrue(os.path.isfile(os.path.join(srcdir, 'configure')), 'Unable to find configure script in source directory')
|
||||
# Test devtool status
|
||||
result = runCmd('devtool status')
|
||||
self.assertIn(testrecipe, result.output)
|
||||
self.assertIn(srcdir, result.output)
|
||||
# Check recipe
|
||||
recipefile = get_bb_var('FILE', testrecipe)
|
||||
self.assertIn('%s_%s.bb' % (testrecipe, testver), recipefile, 'Recipe file incorrectly named')
|
||||
checkvars = {}
|
||||
checkvars['S'] = None
|
||||
checkvars['SRC_URI'] = url.replace(testver, '${PV}')
|
||||
self._test_recipe_contents(recipefile, checkvars, [])
|
||||
|
||||
@testcase(1164)
|
||||
def test_devtool_modify(self):
|
||||
# Clean up anything in the workdir/sysroot/sstate cache
|
||||
|
|
|
@ -401,6 +401,25 @@ class RecipetoolTests(RecipetoolBase):
|
|||
inherits = ['autotools', 'pkgconfig']
|
||||
self._test_recipe_contents(recipefile, checkvars, inherits)
|
||||
|
||||
def test_recipetool_create_simple(self):
|
||||
# Try adding a recipe
|
||||
temprecipe = os.path.join(self.tempdir, 'recipe')
|
||||
os.makedirs(temprecipe)
|
||||
pv = '1.7.3.0'
|
||||
srcuri = 'http://www.dest-unreach.org/socat/download/socat-%s.tar.bz2' % pv
|
||||
result = runCmd('recipetool create %s -o %s' % (srcuri, temprecipe))
|
||||
dirlist = os.listdir(temprecipe)
|
||||
if len(dirlist) < 1 or not os.path.isfile(os.path.join(temprecipe, dirlist[0])):
|
||||
self.fail('recipetool did not create recipe file; output:\n%s' % result.output)
|
||||
self.assertEqual(dirlist[0], 'socat_%s.bb' % pv, 'Recipe file incorrectly named')
|
||||
checkvars = {}
|
||||
checkvars['LICENSE'] = 'Unknown GPLv2'
|
||||
checkvars['LIC_FILES_CHKSUM'] = 'file://COPYING.OpenSSL;md5=5c9bccc77f67a8328ef4ebaf468116f4 file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263'
|
||||
# We don't check DEPENDS since they are variable for this recipe depending on what's in the sysroot
|
||||
checkvars['S'] = None
|
||||
checkvars['SRC_URI'] = srcuri.replace(pv, '${PV}')
|
||||
inherits = ['autotools']
|
||||
self._test_recipe_contents(os.path.join(temprecipe, dirlist[0]), checkvars, inherits)
|
||||
|
||||
class RecipetoolAppendsrcBase(RecipetoolBase):
|
||||
def _try_recipetool_appendsrcfile(self, testrecipe, newfile, destfile, options, expectedlines, expectedfiles):
|
||||
|
|
Loading…
Reference in New Issue