diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..1edf3cd --- /dev/null +++ b/.flake8 @@ -0,0 +1,9 @@ +[flake8] +# The line length here has to match the black config in pyproject.toml +max-line-length = 120 +exclude = + .git, + __pycache__ +extend-ignore = + # See https://github.com/PyCQA/pycodestyle/issues/373 + E203, diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml new file mode 100644 index 0000000..bc7bc64 --- /dev/null +++ b/.github/workflows/github-actions.yml @@ -0,0 +1,53 @@ +name: Build and run ROS tests +on: + push: + pull_request: + workflow_dispatch: + inputs: + debug_enabled: + type: boolean + description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' + required: false + default: false +jobs: + build: + strategy: + matrix: + rosdistro: [humble, iron, rolling] + fail-fast: false + runs-on: ubuntu-latest + container: + image: ros:${{ matrix.rosdistro }}-ros-core + steps: + # Enable tmate debugging of manually-triggered workflows if the input option was provided + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }} + with: + detached: true + - name: Install apt dependencies + run: | + apt-get update + apt-get install -y build-essential clang-format file git python3-pip python3-colcon-common-extensions python3-rosdep pre-commit + - name: Checkout repository + uses: actions/checkout@v4 + with: + path: src/rospy_message_converter + - name: Use rosdep to install remaining dependencies + run: | + rosdep init + rosdep update + rosdep install --from-paths src -i -y --rosdistro ${{ matrix.rosdistro }} + - name: Build + run: | + . /opt/ros/${{ matrix.rosdistro }}/setup.sh + colcon build --parallel-workers 1 + - name: Run tests + run: | + . install/setup.sh + colcon test --parallel-workers 1 + colcon test-result + - name: Run pre-commit hooks + run: | + cd src/rospy_message_converter + pre-commit run -a diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 58e8641..74c3535 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -42,14 +42,3 @@ repos: rev: 5.0.4 hooks: - id: flake8 - - - repo: local - hooks: - - id: catkin_lint - name: catkin_lint - description: Check package.xml and cmake files - entry: catkin_lint . - language: system - always_run: true - pass_filenames: false - args: [ "--strict" ] diff --git a/rclpy_message_converter/test/test_message_converter.py b/rclpy_message_converter/test/test_message_converter.py index df5acf8..b1d47e4 100644 --- a/rclpy_message_converter/test/test_message_converter.py +++ b/rclpy_message_converter/test/test_message_converter.py @@ -458,14 +458,15 @@ def test_dictionary_with_uint8_array_bytes_unencoded(self): 'rclpy_message_converter_msgs/msg/Uint8ArrayTestMessage', dictionary ) error_msg = context.exception.args[0] - self.assertIn(error_msg, ['Incorrect padding', 'Non-base64 digit found']) + self.assertIn(error_msg, ['Incorrect padding', 'Non-base64 digit found', 'Only base64 data is allowed']) dictionary = {'data': bytes(bytearray([1, 97, 97, 2, 3, 97, 4, 97]))} with self.assertRaises(binascii.Error) as context: message_converter.convert_dictionary_to_ros_message( 'rclpy_message_converter_msgs/msg/Uint8ArrayTestMessage', dictionary ) - self.assertEqual('Non-base64 digit found', context.exception.args[0]) + error_msg = context.exception.args[0] + self.assertIn(error_msg, ['Incorrect padding', 'Non-base64 digit found', 'Only base64 data is allowed']) def test_dictionary_with_3uint8_array_bytes(self): from rclpy_message_converter_msgs.msg import Uint8Array3TestMessage