Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code refactors to the ament_index_python test #43

Merged
merged 6 commits into from
Jan 27, 2020
Merged
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 17 additions & 45 deletions ament_index_python/test/test_ament_index_python.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# limitations under the License.

import os
from pathlib import Path
from pathlib import Path, PurePath

from ament_index_python import get_package_prefix
from ament_index_python import get_package_share_directory
Expand All @@ -33,24 +33,19 @@

def set_ament_prefix_path(subfolders):
paths = []
base_path = os.path.dirname(__file__)
base_path = Path(__file__).parent
for subfolder in subfolders:
path = os.path.join(base_path, subfolder)
if os.path.isdir(path):
paths.append(path)
path = base_path / subfolder
if path.is_dir():
paths.append(str(path))
ament_prefix_path = os.pathsep.join(paths)
os.environ['AMENT_PREFIX_PATH'] = ament_prefix_path


def test_empty_search_paths():
set_ament_prefix_path([])
try:
with pytest.raises(EnvironmentError):
get_search_paths()
assert False, 'get_search_paths() failed to raise exception'
except EnvironmentError:
pass
except Exception as e:
assert False, 'get_search_paths() raised wrong exception: ' + type(e)


def test_search_paths():
Expand Down Expand Up @@ -97,13 +92,8 @@ def test_unknown_resource():
exists = has_resource('resource_type4', 'bar')
assert not exists, 'Resource should not exist'

try:
with pytest.raises(LookupError):
get_resource('resource_type4', 'bar')
assert False, 'get_resource() failed to raise exception'
except LookupError:
pass
except Exception as e:
assert False, 'get_resource() raised wrong exception: ' + type(e)


def test_resource():
Expand All @@ -113,28 +103,27 @@ def test_resource():

resource, prefix = get_resource('resource_type4', 'foo')
assert resource == 'foo', 'Expected different content'
assert os.path.basename(prefix) == 'prefix1', 'Expected different prefix'
assert PurePath(prefix).name == 'prefix1', 'Expected different prefix'
dirk-thomas marked this conversation as resolved.
Show resolved Hide resolved


def test_resource_overlay():
set_ament_prefix_path(['prefix1', 'prefix2'])

resource, prefix = get_resource('resource_type5', 'foo')
assert resource == 'foo1', 'Expected different content'
assert os.path.basename(prefix) == 'prefix1', 'Expected different prefix'
assert PurePath(prefix).name == 'prefix1', 'Expected different prefix'


def test_get_packages_with_prefixes():
set_ament_prefix_path(['prefix1', 'prefix2'])

packages = get_packages_with_prefixes()
assert 'foo' in packages, "Expected to find 'foo'"
assert os.path.basename(packages['foo']) == 'prefix1', "Expected to find 'foo' in 'prefix1'"
assert PurePath(packages['foo']).name == 'prefix1', "Expected to find 'foo' in 'prefix1'"
assert 'bar' in packages, "Expected to find 'bar'"
assert os.path.basename(packages['bar']) == 'prefix1', "Expected to find 'bar' in 'prefix1'"
assert PurePath(packages['bar']).name == 'prefix1', "Expected to find 'bar' in 'prefix1'"
assert 'baz' in packages, "Expected to find 'baz'"
assert os.path.basename(packages['baz']) == 'prefix2', "Expected to find 'baz' in 'prefix2'"

assert PurePath(packages['baz']).name == 'prefix2', "Expected to find 'baz' in 'prefix2'"
os.environ['AMENT_PREFIX_PATH'] = '/path/does/not/exist'

assert not get_packages_with_prefixes(), 'Expected to find no packages'
Expand All @@ -144,26 +133,14 @@ def test_get_package_prefix():
set_ament_prefix_path(['prefix1', 'prefix2'])

def get_package_prefix_basename(package_name):
return os.path.basename(get_package_prefix(package_name))
return PurePath(get_package_prefix(package_name)).name

assert get_package_prefix_basename('foo') == 'prefix1', "Expected 'foo' in 'prefix1'"
# found in both prefix1 and prefix2, but prefix1 is ahead on the APP
Blast545 marked this conversation as resolved.
Show resolved Hide resolved
assert get_package_prefix_basename('bar') == 'prefix1', "Expected 'bar' in 'prefix2'"
assert get_package_prefix_basename('baz') == 'prefix2', "Expected 'baz' in 'prefix2'"

try:
get_package_prefix('does_not_exist')
except PackageNotFoundError:
pass
except Exception as exc:
assert False, 'Expected PackageNotFoundError, got: {}'.format(type(exc))

try:
with pytest.raises(PackageNotFoundError):
get_package_prefix('does_not_exist')
except KeyError:
pass
except Exception as exc:
assert False, 'Expected KeyError or subclass, got: {}'.format(type(exc))
Blast545 marked this conversation as resolved.
Show resolved Hide resolved


def test_get_package_share_directory():
Expand All @@ -172,23 +149,18 @@ def test_get_package_share_directory():
def get_package_share_directory_test(package_name, expect_prefix):
full_share_dir = get_package_share_directory(package_name)
left_over, dirname = os.path.split(full_share_dir)
assert dirname == package_name, "Expected package name '{}'".format(package_name)
assert dirname == package_name, f"Expected package name '{package_name}'"
left_over, dirname = os.path.split(left_over)
assert dirname == 'share', "Expected 'share'"
left_over, dirname = os.path.split(left_over)
assert dirname == expect_prefix, "Expected '{}'".format(expect_prefix)
assert dirname == expect_prefix, f"Expected '{expect_prefix}'"

get_package_share_directory_test('foo', 'prefix1')
# found in both prefix1 and prefix2, but prefix1 is ahead on the APP
Blast545 marked this conversation as resolved.
Show resolved Hide resolved
get_package_share_directory_test('bar', 'prefix1')
get_package_share_directory_test('baz', 'prefix2')

try:
with pytest.raises(PackageNotFoundError):
get_package_share_directory('does_not_exist')
except PackageNotFoundError:
pass
except Exception as exc:
assert False, 'Expected PackageNotFoundError, got: {}'.format(type(exc))


def test_get_resource_types():
Expand Down