18724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org#!/usr/bin/env python
28724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org
38724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org# Copyright (c) 2012 Google Inc. All rights reserved.
48724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org# Use of this source code is governed by a BSD-style license that can be
58724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org# found in the LICENSE file.
68724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org
78724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org""" Unit tests for the ninja.py file. """
88724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org
98724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.orgimport gyp.generator.ninja as ninja
108724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.orgimport unittest
118724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.orgimport StringIO
12510f520d4d41f80f87e65076f7792baad02bd4b8scottmg@chromium.orgimport sys
138724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.orgimport TestCommon
148724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org
158724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org
168724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.orgclass TestPrefixesAndSuffixes(unittest.TestCase):
178fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org  def test_BinaryNamesWindows(self):
188fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    writer = ninja.NinjaWriter('foo', 'wee', '.', '.', 'build.ninja', '.',
198fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        'build.ninja', 'win')
208fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    spec = { 'target_name': 'wee' }
218fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue(writer.ComputeOutputFileName(spec, 'executable').
228fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        endswith('.exe'))
238fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue(writer.ComputeOutputFileName(spec, 'shared_library').
248fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        endswith('.dll'))
258fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue(writer.ComputeOutputFileName(spec, 'static_library').
268fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        endswith('.lib'))
278724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org
288fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org  def test_BinaryNamesLinux(self):
298fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    writer = ninja.NinjaWriter('foo', 'wee', '.', '.', 'build.ninja', '.',
308fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        'build.ninja', 'linux')
318fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    spec = { 'target_name': 'wee' }
328fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue('.' not in writer.ComputeOutputFileName(spec,
338fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org                                                            'executable'))
348fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue(writer.ComputeOutputFileName(spec, 'shared_library').
358fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        startswith('lib'))
368fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue(writer.ComputeOutputFileName(spec, 'static_library').
378fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        startswith('lib'))
388fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue(writer.ComputeOutputFileName(spec, 'shared_library').
398fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        endswith('.so'))
408fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org    self.assertTrue(writer.ComputeOutputFileName(spec, 'static_library').
418fcfea42b6d343297e8b6b786d85fa5ad862fc30thakis@chromium.org        endswith('.a'))
428724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org
438724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.orgif __name__ == '__main__':
448724b1fac5a20c24eef69df66e2bfbbb50426c87scottmg@chromium.org  unittest.main()
45