Improvements to frontend.py
* Naming convention changes * Compile-time errors fixes * Minor API improvements for frontends
This commit is contained in:
parent
f0fe7ee7ad
commit
21554e5f00
@ -56,7 +56,7 @@ class DeepStateFrontend(object):
|
|||||||
|
|
||||||
|
|
||||||
# in case name supplied as `bin/fuzzer`, strip executable name
|
# in case name supplied as `bin/fuzzer`, strip executable name
|
||||||
if name.contains('/'):
|
if '/' in name:
|
||||||
self.name = name.split('/')[-1]
|
self.name = name.split('/')[-1]
|
||||||
else:
|
else:
|
||||||
self.name = name
|
self.name = name
|
||||||
@ -80,29 +80,33 @@ class DeepStateFrontend(object):
|
|||||||
raise RuntimeError(f"{self.compiler} interrupted due to exception:", e)
|
raise RuntimeError(f"{self.compiler} interrupted due to exception:", e)
|
||||||
|
|
||||||
|
|
||||||
def cli_command(self, cmd_dict, pre_cmd=None):
|
def cli_command(self, cmd_dict, compiler=None, cli_other=None):
|
||||||
"""
|
"""
|
||||||
provides an interface for constructing proper command to be passed
|
provides an interface for constructing proper command to be passed
|
||||||
to fuzzer cli executable.
|
to fuzzer cli executable.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# turn arg mapping into viable cli args
|
# turn arg mapping into viable cli args
|
||||||
cmd_args = [f"{flag}={value}" if value is not None else flag
|
cmd_args = [flag, value if value is not None else flag
|
||||||
for flag, value in cmd_dict.items()]
|
for flag, value in cmd_dict.items()]
|
||||||
|
|
||||||
# prepends another executable as command (i.e running a compiler like 'dotnet')
|
# prepends compiler executable if specified
|
||||||
if pre_cmd is not None:
|
if compiler is not None:
|
||||||
self.cmd = [pre_cmd, self.fuzzer]
|
self.cmd = [compiler, self.fuzzer]
|
||||||
else:
|
else:
|
||||||
self.cmd = [self.fuzzer]
|
self.cmd = [self.fuzzer]
|
||||||
|
|
||||||
|
# create command to execute by fuzzer, append any other optional arguments
|
||||||
self.cmd += cmd_args
|
self.cmd += cmd_args
|
||||||
|
if cli_other is not None:
|
||||||
|
self.cmd += cli_other
|
||||||
|
|
||||||
|
|
||||||
def execute_fuzzer(self):
|
def execute_fuzzer(self):
|
||||||
"""
|
"""
|
||||||
takes constructed cli command and executes fuzzer with subprocess.call
|
takes constructed cli command and executes fuzzer with subprocess.call
|
||||||
"""
|
"""
|
||||||
|
print(self.cmd)
|
||||||
try:
|
try:
|
||||||
r = subprocess.call(self.cmd)
|
r = subprocess.call(self.cmd)
|
||||||
print(f"{self.name} finished with exit code", r)
|
print(f"{self.name} finished with exit code", r)
|
||||||
@ -119,6 +123,7 @@ class DeepStateFrontend(object):
|
|||||||
|
|
||||||
_ARGS = None
|
_ARGS = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
def parse_args(cls):
|
def parse_args(cls):
|
||||||
if cls._ARGS:
|
if cls._ARGS:
|
||||||
return cls._ARGS
|
return cls._ARGS
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user