tree d5ffe12227a575570151840a7ec739cfb1892488
parent e40b6093525feee99dc47db87ee7fb3b7da3f9ed
author Tim <timfallmk@users.noreply.github.com> 1762909626 -0800
committer GitHub <noreply@github.com> 1762909626 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJpE93LCRC1aQ7uu5UhlAAArT8QAI1uGqulvk2W0eoJ3I/6qv7d
 1Xz9MsbMaFOllKCx3rDDVVnyAenN71DufJZDL8CF1usgjcu73LxH1Kn0Kt6gHeMl
 f0SlZ8dy54luUdufHB6p8gbGR4yUmb2XQNN+xJP9keB77Ser6mVKUNZBTZAgwyHW
 fSkksaZZwsQfVpkLXhdo5JoZsWn3aTIk7o8IdpeD27KUdbCDCeupPypUXNkBiceh
 XU9KmvC3AcIKB7XV5MwZRxgQiEfF/qHU74No/YsmdxYaCJw8hi/z5bGFBWs//X7+
 kiv8cCL7aBtAPjyLHOZH4Qwb/+mM7MHe8/Ql4UZ04qDU89ea6Gus4no9JLdTQ3yH
 6IdZqDg2f+SywI7py2uKLidHVsfkJidSmDNOOlTbbGqznkD8774KQ56+hLhIdOME
 QMXiDxbZqLdeYcjeJNs8Rjz/GURj6AcStDZFbaUhkGbtXY3Ta5adQu3ZPPkqCFel
 TPsED/1cTXK2OkKXNun6qzy8JdP0349p8x+VLtDwSBkPkkSxfyf7nXWLl2jhUS1J
 BYXV8feb0pREj4K1sPQlrZtrEyjnSCVMvBgzktf0Uo5F6fiIOEdFZcxu2jUluLhv
 eXt+hLHlNXgl+/ZoMoZTgbsMIBARlp6zCmWExgI2IaN2dctPa67GN24sKX4yR2xw
 xw/mwvgpNvA+o6CBJ/MW
 =4gOX
 -----END PGP SIGNATURE-----
 

fix(gazelle): correct runfiles path handling in gazelle_python_manifest test (#3398)

## Summary

This PR fixes the `gazelle_python_manifest.test` failure on Linux CI by
correcting the runfiles path handling in both the Bazel rule definition
and the Go test code.

Fixes #3397

## Problem

The test was failing on Linux but passing on macOS due to inconsistent
file path handling:
- Used `$(rootpath)` instead of `$(rlocationpath)` in the Bazel rule
- Resolved runfiles paths but then didn't use the resolved values

See issue #3397 for full technical details.

## Changes

### `gazelle/manifest/defs.bzl`
- Line 120: Changed `$(rootpath)` to `$(rlocationpath)` for
`_TEST_MANIFEST`
- Line 122: Changed `$(rootpath)` to `$(rlocationpath)` for
`_TEST_REQUIREMENTS`

This makes them consistent with the existing
`_TEST_MANIFEST_GENERATOR_HASH` which already used `$(rlocationpath)`.

### `gazelle/manifest/test/test.go`
- Line 53: Use `manifestPathResolved` instead of `manifestPath` in
`manifestFile.Decode()`
- Line 73: Use `requirementsPathResolved` instead of `requirementsPath`
in `os.Open()`
- Lines 84-86: Use `manifestPathResolved` instead of `manifestPath` in
error handling

The test was already calling `runfiles.Rlocation()` to resolve the
paths, but then wasn't using the resolved values.

## Testing

Tested on Linux by running:
```bash
cd gazelle/examples/bzlmod_build_file_generation
bazel test //:gazelle_python_manifest.test
```

Result: ✅ **PASSED**

## Notes

- This fix aligns with Bazel's recommended runfiles handling practices
- All changes follow the existing pattern used for
`_TEST_MANIFEST_GENERATOR_HASH`
- Some code generation was assisted by Claude AI, but the human author
has reviewed, tested, and takes full responsibility for all changes per
the [contribution
guidelines](https://github.com/bazel-contrib/rules_python/blob/main/CONTRIBUTING.md#ai-assisted-contributions)

**Disclaimer**: This is my first contribution to this project, so I'm
not entirely certain this is the correct contribution method. Please let
me know if any changes to the PR process are needed. Happy to make
adjustments!