Fixed broken subdir object extraction and moved tests.

This commit is contained in:
Jussi Pakkanen 2015-06-17 20:50:03 +03:00
parent ec74616bbd
commit 8f27cd399e
13 changed files with 9 additions and 4 deletions

View File

@ -176,9 +176,12 @@ class Backend():
if pathsegs[0] == 'subprojects':
pathsegs = pathsegs[2:]
fixedpath = os.sep.join(pathsegs)
objbase = os.path.join(fixedpath, osrc.fname).replace('/', '_').replace('\\', '_')
print('fname', osrc.fname)
objbase = osrc.fname.replace('/', '_').replace('\\', '_')
print('objbase', objbase)
objname = os.path.join(proj_dir_to_build_root,
targetdir, os.path.basename(objbase) + suffix)
print('objname', objname)
result.append(objname)
return result

View File

@ -1774,14 +1774,16 @@ class Interpreter():
self.validate_extraction(obj.held_object)
return obj.method_call(method_name, args, kwargs)
# Only permit object extraction from the same subproject
def validate_extraction(self, buildtarget):
if self.subproject_dir == '':
if not self.subdir.startswith(self.subproject_dir):
if buildtarget.subdir.startswith(self.subproject_dir):
raise InterpreterException('Tried to extract objects from a subproject target.')
else:
lead = '/'.join(self.subdir.split('/')[0:2])
if not buildtarget.subdir.startswith(lead):
raise InterpreterException('Tried to extract objects from a different subproject target.')
raise InterpreterException('Tried to extract objects from the main project from a subproject.')
if self.subdir.split('/')[1] != buildtarget.subdir.split('/')[1]:
raise InterpreterException('Tried to extract objects from a different subproject.')
def array_method_call(self, obj, method_name, args):
if method_name == 'contains':