summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--misc/ninja_syntax.py7
-rwxr-xr-xmisc/ninja_test.py21
2 files changed, 27 insertions, 1 deletions
diff --git a/misc/ninja_syntax.py b/misc/ninja_syntax.py
index b73a002..2e487d1 100644
--- a/misc/ninja_syntax.py
+++ b/misc/ninja_syntax.py
@@ -66,7 +66,12 @@ class Writer(object):
' '.join(all_inputs)))
if variables:
- for key, val in variables:
+ if isinstance(variables, dict):
+ iterator = variables.iteritems()
+ else:
+ iterator = iter(variables)
+
+ for key, val in iterator:
self.variable(key, val, indent=1)
return outputs
diff --git a/misc/ninja_test.py b/misc/ninja_test.py
index 65dbec6..897de72 100755
--- a/misc/ninja_test.py
+++ b/misc/ninja_test.py
@@ -111,5 +111,26 @@ foo = a$$ $
''',
self.out.getvalue())
+class TestBuild(unittest.TestCase):
+ def setUp(self):
+ self.out = StringIO()
+ self.n = ninja_syntax.Writer(self.out)
+
+ def test_variables_dict(self):
+ self.n.build('out', 'cc', 'in', variables={'name': 'value'})
+ self.assertEqual('''\
+build out: cc in
+ name = value
+''',
+ self.out.getvalue())
+
+ def test_variables_list(self):
+ self.n.build('out', 'cc', 'in', variables=[('name', 'value')])
+ self.assertEqual('''\
+build out: cc in
+ name = value
+''',
+ self.out.getvalue())
+
if __name__ == '__main__':
unittest.main()