Skip to content

Commit a0e64df

Browse files
committed
Make unit tests aware of FindInstalledPackagesExtensionPoint
Signed-off-by: Shane Loretz <[email protected]>
1 parent 3a73414 commit a0e64df

File tree

1 file changed

+67
-43
lines changed

1 file changed

+67
-43
lines changed

test/test_shell.py

+67-43
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414
from colcon_core.shell import get_colcon_prefix_path
1515
from colcon_core.shell import get_command_environment
1616
from colcon_core.shell import get_environment_variables
17+
from colcon_core.shell import get_find_installed_packages_extensions
1718
from colcon_core.shell import get_shell_extensions
19+
from colcon_core.shell import FindInstalledPackagesExtensionPoint
1820
from colcon_core.shell import ShellExtensionPoint
21+
from colcon_core.shell.installed_packages import IsolatedInstalledPackageFinder
22+
from colcon_core.shell.installed_packages import MergedInstalledPackageFinder
1923
from mock import Mock
2024
from mock import patch
2125
import pytest
@@ -312,6 +316,22 @@ def test_check_dependency_availability():
312316
assert '--packages-ignore pkgA' in warn.call_args[0][0]
313317

314318

319+
class FIExtension1(FindInstalledPackagesExtensionPoint):
320+
PRIORITY = 90
321+
322+
323+
class FIExtension2(FindInstalledPackagesExtensionPoint):
324+
pass
325+
326+
327+
def test_get_find_installed_packages_extensions():
328+
with EntryPointContext(extension1=FIExtension1, extension2=FIExtension2):
329+
extensions = get_find_installed_packages_extensions()
330+
assert list(extensions.keys()) == [100, 90]
331+
assert list(extensions[100].keys()) == ['extension2']
332+
assert list(extensions[90].keys()) == ['extension1']
333+
334+
315335
def test_find_installed_packages_in_environment():
316336
with TemporaryDirectory(prefix='test_colcon_') as prefix_path:
317337
prefix_path = Path(prefix_path)
@@ -339,51 +359,55 @@ def test_find_installed_packages_in_environment():
339359

340360

341361
def test_find_installed_packages():
342-
with TemporaryDirectory(prefix='test_colcon_') as install_base:
343-
install_base = Path(install_base)
344-
345-
# install base doesn't exist
346-
assert find_installed_packages(install_base) is None
362+
with EntryPointContext(
363+
colcon_isolated=IsolatedInstalledPackageFinder,
364+
colcon_merged=MergedInstalledPackageFinder
365+
):
366+
with TemporaryDirectory(prefix='test_colcon_') as install_base:
367+
install_base = Path(install_base)
347368

348-
# unknown install layout
349-
marker_file = install_base / '.colcon_install_layout'
350-
marker_file.write_text('unknown')
351-
assert find_installed_packages(install_base) is None
369+
# install base doesn't exist
370+
assert find_installed_packages(install_base) is None
352371

353-
# package index directory doesn't exist
354-
marker_file.write_text('merged')
355-
packages = find_installed_packages(install_base)
356-
assert len(packages) == 0
357-
358-
with patch(
359-
'colcon_core.shell.installed_packages'
360-
'.get_relative_package_index_path',
361-
return_value=Path('relative/package/index')
362-
) as rel_path:
363-
# setup for isolated case
364-
(install_base / 'dummy_file').write_text('')
365-
(install_base / '.hidden_dir').mkdir()
366-
(install_base / 'dummy_dir' / rel_path() / 'dummy_dir').mkdir(
367-
parents=True)
368-
(install_base / 'pkgA' / rel_path()).mkdir(parents=True)
369-
(install_base / 'pkgA' / rel_path() / 'pkgA').write_text('')
370-
371-
# setup for merged case
372-
(install_base / rel_path() / 'dummy_dir').mkdir(parents=True)
373-
(install_base / rel_path() / '.dummy').write_text('')
374-
(install_base / rel_path() / 'pkgB').write_text('')
375-
(install_base / rel_path() / 'pkgC').write_text('')
376-
377-
marker_file.write_text('isolated')
378-
packages = find_installed_packages(install_base)
379-
assert len(packages) == 1
380-
assert 'pkgA' in packages.keys()
381-
assert packages['pkgA'] == install_base / 'pkgA'
372+
# unknown install layout
373+
marker_file = install_base / '.colcon_install_layout'
374+
marker_file.write_text('unknown')
375+
assert find_installed_packages(install_base) is None
382376

377+
# package index directory doesn't exist
383378
marker_file.write_text('merged')
384379
packages = find_installed_packages(install_base)
385-
assert len(packages) == 2
386-
assert 'pkgB' in packages.keys()
387-
assert packages['pkgC'] == install_base
388-
assert 'pkgC' in packages.keys()
389-
assert packages['pkgB'] == install_base
380+
assert len(packages) == 0
381+
382+
with patch(
383+
'colcon_core.shell.installed_packages'
384+
'.get_relative_package_index_path',
385+
return_value=Path('relative/package/index')
386+
) as rel_path:
387+
# setup for isolated case
388+
(install_base / 'dummy_file').write_text('')
389+
(install_base / '.hidden_dir').mkdir()
390+
(install_base / 'dummy_dir' / rel_path() / 'dummy_dir').mkdir(
391+
parents=True)
392+
(install_base / 'pkgA' / rel_path()).mkdir(parents=True)
393+
(install_base / 'pkgA' / rel_path() / 'pkgA').write_text('')
394+
395+
# setup for merged case
396+
(install_base / rel_path() / 'dummy_dir').mkdir(parents=True)
397+
(install_base / rel_path() / '.dummy').write_text('')
398+
(install_base / rel_path() / 'pkgB').write_text('')
399+
(install_base / rel_path() / 'pkgC').write_text('')
400+
401+
marker_file.write_text('isolated')
402+
packages = find_installed_packages(install_base)
403+
assert len(packages) == 1
404+
assert 'pkgA' in packages.keys()
405+
assert packages['pkgA'] == install_base / 'pkgA'
406+
407+
marker_file.write_text('merged')
408+
packages = find_installed_packages(install_base)
409+
assert len(packages) == 2
410+
assert 'pkgB' in packages.keys()
411+
assert packages['pkgC'] == install_base
412+
assert 'pkgC' in packages.keys()
413+
assert packages['pkgB'] == install_base

0 commit comments

Comments
 (0)