update skills
This commit is contained in:
1 parent
9fb18f57ec
commit
ff86cf48b4
82 files changed
+2156
-650
No files matched your search
@@ -0,0 +1,58 @@
|
||||
"""Isolated Bash helper checks; only dummy values, no browsers or secret stores."""
|
||||
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
|
||||
template = Path(__file__).with_name("template.sh").resolve()
|
||||
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
env_file = Path(directory) / ".env"
|
||||
environment = {**os.environ, "ENV_FILE": str(env_file)}
|
||||
|
||||
def run(command, value="", input="", expected=0):
|
||||
result = subprocess.run(
|
||||
["bash", "-c", 'source "$1"; ' + command, "check", str(template)],
|
||||
env={**environment, "DUMMY_VALUE": value},
|
||||
input=input, text=True, capture_output=True,
|
||||
)
|
||||
assert (result.returncode == 0) == (expected == 0), result.stderr
|
||||
return result
|
||||
|
||||
for value in ("dummy#value", " spaces ", 'a"b', r"dollar$and\backslash", "replacement"):
|
||||
run('write_env DUMMY_KEY "$DUMMY_VALUE"', value)
|
||||
parsed = subprocess.run(
|
||||
["node", "-e", "process.stdout.write(JSON.stringify(require('node:util').parseEnv(require('node:fs').readFileSync(process.argv[1], 'utf8'))))", str(env_file)],
|
||||
text=True, capture_output=True, check=True,
|
||||
)
|
||||
assert json.loads(parsed.stdout)["DUMMY_KEY"] == value
|
||||
assert run("_existing DUMMY_KEY").stdout == value
|
||||
assert env_file.stat().st_mode & 0o777 == 0o600
|
||||
assert env_file.read_text().count("DUMMY_KEY=") == 1
|
||||
|
||||
run("write_env OTHER_KEY unchanged")
|
||||
run("write_env DUMMY_KEY replacement")
|
||||
assert run("_existing OTHER_KEY").stdout == "unchanged"
|
||||
saved = env_file.read_bytes()
|
||||
for value in ("", "can't", "two\nlines", "carriage\rreturn"):
|
||||
run('write_env DUMMY_KEY "$DUMMY_VALUE"', value, expected=1)
|
||||
assert env_file.read_bytes() == saved
|
||||
run('write_env "BAD-KEY" value', expected=1)
|
||||
run('write_env HOME value', expected=1)
|
||||
for helper in ("ask", "ask_secret"):
|
||||
run(f'{helper} NEW_KEY prompt', expected=1)
|
||||
run(f'{helper} NEW_KEY prompt', input="\n", expected=1)
|
||||
run(f'{helper} DUMMY_KEY prompt; [[ "$DUMMY_KEY" == replacement ]]', input="\n")
|
||||
run(f'{helper} NEW_KEY prompt; [[ "$NEW_KEY" == captured ]]', input="captured\n")
|
||||
run("pause", expected=1)
|
||||
run("confirm question", expected=1)
|
||||
run("confirm question", input="yesterday\n", expected=1)
|
||||
run("confirm question", input="yes\n")
|
||||
env_file.write_text('DUMMY_KEY="unsupported"\n')
|
||||
run('write_env DUMMY_KEY replacement', expected=1)
|
||||
assert env_file.read_text() == 'DUMMY_KEY="unsupported"\n'
|
||||
|
||||
print("Wizard helper checks passed")
|
||||
Reference in new issue
Block a user