Commit graph

1323 commits

Author SHA1 Message Date
Daniel Shahaf 291634ecfe tests: Add a test for the infinite loop fixed by each of the last two commits.
Accidentally lost during a rebase.
2020-04-03 01:04:31 +00:00
Daniel Shahaf 96e6cbe22f 'main': Fix expansion of positional parameters in _zsh_highlight_main_highlighter__try_expand_parameter.
As described in the last commit's log message, ${parameter_name_pattern]
explicitly matches positional parameters but ${parameters[$MATCH]}
expands to nothing in that case (when, e.g., [[ $MATCH == '1' ]]; note
this is equality of strings, not integers).

As a side effect, this removes the dependency on the zsh/parameter
module for expanding parameters.
2020-04-02 23:52:05 +00:00
Daniel Shahaf 2a30d4fb5a 'main': Fix an infinite loop.
On the test case, the behaviour was as follows:

+highlighters/main/main-highlighter.zsh:733> _zsh_highlight_main_highlighter__try_expand_parameter '$1'
+highlighters/main/main-highlighter.zsh:432> local arg='$1'
+highlighters/main/main-highlighter.zsh:433> unset reply
+highlighters/main/main-highlighter.zsh:439> local -a match mbegin mend
+highlighters/main/main-highlighter.zsh:440> local MATCH
+highlighters/main/main-highlighter.zsh:440> integer MBEGIN MEND
+highlighters/main/main-highlighter.zsh:441> local parameter_name
+highlighters/main/main-highlighter.zsh:442> local -a words
+highlighters/main/main-highlighter.zsh:443> [[ '$' != \$ ]]
+highlighters/main/main-highlighter.zsh:446> [[ 1 == { ]]
+highlighters/main/main-highlighter.zsh:449> parameter_name=1
+highlighters/main/main-highlighter.zsh:451> [[ none == none ]]
+highlighters/main/main-highlighter.zsh:451> zmodload -e zsh/parameter
+highlighters/main/main-highlighter.zsh:452> [[ ${parameter_name} -regex-match ^${~parameter_name_pattern}$ ]]
+highlighters/main/main-highlighter.zsh:453> [[ '' != *special* ]]
+highlighters/main/main-highlighter.zsh:456> case array-special (*array*|*assoc*)
+highlighters/main/main-highlighter.zsh:458> words=( '$1' )
+highlighters/main/main-highlighter.zsh:469> reply=( '$1' )

There are two problems here:

- In terms of _zsh_highlight_main_highlighter__try_expand_parameter's
  pre- and postconditions, the expansion of the word «$1» (line 733)
  included that same word (line 469).

  That happened because word-to-be-expanded is passed to
  _zsh_highlight_main_highlighter__try_expand_parameter as its first
  positional parameter, and in this case the word happened to be «$1».

- Furthermore, the exclusion of special parameters (line 453) false
  negatived.  That happened because $parameter_name_pattern explicitly
  allows positional parameters, but ${parameters[(e)1]} expands to
  nothing.  This will be fixed in the next commit.

Not a regression from 0.7.1.
2020-04-02 23:44:11 +00:00
Daniel Shahaf 90fec4d658 'main': precommands += ionice(1) (from util-linux) 2020-04-01 06:38:41 +00:00
Daniel Shahaf f563780236 driver: Simplify initialization of $zsyh_user_options in the fallback codepath. 2020-03-29 20:54:28 +00:00
Daniel Shahaf b8c93afd34 driver: Make sure we don't change the return value in a called function. 2020-03-29 20:45:46 +00:00
Daniel Shahaf 2aca4e2c02 'main': Make logic more robust. No functional change.
Before this commit, if the value didn't begin with a dollar sign,
_zsh_highlight_main_highlighter__try_expand_parameter() would return 1
by accident.¹  Tweak the input validation to make this behaviour
explicit.  No functional change.

¹ Specifically, it would return 1 because ${parameter_name}'s value
would be the empty string and ${parameter_name_pattern} wouldn't match
that.
2020-03-28 03:57:13 +00:00
Daniel Shahaf 7678a8a227 'main': Break out an anonymous function into a named function.
This is in order to allow it to be reused.

No functional change.
2020-03-27 01:29:11 +00:00
Daniel Shahaf 5d139fcd94 Fix typos in comments. 2020-03-27 01:28:11 +00:00
Matthew Martin d1802e388e main: Add test for issue #713 2020-03-22 15:01:53 -05:00
Daniel Shahaf aecfd61bbd 'main': Support the 'env' precommand. 2020-03-21 01:45:34 +00:00
Daniel Shahaf 2904e0f986 test harness: Fix the pretty-printer's padding implementation.
The new implementation is less efficient but definitely correct.
2020-03-20 00:03:01 +00:00
Daniel Shahaf d5d2f22013 Revert "test harness: Rewrite the columnar pretty-printer without external tools." and "travis: Remove bsdmainutils since column(1) has been removed, three commits ago."
This reverts commits ea7c165b59 and
3d81c83132.

When "have 6 expectations and 4 region_highlight entries", the pure-zsh
implementation printed them as follows:

    not ok 7 - cardinality check - have 6 expectations and 4 region_highlight entries: «expected_region_highlight=( $'1 1 builtin' $'3 6 comment' $'8 13 comment' $'15 15 default' $'16 21 comment' $'22 22 default' )»
    «region_highlight=( $'0 1 builtin' $'2 6 comment' $'7 13 comment' $'14 22 default' )»
    # expected_region_highlight  '22 22 default'
    # '1 1 builtin'              region_highlight
    # '3 6 comment'              '0 1 builtin'
    # '8 13 comment'             '2 6 comment'
    # '15 15 default'            '7 13 comment'
    # '16 21 comment'            '14 22 default'

Whereas the column(1)-based implementation prints them as follows:

    not ok 7 - cardinality check - have 6 expectations and 4 region_highlight entries: «expected_region_highlight=( $'1 1 builtin' $'3 6 comment' $'8 13 comment' $'15 15 default' $'16 21 comment' $'22 22 default' )» «region_highlight=( $'0 1 builtin' $'2 6 comment' $'7 13 comment' $'14 22 default' )»
    # expected_region_highlight  region_highlight
    # '1 1 builtin'              '0 1 builtin'
    # '3 6 comment'              '2 6 comment'
    # '8 13 comment'             '7 13 comment'
    # '15 15 default'            '14 22 default'
    # '16 21 comment'
    # '22 22 default'

Ultimately, this difference is down to the pure-zsh implementation
getting the arguments as a single list, whereas paste(1) gets two
separate lists.
2020-03-20 00:03:01 +00:00
Daniel Shahaf 8eaa41431d changelog: Update through HEAD. 2020-03-19 21:25:49 +00:00
Daniel Shahaf e4f24f8901
Merge pull request #669 from danielshahaf/cdpath-and-nonexecutable-in-command-position-v1
Command position: non-executable files, non-cdable directories, CDPATH false positives
2020-03-19 21:22:52 +00:00
Daniel Shahaf 1000da306a 'main': Correctly highlight '&&' and '||' inside '[[ … ]]' conditions. 2020-03-19 20:16:43 +00:00
Daniel Shahaf b44964c545 'main': Highlight reserved words following assignments as errors.
Fixes #461.
2020-03-19 19:48:44 +00:00
Daniel Shahaf f54d829f03 tests: Add tests for issue #461. 2020-03-19 19:43:12 +00:00
Daniel Shahaf 9e9885253a test harness: Output the time information to the same place the test name was printed to. 2020-03-19 19:17:41 +00:00
Daniel Shahaf 3e7745ef30 test harness: Stringify values in a more readable manner.
(q-) passes through newlines and NUL bytes verbatim.  Using (qqqq) ensures the
escaped string will be on a single line (as required by the TAP format) and be
readable even if it contains control characters.
2020-03-19 19:15:21 +00:00
Daniel Shahaf b0af27f25f tests: Add a unit test for a path specified with mixed quoting.
Fixes #475.
2020-03-19 06:49:40 +00:00
Daniel Shahaf bd9094cc61 tests: Add a test for issue #498, which has already been fixed. 2020-03-19 06:44:12 +00:00
Daniel Shahaf c7229a000a tests: Test that global qualifiers and command substitutions aren't evaluated.
Fixes #504.
2020-03-19 06:41:38 +00:00
Daniel Shahaf f2726d0464 'main': Don't consider path_prefix in alias expansions. 2020-03-19 06:06:30 +00:00
Daniel Shahaf 8184266338 'main': Add a test for aliases to AUTO_CD directories. 2020-03-19 06:06:30 +00:00
Daniel Shahaf 83ac855ceb 'main': Let AUTO_CD directories be highlighted with their own style. 2020-03-19 06:06:30 +00:00
Daniel Shahaf 3f930fb0c1 'main': Add an auxiliary variable for readability. 2020-03-19 06:06:30 +00:00
Daniel Shahaf 5545fb9ab2 'main': In command position, do not highlight directories (unless AUTO_CD is set) and non-executable files.
Fixes #202.

Test expectations are updated.  For example, BUFFER='/bin' is now
highlighted as path_prefix because it's a prefix of '/bin/sh' which
would be valid.  However, BUFFER='/bin;' is now properly highlighted
as an error (unless AUTO_CD is set).
2020-03-19 06:06:30 +00:00
Daniel Shahaf a6eb966d96 'main': Extend tests to capture the current behaviour.
The next commits will change this behaviour.
2020-03-19 06:05:23 +00:00
Daniel Shahaf c67372e96c 'main': Add an XFail test for issue #202. 2020-03-19 06:05:23 +00:00
Daniel Shahaf 29ca0bc6c8 'main': Highlight errors from the EQUALS option.
Fixes #430.
2020-03-19 05:59:04 +00:00
Daniel Shahaf 08839bbd87 'main': Let the type determination ignore global aliases when it ignores regular ones. 2020-03-19 05:28:17 +00:00
Daniel Shahaf e2dddb91c6 'main': Add a regression test for parameters that expand to global aliases.
Will be fixed in the next commit.
2020-03-19 05:27:31 +00:00
Daniel Shahaf cfef4f3ae0 'main': Enable the zsh/parameter codepath of global aliases highlighting. 2020-03-19 05:13:46 +00:00
Daniel Shahaf 48dd47931a changelog: Update through HEAD. 2020-03-19 05:13:17 +00:00
Daniel Shahaf 3d81c83132 travis: Remove bsdmainutils since column(1) has been removed, three commits ago. 2020-03-19 05:11:21 +00:00
Daniel Shahaf 3c5f63d959 'main': Highlight global aliases 2020-03-19 05:05:37 +00:00
Daniel Shahaf 5a44d9f32a tests: Record current behaviour on global aliases. 2020-03-19 05:04:15 +00:00
Daniel Shahaf ea7c165b59 test harness: Rewrite the columnar pretty-printer without external tools. 2020-03-19 05:01:54 +00:00
Daniel Shahaf 90a92b2bb8 test harness: Fix an issue with the pretty-printed $expected_region_highlight/$region_highlight diffing.
If the right column was longer, the excess entries were printed on the left column.
2020-03-19 05:01:54 +00:00
Daniel Shahaf fdf23e06c7 'main': Support the "close file descriptor" and "coproc" redirection syntaxes
Part of issue #645.
2020-03-19 03:15:37 +00:00
Daniel Shahaf 10171731f3 tests: Add a test for the "close file descriptor" and "coproc" redirection syntaxes
Part of issue #645.
2020-03-19 03:14:15 +00:00
Daniel Shahaf dfc41123d7 tests: Fix the test added in the last commit. 2020-03-19 02:30:58 +00:00
Daniel Shahaf d6defe715a tests: Add a test for issue #705, concerning continuation lines. 2020-03-19 01:39:33 +00:00
Daniel Shahaf 3ff5bec82e test harness: Let tests fail early by exiting non-zero or by setting a flag.
Fixes #609.
2020-03-19 00:37:21 +00:00
Daniel Shahaf c4bb260a30 test harness: Print the test name when $skip_test is set. 2020-03-19 00:16:09 +00:00
Daniel Shahaf 9bdeb4aa4a test harness: Remove a bogus check.
We already declare $expected_region_highlight in run_test_internal().
Therefore, it will always be declared.
2020-03-19 00:03:24 +00:00
Daniel Shahaf 63852df983 test harness: Fix $skip_test support, broken yesterday.
It was broken by commit e6eea1f9b7,
"test harness: Don't leak options from test files to the test harness.".
2020-03-19 00:00:51 +00:00
Daniel Shahaf 66021cf0f7 travis: Install bsdmainutils to provide column(1).
See the last commit,
bdb4e8b70e test harness: When the cardinality check fails, pretty-print \$expected_region_highlight and \$region_highlight.
2020-03-17 17:17:51 +00:00
Daniel Shahaf 0f627fdf60 Merge remote-tracking branch 'danielsh/whitespace-historical'
* danielsh/whitespace-historical:
  Fix historical instances of one-space indentation.
2020-03-17 17:08:06 +00:00