From eb2dc1de1d4c1b58a5acd303ec97dffced816a09 Mon Sep 17 00:00:00 2001 From: Skia Date: Wed, 20 Aug 2025 09:26:44 +0200 Subject: [PATCH] tests: add testing of the binary's integration with sway --- tests/integration_bin.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 tests/integration_bin.rs diff --git a/tests/integration_bin.rs b/tests/integration_bin.rs new file mode 100644 index 0000000..868dfd4 --- /dev/null +++ b/tests/integration_bin.rs @@ -0,0 +1,30 @@ +use std::process::Command; + +mod utils; +use utils::Sway; + +#[test] +fn test_binary_help() { + let output = Command::new("./target/debug/swaysome") + .args(["-h"]) + .env_clear() + .env("SWAYSOCK", "/dev/null") + .output() + .expect("Couldn't run swaymsg"); + assert_eq!(String::from_utf8(output.stdout).unwrap(), "Better multimonitor handling for sway\n\nUsage: swaysome \n\nCommands:\n init Initialize the workspace groups for all the outputs\n move Move the focused container to another workspace on the same workspace group\n move-to-group Move the focused container to the same workspace index on another workspace group\n focus Focus to another workspace on the same workspace group\n focus-group Focus to workspace group\n focus-all-outputs Focus to another workspace on all the outputs\n next-output Move the focused container to the next output\n prev-output Move the focused container to the previous output\n workspace-group-next-output Move the focused workspace group to the next output\n workspace-group-prev-output Move the focused workspace group to the previous output\n next-group Move the focused container to the next group\n prev-group Move the focused container to the previous group\n rearrange-workspaces Rearrange already opened workspaces to the correct outputs, useful when plugging new monitors\n help Print this message or the help of the given subcommand(s)\n\nOptions:\n -h, --help Print help\n -V, --version Print version\n"); +} + +/// We only test the 'init' command, given that the exhaustive command testing +/// is done in the library integration tests. Here, we only verify that the +/// interaction with `sway` works seamslessly. +#[test] +fn test_binary_interaction_with_sway() { + let sway = Sway::start(); + let output = Command::new("./target/debug/swaysome") + .args(["init", "1"]) + .env_clear() + .env("SWAYSOCK", sway.sock.clone()) + .output() + .expect("Couldn't run swaymsg"); + assert_eq!(String::from_utf8(output.stderr).unwrap(), "successful connection to socket '/tmp/swaysome_tests/test_binary_interaction_with_sway/swaysock'\nSending command: 'focus output HEADLESS-3' - Command successful\nSending command: 'workspace number 31' - Command successful\nSending command: 'focus output HEADLESS-2' - Command successful\nSending command: 'workspace number 21' - Command successful\nSending command: 'focus output HEADLESS-1' - Command successful\nSending command: 'workspace number 11' - Command successful\n"); +}