Skip to content

openRepoShape in Git Bash: the machine: report probes python3 alone, a drive-letter $OPENREPOSHAPE_REPO or $OPENREPOSHAPE_BIN_DIR is misread, tests-git-bash skips #598's installer cases, and a doctor test's docstring is stale #649

Closed

Description

@brettheap

Goal: the launcher behaves in Git Bash as README says it does, and the Git Bash job runs every installer case README's "tested in CI" covers.

Filed by lane openRepoShape-5 on Brett Heap's word of 2026-10-16T11:21:49Z ("#596's Git Bash follow-ups"), from lane 5's checklist items on #459 (comment, items 1-3) and #461 (comment, items 1 and 3). Found by #596's writer (#585).

Lines (line numbers at bf7b19b)

  • The machine: report probes python3 alone (openRepoShape:318-340, the loop at :321). Where Python came from python.org, Git Bash has python and no python3, or only the Microsoft Store stub, so the block says python3 MISSING, or present for a stub, while --preflight passes with python (find_python, :454-465). Direction: probe python too. The block promises "four command -v probes, which execute nothing at all" (:309-310); adding python keeps that but still reads a stub as present, and running find_python's version check rejects the stub but breaks the promise. Say which, and why.
  • A drive-letter $OPENREPOSHAPE_REPO is read as an owner/name slug (shape_clone_url, :244-249): C:/src/openRepoShape becomes https://github.com/C:/src/openRepoShape.git (run on Linux with the function lifted out). Its callers are --doctor's clone (:482-490) and the value setup.sh clones (:908). Direction: a drive-letter arm ([A-Za-z]:[\\/]*) beside /* and .*.
  • A Windows-spelled $OPENREPOSHAPE_BIN_DIR makes --install print export PATH="D:\...:$PATH", which bash cannot use (:388, :439-443). Direction: spell the directory the way bash does first (cygpath -u, as the suites' bash_path does), or refuse a value holding a drive letter.
  • install.sh: git-filter-repo with the uv already there where there is no pipx, never pip install --user, and two readinesses at the end, adoption: then done: (#595) #598's installer cases do not run under Git Bash. tests-git-bash (.github/workflows/tests.yml:156-220) runs tests/test_install_sh.py and tests/test_openreposhape_command.py, but the uv install, the readinesses' wording and the pasted next steps are tested only in tests/test_install_sh_filter_repo.py, on Linux, while README says Git Bash runs step 3's one line "tested in CI". Direction: add the file to the job's pytest line, then watch one windows-latest run (18 passed on Linux; it inherits test_install_sh.pytestmark and drives every run through Net).
  • A stale docstring: test_a_ref_the_doctor_would_check_out_is_validated (tests/test_openreposhape_command.py:662-684, the sentence at :668-669) says the refusal "has to arrive before any clone does", but shape_checkout clones first (:490) and checks the ref after (:495). Direction: reword it, or check the ref before the clone.

Overlaps: lane 3's open #630 (#563's docs) changes README, the handbook, tests.yml and both suites.

Mark the five lines → this issue on #459 and #461, and tick them there when this closes.

🤖 Generated with Claude Code

Activity

  1. added this to the v1.1.0 milestone on Oct 16, 2026
  2. brettheap commented on Oct 16, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-5, session 50cede29-ab82-4ca3-9f67-d98e1a58c8d2@Eagle, 2026-10-16T11:31:15Z, for #649

    Logged in lanes/log/openRepoShape-5.md at afffbe0dac03a7e3367eb0d6556c646e635d233f.

    The three reads (lane-collision-protocol Rule 1):

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#649:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#649"`, kept where the row or its body names `#649`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `649` as a whole token:
       none
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions