- When parsing '\o/' the state Lexer::typeIdentifierEscape had no exit but a
  successful outcome, and looped.
- Fixed test.
This commit is contained in:
Paul Beckingham 2014-10-16 20:49:39 -04:00
parent bb060d5ff8
commit 51f08496b5
3 changed files with 11 additions and 5 deletions

View file

@ -167,6 +167,7 @@
- TW-1424 Using a date of '1824days' (in the future) fails (thanks to Black Ops - TW-1424 Using a date of '1824days' (in the future) fails (thanks to Black Ops
Testing). Testing).
- TW-1428 Add support for color.uda.<name>.<value> rules. - TW-1428 Add support for color.uda.<name>.<value> rules.
- TW-1436 Parser hangs when multiple slashes are used.
- Removed deprecated 'echo.command' setting, in favor of the 'header' and - Removed deprecated 'echo.command' setting, in favor of the 'header' and
'affected' verbosity tokens. 'affected' verbosity tokens.
- Removed deprecated 'edit.verbose' setting, in favor of the 'edit' verbosity - Removed deprecated 'edit.verbose' setting, in favor of the 'edit' verbosity

View file

@ -244,6 +244,12 @@ bool Lexer::token (std::string& result, Type& type)
type = typeEscapeUnicode; type = typeEscapeUnicode;
shift (); shift ();
} }
else
{
type = quote ? typeString : typeIdentifier;
result += utf8_character (_n0);
shift ();
}
break; break;
case typeEscape: case typeEscape:

View file

@ -15,7 +15,7 @@ class TestBug1436(TestCase):
self.t = Task() self.t = Task()
def test_parser_hangs_with_slashes(self): def test_parser_hangs_with_slashes(self):
"""Parser hangs with slashes""" """Parser hangs with backslashes"""
expected = "Cheer everyone up \o/" expected = "Cheer everyone up \o/"
code, out, err = self.t(("add", expected)) code, out, err = self.t(("add", expected))
self.assertIn("Created task 1", out) self.assertIn("Created task 1", out)
@ -24,13 +24,12 @@ class TestBug1436(TestCase):
self.assertIn(expected, out) self.assertIn(expected, out)
def test_parser_ending_escape_slash(self): def test_parser_ending_escape_slash(self):
"""Task created but not found with ending slash""" """Task created but not found with ending backslash"""
expected = "Use this slash \\" code, out, err = self.t(("add", "Use this backslash \\\\"))
code, out, err = self.t(("add", expected))
self.assertIn("Created task 1", out) self.assertIn("Created task 1", out)
code, out, err = self.t(("list",)) code, out, err = self.t(("list",))
self.assertIn(expected, out) self.assertIn("Use this backslash \\", out)
if __name__ == "__main__": if __name__ == "__main__":