| # Copyright 2014 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Unit tests for dep_tracker.py.""" |
| |
| from __future__ import print_function |
| |
| import os |
| |
| from chromite.lib import cros_test_lib |
| from chromite.lib import osutils |
| from chromite.lib import unittest_lib |
| from chromite.scripts import dep_tracker |
| |
| # Allow access private members for testing: |
| # pylint: disable=W0212 |
| |
| |
| class MainTest(cros_test_lib.OutputTestCase): |
| """Tests for the main() function.""" |
| |
| def testHelp(self): |
| """Test that --help is functioning.""" |
| argv = ['--help'] |
| |
| with self.OutputCapturer() as output: |
| # Running with --help should exit with code==0. |
| self.AssertFuncSystemExitZero(dep_tracker.main, argv) |
| |
| # Verify that a message beginning with "usage: " was printed. |
| stdout = output.GetStdout() |
| self.assertTrue(stdout.startswith('usage: ')) |
| |
| |
| class DepTrackerTest(cros_test_lib.TempDirTestCase): |
| """Tests for the DepTracker() class.""" |
| |
| def testSimpleDep(self): |
| unittest_lib.BuildELF(os.path.join(self.tempdir, 'libabc.so'), |
| ['func_a', 'func_b', 'func_c']) |
| unittest_lib.BuildELF(os.path.join(self.tempdir, 'abc_main'), |
| undefined_symbols=['func_b'], |
| used_libs=['abc'], |
| executable=True) |
| dt = dep_tracker.DepTracker(self.tempdir) |
| dt.Init() |
| dt.ComputeELFFileDeps() |
| |
| self.assertEquals(sorted(dt._files.keys()), ['abc_main', 'libabc.so']) |
| |
| def testFiletypeSet(self): |
| """Tests that the 'ftype' member is set for ELF files first.""" |
| unittest_lib.BuildELF(os.path.join(self.tempdir, 'libabc.so'), |
| ['func_a', 'func_b', 'func_c']) |
| osutils.WriteFile(os.path.join(self.tempdir, 'pyscript'), |
| "#!/usr/bin/python\nimport sys\nsys.exit(42)\n") |
| dt = dep_tracker.DepTracker(self.tempdir) |
| dt.Init() |
| |
| # ComputeELFFileDeps() should compute the file type of ELF files so we |
| # don't need to parse them again. |
| dt.ComputeELFFileDeps() |
| self.assertTrue('ftype' in dt._files['libabc.so']) |
| self.assertFalse('ftype' in dt._files['pyscript']) |
| |
| # ComputeFileTypes() shold compute the file type of every file. |
| dt.ComputeFileTypes() |
| self.assertTrue('ftype' in dt._files['libabc.so']) |
| self.assertTrue('ftype' in dt._files['pyscript']) |