@@ -173,8 +173,9 @@ jobs:
173173
174174 # Run ncurses frontend with simulated terminal and quit command
175175 # Exit code 0 means clean exit (not 11 for SIGSEGV or 134 for SIGABRT)
176+ # Set TERM=linux to provide basic terminal capabilities for curses
176177 set +e
177- timeout 10s script -qfec 'ros2 run greenwave_monitor ncurses_dashboard' /dev/null <<< $'q'
178+ TERM=linux timeout 10s script -qfec 'ros2 run greenwave_monitor ncurses_dashboard' /dev/null <<< $'q'
178179 EXIT_CODE=$?
179180 set -e
180181
@@ -202,6 +203,68 @@ jobs:
202203 kill -9 "$(cat /tmp/gwm_ncurses.pid)" 2>/dev/null || true
203204 shell : bash
204205
206+ - name : Clone r2s_gw repository for integration testing
207+ run : |
208+ # Install git if not available
209+ apt-get update -qq
210+ apt-get install -y git
211+
212+ # Try to clone the matching branch, fallback to main if it doesn't exist
213+ BRANCH_NAME="${{ github.ref_name }}"
214+ if git ls-remote --exit-code --heads https://github.com/NVIDIA-ISAAC-ROS/r2s_gw.git "$BRANCH_NAME" > /dev/null 2>&1; then
215+ echo "Cloning r2s_gw branch: $BRANCH_NAME"
216+ git clone --branch "$BRANCH_NAME" --depth 1 https://github.com/NVIDIA-ISAAC-ROS/r2s_gw.git
217+ else
218+ echo "Branch $BRANCH_NAME not found in r2s_gw, falling back to main"
219+ git clone --branch main --depth 1 https://github.com/NVIDIA-ISAAC-ROS/r2s_gw.git
220+ fi
221+ shell : bash
222+
223+ - name : Install r2s_gw with pip
224+ run : |
225+ cd r2s_gw
226+ if [[ "${{ matrix.ros_distro }}" == "jazzy" || \
227+ "${{ matrix.ros_distro }}" == "kilted" || \
228+ "${{ matrix.ros_distro }}" == "rolling" ]]; then
229+ pip3 install --break-system-packages --ignore-installed pygments -e .
230+ else
231+ pip3 install --ignore-installed pygments -e .
232+ fi
233+ cd ..
234+ shell : bash
235+
236+ - name : Test r2s_gw_dashboard execution
237+ run : |
238+ source /opt/ros/${{ matrix.ros_distro }}/setup.bash
239+
240+ echo "Testing r2s_gw_dashboard with debian-installed greenwave_monitor..."
241+
242+ # Start monitor node in background
243+ ros2 run greenwave_monitor greenwave_monitor > /dev/null 2>&1 & echo $! > /tmp/gwm_r2s.pid
244+ sleep 3
245+
246+ # Test r2s_gw dashboard with proper terminal
247+ set +e
248+ TERM=linux timeout 10s script -qfec 'ros2 run r2s_gw r2s_gw_dashboard' /dev/null <<< $'q'
249+ EXIT_CODE=$?
250+ set -e
251+
252+ if [ $EXIT_CODE -eq 0 ] || [ $EXIT_CODE -eq 1 ]; then
253+ echo "✓ r2s_gw_dashboard exited (code: $EXIT_CODE)"
254+ elif [ $EXIT_CODE -eq 124 ]; then
255+ echo "✗ r2s_gw_dashboard timed out"
256+ kill -9 "$(cat /tmp/gwm_r2s.pid)" 2>/dev/null || true
257+ exit 1
258+ else
259+ echo "✓ r2s_gw_dashboard exited with code: $EXIT_CODE (acceptable)"
260+ fi
261+
262+ # Cleanup
263+ kill -INT "$(cat /tmp/gwm_r2s.pid)" 2>/dev/null || true
264+ sleep 1
265+ kill -9 "$(cat /tmp/gwm_r2s.pid)" 2>/dev/null || true
266+ shell : bash
267+
205268 - name : Test greenwave_monitor execution
206269 run : |
207270 source /opt/ros/${{ matrix.ros_distro }}/setup.bash
0 commit comments