def test_is_entry_incomplete(self): entries, _, __ = parser.parse_string(""" 2014-01-27 * "UNION MARKET" Liabilities:US:Amex:BlueCash -22.02 USD Expenses:Food:Grocery 22.02 USD 2014-01-27 * "UNION MARKET" Liabilities:US:Amex:BlueCash -22.02 USD Expenses:Food:Grocery """, dedent=True) self.assertFalse(parser.is_entry_incomplete(entries[0])) self.assertTrue(parser.is_entry_incomplete(entries[1]))
def read_string_or_entries(entries_or_str): """Read a string of entries or just entries. Args: entries_or_str: Either a list of directives, or a string containing directives. Returns: A list of directives. """ if isinstance(entries_or_str, str): entries, parse_errors, options_map = parser.parse_string( textwrap.dedent(entries_or_str)) # Don't accept incomplete entries either. if any(parser.is_entry_incomplete(entry) for entry in entries): raise TestError("Entries in assertions may not use interpolation.") entries, booking_errors = booking.book(entries, options_map) errors = parse_errors + booking_errors # Don't tolerate errors. if errors: oss = io.StringIO() printer.print_errors(errors, file=oss) raise TestError("Unexpected errors in expected: {}".format( oss.getvalue())) else: assert isinstance(entries_or_str, list), "Expecting list: {}".format(entries_or_str) entries = entries_or_str return entries
def read_string_or_entries(entries_or_str, allow_incomplete=False): """Read a string of entries or just entries. Args: entries_or_str: Either a list of directives, or a string containing directives. allow_incomplete: A boolean, true if we allow incomplete inputs and perform light-weight booking. Returns: A list of directives. """ if isinstance(entries_or_str, str): entries, errors, options_map = parser.parse_string( textwrap.dedent(entries_or_str)) if allow_incomplete: # Do a simplistic local conversion in order to call the comparison. entries = [_local_booking(entry) for entry in entries] else: # Don't accept incomplete entries either. if any(parser.is_entry_incomplete(entry) for entry in entries): raise TestError( "Entries in assertions may not use interpolation.") entries, booking_errors = booking.book(entries, options_map) errors = errors + booking_errors # Don't tolerate errors. if errors: oss = io.StringIO() printer.print_errors(errors, file=oss) raise TestError("Unexpected errors in expected: {}".format( oss.getvalue())) else: assert isinstance(entries_or_str, list), "Expecting list: {}".format(entries_or_str) entries = entries_or_str return entries