def check_post_err( fn: Callable, optionset: AnalysisOptionSet = AnalysisOptionSet() ) -> ComparableLists: local_opts = AnalysisOptionSet(max_iterations=20) options = local_opts.overlay(optionset) states = [m.state for m in run_checkables(analyze_function(fn, options))] return (states, [MessageType.POST_ERR])
def check_fail( fn: Callable, optionset: AnalysisOptionSet = AnalysisOptionSet() ) -> ComparableLists: local_opts = AnalysisOptionSet(max_iterations=40, per_condition_timeout=5) options = local_opts.overlay(optionset) states = [m.state for m in run_checkables(analyze_function(fn, options))] return (states, [MessageType.POST_FAIL])
def check_exec_err(fn: Callable, message_prefix='') -> ComparableLists: messages = analyze_function(fn) if all(m.message.startswith(message_prefix) for m in messages): return ([m.state for m in messages], [MessageType.EXEC_ERR]) else: return ([(m.state, m.message) for m in messages], [(MessageType.EXEC_ERR, message_prefix)])
def check_unknown( fn: Callable, optionset: AnalysisOptionSet = AnalysisOptionSet() ) -> ComparableLists: local_opts = AnalysisOptionSet(max_iterations=40, per_condition_timeout=3) options = local_opts.overlay(optionset) messages = [(m.state, m.message, m.traceback) for m in run_checkables(analyze_function(fn, options))] return (messages, [(MessageType.CANNOT_CONFIRM, "Not confirmed.", "")])
def check_ok( fn: Callable, optionset: AnalysisOptionSet = AnalysisOptionSet() ) -> ComparableLists: local_opts = AnalysisOptionSet(per_condition_timeout=5) options = local_opts.overlay(optionset) messages = [ message for message in run_checkables(analyze_function(fn, options)) if message.state != MessageType.CONFIRMED ] return (messages, [])
def test_callable_repr(self) -> None: def f(f1: Callable[[int], int]) -> int: """ post: _ != 1234 """ return f1(4) messages = run_checkables(analyze_function(f)) self.assertEqual(len(messages), 1) self.assertEqual( messages[0].message, "false when calling f(f1 = lambda a: 1234) (which returns 1234)", )
def check_exec_err( fn: Callable, message_prefix="", optionset: AnalysisOptionSet = AnalysisOptionSet() ) -> ComparableLists: local_opts = AnalysisOptionSet(max_iterations=20, per_condition_timeout=5) options = local_opts.overlay(optionset) messages = run_checkables(analyze_function(fn, options)) if all(m.message.startswith(message_prefix) for m in messages): return ([m.state for m in messages], [MessageType.EXEC_ERR]) else: return ( [(m.state, m.message) for m in messages], [(MessageType.EXEC_ERR, message_prefix)], )
def test_getattr(self) -> None: class Otter: def do_cute_human_things_with_hands(self) -> str: return "cuteness" def f(s: str) -> str: """ post: _ != "cuteness" """ try: return getattr(Otter(), s)() except: return "" messages = run_checkables( analyze_function( f, AnalysisOptionSet(max_iterations=20, per_condition_timeout=5))) self.assertEqual(len(messages), 1) self.assertEqual( messages[0].message, "false when calling f(s = 'do_cute_human_things_with_hands') (which returns 'cuteness')", )
def check_states( fn: Callable, optionset: AnalysisOptionSet = AnalysisOptionSet() ) -> Set[MessageType]: local_opts = AnalysisOptionSet(max_iterations=40, per_condition_timeout=5) options = local_opts.overlay(optionset) return set([m.state for m in run_checkables(analyze_function(fn, options))])
def check_ok(fn: Callable, options: Optional[AnalysisOptions] = None) -> ComparableLists: messages = analyze_function(fn, options) if options else analyze_function(fn) messages = [m for m in messages if m.state != MessageType.CONFIRMED] return (messages, [])
def check_unknown(fn: Callable) -> ComparableLists: return ([(m.state, m.message, m.traceback) for m in analyze_function(fn)], [(MessageType.CANNOT_CONFIRM, 'Not confirmed.', '')])
def check_post_err(fn: Callable) -> ComparableLists: return ([m.state for m in analyze_function(fn)], [MessageType.POST_ERR])
def check_fail(fn: Callable, options: Optional[AnalysisOptions] = None) -> ComparableLists: messages = analyze_function(fn, options) if options else analyze_function(fn) return ([m.state for m in messages], [MessageType.POST_FAIL])
def check_ok(fn: Callable, options: Optional[AnalysisOptions]=None) -> ComparableLists: messages = analyze_function(fn, options) if options else analyze_function(fn) return (messages, [])
def check_ok(fn: Callable) -> ComparableLists: return (analyze_function(fn), [])
def check_fail(fn: Callable) -> ComparableLists: return ([m.state for m in analyze_function(fn)], [MessageType.POST_FAIL])