def test_get_build_commands(monkeypatch): class Options: colcon_ament_cmake_args = list() colcon_catkin_cmake_args = list() colcon_cmake_args = list() colcon_packages = list() colcon_packages_ignore = list() plugin = colcon.ColconPlugin(part_name="my-part", options=Options()) monkeypatch.setattr(sys, "path", ["", "/test"]) monkeypatch.setattr(sys, "executable", "/test/python3") monkeypatch.setattr(_ros, "__file__", "/test/_ros.py") monkeypatch.setattr(os, "environ", dict()) assert plugin.get_build_commands() == [ 'state="$(set +o)"', "set +u", ". /opt/ros/$ROS_DISTRO/setup.sh", 'eval "$(state)"', "if [ ! -f /etc/ros/rosdep/sources.list.d/20-default.list ]; then sudo rosdep " "init; fi", "rosdep update --include-eol-distros --rosdistro $ROS_DISTRO", "rosdep install --default-yes --ignore-packages-from-source --from-paths $SNAPCRAFT_PART_SRC", "colcon build " "--base-paths $SNAPCRAFT_PART_SRC --build-base $SNAPCRAFT_PART_BUILD " "--merge-install --install-base $SNAPCRAFT_PART_INSTALL " "--parallel-workers ${SNAPCRAFT_PARALLEL_BUILD_COUNT}", "env -i LANG=C.UTF-8 LC_ALL=C.UTF-8 /test/python3 -I " "/test/_ros.py " "stage-runtime-dependencies --part-src $SNAPCRAFT_PART_SRC --part-install $SNAPCRAFT_PART_INSTALL " "--ros-distro $ROS_DISTRO --target-arch $SNAPCRAFT_TARGET_ARCH", ]
def test_get_build_environment(): plugin = colcon.ColconPlugin(part_name="my-part", options=lambda: None) assert plugin.get_build_environment() == { "AMENT_PYTHON_EXECUTABLE": "/usr/bin/python3", "COLCON_PYTHON_EXECUTABLE": "/usr/bin/python3", "ROS_PYTHON_VERSION": "3", }
def test_get_build_packages(): plugin = colcon.ColconPlugin(part_name="my-part", options=lambda: None) assert plugin.get_build_packages() == { "python3-colcon-common-extensions", "python3-rosdep", "python3-rosinstall", "python3-wstool", }
def test_get_build_commands_with_all_properties(monkeypatch): class Options: colcon_ament_cmake_args = ["ament", "args..."] colcon_catkin_cmake_args = ["catkin", "args..."] colcon_cmake_args = ["cmake", "args..."] colcon_packages = ["package1", "package2..."] colcon_packages_ignore = ["ipackage1", "ipackage2..."] plugin = colcon.ColconPlugin(part_name="my-part", options=Options()) monkeypatch.setattr(sys, "path", ["", "/test"]) monkeypatch.setattr(sys, "executable", "/test/python3") monkeypatch.setattr(_ros, "__file__", "/test/_ros.py") monkeypatch.setattr( os, "environ", dict( FOO="baR", PATH="/bin:/test", SNAP="TESTSNAP", SNAP_ARCH="TESTARCH", SNAP_NAME="TESTSNAPNAME", SNAP_VERSION="TESTV1", http_proxy="http://foo", https_proxy="https://bar", ), ) assert plugin.get_build_commands() == [ 'state="$(set +o)"', "set +u", 'if [ -f "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/setup.sh ]; then', 'COLCON_CURRENT_PREFIX="${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap . "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/setup.sh', "fi", '. /opt/ros/"${ROS_DISTRO}"/local_setup.sh', 'eval "${state}"', "if [ ! -f /etc/ros/rosdep/sources.list.d/20-default.list ]; then sudo rosdep " "init; fi", 'rosdep update --include-eol-distros --rosdistro "${ROS_DISTRO}"', 'rosdep install --default-yes --ignore-packages-from-source --from-paths "${SNAPCRAFT_PART_SRC}"', "colcon build " '--base-paths "${SNAPCRAFT_PART_SRC}" --build-base "${SNAPCRAFT_PART_BUILD}" ' '--merge-install --install-base "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap ' "--packages-ignore ipackage1 ipackage2... --packages-select package1 " "package2... --cmake-args cmake args... " "--ament-cmake-args ament args... --catkin-cmake-args catkin " 'args... --parallel-workers "${SNAPCRAFT_PARALLEL_BUILD_COUNT}"', 'if [ -f "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/COLCON_IGNORE ]; then', 'rm "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/COLCON_IGNORE', "fi", "env -i LANG=C.UTF-8 LC_ALL=C.UTF-8 PATH=/bin:/test SNAP=TESTSNAP " "SNAP_ARCH=TESTARCH SNAP_NAME=TESTSNAPNAME SNAP_VERSION=TESTV1 " "http_proxy=http://foo https_proxy=https://bar " "/test/python3 -I /test/_ros.py " 'stage-runtime-dependencies --part-src "${SNAPCRAFT_PART_SRC}" --part-install "${SNAPCRAFT_PART_INSTALL}" ' '--ros-version "${ROS_VERSION}" --ros-distro "${ROS_DISTRO}" --target-arch "${SNAPCRAFT_TARGET_ARCH}"', ]
def test_get_build_commands_with_all_properties(monkeypatch): class Options: colcon_ament_cmake_args = ["ament", "args..."] colcon_catkin_cmake_args = ["catkin", "args..."] colcon_cmake_args = ["cmake", "args..."] colcon_packages = ["package1", "package2..."] colcon_packages_ignore = ["ipackage1", "ipackage2..."] plugin = colcon.ColconPlugin(part_name="my-part", options=Options()) monkeypatch.setattr(sys, "path", ["", "/test"]) monkeypatch.setattr(sys, "executable", "/test/python3") monkeypatch.setattr(_ros, "__file__", "/test/_ros.py") monkeypatch.setattr( os, "environ", dict( FOO="baR", PATH="/bin:/test", SNAP="TESTSNAP", SNAP_ARCH="TESTARCH", SNAP_NAME="TESTSNAPNAME", SNAP_VERSION="TESTV1", http_proxy="http://foo", https_proxy="https://bar", ), ) assert plugin.get_build_commands() == [ ". /opt/ros/$ROS_DISTRO/setup.sh", "if [ ! -f /etc/ros/rosdep/sources.list.d/20-default.list ]; then sudo rosdep " "init; fi", "rosdep update --include-eol-distros --rosdistro $ROS_DISTRO", "rosdep install --default-yes --ignore-packages-from-source --from-paths .", "colcon build --merge-install --install-base $SNAPCRAFT_PART_INSTALL " "--packages-ignore ipackage1 ipackage2... --packages-select package1 " "package2... --ament-cmake-args ament args... --catkin-cmake-args catkin " "args... --parallel-workers ${SNAPCRAFT_PARALLEL_BUILD_COUNT}", "env -i LANG=C.UTF-8 LC_ALL=C.UTF-8 PATH=/bin:/test SNAP=TESTSNAP " "SNAP_ARCH=TESTARCH SNAP_NAME=TESTSNAPNAME SNAP_VERSION=TESTV1 " "http_proxy=http://foo https_proxy=https://bar " "/test/python3 -I /test/_ros.py " "stage-runtime-dependencies --part-install $SNAPCRAFT_PART_INSTALL " "--ros-distro $ROS_DISTRO", ]
def test_get_build_commands(monkeypatch): class Options: colcon_ament_cmake_args = list() colcon_catkin_cmake_args = list() colcon_cmake_args = list() colcon_packages = list() colcon_packages_ignore = list() plugin = colcon.ColconPlugin(part_name="my-part", options=Options()) monkeypatch.setattr(sys, "path", ["", "/test"]) monkeypatch.setattr(sys, "executable", "/test/python3") monkeypatch.setattr(_ros, "__file__", "/test/_ros.py") monkeypatch.setattr(os, "environ", dict()) assert plugin.get_build_commands() == [ 'state="$(set +o)"', "set +u", 'if [ -f "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/setup.sh ]; then', 'COLCON_CURRENT_PREFIX="${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap . "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/setup.sh', "fi", '. /opt/ros/"${ROS_DISTRO}"/local_setup.sh', 'eval "${state}"', "if [ ! -f /etc/ros/rosdep/sources.list.d/20-default.list ]; then sudo rosdep " "init; fi", 'rosdep update --include-eol-distros --rosdistro "${ROS_DISTRO}"', 'rosdep install --default-yes --ignore-packages-from-source --from-paths "${SNAPCRAFT_PART_SRC}"', "colcon build " '--base-paths "${SNAPCRAFT_PART_SRC}" --build-base "${SNAPCRAFT_PART_BUILD}" ' '--merge-install --install-base "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap ' '--parallel-workers "${SNAPCRAFT_PARALLEL_BUILD_COUNT}"', 'if [ -f "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/COLCON_IGNORE ]; then', 'rm "${SNAPCRAFT_PART_INSTALL}"/opt/ros/snap/COLCON_IGNORE', "fi", "env -i LANG=C.UTF-8 LC_ALL=C.UTF-8 /test/python3 -I " "/test/_ros.py " 'stage-runtime-dependencies --part-src "${SNAPCRAFT_PART_SRC}" --part-install "${SNAPCRAFT_PART_INSTALL}" ' '--ros-version "${ROS_VERSION}" --ros-distro "${ROS_DISTRO}" --target-arch "${SNAPCRAFT_TARGET_ARCH}"', ]
def test_out_of_source_build_property(): plugin = colcon.ColconPlugin(part_name="my-part", options=lambda: None) assert plugin.out_of_source_build