<!---
Thanks for opening a PR on xonsh!
Please do this:
1. Include a news file with your PR
(https://xon.sh/devguide.html#changelog).
2. Add the documentation for your feature into `/docs`.
3. Add the example of usage or before-after behavior.
4. Mention the issue that this PR is addressing e.g. `#1234`.
-->
## For community
⬇️ **Please click the 👍 reaction instead of leaving a `+1` or 👍
comment**
---------
Co-authored-by: a <1@1.1>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* feat: better stacktraces
* reraise SystemExit to enable proper exit codes and maintain old
behaviour in repl
* dont ignore exceptions when loading rc-files
* update tests with new SyntaxError formatting, new behavior that main
does not throw user exceptions
* pull return out of finally (flake8, B012)
* hide XonshError traces, fix mypy error, enable circumvention of trace suppression
with XONSH_DEBUG in non-interactive use
* fix mypy error
Co-authored-by: Alexander Firbas <alexander.firbas@gmail.com>
* todo
* test: remove usage of DummyEnv and setting .env attribute on xession fixture
one step closer to making too much of tweaking to xession during tests
* test: fix tests vox and gitstatus-prompt
* docs: update test-fixture usage
* fix: import flake8 error
* test: remove direct access to XSH in tests
* test: remove usage of XSH in test files
* todo
* test: use tmp-dir to create stubs
* refactor: use fixture factory to mock out XonshSession
* refactor: remove direct access of XSH from functions
* refactor: remove direct access of XSH from functions
* fix: qa checks
* refactor: rename variables to match their values
* test: update failing tests because it had no PATH set previously
* fix: remove builtins usage from pyghooks.py
* style:
* refactor: update tests to use fixtures
* fix: env varialbe is setup per function
some tests accidentally update the env variables and that is leaking
into next tests
* fix: failing vox tests
* test: set commands_cache per test
* test: fix failing tests
* fix: failing tests on linux
ptk-highlight
* fix: failing tests on Windows
cwd-prompt
* test: copy env as to not affect original object
* fix: lazily evaluate cmds-cache in pyghooks
* test: fix failing tests
* fix: qa errors import
* test: set commands-cache per test
while caching path results
* test: speedup test_thread_local_swap
* fix: failing tests on windows
* refactor: Execer doesn't control session
* refactor: XSH.unload will take care of reversing builtins attrs set
* test: use env.update over monkeypatch
* Revert "test: use env.update over monkeypatch"
This reverts commit 010a5022247a098f1741966b8af1bf758663480e.
* specs: Make sure sub-specs are always captured regardless of $XONSH_CAPTURE_ALWAYS
* procs: Ensure env is used in functional aliases
* news: Add always-capture-aliases
* tests: procs: Skip known issues
* tests: Restore all builtins in the 'xonsh_builtins' fixture
* tests: vc: Use monkeypatch to mock CommandsCache functions
* tests: main: Don't use the local machine's xonshrc
* args: accept --rc dir to load dir/*.xsh
* test_main: add a test for --rc dir
* args: drop unused --config-path, not read anywhere
* news: add entry for rcdir changes
* xonshrc_context: return loaded instead of context, don't touch env
This function returned the context, but the return value is not used by
the sole call site (and would inconsistently be either the env or ctx
depending on other arguments). Redefine the function to return what was
loaded.
The function will also no longer touch the environment variables
XONSHRC, XONSHRC_DIR or LOADED_RC_FILES.
* XonshSession: add rc_files list, and set in start_services
* LOADED_RC_FILES: drop completely
* xonfig: add RC files
* test_main: update tests for changes to XONSHRC{,_DIR}
* news: add entry for xonshrc changes
* refactor: remove usage of global variables in abbrevs.py
* chore: add flake8-mutable to prevent mutable defaults
* fix: abbrevs expand test
* refactor: add xonsh session singleton
* refactor: fix circular errors when using xonshSession as singleton
* refactor: remove black magicked builtin attributes
* style: black format tests as well
* refactor: update tests to use xonsh-session singleton
* refactor: update abbrevs to not use builtins
* test: remove DummyCommandsCache and patch orig class
* fix: failing test_command_completers
* test: use monkeypatch to update xession fixture
* fix: failing test_pipelines
* fix: failing test_main
* chore: run test suit as single invocation
* test: fix tests/test_xonsh.xsh
* refactor: remove builtins from docs/conf.py
* fix: mypy error in jobs
* fix: test error from test_main
* test: close xession error in test_command_completers
* chore: use pytest-cov for reporting coverage
this will include subprocess calls, and will increase coverage
* style:
* test_main: test lots of startup order combinations
This is based on the startup order described in
https://github.com/xonsh/xonsh/issues/4096#issuecomment-791991841
and adds an (ugly) parameterised test which tries lots of different
CLI combinations, and verifies which RC files (if any) get loaded,
and in what order.
* test_script_startup: skip on windows
* Add support for rc.d drop-in configuration directories
* main: change how --rc, --no-rc are handled
Explicitly pass --no-rc rather than signalling it as an empty --rc, to
indicate that we should suppress both XONSHRC and XONSHRCDIR in that
case.
* Rename XONSHRCDIR -> XONSHRC_DIR
* xonshrc_context: document setting env for XONSHRC_DIR
* main: --rc foo.xsh should suppress XONSHRC_DIR
* fix: handle ast.Index and ast.ExtSlice change while Parsing
related to #4100, #4099, #4068, #4038, #4028, #4005,
* fix: py39 raises when lineno & col not given
TypeError: required field "col_offset" missing from keyword
* fix: tuple inside scbscriptor support for py39
* chore: enable py39 ci checks
they were silently failing before
* test: a backlog test for attributes inside subscriptors
this would require debugging deep into the ply parser methods.
* docs: add news item
* test: skip test_rc_with_modified_path on windows
* Update tests/test_parser.py
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>
* test: mark failing tests for py39 parser
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>
* flake8 fixes -- tests only
* fix ci failure
* integrate fix from is_3551 so tests will pass.
* Update tests/test_builtins.py
Co-authored-by: Gil Forsyth <gforsyth@users.noreply.github.com>
Unset builtins.__xonsh__ in shell fixture to make sure main.py tests
pass even if the XonshSession has not been touched by previous tests.
Also set $XONSH_CACHE_SCRIPTS in os.environ instead of
builtins.__xonsh__.env since it's not yet created.
As per discussions with @asmeurer -- if xonsh is being used to launch a script,
e.g.
```
xonsh run_my_cool_deploy.xsh
```
then it should not load the `xonshrc` file since this should be reserved for
interactive functionality and we don't want side effects in the script.
Basically, if you need a xontrib to be loaded for your script, load it in your
script