• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
23import os
24import sys
25
26sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..", "..", "scripts", "verify"))
27
28from package import getPackageDescription
29from verify import *
30from message import *
31
32def verifyGitStatusFiles (package):
33	messages = []
34
35	if len(package.gitStatus) > 1:
36		messages.append(error(package.basePath, "Exactly one git status file must be present, found %s" % len(package.gitStatus)))
37
38	messages += verifyGitStatus(package)
39
40	return messages
41
42def verifyGitLogFiles (package):
43	messages = []
44
45	if len(package.gitLog) > 1:
46		messages.append(error(package.basePath, "Exactly one git log file must be present, found %s" % len(package.gitLog)))
47
48	messages += verifyGitLog(package)
49
50	return messages
51
52def verifyTestLogs (package, mustpass):
53	messages	= []
54
55	for testLogFile in package.testLogs:
56		messages += verifyTestLog(os.path.join(package.basePath, testLogFile), mustpass)
57
58	if len(package.testLogs) == 0:
59		messages.append(error(package.basePath, "No test log files found"))
60
61	return messages
62
63def verifyPackage (package, mustpass):
64	messages = []
65
66	messages += verifyStatement(package)
67	messages += verifyGitStatusFiles(package)
68	messages += verifyGitLogFiles(package)
69	messages += verifyPatches(package)
70	messages += verifyTestLogs(package, mustpass)
71
72	for item in package.otherItems:
73		messages.append(warning(os.path.join(package.basePath, item), "Unknown file"))
74
75	return messages
76
77if __name__ == "__main__":
78	if len(sys.argv) != 3:
79		print "%s: [extracted submission package] [mustpass]" % sys.argv[0]
80		sys.exit(-1)
81
82	packagePath		= os.path.normpath(sys.argv[1])
83	mustpassPath	= sys.argv[2]
84	package			= getPackageDescription(packagePath)
85	mustpass		= readMustpass(mustpassPath)
86	messages		= verifyPackage(package, mustpass)
87
88	errors			= [m for m in messages if m.type == ValidationMessage.TYPE_ERROR]
89	warnings		= [m for m in messages if m.type == ValidationMessage.TYPE_WARNING]
90
91	for message in messages:
92		print str(message)
93
94	print ""
95
96	if len(errors) > 0:
97		print "Found %d validation errors and %d warnings!" % (len(errors), len(warnings))
98		sys.exit(-2)
99	elif len(warnings) > 0:
100		print "Found %d warnings, manual review required" % len(warnings)
101		sys.exit(-1)
102	else:
103		print "All validation checks passed"
104