mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-29 17:41:05 +02:00
Add better support for getting the path to crosutils.
Change-Id: I83a56ee38d8d666d3b71b4dc323e26076fab7d96 BUG=chromium-os:13498 TEST=Ran unittests. Review URL: http://codereview.chromium.org/6765001
This commit is contained in:
parent
63ca269c69
commit
0d5e4ae006
@ -11,8 +11,6 @@ import subprocess
|
|||||||
import sys
|
import sys
|
||||||
|
|
||||||
_STDOUT_IS_TTY = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()
|
_STDOUT_IS_TTY = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()
|
||||||
CROSUTILS_DIRECTORY = os.path.dirname(os.path.dirname(
|
|
||||||
os.path.realpath(__file__)))
|
|
||||||
|
|
||||||
# TODO(sosa): Move logging to logging module.
|
# TODO(sosa): Move logging to logging module.
|
||||||
|
|
||||||
@ -326,3 +324,40 @@ def UnmountImage(root_dir, stateful_dir):
|
|||||||
'--stateful_mountpt=%s' % stateful_dir,
|
'--stateful_mountpt=%s' % stateful_dir,
|
||||||
], print_cmd=False, redirect_stdout=True, redirect_stderr=True,
|
], print_cmd=False, redirect_stdout=True, redirect_stderr=True,
|
||||||
cwd=CROSUTILS_DIRECTORY)
|
cwd=CROSUTILS_DIRECTORY)
|
||||||
|
|
||||||
|
|
||||||
|
def GetCrosUtilsPath(source_dir_path=True):
|
||||||
|
"""Return the path to src/scripts.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
source_dir_path: If True, returns the path from the source code directory.
|
||||||
|
"""
|
||||||
|
if IsInsideChroot():
|
||||||
|
if source_dir_path:
|
||||||
|
return os.path.join(os.getenv('HOME'), 'trunk', 'src', 'scripts')
|
||||||
|
|
||||||
|
return os.path.join('/usr/lib/crosutils')
|
||||||
|
|
||||||
|
# Outside the chroot => from_source.
|
||||||
|
return os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')
|
||||||
|
|
||||||
|
|
||||||
|
def GetCrosUtilsBinPath(source_dir_path=True):
|
||||||
|
"""Return the path to crosutils/bin.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
source_dir_path: If True, returns the path from the source code directory.
|
||||||
|
"""
|
||||||
|
if IsInsideChroot() and not source_dir_path:
|
||||||
|
return '/usr/bin'
|
||||||
|
|
||||||
|
return os.path.join(GetCrosUtilsPath(source_dir_path), 'bin')
|
||||||
|
|
||||||
|
|
||||||
|
def IsInsideChroot():
|
||||||
|
"""Returns True if we are inside chroot."""
|
||||||
|
return os.path.exists('/etc/debian_chroot')
|
||||||
|
|
||||||
|
|
||||||
|
# TODO(sosa): Remove once all callers use method.
|
||||||
|
CROSUTILS_DIRECTORY = GetCrosUtilsPath(True)
|
||||||
|
@ -6,13 +6,14 @@
|
|||||||
|
|
||||||
"""Unit tests for cros_build_lib."""
|
"""Unit tests for cros_build_lib."""
|
||||||
|
|
||||||
|
import mox
|
||||||
import os
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
import cros_build_lib
|
import cros_build_lib
|
||||||
|
|
||||||
class CrosBuildLibTest(unittest.TestCase):
|
class CrosBuildLibTest(mox.MoxTestBase):
|
||||||
"""Test class for cros_build_lib."""
|
"""Test class for cros_build_lib."""
|
||||||
|
|
||||||
def testRunCommandSimple(self):
|
def testRunCommandSimple(self):
|
||||||
@ -103,6 +104,57 @@ class CrosBuildLibTest(unittest.TestCase):
|
|||||||
log_fh.close()
|
log_fh.close()
|
||||||
os.remove(log_file)
|
os.remove(log_file)
|
||||||
|
|
||||||
|
def testGetCrosUtilsPathInChroot(self):
|
||||||
|
"""Tests whether we can get crosutils from chroot."""
|
||||||
|
self.mox.StubOutWithMock(cros_build_lib, 'IsInsideChroot')
|
||||||
|
crosutils_path_src = '/home/' + os.getenv('USER') + 'trunk/src/scripts'
|
||||||
|
crosutils_path_installed = '/usr/lib/crosutils'
|
||||||
|
|
||||||
|
cros_build_lib.IsInsideChroot().MultipleTimes().AndReturn(True)
|
||||||
|
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
self.assertTrue(cros_build_lib.GetCrosUtilsPath(source_dir_path=True),
|
||||||
|
crosutils_path_src)
|
||||||
|
self.assertTrue(cros_build_lib.GetCrosUtilsPath(source_dir_path=False),
|
||||||
|
crosutils_path_installed)
|
||||||
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
|
def testGetCrosUtilsPathOutsideChroot(self):
|
||||||
|
"""Tests whether we can get crosutils from outside chroot."""
|
||||||
|
self.mox.StubOutWithMock(cros_build_lib, 'IsInsideChroot')
|
||||||
|
path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')
|
||||||
|
cros_build_lib.IsInsideChroot().MultipleTimes().AndReturn(False)
|
||||||
|
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
self.assertTrue(cros_build_lib.GetCrosUtilsPath(), path)
|
||||||
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
|
def testGetCrosUtilsBinPath(self):
|
||||||
|
"""Tests whether we can get crosutilsbin correctly."""
|
||||||
|
self.mox.StubOutWithMock(cros_build_lib, 'IsInsideChroot')
|
||||||
|
self.mox.StubOutWithMock(cros_build_lib, 'GetCrosUtilsPath')
|
||||||
|
src_path = '/fake/src'
|
||||||
|
chroot_src_path = '/chroot/fake/src'
|
||||||
|
chroot_path = '/usr/bin'
|
||||||
|
|
||||||
|
cros_build_lib.IsInsideChroot().AndReturn(False)
|
||||||
|
cros_build_lib.GetCrosUtilsPath(True).AndReturn(src_path)
|
||||||
|
cros_build_lib.IsInsideChroot().AndReturn(True)
|
||||||
|
cros_build_lib.GetCrosUtilsPath(True).AndReturn(chroot_src_path)
|
||||||
|
cros_build_lib.IsInsideChroot().AndReturn(True)
|
||||||
|
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
# Outside chroot.
|
||||||
|
self.assertTrue(cros_build_lib.GetCrosUtilsBinPath(source_dir_path=True),
|
||||||
|
src_path + '/bin')
|
||||||
|
# Rest inside chroot.
|
||||||
|
self.assertTrue(cros_build_lib.GetCrosUtilsBinPath(source_dir_path=True),
|
||||||
|
chroot_src_path + '/bin')
|
||||||
|
self.assertTrue(cros_build_lib.GetCrosUtilsBinPath(source_dir_path=False),
|
||||||
|
chroot_path)
|
||||||
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user