Skip to content

An extension for colcon-core to support Rust projects built with Cargo

License

Notifications You must be signed in to change notification settings

colcon/colcon-cargo

Repository files navigation

colcon-cargo

CI

An extension for colcon-core to support Rust projects built with Cargo.

Install

$ pip3 install --user --upgrade git+https://github.com/colcon/colcon-cargo.git

Usage / Minimal example

Build a sample workspace
$ mkdir ws/
$ cd ws/
$ cargo init hello_world
$ cargo init hello_world2
$ tree .

.
├── hello-world
│   ├── Cargo.toml
│   └── src
│       └── main.rs
└── hello-world2
    ├── Cargo.toml
    └── src
        └── main.rs

4 directories, 4 files

Verify that cargo detects the Rust packages:

$ colcon list

hello-world     hello-world     (cargo)
hello-world2    hello-world2    (cargo)

Build them with Cargo:

$ colcon build

Starting >>> hello_world
Starting >>> hello_world_2
Finished <<< hello_world_2 [1.84s]
Finished <<< hello_world [1.94s]

Summary: 2 packages finished [2.34s]

Source the generated install/ directory and execute:

$ source install/setup.bash
$ hello-world

Hello, world!

$ hello-world2

Hello, world!

Testing

Test the packages with cargo:

$ colcon test
Starting >>> hello_world_2
Starting >>> hello_world
Finished <<< hello_world [0.24s]                                           
Finished <<< hello_world_2 [0.25s]

Summary: 2 packages finished [0.39s]

Inspect the test results (cargo test and cargo fmt --check). They should all succeed for the empty templates:

$ colcon test-result --all
build/hello_world_2/cargo_test.xml: 2 tests, 0 errors, 0 failures, 0 skipped
build/hello_world/cargo_test.xml: 2 tests, 0 errors, 0 failures, 0 skipped

Summary: 4 tests, 0 errors, 0 failures, 0 skipped