mirror of
https://github.com/github/spec-kit.git
synced 2026-08-03 06:26:30 +08:00
fix(scripts): git-ext PowerShell emits the '# To persist' SPECIFY_FEATURE hint (parity) (#3632)
* fix(scripts): git-ext PowerShell emits the '# To persist' SPECIFY_FEATURE hint (parity) The Git extension's create-new-feature-branch.ps1 printed a non-JSON hint 'SPECIFY_FEATURE environment variable set to: <name>', diverging from every twin: the bash (create-new-feature-branch.sh) and python (create_new_feature_branch.py) siblings of the same extension, and the core create-new-feature.ps1, all emit '# To persist in your shell: $env:SPECIFY_FEATURE = '<name>''. The old wording is also misleading — $env:SPECIFY_FEATURE is set only in this child process and never reaches the agent's shell, so the actionable output is the persist hint. Mirror the core PS twin's $featureAssignment construction and message. Test (pwsh CI): the non-JSON output uses the '# To persist in your shell:' form (fails before: old wording). Verified end-to-end via powershell.exe. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(test): fix doubled apostrophe in persist-hint test docstring Address review: the docstring rendered the documented output form as '<name>'' (two trailing apostrophes) instead of '<name>'. Docstring-only; the assertions were already correct. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -565,6 +565,12 @@ if (-not $DryRun) {
|
||||
$env:SPECIFY_FEATURE = $branchName
|
||||
}
|
||||
|
||||
# Build the PowerShell-idiomatic persist hint, mirroring the core
|
||||
# create-new-feature.ps1 twin (and the bash/python twins of this script), which
|
||||
# all emit "# To persist in your shell: ...".
|
||||
$quotedBranchName = "'" + $branchName.Replace("'", "''") + "'"
|
||||
$featureAssignment = '$env:SPECIFY_FEATURE = ' + $quotedBranchName
|
||||
|
||||
if ($Json) {
|
||||
$obj = [PSCustomObject]@{
|
||||
BRANCH_NAME = $branchName
|
||||
@@ -581,6 +587,6 @@ if ($Json) {
|
||||
Write-Output "BRANCH_NAME: $branchName"
|
||||
Write-Output "FEATURE_NUM: $featureNum"
|
||||
if (-not $DryRun) {
|
||||
Write-Output "SPECIFY_FEATURE environment variable set to: $branchName"
|
||||
Write-Output "# To persist in your shell: $featureAssignment"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -698,6 +698,22 @@ class TestCreateFeaturePowerShell:
|
||||
assert rt.returncode == 0, rt.stderr
|
||||
assert "HAS_GIT" not in rt.stdout
|
||||
|
||||
def test_persist_hint_matches_twins(self, tmp_path: Path):
|
||||
"""The non-JSON SPECIFY_FEATURE hint must use the '# To persist in your
|
||||
shell: $env:SPECIFY_FEATURE = '<name>' form — matching the core
|
||||
create-new-feature.ps1 twin and the bash/python twins of this script —
|
||||
not the old 'environment variable set to:' wording (the env var is only
|
||||
set in this child process, so the actionable output is the persist hint)."""
|
||||
project = _setup_project(tmp_path)
|
||||
result = _run_pwsh(
|
||||
"create-new-feature-branch.ps1", project,
|
||||
"-ShortName", "persist", "Persist hint feature",
|
||||
)
|
||||
assert result.returncode == 0, result.stderr
|
||||
assert "# To persist in your shell:" in result.stdout
|
||||
assert "$env:SPECIFY_FEATURE = '001-persist'" in result.stdout
|
||||
assert "environment variable set to:" not in result.stdout
|
||||
|
||||
def test_help_documents_branch_prefix(self, tmp_path: Path):
|
||||
"""-Help documents both template config knobs."""
|
||||
project = _setup_project(tmp_path)
|
||||
|
||||
Reference in New Issue
Block a user