1 # -*- coding: utf-8 -*- 2 3 #------------------------------------------------------------------------- 4 # Vulkan CTS 5 # ---------- 6 # 7 # Copyright (c) 2016 Google Inc. 8 # 9 # Licensed under the Apache License, Version 2.0 (the "License"); 10 # you may not use this file except in compliance with the License. 11 # You may obtain a copy of the License at 12 # 13 # http://www.apache.org/licenses/LICENSE-2.0 14 # 15 # Unless required by applicable law or agreed to in writing, software 16 # distributed under the License is distributed on an "AS IS" BASIS, 17 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 # See the License for the specific language governing permissions and 19 # limitations under the License. 20 # 21 #------------------------------------------------------------------------- 22 23 import os 24 from fnmatch import fnmatch 25 26 STATEMENT_PATTERN = "STATEMENT-*" 27 TEST_LOG_PATTERN = "*.qpa" 28 GIT_STATUS_PATTERN = "*git-status.txt" 29 GIT_LOG_PATTERN = "*git-log.txt" 30 PATCH_PATTERN = "*.patch" 31 SUMMARY_PATTERN = "cts-run-summary.xml" 32 33 class PackageDescription: 34 def __init__ (self, basePath, statement, testLogs, gitStatus, gitLog, patches, summary, conformVersion, conformOs, otherItems): 35 self.basePath = basePath 36 self.statement = statement 37 self.testLogs = testLogs 38 self.gitStatus = gitStatus 39 self.gitLog = gitLog 40 self.patches = patches 41 self.summary = summary 42 self.otherItems = otherItems 43 self.conformVersion = conformVersion 44 self.conformOs = conformOs 45 46 def getPackageDescription (packagePath): 47 allItems = os.listdir(packagePath) 48 statement = None 49 testLogs = [] 50 gitStatus = [] 51 gitLog = [] 52 patches = [] 53 summary = None 54 otherItems = [] 55 conformVersion = None 56 conformOs = None 57 58 for item in allItems: 59 if fnmatch(item, STATEMENT_PATTERN): 60 assert statement == None 61 statement = item 62 elif fnmatch(item, TEST_LOG_PATTERN): 63 testLogs.append(item) 64 elif fnmatch(item, GIT_STATUS_PATTERN): 65 gitStatus.append(item) 66 elif fnmatch(item, GIT_LOG_PATTERN): 67 gitLog.append((item, '.')) 68 elif fnmatch(item, PATCH_PATTERN): 69 patches.append(item) 70 elif fnmatch(item, SUMMARY_PATTERN): 71 assert summary == None 72 summary = item 73 else: 74 otherItems.append(item) 75 76 return PackageDescription(packagePath, statement, testLogs, gitStatus, gitLog, patches, summary, conformVersion, conformOs, otherItems) 77