[ci skip] update generated files
[scons.git] / test / D / Support / executablesSearch.py
blobc7da4ff0894d4c5cfd12897f29ce2662977af92a
1 # MIT License
3 # Copyright The SCons Foundation
5 # Permission is hereby granted, free of charge, to any person obtaining
6 # a copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish,
9 # distribute, sublicense, and/or sell copies of the Software, and to
10 # permit persons to whom the Software is furnished to do so, subject to
11 # the following conditions:
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
17 # KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18 # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 #! /usr/bin/env python
25 """
26 Support functions for all the tests.
27 """
29 if __name__ == '__main__':
30 import sys
31 import os.path
32 sys.path.append(os.path.abspath('../../../src/engine'))
34 from SCons.Environment import Base
36 path = Base()['ENV']['PATH']
38 def isExecutableOfToolAvailable(test, tool):
39 for executable in {
40 'dmd': ['dmd', 'gdmd'],
41 'gdc': ['gdc'],
42 'ldc': ['ldc2', 'ldc'],
43 }[tool]:
44 if test.where_is(executable, path):
45 return True
46 return False
49 if __name__ == '__main__':
50 import unittest
51 sys.path.append(os.path.abspath('../../../testing/framework'))
53 import TestSCons
55 class VariousTests(unittest.TestCase):
56 """
57 These tests are somewhat self referential in that
58 isExecutableOfToolAvailable uses where_is to do most of it's
59 work and we use the same function in the tests.
60 """
61 def setUp(self):
62 self.test = TestSCons.TestSCons()
64 def tearDown(self):
65 self.test = None
67 def test_None_tool(self):
68 self.assertRaises(KeyError, isExecutableOfToolAvailable, self.test, None)
70 def test_dmd_tool(self):
71 self.assertEqual(
72 self.test.where_is('dmd', path) is not None or self.test.where_is('gdmd', path) is not None,
73 isExecutableOfToolAvailable(self.test, 'dmd'))
75 def test_gdc_tool(self):
76 self.assertEqual(
77 self.test.where_is('gdc', path) is not None,
78 isExecutableOfToolAvailable(self.test, 'gdc'))
80 def test_ldc_tool(self):
81 self.assertEqual(
82 self.test.where_is('ldc2', path) is not None or self.test.where_is('ldc', path) is not None,
83 isExecutableOfToolAvailable(self.test, 'ldc'))
85 unittest.main()