1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
from __future__ import print_function
import os
import shutil
import sys
import tempfile
import unittest
try:
from catkin_pkg.workspaces import ensure_workspace_marker, get_spaces, order_paths, \
CATKIN_WORKSPACE_MARKER_FILE
except ImportError as e:
raise ImportError('Please adjust your PYTHONPATH before running this test: %s' % str(e))
class WorkspacesTest(unittest.TestCase):
def test_ensure_workspace_marker(self):
root_dir = tempfile.mkdtemp()
try:
ensure_workspace_marker(root_dir)
self.assertTrue(os.path.exists(os.path.join(root_dir, CATKIN_WORKSPACE_MARKER_FILE)))
# assert no exception on revisit
ensure_workspace_marker(root_dir)
finally:
shutil.rmtree(root_dir)
def test_get_spaces(self):
self.assertEqual([], get_spaces([]))
root_dir = tempfile.mkdtemp()
try:
self.assertEqual([], get_spaces([root_dir]))
with open(os.path.join(root_dir, '.catkin'), 'a') as fhand:
fhand.write('')
self.assertEqual([root_dir], get_spaces([root_dir]))
finally:
shutil.rmtree(root_dir)
def test_order_paths(self):
self.assertEqual([], order_paths([], []))
self.assertEqual(['bar', 'baz'], order_paths(['bar', 'baz'], ['foo']))
self.assertEqual(['foo', 'bar'], order_paths(['bar', 'foo'], ['foo']))
self.assertEqual(['baz', 'foo', 'bar'], order_paths(['bar', 'foo', 'baz'], ['baz', 'foo']))
self.assertEqual(['foo' + os.sep + 'bim', 'bar'], order_paths(['bar', 'foo' + os.sep + 'bim'], ['foo']))
def test_order_paths_with_symlink(self):
if os.name == 'nt' and sys.version_info < (3, 8):
self.skipTest('symlinks are not resolved on Windows prior to Python 3.8')
root_dir = tempfile.mkdtemp()
try:
foo = os.path.join(root_dir, 'foo')
foo_inc = os.path.join(foo, 'include')
foo_ln = os.path.join(root_dir, 'foo_symlink')
try:
os.symlink(foo, foo_ln)
except (AttributeError, OSError):
self.skipTest('requires symlink availability')
self.assertEqual([foo, 'bar'], order_paths(['bar', foo], [foo_ln]))
self.assertEqual([foo_ln, 'bar'], order_paths(['bar', foo_ln], [foo]))
self.assertEqual([foo_inc, 'bar'], order_paths(['bar', foo_inc], [foo_ln]))
finally:
shutil.rmtree(root_dir)
|