1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-16 14:41:02 +02:00
Commit graph

1116 commits

Author SHA1 Message Date
Bart Schaefer
71b747567e 47704: POSIX export and readonly ignore "-p" when parameter names also appear 2021-04-18 14:26:12 -07:00
Bart Schaefer
82ff9f24f1 48560: add TYPESET_TO_UNSET option to remove initialization of parameters
Changes typeset such that ${newparam-notset} yields "notset" and
"typeset -p newparam" does not show an assignment to the parameter.  This
is similar to the default behavior of bash and ksh, with minor differences
in typeset output.

Also add tests for some POSIX incompatibilities plus minor changes for test
harness robustness.
2021-04-18 13:58:09 -07:00
Marlon Richert
587cced35d 48513: Let extra-verbose completion show parameter values 2021-04-16 23:36:03 +02:00
Daniel Shahaf
dee6e67d60 unposted (cf. 48153): Add tests for max() and min(). 2021-04-16 19:08:11 +00:00
brian m. carlson
f7a417388c 47794: exec: run final pipeline command in a subshell in sh mode
zsh typically runs the final command in a pipeline in the main shell
instead of a subshell.  However, POSIX specifies that all commands in a
pipeline run in a subshell, but permits zsh's behavior as an extension.
The default /bin/sh implementations on various Linux distros and the
BSDs always use a subshell for all components of a pipeline.

Since zsh may be used as /bin/sh in some cases (such as macOS Catalina),
it makes sense to have the common sh behavior when emulating sh, so do
that by checking for being the final item of a multi-item pipeline and
creating a subshell in that case.

From the comment above execpline(), we know the following:

 last1 is a flag that this command is the last command in a shell that
 is about to exit, so we can exec instead of forking.  It gets passed
 all the way down to execcmd() which actually makes the decision.  A 0
 is always passed if the command is not the last in the pipeline. […]
 If last1 is zero but the command is at the end of a pipeline, we pass
 2 down to execcmd().

So there are three cases to consider in this code:

• last1 is 0, which means we are not at the end of a pipeline, in which
 case we should not change behavior.
• last1 is 1, which means we are effectively running in a subshell,
 because nothing that happens due to the exec is going to affect the
 actual shell, since it will have been replaced.  So there is nothing
 to do here.
• last1 is 2, which means our command is at the end of the pipeline, so
 in sh mode we should create a subshell by forking.

input is nonzero if the input to this process is a pipe that we've
opened.  At the end of a multi-stage pipeline, it will necessarily be
nonzero.

