about summary refs log tree commit diff
path: root/Test
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'typesettounset' into declarednull declarednullBart Schaefer2021-04-132-1/+50
|\ | | | | | | Adds 'setopt typeset_to_unset', documentation, failure tests for POSIX incompatibilies, etc.
| * 48487 (amended): Failure test for math evaluation oddityBart Schaefer2021-04-131-1/+1
| | | | | | | | This was inadvertently included with TYPESET_TO_UNSET, so only the amendment is included here.
| * Update descriptive test for POSIX $((inf)) failureBart Schaefer2021-04-121-1/+2
| |
| * Change TYPESET_DOES_NOT_SET to TYPESET_TO_UNSET to avoid double-negativeBart Schaefer2021-04-122-1/+49
| |
| * Add TYPESET_DOES_NOT_SET option (cf. 48469)Bart Schaefer2021-04-101-1/+1
| |
| * Fix ${(t)var} output, add comparative test casesBart Schaefer2021-04-102-0/+29
| |
| * Missed files from POSXIBUILTINS commitBart Schaefer2021-04-101-6/+6
| |
| * Make DECLAREDNULL require POSIXBUILTINS and introduce a new test file.Bart Schaefer2021-04-101-0/+105
| | | | | | | | V10private has been made agnostic to POSIXBUILTINS.
| * Add PM_DECLARED and PM_DECLAREDNULL parameter flags.Bart Schaefer2021-04-102-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This addresses the issue that "typeset foo" creates $foo set to an empty string, which differs from typeset handling in bash and ksh. It does this by concealing the internal value rather than alter the way internal values are defaulted. This imposes the following changes: A typeset variable with no assignment triggers NO_UNSET warnings when the name is used in parameter expansion or math. The typeset -AEFHLRTZailux options are applied upon the first assignment to the variable. Explicit unset before the first assignment discards all of those properties. If any option is applied to an existing name, historic behavior is unchanged. Consequent to the foregoing, the (t) parameter expansion flag prints nothing until after the first assignment, and the (i) and (I) subscript flags also print nothing. The bash behavior of "unset foo; typeset -p foo" is NOT used. This is called out as an emulation distinction, not a change. The test cases have not been updated, so several now fail. The test harness has been updated to declare default values.
* | Fix ${(t)var} output, add comparative test casesBart Schaefer2021-04-132-0/+29
| |
* | Missed files from POSXIBUILTINS commitBart Schaefer2021-04-131-6/+6
| |
* | Make DECLAREDNULL require POSIXBUILTINS and introduce a new test file.Bart Schaefer2021-04-131-0/+105
| | | | | | | | V10private has been made agnostic to POSIXBUILTINS.
* | Add PM_DECLARED and PM_DECLAREDNULL parameter flags.Bart Schaefer2021-04-132-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This addresses the issue that "typeset foo" creates $foo set to an empty string, which differs from typeset handling in bash and ksh. It does this by concealing the internal value rather than alter the way internal values are defaulted. This imposes the following changes: A typeset variable with no assignment triggers NO_UNSET warnings when the name is used in parameter expansion or math. The typeset -AEFHLRTZailux options are applied upon the first assignment to the variable. Explicit unset before the first assignment discards all of those properties. If any option is applied to an existing name, historic behavior is unchanged. Consequent to the foregoing, the (t) parameter expansion flag prints nothing until after the first assignment, and the (i) and (I) subscript flags also print nothing. The bash behavior of "unset foo; typeset -p foo" is NOT used. This is called out as an emulation distinction, not a change. The test cases have not been updated, so several now fail. The test harness has been updated to declare default values.
* | 47794: exec: run final pipeline command in a subshell in sh modebrian m. carlson2021-04-101-0/+22
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* 48432 and enable test: fix quotiing of zstyle -L for zstyle -ePeter Stephenson2021-04-091-1/+1
|
* 48379: Make the parameter expansion subscript flags parse error message, ↵Daniel Shahaf2021-04-081-0/+5
| | | | "error in flags", identify the location of the parse error.
* 48425: Add an XFail test for a 'zstyle -L' escaping bug (workers/48424).Daniel Shahaf2021-04-071-0/+9
|
* 48413: Fix _expand completion testMarlon Richert2021-04-062-7/+7
|
* 48202 + 48366: Fix handling of NUL bytes in zexpandtabs multibyte versionMikael Magnusson2021-04-011-4/+5
|
* 48214: add file types to _expand completions, so they can be colored through ↵Marlon Richert2021-03-311-0/+19
| | | | complist
* 48216: Fix broken Y01 test from workers/48180dana2021-03-281-0/+3
|
* unposted: Improve documentation and add regression test for workers/47745dana2021-03-231-0/+7
|
* 48180: Start menu selection with select=long-list in menu styleMarlon Richert2021-03-171-0/+34
|
* 48147/0002: zmathfunc: Fix bug where the exit code would be non-zero if the ↵Daniel Shahaf2021-03-071-1/+1
| | | | expression evaluted to zero.
* 48147/0001: tests: Add a unit test for zmathfunc and a regression test for ↵Daniel Shahaf2021-03-071-0/+23
| | | | workers/48146 affecting it.
* 47905: Add leading '-' to zparseopts option parsing errorsJoshua Krusell2021-02-131-4/+4
|
* 47895: Remove trailing spaces from "print -ac" output lines.Bart Schaefer2021-02-041-3/+3
|
* 47865: More tests for globbing in restricted directoriesBart Schaefer2021-02-041-0/+17
|
* 47899: Improve error message from zparseopts.Joshua Krusell2021-02-031-1/+1
|
* 47849: do not skip tests requiring zpty on CygwinJun-ichi Takimoto2021-01-209-25/+11
|
* 47494, 47495: Add -n option to strftimeMikael Magnusson2020-10-251-0/+4
|
* 47302: Test for print -v fixMikael Magnusson2020-10-252-0/+10
|
* 47364: Enable extendedglob in pattern with ${(*)name/pattern/replacement}Bart Schaefer2020-09-131-0/+5
| | | | Mikael Magnusson: 47382: Completion for 47364
* 47352 (+ extra test cases): fix %<n>K prompt expansionStephane Chazelas2020-09-101-0/+28
| | | | | | | | | | | 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.
* 47314: is-at-least false positive (5.8.0.2 / 5.8)Daniel Shahaf2020-08-161-0/+27
| | | | | | | | | | | 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".
* 47296 (+ unposted additional tests and comments): 'repeat' loops: Let the ↵Daniel Shahaf2020-08-081-0/+14
| | | | | | repeat count use $?. It's an arithmetic expression.
* 46183: New XFail test: external command with =(...) on LHS of pipeline ↵Daniel Shahaf2020-07-121-0/+9
| | | | cleans up its tempfiles.
* 46204: Fix new test case for the theoretical case of having more than 100 ↵Daniel Shahaf2020-07-121-1/+1
| | | | files in the root directory.
* 46152: zsh/system: Re-allow '0' timeout in zsystem flockCedric Ware2020-07-111-11/+10
|
* 46215: make the test for RM_STAR_SILENT work on wider systemsJun-ichi Takimoto2020-07-091-6/+9
|
* 46189: Ignore exit status of final zpty_flush in comptestevalBart Schaefer2020-07-071-0/+1
|
* 46175/0003: Fix the RM_STAR_SILENT bug from the parent commit.Daniel Shahaf2020-07-051-1/+1
|
* 46175/0002: Add a regression test for 46169: the RM_STAR_SILENT logic ↵Daniel Shahaf2020-07-051-2/+4
| | | | | | processes the current directory rather than the root directory. The bug will be fixed in the next commit.
* 46175/0001: Add a unit test for the RM_STAR_SILENT option.Daniel Shahaf2020-07-051-1/+26
|
* 46174/0002: test harness: Restore indentation after the previous commit. No ↵Daniel Shahaf2020-07-051-18/+18
| | | | functional change.
* 46174/0001: test harness: Plug a symlink attackDaniel Shahaf2020-07-051-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* 46168: Update $PWD and call chpwd hook after normalizing pathMatthew Martin2020-07-031-1/+18
|
* users/24971: ${(-)var} sorts on signed integersPeter Stephenson2020-07-031-0/+7
|
* 46072 + 46136: Add the 'zle $widget -f nolast' syntax, to improve ↵Daniel Shahaf2020-06-271-0/+11
| | | | | | add-zle-hook-widget support for multiple hook functions. See workers/46004 for the use-case.
* 46100: Fix =subst before =(subst)Peter Stephenson2020-06-261-0/+4
| | | | | | This occurs with SH file expansion ordering. Add test.