Remove calls to programs from /sbin/ with _call_program and to avoid the
system complies to the FHS.
Support modules completion for NixOS and Guix which store their kernel
modules not at /lib/modules.
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.
Now it properly gets completed, but in the case of gpg.openpgp.program,
the description would be shown as "unknown option name", that being the
description of gpg.*.program via `git help -c`, which shadows the
more description of gpg.openpgp.program in $git_options.
The warning was:
.
warning: passing 'const char *' to parameter of type 'void *'
discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
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.)
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.
"Topics" is an experimental concept in Mercurial that augments the
current branching concept (called "named branches").
For more information, see the not always up-to-date Mercurial Wiki page
https://www.mercurial-scm.org/wiki/TopicPlan.
This manifested as a trailing non-underlined ".RE" in the rendered man page.
(I guess that was a man page directive, but I'm not sure how the extraneous
closing parenthesis caused it to be rendered in the output.)
Problem
Variants of tar based on libarchive or GNU tar can support extracting
zstd based files.
Solution
Add this type of to _tar_archive.
From noraj <gitlab@mg.gitlab.com>
Problem
Variants of tar based on libarchive can extract zip files but
`tar xf <tab>` does not complete this type of file.
Solution
Add this type of to _tar_archive.
- Consistently use the term "pattern" rather than "context" or "style pattern"
- Correct statements about order of precedence of patterns
- Give the rationale for the "rule of thumb"
By default Unison uses the ~/.unison directory to store its cache and
profiles. However, this location is configurable through the $UNISON
environment variable. Quoting from the manual [1]:
> If the environment variable UNISON is defined, then its value will be
> used as the name of this directory.
This patch enables users to move the .unison directory and still enjoy
zsh completion for profiles.
[1] https://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#unisondir
Add support to the -S and -W options.
Remove the facility for completing files from the tree specified by the
--source argument since, upon testing in git 2.26.0, that doesn't seem
to be correct behaviour. (Note git-restore(1) says the command is
experimental and its semantics may change.) See discussion on the PR
for details.
The hook already receives information about the current (topmost
applied) patch and, if the get-unapplied style is set, about future
(unapplied) patches.
Tested in the Functions/VCS_Info/test-repo-git-rebase-apply scenario,
after manually converting the rebase to a «git am». (Specifically,
I ran:
mkdir d
git rebase --abort
git format-patch rebase_from_this..HEAD -o d
git checkout rebase_onto_this
git am d/*
.)
Have V01zmodload.ztst check that all modules enabled in config.modules
load successfully. With this change, the test files for individual
modules may assume that if 'zmodload' fails that must be because the
module hadn't been compiled in, and mark themselves as skipped in that
case.
In order to detect equivalence b/w various rlimit values, use compile
tests instead of run tests. This enables configure script to run in
cross-build environment without any side effects.
From NetBSD/pkgsrc:
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/shells/zsh/patches/
The code before this commit happened to have done the right thing:
"exec" lines were handled by the catchall forward compatibility case,
which happened to have had virtually the same effect as the correct
case. However, that was merely an accidental result. This patch makes
the code do the right thing deliberately, rather than by accident.
* Update _command_names to add **/sbin to PATH when not otherwise overridden
and _comp_priv_prefix is set. This ensures that, on systems where
unprivileged users don't have **/sbin in their PATHs, we can still complete
those commands when they try to run them with e.g. sudo
* Update functions for privilege-gaining commands to use the aforementioned
mechanism
* Fix some other minor issues in _pfexec and _doas
Changes from the posted diff:
* Fix a minor redundancy in _doas
* Add _c_p_p=( '' ) hack to _su
The change in question was (deliberately) not merged to master before the 5.8
release. Therefore, it is a "post 5.8" change, even though it was written
when 5.7.1 was the latest release.
* Test/D02glob.ztst:
On the "unreadable directories can be globbed (users/24619, users/24626)"
test, resolve conflicts by removing the Cygwin-only skip that has been added
in master, since the test is passing on this branch. This effectively reverts
workers/45492. See discussion starting in workers/45504.
* origin/master:
unposted: Remove 'sgi', as that OpenBSD port has been discontinued.
45509: fix typos in B01cd.ztst
45490 (+45495 and a test): refactor rlimits.c
github #49: Fix typo: longson should be loongson
users/24710: Fix job control problem with sudo.
45492: skip test added by users/24633 on Cygwin
45488: COMP_WORDS for bash need "$@"-style quoting
45487: Missing mod_export declarations for AIX
45447: Complete vcs_info_hookadd and vcs_info_hookdel. Expose _vcs_info_hooks as a top-level helper function.
45463: test: kill: Document why we use SIGURG
45453: builtins: kill: Do not signal current process group when pid is empty
45452: builtins: kill: Add `kill ''` regression test with explicit sigspec
45451: builtins: kill: Add basic test suite
github #48/0002: vcs_info git: properly detect bare repositories
github #48/0001: vcs_info git: avoid warnings in bare repositories
unposted: Post-release version bump
unposted: Release 5.8
CVE-2019-20044: Update change log for preceding commits
Update NEWS/README
Add unsetopt/PRIVILEGED tests
Clean up error-message white space
Improve PRIVILEGED fixes (again)
Improve PRIVILEGED fixes
Drop privileges securely
unposted: V01zmodload: Fix failing test from workers/45385
45423: _su: Improve arg handling, shell look-ups
unposted: _zip: Recognise '--'
45385: Add a test for 'zmodload -Fa' preemptively disabling ("blacklisting"?) features.
unposted: Test release: 5.7.1-test-3
zsh/system: Fix infinite loop in sysread
_diff_options: Restore -w completion lost in workers/43351
unposted: Fix ChangeLog typo.
45368: Add tests for workers/45367's issue about double slashes in 'cd -P' and /home/daniel/in/zsh.
45373: Fix ERR_EXIT bug in else branch of if.
45372: Record a symlink loop bug involving :P
45365: _git: Fix __git_recent_branches for the case when a commit has an empty message
45343: Queue signals around arithmetic evaluations
45344: Document where third-party completion functions should be installed.
45345: internal: ztst.vim: Fix highlighting of zsh comments in test payload
unposted: internal: Add some comments and fix indentation. No functional change.
45340: internal: Document the difference between paramtab and realparamtab.
45332: _git: add completion for git-version
_brace_parameter: add missing \
Conflicts:
ChangeLog
Test/D02glob.ztst
Test/V01zmodload.ztst
If we use kill to test for continued existence of a process group,
we should check on failure that the error is ESRCH, as EPERM
indicates the group still has memebers but running privileged
so should be left alone.
The following case was encountered in the wild:
% zsh; echo "$?"
% trap 'exit 5' TERM
% kill ''
5
This behaviour seems more likely to be the result of bugs in programs
(e.g. `kill -9 "$unsetvar") rather than being desirable
behaviour to me. It also seems unintentional judging by the code and
documentation, since it comes about as a result of the fact that:
- `isanum` returns true for empty strings (since an empty string
technically only consists of digits and minuses...);
- `atoi`, when passed a pointer to an invalid number, returns 0;
- `kill(0, signal)` sends the signal in question to all processes in the
current process group.
There are (at least) two ways to solve this issue:
1. Add special handling to `kill` to avoid this case. See this patch[0]
for a version that does that.
2. Change how isanum behaves. Since the only two call sites that use it
both seem like they should handle the case where the input char array
is empty, that seems like a reasonable overall change to me.[1]
After this patch:
% trap 'exit 5' TERM
% kill ''
kill: illegal pid:
The regression test for `kill` without a sigspec is also included in
this commit, as previously it's not possible to test it trivially as it
would still kill the test runner in expected-to-fail mode; see
discussion in workers/45449.
0: workers/45426: https://www.zsh.org/mla/workers/2020/msg00251.html
1: The other call site using isanum() is the fg builtin, but in that
case we just fail later since we can't find any job named '', so no
big deal either way. It's the kill case which is more concerning.
The version without a sigspec can't be added yet because it would still
kill the test runner even in expected-to-fail mode; see workers/45449
for discussion. For the same reason, we use a signal which is non-fatal
by default and unlikely to be sent by someone else, SIGURG, to do the
expected-to-fail case prior to the fix.
This is not totally comprehensive, but at least it's a start for the
core functionality. In the next commits, we'll also use this base to add
some regression tests.
We currently detect Git repositories by finding the top level of the
working tree, and if we fail to detect it, assume that we're not in a
repository. However, there's a case we don't consider: a bare
repository.
Let's detect if the user is in a bare repository by checking if gitdir
is set, and if so, using that if there is no working tree. We now
detect bare Git repositories with vcs_info, as expected.
Git 2.25 introduced a change to how git rev-parse --show-toplevel
behaves. Traditionally, it succeeded with no output if the user was
in a bare repository. Now it dies, printing an error to standard error.
Consequently, when the user is in a bare repository with a newer Git,
vcs_info prints noisily to standard error.
While this is functionally harmless, it is annoying for the shell to
print messages from Git every time the prompt is printed, so let's
silence the error message.
* master:
45305: Add an XFail test: The exec-last-command optimization is applied to try/always.
45307: zstyle docs: Unoverload a placeholder variable name.
45306: zstyle docs: Introduce the first synopsis in the same way as all others: with an item()().
unposted: docs: Fix a cross-reference.
On macOS, a privileged stat(2) call can erroneously treat files as
directories, which can produce unexpected glob results. This was reported at
workers/42891. A side-effect of the change from workers/45291 is that it seems
to work around this issue, at least in the obvious cases
Right now, as we're preparing to tag the 5.8 release, the 5.9 branch is
maintained as a topic branch off master.
* origin/master:
45287: zshexpn: Describe parameter elision and add some introductory prose
45302: bin_umask(): Queue signals around umask().
users/24656: docs: Add an example of setting and querying zstyles
users/24659: Cross-ref doc for matchers.
45296: D02glob: Clean up after test from users/24633
45290: New helper script for listing XFail tests.
users/24633: Add an xfail test for users/24619.
unposted: additional typo fix
45280: _git: add -local variants
users/24628 (fixed): More doc for selectw-word-style widgets.
45266: Fix losetup completion, broken in da085b7a20 (41720).
unposted: Fix punctuation.
use /dev/fd on Cygwin for process substitution
unposted: Two additional typo fixes.
Fix typos reported by codespell in shell code
Fix typos reported by codespell in Src/
45269: Fix misspellings in completions and elsewhere.
45261: _gcc: Detect clang-as-gcc
unposted: internal: Remove Vim modeline that interferes with ztst.vim.
unposted: internal: ztst.vim: Use :syn-sync to work around (#x) and "`\\\\\\\\`" confusing the highlighting.
unposted: internal: zyodl.vim: Support glob qualifiers in example()'s
unposted: internal: zyodl.vim: Support yodl comments.
github #44: Allow completion for picocom to list symlinks to character devices
45245: _gcc: add some clang specific warnings
45231: _rsync: When completing remote modules, ignore more of the motd.
unposted: _tac: Eliminate superfluous variable
45226: _man: Improve completion of file paths
45184: Clarify documentation of %-sequences understood by compadd -[Xx]
45239: Remove 'appendhistory' from zsh-newuser-install
45218: add more options to swaks completion
45196: fix completion after make -C, allowing for -C being used multiple times
unposted (after 45183): Fix yodl error: "contrib.yo:4457: No macro: back(...)".
45181: Fix workers/45164: ${(S)%%} will now consider the empty string as a potential match.
45183: Improve documentation examples
unposted: Add some tests for ${(S)}, including a regression test for workers/45164.
45169/0002 (tweaked for trailing newlines): Add an expected-to-fail test for workers/44007.
45169/0001: In the test suite, allow test cases to be marked as expected to fail.
users/24582 + users/24583: Add regression tests for the previous commit.
24581: Fix array assignments in shell word splitting and completion.
45160: zshexpn: Expand documentation of (S)
45150 + 45152: zshexpn: Use a more minimal example in the documentation of (#b).
unposted: internal: Vim ztst support: Add an ftplugin in addition to the syntax highlighter.
45130: _multi_parts: Always pass -f to compadd if given by caller
unposted: zerrmsg(): Fix macro guard missed in previous commit
unposted: ChangeLog for last commit
internal: Allow %L in zerrmsg() in non-debug builds, too.
Technically all timezone formats support the "-local" suffix but it is
not meaningful for all of them. As such just list out the specific
formats which it does.
Also adjust the 'default' description
As an alternative, one can use:
autocmd BufRead,BufNewFile **/*.ztst setfiletype zsh
(But see Util/ztst-syntax.vim and Util/ztst-ftplugin.vim for an alternative.)
We cannot use the --no-motd option because it inhibits the modules
listing.
We cannot look for a blank line because there will not be a blank line
if the "motd file" does not end with a newline.
Looking for tabs is an improvement. Any tabs in the motd will still
cause extraneous matches, but there's nothing we can do about that.
While here, show the modules in the order listed.