summaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
authorAlex Vallée <avallee@google.com>2015-10-23 20:36:28 (GMT)
committerAlex Vallée <avallee@google.com>2015-10-23 20:36:28 (GMT)
commit8f658d63298c5fae29616b8d922d03bb7ea67c0c (patch)
tree3dd0d2c40c09c075d663428628ad094d611890c3 /misc
parent083b6b040681ec3d8ec3cd40f20406b9e6ec8d56 (diff)
downloadNinja-8f658d63298c5fae29616b8d922d03bb7ea67c0c.zip
Ninja-8f658d63298c5fae29616b8d922d03bb7ea67c0c.tar.gz
Ninja-8f658d63298c5fae29616b8d922d03bb7ea67c0c.tar.bz2
Fix wrapping file paths in Writer.comment
Long file names, especially with hyphens will get incorrectly wrapped by the comment method. Pass has_path=True to prevent this type of wrapping. This is mainly so that longer path names can show up in comments on their on line without breaking them up.
Diffstat (limited to 'misc')
-rw-r--r--misc/ninja_syntax.py7
-rwxr-xr-xmisc/ninja_syntax_test.py11
2 files changed, 16 insertions, 2 deletions
diff --git a/misc/ninja_syntax.py b/misc/ninja_syntax.py
index 8673518..091e054 100644
--- a/misc/ninja_syntax.py
+++ b/misc/ninja_syntax.py
@@ -21,8 +21,11 @@ class Writer(object):
def newline(self):
self.output.write('\n')
- def comment(self, text):
- for line in textwrap.wrap(text, self.width - 2):
+ def comment(self, text, has_path=False):
+ args = {}
+ if has_path:
+ args['break_long_words'] = args['break_on_hyphens'] = False
+ for line in textwrap.wrap(text, self.width - 2, **args):
self.output.write('# ' + line + '\n')
def variable(self, key, value, indent=0):
diff --git a/misc/ninja_syntax_test.py b/misc/ninja_syntax_test.py
index 36b2e7b..46ce382 100755
--- a/misc/ninja_syntax_test.py
+++ b/misc/ninja_syntax_test.py
@@ -45,6 +45,17 @@ class TestLineWordWrap(unittest.TestCase):
INDENT + 'y']) + '\n',
self.out.getvalue())
+ def test_comment_wrap(self):
+ # We should wrap the comments
+ self.n.comment('Hello there')
+ self.assertEqual('# Hello\n# there\n', self.out.getvalue())
+
+ def test_comment_wrap_filename(self):
+ # Filenames shoud not be wrapped
+ self.n.comment('Hello /usr/local/build-tools/bin', has_path=True)
+ self.assertEqual('# Hello\n# /usr/local/build-tools/bin\n',
+ self.out.getvalue())
+
def test_short_words_indented(self):
# Test that indent is taking into acount when breaking subsequent lines.
# The second line should not be ' to tree', as that's longer than the