Compare commits

...

2 commits

Author SHA1 Message Date
Ole-Morten Duesund
be0af8d0f0 CLAUDE.md: fix stale test example, add release procedure and fixture guidance
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYNdaGDrpaqDyT8QtrTQbM
2026-08-25 16:23:24 +02:00
Ole-Morten Duesund
e910cf8faa README: add Releases section linking to the release page
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EYNdaGDrpaqDyT8QtrTQbM
2026-08-25 16:18:05 +02:00
2 changed files with 31 additions and 1 deletions

View file

@ -112,14 +112,25 @@ Users install/upgrade on their own machine with
- **Assert on table output with regexes, not fixed-width strings.** Column
widths depend on the longest ref in the fixture and package_ids change
whenever a fixture recipe's requirements change (`semver_direct_mode`).
Use `re.search(r"libbar/1\.1\s+indirect\s+2", text)` and `[0-9a-f]{40}`
Use `re.search(r"libbar/1\.1\s+libfoo\s+host", text)` and `[0-9a-f]{40}`
for ids. Also: `_conan()` in the tests raises with Conan's full output on
failure read it before guessing.
- **Use the `conan_env` fixture only for graph/remote behaviour.** Anything
about rendering (`_via`, `_table`, `_tree_rows`, HTML) should be a
fixture-free unit test on hand-built `Dep` objects, like
`test_via_lists_every_parent_path` instant, and no `conan_server`.
- Dependencies: `uv.lock` is committed; regenerate with `./dev.sh uv lock`
after changing `pyproject.toml`.
- Commits: atomic, no `--amend`; run ruff + pytest + shellcheck before
committing. Add a memory of anything a future session could not derive
from the repository.
- Releases: bump `version` in `pyproject.toml` (must match the tag), commit,
then `git tag -a vX.Y.Z && git push origin vX.Y.Z`, build with
`./dev.sh uv build` (writes `dist/`, gitignored), write `SHA256SUMS`, and
`fj release create --tag vX.Y.Z --attach dist/<wheel> --attach dist/<sdist>
--attach dist/SHA256SUMS --body "..." "vX.Y.Z"` from inside the repo
`fj release` does **not** accept `--repo`. Then update the "Latest:" line
in the README's Releases section and delete `dist/`.
## Adding another tool

View file

@ -178,6 +178,25 @@ trace is a `WARN: <pkg>: requirement A overridden by B to C` line written while
the graph is resolved. The tool captures Conan's output stream during graph
construction and parses those lines. A test pins the message format.
## Releases
Tagged releases with a built wheel, source distribution and `SHA256SUMS` are
published on the
[releases page](https://kode.naiv.no/olemd/conan-1.6-utilities/releases).
Latest: [v0.1.0](https://kode.naiv.no/olemd/conan-1.6-utilities/releases/tag/v0.1.0).
Install a specific release with
```bash
uv tool install git+https://kode.naiv.no/olemd/conan-1.6-utilities.git@v0.1.0
# or, from the downloaded wheel:
uv tool install conan_utils-0.1.0-py3-none-any.whl
```
To cut a release: bump `version` in `pyproject.toml`, push an annotated tag
`vX.Y.Z`, build with `./dev.sh uv build`, and create the Forgejo release with
the artifacts attached (`fj release create --tag vX.Y.Z --attach ...`).
## Development
Everything runs inside the `conan-utils-dev` container (Conan 1.66, Python