Skip to content

Commit

Permalink
tests: Add clipmenu test
Browse files Browse the repository at this point in the history
  • Loading branch information
cdown committed Jan 15, 2017
1 parent e8b4d83 commit e85c769
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 0 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Expand Up @@ -8,6 +8,7 @@ before_script:

script:
- shellcheck -s bash clipmenu clipmenud
- tests/test-clipmenu

matrix:
fast_finish: true
Expand Down
76 changes: 76 additions & 0 deletions tests/test-clipmenu
@@ -0,0 +1,76 @@
#!/bin/bash

set -e
set -o pipefail

dir=/tmp/clipmenu.$USER
cache_file=$dir/line_cache

if [[ $0 == /* ]]; then
location=${0%/*}
else
location=$PWD/${0#./}
location=${location%/*}
fi

cat - "$location/../clipmenu" > /tmp/clipmenu << 'EOF'
#!/bin/bash
shopt -s expand_aliases
shim() {
printf '%s args:' "$1" >&2
printf ' %q' "${@:2}" >&2
printf '\n' >&2
i=0
while IFS= read -r line; do
let i++
printf '%s line %d stdin: %s\n' "$1" "$i" "$line" >&2
done
if [[ -v SHIM_STDOUT ]]; then
printf '%s\n' "$SHIM_STDOUT"
fi
}
alias dmenu='SHIM_STDOUT="Selected text. (2 lines)" shim dmenu'
alias xsel='shim xsel'
alias xclip='shim xclip'
EOF

chmod a+x /tmp/clipmenu

rm -rf "$dir"
mkdir -p "$dir"

cat > "$cache_file" << 'EOF'
Selected text. (2 lines)
Selected text 2. (2 lines)
EOF

cat > "$dir/$(cksum <<< 'Selected text. (2 lines)')" << 'EOF'
Selected text.
Yes, it's selected text.
EOF

### TESTS ###

output=$(/tmp/clipmenu --foo bar 2>&1)

printf '%s\n' "$output" > /tmp/qq

# Arguments are transparently passed to dmenu
grep -Fxq 'dmenu args: -l 8 --foo bar' <<< "$output"

# Output from cache file should get to dmenu, reversed
grep -Fxq 'dmenu line 1 stdin: Selected text 2. (2 lines)' <<< "$output"
grep -Fxq 'dmenu line 2 stdin: Selected text. (2 lines)' <<< "$output"

# xsel should copy both to clipboard *and* primary
grep -Fxq 'xsel args: --logfile /dev/null -i --clipboard' <<< "$output"
grep -Fxq 'xsel args: --logfile /dev/null -i --primary' <<< "$output"

grep -Fxq 'xsel line 1 stdin: Selected text.' <<< "$output"
grep -Fxq "xsel line 2 stdin: Yes, it's selected text." <<< "$output"
File renamed without changes.

0 comments on commit e85c769

Please sign in to comment.