Note that several of the tests may appear bizarre, since most developers
do not place useless variable assignments directly at the end of a
pipeline.  However, as the function tests demonstrate, there are cases
where assignments may occur when a shell function is used at the end of
a command.  The remaining assignment tests simply test additional cases,
such as the use of local, that would otherwise be untested.
2021-04-10 17:56:39 -05:00
Peter Stephenson
283d2f3c27 48432 and enable test: fix quotiing of zstyle -L for zstyle -e 2021-04-09 21:01:37 +01:00
Daniel Shahaf
4ba9008ec7 48379: Make the parameter expansion subscript flags parse error message, "error in flags", identify the location of the parse error. 2021-04-08 02:19:39 +00:00
Daniel Shahaf
608e49ac19 48425: Add an XFail test for a 'zstyle -L' escaping bug (workers/48424). 2021-04-07 17:45:57 +00:00
Marlon Richert
aaf619cc22 48413: Fix _expand completion test 2021-04-06 13:59:43 +02:00
Mikael Magnusson
ea3351c496 48202 + 48366: Fix handling of NUL bytes in zexpandtabs multibyte version 2021-04-01 09:50:52 +02:00
Marlon Richert
07a30613f0 48214: add file types to _expand completions, so they can be colored through complist 2021-03-31 01:20:36 +02:00
dana
d3906d7a2f 48216: Fix broken Y01 test from workers/48180 2021-03-28 00:22:59 -05:00
dana
78cf455871 unposted: Improve documentation and add regression test for workers/47745 2021-03-23 00:26:21 -05:00
Marlon Richert
f4a248f9d3 48180: Start menu selection with select=long-list in menu style 2021-03-17 12:50:57 -05:00
Daniel Shahaf
f87b73e677 48147/0002: zmathfunc: Fix bug where the exit code would be non-zero if the expression evaluted to zero. 2021-03-07 21:58:13 +00:00
Daniel Shahaf
6a2a8acf09 48147/0001: tests: Add a unit test for zmathfunc and a regression test for workers/48146 affecting it. 2021-03-07 21:58:12 +00:00
Joshua Krusell
3d6e5b6231 47905: Add leading '-' to zparseopts option parsing errors 2021-02-13 00:54:59 +01:00
Bart Schaefer
465738fc25 47895: Remove trailing spaces from "print -ac" output lines. 2021-02-04 17:52:22 -08:00
Bart Schaefer
b803fbaa14 47865: More tests for globbing in restricted directories 2021-02-04 17:03:46 -08:00
Joshua Krusell
9120d1e841 47899: Improve error message from zparseopts. 2021-02-03 11:33:47 +00:00
Jun-ichi Takimoto
6e20f0e3d1 47849: do not skip tests requiring zpty on Cygwin 2021-01-20 13:49:42 +09:00
Mikael Magnusson
8773f01f2b 47494, 47495: Add -n option to strftime 2020-10-25 23:06:02 +01:00
Mikael Magnusson
ea64d2fd4b 47302: Test for print -v fix 2020-10-25 23:05:28 +01:00
Bart Schaefer
63b6398b70 47364: Enable extendedglob in pattern with ${(*)name/pattern/replacement}
Mikael Magnusson: 47382: Completion for 47364
2020-09-13 16:19:52 -07:00
Stephane Chazelas
24a82b9dad 47352 (+ extra test cases): fix %<n>K prompt expansion
Fixed a regression introduced by workers/30496 (5.0.3) whereby %2K would
no longer be the equivalent of %K{2} (%K{green}) in prompt expansion.

That was one missing case where the is_fg flag was not passed along to
match_colour() after code factorisation.

Add tests for the different syntax variants, using echoti
as a reference.
2020-09-10 07:34:56 +01:00
Daniel Shahaf
06265d2b83 47314: is-at-least false positive (5.8.0.2 / 5.8)
Actual behaviour:

    % is-at-least 5.8.0.2 5.8 && echo yes || echo no
    yes
    % is-at-least 5.8.0.2 5.8.0.0 && echo yes || echo no
    no

Expected behaviour: Both commands should have printed "no".
2020-08-16 14:24:29 +00:00
Daniel Shahaf
a2a0293d4f 47296 (+ unposted additional tests and comments): 'repeat' loops: Let the repeat count use $?.
It's an arithmetic expression.
2020-08-08 06:11:00 +00:00
Daniel Shahaf
b5f24592ad 46183: New XFail test: external command with =(...) on LHS of pipeline cleans up its tempfiles. 2020-07-12 15:57:49 +00:00
Daniel Shahaf
03407c2928 46204: Fix new test case for the theoretical case of having more than 100 files in the root directory. 2020-07-12 11:37:16 +00:00
Cedric Ware
4d7aa71d8e 46152: zsh/system: Re-allow '0' timeout in zsystem flock 2020-07-11 00:14:58 -05:00
Jun-ichi Takimoto
c04a391877 46215: make the test for RM_STAR_SILENT work on wider systems 2020-07-09 19:06:07 +09:00
Bart Schaefer
126a3158d5 46189: Ignore exit status of final zpty_flush in comptesteval 2020-07-07 09:36:11 -07:00
Daniel Shahaf
cf134c15a0 46175/0003: Fix the RM_STAR_SILENT bug from the parent commit. 2020-07-05 11:11:59 +00:00
Daniel Shahaf
b58141c4cf 46175/0002: Add a regression test for 46169: the RM_STAR_SILENT logic processes the current directory rather than the root directory.
The bug will be fixed in the next commit.
2020-07-05 11:11:59 +00:00
Daniel Shahaf
d1b4e60ff5 46175/0001: Add a unit test for the RM_STAR_SILENT option. 2020-07-05 11:11:59 +00:00
Daniel Shahaf
805b946b53 46174/0002: test harness: Restore indentation after the previous commit. No functional change. 2020-07-05 11:11:22 +00:00
Daniel Shahaf
63fde0b744 46174/0001: test harness: Plug a symlink attack
The test harness created tempfiles with a predictable names and sourced
them without verifying they had been created by itself.  This opened
anyone who ran the test suite to a symlink attacks from other local
users on the build machine.

