Commit graph

130 commits

Author SHA1 Message Date
ridiculousfish
4621e763b6 Fix wildcard expansion in directories without read permissions
When performing wildcard expansion with a literal path segment,
instead of enumerating the files in the directory, simply apply the
path segment as if we found the directory and continue on. This
enables us to expand strings that contain unreadable directory
components (common with $HOME) and also improves performance, since
we don't waste time enumerating directories unnecessarily. Adds
a test too.

Fixes #2099
2015-06-20 12:32:30 -07:00
ridiculousfish
d018ef39e1 Add abbreviation tests 2015-06-14 14:13:57 -07:00
ridiculousfish
f3560b8e62 Correctly un-export an env var when it is shadowed
Prior to this fix, if you exported a variable in one scope
and then unexported it in the next, it would remain exported.
Example:

    set -gx VAR 1
    function foo; set -l VAR; env; end
    foo

Here 'VAR' would be exported to 'env' because we failed to
notice that the env var is shadowed by an unexported variable.
This occurred at env var computation time, not in env_set!

Fixes #2132
2015-06-12 16:05:59 -07:00
ridiculousfish
286c60bc9d Correctly handle mixing named arguments with function name
Before this fix, `function -a arg1 name1` would produce a
function named 'arg1'. After this fix, it will produce a
function named 'name'. See #2068 for more.
2015-05-17 14:17:01 -07:00
ridiculousfish
534fd1a59e Pass the character index, not the character, to parse_util_expand_variable_error
Fixes #2067
2015-05-15 17:56:12 -07:00
ridiculousfish
3ca518255e Treat comments ending in backslashes as not continuing onto the next line
Fixes #1255
2015-05-02 18:22:20 -07:00
ridiculousfish
f30872a7b5 Recalculate exported variables when universal variable is erased
Fixes #2046
2015-04-29 17:28:49 -07:00
ridiculousfish
c3ef23b10f Support for a "pending item" in history.
Before running a command, we add the command to history, so
that if the command causes us to exit it's still captured in
history. But that command should not be considered part of
history when expanding the history within the command itself.
For example, `echo $history[1]` should be the previously
run command, not `echo $history[1]` itself.

Fixes #2028
2015-04-20 02:04:17 -07:00
ridiculousfish
9f8cec7f9e Add a test for issue #1987 2015-04-05 23:47:04 -07:00
ridiculousfish
d7ba6e4a1d Properly fire events for universal variable changes
Fixes #1929
2015-02-03 16:13:02 -08:00
ridiculousfish
7164769d33 Introduce tests for #1892 2015-01-17 15:22:37 -08:00
ridiculousfish
d4eded2376 Make octal/hex escapes in printf and echo output literal bytes
Fixes #1894
2015-01-15 11:21:07 -08:00
ridiculousfish
e045eabad6 Add tests to verify pipes do not conflict with fd redirections 2015-01-04 14:18:06 -08:00
ridiculousfish
a21db45cee Improve indentation of blocks inside if/while headers
Fixes #1665
2014-12-23 16:30:39 -08:00
ridiculousfish
6fa9a18a2b Correct path in fish_indent tests 2014-12-23 15:51:18 -08:00
ridiculousfish
da2e2c2e99 Implement tests for fish_indent 2014-12-23 15:46:47 -08:00
ridiculousfish
96589920d5 Allow running specific high-level tests by passing the name to test.fish
Example:
  tests/test.fish expansion
This will run the tests in expansion.in only
2014-12-23 12:20:44 -08:00
Kevin Ballard
94a3203c74 Disable localizations during tests 2014-11-25 01:44:58 -08:00
Kevin Ballard
184110c2e7 Revert "tests/status.in: fix test for locale, fall back to default strings"
This reverts commit 3b3fde1c5e.
2014-11-25 00:51:39 -08:00
David Adam
3b3fde1c5e tests/status.in: fix test for locale, fall back to default strings 2014-11-25 16:00:04 +08:00
Kevin Ballard
83df5ea660 Define a common mktemp for tests
GNU and BSD `mktemp` handle options differently, and it's a useful
utility for tests. As such, define a common `mktemp` function wrapper
for the test suite.

It might actually be nice to expand this for more flags and support it
globally, but that may result in confusion for any users of BSD mktemp
that expect to be running /bin/mktemp.
2014-11-24 01:51:07 -08:00
Kevin Ballard
e13d423b68 Tweak test runner to set up environment better
Update the test runners so they set up their own environment in
test_util.fish. This simplifies the Makefile and paves the way for
adding utility functions for use in the tests themselves.
2014-11-24 01:51:07 -08:00
ridiculousfish
c33a3862cc Disable printf %a test since it has different output on FreeBSD
Fixes #1139
2014-11-02 00:27:52 -07:00
ridiculousfish
6cc64fc9e3 BOM test should only run in UTF-8 locales 2014-11-02 00:14:16 -07:00
ridiculousfish
4b6639f697 Allow # within string tokens
This means that # must be the first character of the string
to start a comment, in line with other shells

