From 16e4419e88925b82c1158fcfbbb78c2e30f91905 Mon Sep 17 00:00:00 2001 From: Evan Jones Date: Wed, 4 Jan 2012 14:58:42 -0500 Subject: ninja_syntax.py: Fix a bug when passing dict variables to Writer.build() Add a test to cover both dict and list variables. --- misc/ninja_syntax.py | 7 ++++++- misc/ninja_test.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) 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() -- cgit v0.12