Fix this by creating the file whilst NO_CLOBBER and ERR_EXIT are both in
scope, to ensure that we'll abort unless the file really was created as
expected.

Put the existing rm(1) call in a try/always block to help it be unlinked
on test failures, thus reducing the chances of the NO_CLOBBER check
triggering on tempfiles created by earlier test suite runs.

I had first tried to fix this by using the
.
    () { ... } =(:)
.
idiom, but couldn't get that to work: it broke the %prep code of X03
with ZTST_verbose unset (its default value) but not with ZTST_verbose=3.
(I tried to set the latter to debug zpty_flush.)

While there, add a needed-in-principle-but-noop-in-this-specific-case (q).

Indentation will be restored in the next commit.
2020-07-05 11:11:22 +00:00
Matthew Martin
4e471c3f89 46168: Update $PWD and call chpwd hook after normalizing path 2020-07-03 21:17:58 -05:00
Peter Stephenson
4e0058afc5 users/24971: ${(-)var} sorts on signed integers 2020-07-03 21:05:46 +01:00
Daniel Shahaf
0cffb0a6b3 46072 + 46136: Add the 'zle $widget -f nolast' syntax, to improve add-zle-hook-widget support for multiple hook functions.
See workers/46004 for the use-case.
2020-06-27 03:09:31 +00:00
Peter Stephenson
7865486994 46100: Fix =subst before =(subst)
This occurs with SH file expansion ordering.

Add test.
2020-06-26 17:32:02 +01:00
oxiedi
c4540e154f 45895: ignore deduplication patterns in _sequence 2020-06-26 00:34:33 +02:00
Daniel Shahaf
dd6e702ee4 46068 (tweaked) (was: github #57): region_highlight: Add memo= support.
This is useful when multiple plugins add region_highlight entries and
subsequently want to remove only their own entries.  Without this
functionality, recognizing one's region_highlight entries is not trivial
because the 'start' and 'end' offsets are modified by editing of $BUFFER
and the highlight specification may not be unique or distinctive.

The tweaks are as follows:

- Change zfree() to zsfree() per workers/46070.

- Remove the mem.c hunk, as it changed the signature of only one out of
  two alternative definitions of zsfree().  (The definition that hunk
  touched is the one that's not used by default.)
2020-06-25 11:50:33 +00:00
Daniel Shahaf
304ce85a2a 46102: test harness: Make the XPass message distinct from the Fail message.
The new output is:

    ./Test/B02typeset.ztst: starting.
    Test ./Test/B02typeset.ztst was expected to fail, but passed.
    Was testing: this is the description that's after the colon on in the ztst file
    ./Test/B02typeset.ztst: test XPassed.
    **************************************
    0 successful test scripts, 1 failure, 0 skipped
    **************************************
    make[1]: *** [Makefile:190: check] Error 1
    make: *** [Makefile:263: check] Error 2

The new function is deliberately very similar to ZTST_testfailed() just
above it.
2020-06-25 10:24:11 +00:00
Peter Stephenson
af1c009c3e 46079: Ignore double quotes in math expressions.
Treat as white space.

This is required for compatibility and previously had no use in zsh
as it generated an error.
2020-06-23 12:17:32 +01:00
Daniel Shahaf
6be112fe74 46067: Add a unit test for workers/46060. 2020-06-18 10:34:11 +00:00
Peter Stephenson
3df604a4be 46026: Add CLOBBER_EMPTY option. 2020-06-09 18:07:01 +01:00
Peter Stephenson
40723b3991 45900: Fix issues with escaped newline in $-substitution. 2020-05-23 18:01:26 +01:00
Daniel Shahaf
c7da34dd71 45862: Add test cases for 45843#1 and 45843#2, adapted from Aaron Esau and pws. 2020-05-20 00:48:41 +00:00
Mikael Magnusson
06c0a39895 unposted: Add tests for previous commit 2020-05-12 15:58:41 +02:00