diff --git a/colcon_cargo/package_identification/cargo_workspace.py b/colcon_cargo/package_identification/cargo_workspace.py index 823dfe8..86499f3 100644 --- a/colcon_cargo/package_identification/cargo_workspace.py +++ b/colcon_cargo/package_identification/cargo_workspace.py @@ -50,6 +50,14 @@ def identify(self, metadata): # noqa: D102 ) self.workspace_package_paths.update(ws_members) + workspace_metadata = content['workspace'].get('metadata', {}) + colcon_metadata = workspace_metadata.get('colcon', {}) + self.workspace_package_paths.update( + member + for pattern in colcon_metadata.get('additional-packages', ()) + for member in metadata.path.glob(pattern) + ) + if 'package' not in content: # Prevent any further attempts to discover packages in this # directory and let the workspace dictate where to look for diff --git a/test/rust-workspace/Cargo.toml b/test/rust-workspace/Cargo.toml index 2226f44..cf07f98 100644 --- a/test/rust-workspace/Cargo.toml +++ b/test/rust-workspace/Cargo.toml @@ -7,3 +7,6 @@ edition = "2018" [workspace] members = ["workspace-mem*"] default-members = ["workspace-mem*"] + +[workspace.metadata.colcon] +additional-packages = ["additional-pack*"] diff --git a/test/rust-workspace/additional-package/Cargo.toml b/test/rust-workspace/additional-package/Cargo.toml new file mode 100644 index 0000000..f3ad2cc --- /dev/null +++ b/test/rust-workspace/additional-package/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "additional-package" +version = "0.1.0" +authors = ["Test"] +edition = "2018" diff --git a/test/rust-workspace/additional-package/src/lib.rs b/test/rust-workspace/additional-package/src/lib.rs new file mode 100644 index 0000000..e69de29 diff --git a/test/rust-workspace/additional-package/src/main.rs b/test/rust-workspace/additional-package/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/test/rust-workspace/additional-package/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/test/test_build.py b/test/test_build.py index 6521cd7..163c525 100644 --- a/test/test_build.py +++ b/test/test_build.py @@ -98,10 +98,14 @@ def test_package_discovery(): cpi.PRIORITY: {'cargo': cpi}, }) - assert len(descs) == 1 + assert len(descs) == 2 + descs = sorted(descs, key=lambda d: d.name) desc = descs.pop() assert desc.type == 'cargo' assert desc.name == 'workspace-member' + desc = descs.pop() + assert desc.type == 'cargo' + assert desc.name == 'additional-package' # Ported from Python 3.13 implementation