mirror of
https://github.com/xonsh/xonsh.git
synced 2025-03-04 08:24:40 +01:00
After #5491 there is one case unfixed: ### Before ```xsh echo 'echo home' >> ~/.xonshrc cd /tmp echo 'echo script' > 1.xsh xonsh 1.xsh # all rc without ~/.xonshrc # script xonsh -i 1.xsh # all rc without ~/.xonshrc # bug # script ``` ### After ```xsh echo 'echo home' >> ~/.xonshrc cd /tmp echo 'echo script' > 1.xsh xonsh 1.xsh # all rc without ~/.xonshrc # script xonsh -i 1.xsh # all rc with ~/.xonshrc # home # FIX # script ``` ## 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>
This commit is contained in:
parent
f81d55d09b
commit
5ee386eed9
2 changed files with 52 additions and 1 deletions
|
@ -1358,6 +1358,7 @@ def test_rc_no_xonshrc_for_non_interactive(tmpdir):
|
||||||
|
|
||||||
(rc_dir / "rc_dir.xsh").write_text("echo RC_DIR", encoding="utf8")
|
(rc_dir / "rc_dir.xsh").write_text("echo RC_DIR", encoding="utf8")
|
||||||
(user_home_dir / ".xonshrc").write_text("echo RC_HOME", encoding="utf8")
|
(user_home_dir / ".xonshrc").write_text("echo RC_HOME", encoding="utf8")
|
||||||
|
(script := user_home_dir / "script.xsh").write_text("echo SCRIPT", encoding="utf8")
|
||||||
user_home_rc_path_crossplatform = str(
|
user_home_rc_path_crossplatform = str(
|
||||||
(Path(user_home_dir) / ".xonshrc").expanduser()
|
(Path(user_home_dir) / ".xonshrc").expanduser()
|
||||||
)
|
)
|
||||||
|
@ -1375,6 +1376,25 @@ def test_rc_no_xonshrc_for_non_interactive(tmpdir):
|
||||||
]
|
]
|
||||||
cmd = "print(42+42)"
|
cmd = "print(42+42)"
|
||||||
add_env = {"HOME": str(user_home_dir)}
|
add_env = {"HOME": str(user_home_dir)}
|
||||||
|
|
||||||
|
# xonsh
|
||||||
|
out, err, ret = run_xonsh(
|
||||||
|
cmd=None,
|
||||||
|
stdin=None,
|
||||||
|
single_command=False,
|
||||||
|
interactive=True,
|
||||||
|
args=args,
|
||||||
|
add_env=add_env,
|
||||||
|
)
|
||||||
|
|
||||||
|
exp = ".*RC_NOT_HOME.*RC_HOME.*RC_DIR.*"
|
||||||
|
assert re.match(
|
||||||
|
exp,
|
||||||
|
out,
|
||||||
|
re.MULTILINE | re.DOTALL,
|
||||||
|
), f"Expected: {exp!r},\nResult: {out!r},\nargs={args!r}"
|
||||||
|
|
||||||
|
# xonsh -c "cmd"
|
||||||
out, err, ret = run_xonsh(cmd=cmd, interactive=False, args=args, add_env=add_env)
|
out, err, ret = run_xonsh(cmd=cmd, interactive=False, args=args, add_env=add_env)
|
||||||
exp = ".*RC_NOT_HOME.*RC_DIR.*84.*"
|
exp = ".*RC_NOT_HOME.*RC_DIR.*84.*"
|
||||||
assert re.match(
|
assert re.match(
|
||||||
|
@ -1383,6 +1403,7 @@ def test_rc_no_xonshrc_for_non_interactive(tmpdir):
|
||||||
re.MULTILINE | re.DOTALL,
|
re.MULTILINE | re.DOTALL,
|
||||||
), f"Expected: {exp!r},\nResult: {out!r},\nargs={args!r}"
|
), f"Expected: {exp!r},\nResult: {out!r},\nargs={args!r}"
|
||||||
|
|
||||||
|
# xonsh -i -c "cmd"
|
||||||
out, err, ret = run_xonsh(
|
out, err, ret = run_xonsh(
|
||||||
cmd=cmd + "\n", interactive=True, args=args, add_env=add_env
|
cmd=cmd + "\n", interactive=True, args=args, add_env=add_env
|
||||||
)
|
)
|
||||||
|
@ -1397,3 +1418,33 @@ def test_rc_no_xonshrc_for_non_interactive(tmpdir):
|
||||||
out,
|
out,
|
||||||
re.MULTILINE | re.DOTALL,
|
re.MULTILINE | re.DOTALL,
|
||||||
), f"Expected: {exp!r},\nResult: {out!r},\nargs={args!r}"
|
), f"Expected: {exp!r},\nResult: {out!r},\nargs={args!r}"
|
||||||
|
|
||||||
|
# xonsh script.xsh
|
||||||
|
out, err, ret = run_xonsh(
|
||||||
|
cmd=cmd + "\n",
|
||||||
|
interactive=False,
|
||||||
|
single_command=False,
|
||||||
|
args=args + ["--", script],
|
||||||
|
add_env=add_env,
|
||||||
|
)
|
||||||
|
exp = ".*RC_NOT_HOME.*RC_DIR.*SCRIPT.*"
|
||||||
|
assert re.match(
|
||||||
|
exp,
|
||||||
|
out,
|
||||||
|
re.MULTILINE | re.DOTALL,
|
||||||
|
), f"Expected: {exp!r},\nResult: {out!r},\nargs={args!r}"
|
||||||
|
|
||||||
|
# xonsh -i script.xsh
|
||||||
|
out, err, ret = run_xonsh(
|
||||||
|
cmd=None,
|
||||||
|
interactive=False,
|
||||||
|
single_command=False,
|
||||||
|
args=args + ["-i", "--", script],
|
||||||
|
add_env=add_env,
|
||||||
|
)
|
||||||
|
exp = ".*RC_NOT_HOME.*RC_HOME.*RC_DIR.*SCRIPT.*"
|
||||||
|
assert re.match(
|
||||||
|
exp,
|
||||||
|
out,
|
||||||
|
re.MULTILINE | re.DOTALL,
|
||||||
|
), f"Expected: {exp!r},\nResult: {out!r},\nargs={args!r}"
|
||||||
|
|
|
@ -309,7 +309,7 @@ def _get_rc_files(shell_kwargs: dict, args, env):
|
||||||
rc = env.get("XONSHRC")
|
rc = env.get("XONSHRC")
|
||||||
rcd = env.get("XONSHRC_DIR")
|
rcd = env.get("XONSHRC_DIR")
|
||||||
|
|
||||||
if not env.get("XONSH_INTERACTIVE", False):
|
if not env.get("XONSH_INTERACTIVE", False) or not args.force_interactive:
|
||||||
"""
|
"""
|
||||||
Home based ``~/.xonshrc`` file has special meaning and history. The ecosystem around shells treats this kind of files
|
Home based ``~/.xonshrc`` file has special meaning and history. The ecosystem around shells treats this kind of files
|
||||||
as the place where interactive tools can add configs. To avoid unintended and unexpected affection
|
as the place where interactive tools can add configs. To avoid unintended and unexpected affection
|
||||||
|
|
Loading…
Add table
Reference in a new issue