- Turned the scyther.py into a usable standalone file.
- Added error tests.
This commit is contained in:
parent
7b8ac9c14a
commit
531f0aa469
@ -388,19 +388,13 @@ def SignalAttack (protocols, claim):
|
||||
# Furthermore, TempFileList is created.
|
||||
|
||||
parser = OptionParser()
|
||||
parser.add_option("-m","--match", dest="match",
|
||||
default = 0,
|
||||
help = "select matching method (0: no type flaws, 2: \
|
||||
full type flaws")
|
||||
scyther.default_options(parser)
|
||||
parser.add_option("-t","--tuplewidth", dest="tuplewidth",
|
||||
default = 2,
|
||||
help = "number of concurrent protocols to test, >=2")
|
||||
parser.add_option("-p","--protocols", dest="protocols",
|
||||
default = 0,
|
||||
help = "protocol selection (0: all, 1:literature only)")
|
||||
parser.add_option("-b","--bounds", dest="bounds",
|
||||
default = 0,
|
||||
help = "bound type selection (0: quickscan, 1:thorough)")
|
||||
parser.add_option("-s","--start", dest="startpercentage",
|
||||
default = 0,
|
||||
help = "start test at a certain percentage")
|
||||
|
@ -67,12 +67,18 @@ def from_others():
|
||||
|
||||
return list_ppfix(list, "../spdl/","")
|
||||
|
||||
def from_all():
|
||||
return from_literature() + from_others()
|
||||
|
||||
def select(type):
|
||||
list = from_literature()
|
||||
if int(type) == 0:
|
||||
n = int(type)
|
||||
if n == 0:
|
||||
# 0 means all protocols
|
||||
list = list + from_others()
|
||||
|
||||
return list
|
||||
|
||||
return from_all()
|
||||
elif n == 1:
|
||||
# 1 means from literature
|
||||
return from_literature()
|
||||
else:
|
||||
# Otherwise empty list
|
||||
return []
|
||||
|
||||
|
@ -19,9 +19,10 @@ import commands
|
||||
import os
|
||||
import sys
|
||||
from tempfile import NamedTemporaryFile, gettempdir
|
||||
from optparse import OptionParser
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# How to cal Scyther
|
||||
# How to call Scyther
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
# scyther should reside in $PATH
|
||||
@ -207,5 +208,72 @@ def default_parsed(plist, match, bounds):
|
||||
sys.exit()
|
||||
return parse(scout)
|
||||
|
||||
def default_options(parser):
|
||||
parser.add_option("-m","--match", dest="match",
|
||||
default = 0,
|
||||
help = "select matching method (0: no type flaws, 2: \
|
||||
full type flaws")
|
||||
parser.add_option("-b","--bounds", dest="bounds",
|
||||
default = 0,
|
||||
help = "bound type selection (0: quickscan, 1:thorough)")
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Standalone usage
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
def main():
|
||||
parser = OptionParser()
|
||||
default_options(parser)
|
||||
parser.add_option("-e","--errors", dest="errors",
|
||||
default = "False",
|
||||
action = "store_true",
|
||||
help = "detect compilation errors for all protocols [in list_all]")
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
# Subcases
|
||||
if options.errors != "False":
|
||||
# Detect errors in list
|
||||
|
||||
# Select specific list
|
||||
if args == []:
|
||||
# Get the list
|
||||
import protocollist
|
||||
plist = protocollist.from_all()
|
||||
else:
|
||||
plist = args
|
||||
|
||||
# Now check all things in the list
|
||||
errorcount = 0
|
||||
for p in plist:
|
||||
# Test and gather output
|
||||
(status,scout) = default_test([p], 0, 0)
|
||||
error = 0
|
||||
if status < 0 or status == 1:
|
||||
error = 1
|
||||
else:
|
||||
if scout.rfind("ERROR") != -1:
|
||||
error = 1
|
||||
if scout.rfind("error") != -1:
|
||||
error = 1
|
||||
if error == 1:
|
||||
print "There is an error in the output for", p
|
||||
errorcount = errorcount + 1
|
||||
|
||||
if errorcount > 0:
|
||||
print
|
||||
print "Scan complete. Found", errorcount, "error(s) in", len(plist), "files."
|
||||
|
||||
|
||||
else:
|
||||
# Not any other switch: just test the list then
|
||||
if args == []:
|
||||
print "Scyther default test needs at least one input file."
|
||||
sys.exit()
|
||||
(status,scout) = default_test(args, options.match, options.bounds)
|
||||
print "Status:", status
|
||||
print scout
|
||||
|
||||
# Only if main stuff
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user