name: Build and run ROS tests
on: [push, pull_request]
jobs:
  build:
    strategy:
      matrix:
        rosdistro: [noetic]
    runs-on: ubuntu-latest
    container:
      image: ros:${{ matrix.rosdistro }}-ros-core
    steps:
    - name: Install apt dependencies
      run: |
        sudo apt-get update
        sudo apt-get install -y build-essential clang-format-10 file git python3-catkin-lint python3-pip python3-rosdep
    - name: Install pip dependencies
      run: pip install pre-commit
    - name: Checkout repository
      uses: actions/checkout@v3
      with:
        path: src/rospy_message_converter
    - name: Use rosdep to install remaining dependencies
      run: |
        sudo rosdep init
        rosdep update
        rosdep install --from-paths src -i -y --rosdistro ${{ matrix.rosdistro }}
    - name: Build
      run: |
        . /opt/ros/${{ matrix.rosdistro }}/setup.sh
        catkin_make install
    - name: Run tests
      run: |
        . devel/setup.sh
        CTEST_OUTPUT_ON_FAILURE=1 catkin_make test
        cd src/rospy_message_converter
        python3 src/rospy_message_converter/json_message_converter.py
        python3 src/rospy_message_converter/message_converter.py
    - name: Run pre-commit hooks
      run: |
        cd src/rospy_message_converter
        pre-commit run -a
