changeset 593:99831ab37fd3

0.6dev: Making source-linking work also for Windows-style file references (as output by Windows slaves). Thanks to Doug Patterson for updated regexp. Closes #209.
author osimons
date Sun, 26 Jul 2009 13:36:15 +0000
parents 4848d9b7a3e5
children a4d3998fe0f3
files bitten/tests/web_ui.py bitten/web_ui.py
diffstat 2 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/tests/web_ui.py
+++ b/bitten/tests/web_ui.py
@@ -180,10 +180,16 @@
         comp = SourceFileLinkFormatter(self.env)
         formatter = comp.get_formatter(req, build)
 
+        # posix
         output = formatter(step, None, None, u'error in foo/bar.c: bad')
         self.assertEqual(Markup, type(output))
         self.assertEqual('error in <a href="/trac/browser/trunk/foo/bar.c">'
                          'foo/bar.c</a>: bad', output)
+        # windows
+        output = formatter(step, None, None, u'error in foo\\win.c: bad')
+        self.assertEqual(Markup, type(output))
+        self.assertEqual(r'error in <a href="/trac/browser/trunk/foo/win.c">'
+                         'foo\win.c</a>: bad', output)
 
     def test_format_bad_links(self):
         BuildConfig(self.env, name='test', path='trunk').insert()
@@ -240,10 +246,16 @@
         comp = SourceFileLinkFormatter(self.env)
         formatter = comp.get_formatter(req, build)
 
+        # posix
         output = formatter(step, None, None, u'error in foo/bar.c:123: bad')
         self.assertEqual(Markup, type(output))
         self.assertEqual('error in <a href="/trac/browser/trunk/foo/bar.c#L123">'
                          'foo/bar.c:123</a>: bad', output)
+        # windows
+        output = formatter(step, None, None, u'error in foo\\win.c:123: bad')
+        self.assertEqual(Markup, type(output))
+        self.assertEqual(r'error in <a href="/trac/browser/trunk/foo/win.c#L123">'
+                         'foo\win.c:123</a>: bad', output)
 
     def test_format_link_not_in_repos_with_line(self):
         BuildConfig(self.env, name='test', path='trunk').insert()
--- a/bitten/web_ui.py
+++ b/bitten/web_ui.py
@@ -698,7 +698,7 @@
 
     implements(ILogFormatter)
 
-    _fileref_re = re.compile('(?P<prefix>-[A-Za-z])?(?P<path>[\w.-]+(?:/[\w.-]+)+)(?P<line>(:\d+))?')
+    _fileref_re = re.compile(r'(?P<prefix>-[A-Za-z])?(?P<path>[\w.-]+(?:[\\/][\w.-]+)+)(?P<line>:\d+)?')
 
     def get_formatter(self, req, build):
         """Return the log message formatter function."""
Copyright (C) 2012-2017 Edgewall Software