def test_tool_mod(self):
     """Test modification of BuildCfg arguments and tool results."""
     ccopts = ['-m64']
     as_opts = ['--64']
     tool_opts = {'as': as_opts}
     cfg = BuildCfg(self.context,
                    'x86_64-linux-gnu',
                    tool_prefix='i686-pc-linux-gnu-',
                    ccopts=ccopts,
                    tool_opts=tool_opts)
     self.assertEqual(cfg.tool('as'), ['i686-pc-linux-gnu-as', '--64'])
     # Modifying the original tool_opts must not change the results
     # of the tool method.
     tool_opts['as'] = ['--32']
     self.assertEqual(cfg.tool('as'), ['i686-pc-linux-gnu-as', '--64'])
     # Likewise for elements of tool_opts.
     as_opts.append('--other')
     self.assertEqual(cfg.tool('as'), ['i686-pc-linux-gnu-as', '--64'])
     # Likewise, for ccopts.
     ccopts.append('-mavx')
     self.assertEqual(cfg.tool('gcc'), ['i686-pc-linux-gnu-gcc', '-m64'])
     # Modifying the result is also OK.
     res1 = cfg.tool('gcc')
     res1.append('-mavx')
     res2 = cfg.tool('gcc')
     self.assertEqual(res1, ['i686-pc-linux-gnu-gcc', '-m64', '-mavx'])
     self.assertEqual(res2, ['i686-pc-linux-gnu-gcc', '-m64'])
 def test_tool_basic(self):
     """Test basic use of the tool method."""
     cfg = BuildCfg(self.context, 'aarch64-linux-gnu')
     self.assertEqual(cfg.tool('gcc'), ['aarch64-linux-gnu-gcc'])
     self.assertEqual(cfg.tool('c-compiler'), ['aarch64-linux-gnu-gcc'])
     self.assertEqual(cfg.tool('c++-compiler'), ['aarch64-linux-gnu-g++'])
     cfg = BuildCfg(self.context,
                    'i686-pc-linux-gnu',
                    tool_prefix='i386-linux-')
     self.assertEqual(cfg.tool('ld'), ['i386-linux-ld'])
     cfg = BuildCfg(self.context,
                    'x86_64-linux-gnu',
                    tool_prefix='i686-pc-linux-gnu-',
                    ccopts=['-m64'],
                    tool_opts={'as': ['--64']})
     self.assertEqual(cfg.tool('objdump'), ['i686-pc-linux-gnu-objdump'])
     self.assertEqual(cfg.tool('c-compiler'),
                      ['i686-pc-linux-gnu-gcc', '-m64'])
     self.assertEqual(cfg.tool('c++-compiler'),
                      ['i686-pc-linux-gnu-g++', '-m64'])
     self.assertEqual(cfg.tool('c++'), ['i686-pc-linux-gnu-c++', '-m64'])
     self.assertEqual(cfg.tool('cpp'), ['i686-pc-linux-gnu-cpp', '-m64'])
     self.assertEqual(cfg.tool('g++'), ['i686-pc-linux-gnu-g++', '-m64'])
     self.assertEqual(cfg.tool('gcc'), ['i686-pc-linux-gnu-gcc', '-m64'])
     self.assertEqual(cfg.tool('as'), ['i686-pc-linux-gnu-as', '--64'])
     cfg = BuildCfg(self.context,
                    'x86_64-linux-gnu',
                    tool_prefix='i686-pc-linux-gnu-',
                    ccopts=['-m64'],
                    tool_opts={'g++': ['-fsomething']})
     self.assertEqual(cfg.tool('c-compiler'),
                      ['i686-pc-linux-gnu-gcc', '-m64'])
     self.assertEqual(cfg.tool('c++-compiler'),
                      ['i686-pc-linux-gnu-g++', '-m64', '-fsomething'])
     self.assertEqual(cfg.tool('g++'),
                      ['i686-pc-linux-gnu-g++', '-m64', '-fsomething'])
     self.assertEqual(cfg.tool('ld'), ['i686-pc-linux-gnu-ld'])