Fix state.generate_testcase (#451)

* Use correct event name

* Add test for state.generate_testcase

Test merely tests that this function publishes the 'will_generate_testcase' event

* Properly test; make sure the callback executes and error if not

This is the most convoluted unit test I've ever written.

* "better"
This commit is contained in:
Mark Mossberg
2017-08-14 14:44:53 -04:00
committed by GitHub
parent 36a58810f9
commit 1d8e051522
2 changed files with 16 additions and 2 deletions
+1 -1
View File
@@ -372,4 +372,4 @@ class State(Eventful):
:param str name: Short string identifying this testcase used to prefix workspace entries.
:param str message: Longer description
"""
self.publish('will_generate_inputs', name, message)
self.publish('will_generate_testcase', name, message)
+15 -1
View File
@@ -4,6 +4,10 @@ from manticore.platforms import linux
from manticore.core.state import State
from manticore.core.smtlib import BitVecVariable, ConstraintSet
class _CallbackExecuted(Exception):
pass
class FakeMemory(object):
def __init__(self):
self._constraints = None
@@ -196,4 +200,14 @@ class StateTest(unittest.TestCase):
self.assertEqual( new_state.context['step'], 20)
new_new_state = pickle.loads(new_new_file)
self.assertEqual( new_new_state.context['step'], 30)
def _test_state_gen_helper(self, name, msg):
self.assertEqual(name, 'statename')
self.assertEqual(msg, 'statemsg')
raise _CallbackExecuted
def test_state_gen(self):
self.state.subscribe('will_generate_testcase', self._test_state_gen_helper)
with self.assertRaises(_CallbackExecuted):
self.state.generate_testcase('statename', 'statemsg')