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:
@@ -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
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user