1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-03-21 18:18:41 +00:00

framework/resource: add match_path method

This method is used to partially match a resource; its implementation
cannot rely on the resource file actually being present and must match
against the specified path alone.

match() implementation now defaults to match_path(), as for most
resource types, the path is sufficient to uniquely match a resource.
This commit is contained in:
Sergei Trofimov 2017-10-10 11:27:09 +01:00
parent a6cb9eb6a4
commit 5f7c64b089

View File

@ -72,6 +72,9 @@ class Resource(object):
self.owner = owner
def match(self, path):
return self.match_path(path)
def match_path(self, path):
raise NotImplementedError()
def __str__(self):
@ -86,7 +89,7 @@ class File(Resource):
super(File, self).__init__(owner)
self.path = path
def match(self, path):
def match_path(self, path):
return self.path == path
def __str__(self):
@ -102,7 +105,7 @@ class Executable(Resource):
self.abi = abi
self.filename = filename
def match(self, path):
def match_path(self, path):
return self.filename == os.path.basename(path)
def __str__(self):
@ -118,7 +121,7 @@ class ReventFile(Resource):
self.stage = stage
self.target = target
def match(self, path):
def match_path(self, path):
filename = os.path.basename(path)
parts = filename.split('.')
if len(parts) > 2:
@ -133,7 +136,7 @@ class JarFile(Resource):
kind = 'jar'
def match(self, path):
def match_path(self, path):
# An owner always has at most one jar file, so
# always match
return True
@ -154,6 +157,10 @@ class ApkFile(Resource):
self.exact_abi = exact_abi
self.supported_abi = supported_abi
def match_path(self, path):
ext = os.path.splitext(path)[1].lower()
return ext == '.apk'
def match(self, path):
name_matches = True
version_matches = True