Fixes #953
2014-11-01 21:06:16 -07:00
ridiculousfish
fa588db148 Fix to swallow BOMs in sourced files
Fixes #1518
2014-11-01 16:25:28 -07:00
ridiculousfish
a177eb8c16 Fix expansion tests on OS X 2014-10-30 21:51:23 -07:00
David Adam
ab7af98ded expand: expand tilde to canonical paths
Work on #1133.
2014-10-26 08:50:28 +08:00
ridiculousfish
9e32b330aa Unescape strings in keyword detection.
This allows keywords to be quoted. However, they may not contain
variable or process expansions, etc. Fixes #1398
2014-10-15 12:49:02 -07:00
ridiculousfish
1927ebbc5d Improve error reporting for unclosed blocks 2014-10-14 00:41:39 -07:00
ridiculousfish
c0b8e81b02 Change how arrays and environment variables interact.
Prior to this change, inherited environment variables
would be split on colons, becoming an array. This change
eliminates that behavior. Now environment variables are
always split on the record separator character (ASCII 0x1e),
with the exception of a short whitelist of PATH, MANPATH,
CDPATH. Likewise, exported variables are also exported
delimited by rs, with the exception of the above whitelist.

Fixes #1374, also see #1656
2014-10-12 15:01:44 -07:00
Kevin Ballard
a13e067b85 Fix test breakage from 14724401f
We can't use $PATHS to test the :-splitting because the global config
file adds extra paths based on /etc/paths and /etc/paths.d.

Ideally fish would have a way to suppress behavior like that, but for
the time being it doesn't.
2014-10-07 19:37:13 -07:00
David Adam
14724401ff env.cpp: correctly check variable_can_be_array
Closes #1746.
2014-10-08 09:53:29 +08:00
Kevin Ballard
33a76e1f8e Update psub for the new --inherit-variable flag
Also do some minor formatting cleanup, make psub return 1 when executed
outside of a command substitution, and make it respect $TMPDIR.
2014-10-02 18:41:39 -07:00
Kevin Ballard
cfc06203e7 Add new functions flag -V/--inherit-variable
--inherit-variable takes a variable name and snapshots its current
value. When the function is executed, it will have a local variable with
this value already defined. Printing the function source will include
synthesized `set -l` lines for the values.

This is primarily useful for functions that are created on the fly, such
as in `psub`.
2014-10-02 18:41:39 -07:00
Kevin Ballard
ae7b6156ac Rewrite fishscript testrunner for better output
Update the fishscript testrunner to use the same output style as the
interactive testrunner.
2014-10-02 12:33:42 -07:00
Kevin Ballard
3616dd5889 Base status -b off the parser execution stack
Instead of globally marking the state as "in block" when evaluating
blocks/functions, update the "in block" status when pushing/popping
blocks on the parser stack.

Fixes #1729.

On a side note, `status -b` is actually pretty useless, because it
always returns 0 inside of a function (even without this patch).
2014-09-30 20:58:45 -07:00
Kevin Ballard
51527612d3 Don't leave is_block in bad state after bad redirection
Fixes #1728.
2014-09-30 17:06:56 -07:00
Kevin Ballard
c4a453fb22 Try to fix the Travis test failures
It seems expect prioritizes the first pattern in the list, instead of
the pattern that matches earliest in the buffer. That seems pretty
stupid, but let's try moving the prompt pattern to the end and see if
that fixes the Travis failures.
2014-09-23 23:20:02 -07:00
Kevin Ballard
1563501868 Fix missing "1 test failed" line
Also tweak colored output to reset before the newline instead of after,
so travis behaves better (for some reason reset causes travis to display
the line in black).
2014-09-23 22:50:28 -07:00
Kevin Ballard
5f82f721d2 Rejigger test suite
Split test_interactive off from test_fishscript and add a new target
test_high_level that tests both.

Add some Makefile magic so the tests can be run serially without using
sub-make, which gets rid of a little noise from the make output.

Rewrite interactive tests to look better.
2014-09-23 22:39:23 -07:00
Kevin Ballard
a4059d3e60 Support wide characters in printf %c 2014-09-21 23:22:43 -07:00
Kevin Ballard
b480c8ce79 Allow U+F8FF to be typed
U+F8FF is the last character in the private use area, but it's also the
codepoint used for the Apple symbol (), which is typeable on US
keyboards in OS X, and so should actually work.
2014-09-21 21:03:44 -07:00
Kevin Ballard
a012aedb31 Fix incorrect error on read with 1-character input
When `read` is given a single character of input (including the
newline), it was bailing as if it had been given no input. This is
incorrect.
2014-09-21 20:00:26 -07:00
Kevin Ballard
c64f38f0bf Add extra logging for interactive test failures 2014-09-21 19:42:39 -07:00
Kevin Ballard
8f8c4cdd17 Implement new read --null flag
The `--null` flag to `read` makes it split incoming lines on NUL instead
of newlines. This is intended for processing the output of a command
that uses NUL separators (such as `find -print0`).

Fixes #1694.
2014-09-21 19:27:26 -07:00
Kevin Ballard
a069aec11d Squelch spurious set PATH errors in test 2014-09-20 00:35:51 -07:00
Kevin Ballard
8a3cf144f2 Don't include child directories of $PATH in completions
Directories are completed like commands, because of implicit cd.
However, directories found inside $PATH entries should not be completed,
as implicit cd doesn't work there. Similarly, directories should not be
completed after the `command` builtin.

Fixes #1695.
2014-09-20 00:31:33 -07:00
Kevin Ballard
940f264ee6 Decrement SHLVL when running exec
`exec` removes fish from the shell "stack", so SHLVL needs to be
decremented to match. This means `exec fish` will result in the same
SHLVL in the new fish instance.

Also tweak the SHLVL logic to interpret an environment SHLVL of "3foo"
as garbage instead of as the value "3".

Fixes #1693.
2014-09-19 17:38:54 -07:00
Kevin Ballard
51c2005ea2 Tweak interactive debug output 2014-09-19 16:22:37 -07:00