From 7e72e9ac87fc1c052726202f84a1e16466e06ad4 Mon Sep 17 00:00:00 2001 From: Blista Kanjo Date: Wed, 2 Aug 2023 22:22:54 -0400 Subject: feat: `zsh` fast-syntax-highlighting plugin --- .../tests/_output/.gitkeep | 0 .../tests/_support/.gitkeep | 0 .../tests/_support/bootstrap | 2 + .../tests/example.zunit | 15 +++ .../zsh-fast-syntax-highlighting/tests/main.zunit | 124 +++++++++++++++++++++ 5 files changed, 141 insertions(+) create mode 100644 .config/shell/zsh-fast-syntax-highlighting/tests/_output/.gitkeep create mode 100644 .config/shell/zsh-fast-syntax-highlighting/tests/_support/.gitkeep create mode 100644 .config/shell/zsh-fast-syntax-highlighting/tests/_support/bootstrap create mode 100644 .config/shell/zsh-fast-syntax-highlighting/tests/example.zunit create mode 100644 .config/shell/zsh-fast-syntax-highlighting/tests/main.zunit (limited to '.config/shell/zsh-fast-syntax-highlighting/tests') diff --git a/.config/shell/zsh-fast-syntax-highlighting/tests/_output/.gitkeep b/.config/shell/zsh-fast-syntax-highlighting/tests/_output/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.config/shell/zsh-fast-syntax-highlighting/tests/_support/.gitkeep b/.config/shell/zsh-fast-syntax-highlighting/tests/_support/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/.config/shell/zsh-fast-syntax-highlighting/tests/_support/bootstrap b/.config/shell/zsh-fast-syntax-highlighting/tests/_support/bootstrap new file mode 100644 index 0000000..0107661 --- /dev/null +++ b/.config/shell/zsh-fast-syntax-highlighting/tests/_support/bootstrap @@ -0,0 +1,2 @@ +#!/usr/bin/env zsh +# Write your bootstrap code here diff --git a/.config/shell/zsh-fast-syntax-highlighting/tests/example.zunit b/.config/shell/zsh-fast-syntax-highlighting/tests/example.zunit new file mode 100644 index 0000000..910f840 --- /dev/null +++ b/.config/shell/zsh-fast-syntax-highlighting/tests/example.zunit @@ -0,0 +1,15 @@ +#!/usr/bin/env zunit +@setup { + load "../fast-highlight" +} + +@test 'ls /usr/bin' { + PREBUFFER="" + BUFFER="ls /usr/bin" + run -fast-highlight-process "$PREBUFFER" "$BUFFER" 0 \; print -rl -- \$reply + + assert "$lines[1]" same_as "0 2 fg=green" + assert "$lines[2]" same_as "3 11 fg=magenta,underline" +} + +# vim:ft=zsh:sw=4:sts=4:et diff --git a/.config/shell/zsh-fast-syntax-highlighting/tests/main.zunit b/.config/shell/zsh-fast-syntax-highlighting/tests/main.zunit new file mode 100644 index 0000000..110f34c --- /dev/null +++ b/.config/shell/zsh-fast-syntax-highlighting/tests/main.zunit @@ -0,0 +1,124 @@ +#!/usr/bin/env zunit +@setup { + load "../fast-highlight" + setopt interactive_comments + -fast-highlight-fill-option-variables +} + +@test 'ls /usr/bin' { +reply=() + PREBUFFER="" + BUFFER="ls /usr/bin" + evl -fast-highlight-process "$PREBUFFER" "$BUFFER" 0 + + assert "$reply[1]" same_as "0 2 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}command]}" + assert "$reply[2]" same_as "3 11 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}path-to-dir]}" + assert "$reply[3]" same_as "" +} + +@test 'ls /bin/df' { + reply=() + PREBUFFER="" + BUFFER="ls /bin/df" + evl -fast-highlight-process "$PREBUFFER" "$BUFFER" 0 + + assert "$reply[1]" same_as "0 2 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}command]}" + assert "$reply[2]" same_as "3 10 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}path]}" + assert "$reply[3]" same_as "" +} + + +@test 'ls /bin/ls\\n # a comment\\nls /usr/bin' { + reply=() + PREBUFFER="" + BUFFER=$'ls /bin/df\n # a comment\nls /usr/bin' + evl -fast-highlight-process "$PREBUFFER" "$BUFFER" 0 + + assert "$reply[1]" same_as "0 2 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}command]}" + assert "$reply[2]" same_as "3 10 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}path]}" + assert "$reply[3]" same_as "12 23 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}comment]}" + assert "$reply[4]" same_as "24 26 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}command]}" + assert "$reply[5]" same_as "27 35 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}path-to-dir]}" + assert "$reply[6]" same_as "" +} + + +@test 'exec {FD}< <( ls /bin )' { + reply=() + PREBUFFER="" + BUFFER=$'exec {FD}< <( ls /bin )' + evl -fast-highlight-process "$PREBUFFER" "$BUFFER" 0 + + assert "$reply[1]" same_as "0 4 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}precommand]}" + assert "$reply[2]" same_as "5 9 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}exec-descriptor]}" + assert "$reply[3]" same_as "" +} + + +@test 'case x in x) a;; (y) ;; esac' { + reply=() + PREBUFFER="" + BUFFER=$'case x in\nx) a;;\n(y)\n;;\nesac' + evl -fast-highlight-process "$PREBUFFER" "$BUFFER" 0 + + assert "$reply[1]" same_as "0 4 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}reserved-word]}" + assert "$reply[2]" same_as "5 6 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}case-input]}" + assert "$reply[3]" same_as "7 9 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}case-parentheses]}" + assert "$reply[4]" same_as "10 11 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}case-condition]}" + assert "$reply[5]" same_as "11 12 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}case-parentheses]}" + assert "$reply[6]" same_as "13 14 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}unknown-token]}" + assert "$reply[7]" same_as "17 18 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}case-parentheses]}" + assert "$reply[8]" same_as "18 19 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}case-condition]}" + assert "$reply[9]" same_as "19 20 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}case-parentheses]}" + assert "$reply[10]" same_as "24 28 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}reserved-word]}" + assert "$reply[11]" same_as "" +} + +@test '-fast-highlight-process "$PREBUFFER" "$BUFFER" 0' { + reply=() + PREBUFFER="" + BUFFER='-fast-highlight-process "$PREBUFFER" "$BUFFER" 0' + evl -fast-highlight-process "\$PREBUFFER" "\$BUFFER" 0 + + assert "$reply[1]" same_as "0 23 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}function]}" + assert "$reply[2]" same_as "24 36 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}double-quoted-argument]}" + assert "$reply[3]" same_as "25 35 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}back-or-dollar-double-quoted-argument]}" + assert "$reply[4]" same_as "37 46 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}double-quoted-argument]}" + assert "$reply[5]" same_as "38 45 ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}back-or-dollar-double-quoted-argument]}" + assert "$reply[6]" same_as "" +} + +@test 'tr : \\\\n <<<$PATH' { + reply=() + PREBUFFER="" + BUFFER='command tr : \\n <<