I noticed that pgrowlocks will use different names for shared locks depending on whether the locks are intermediated by a multixact or not. Particularly, if a single transaction has locked a row, it may return "For Key Share" or "For Share" in the "modes" array, while if multiple transactions have locked a row, it may return "Key Share" or "Share". The documentation of the pgrowlocks function only lists "Key Share" and "Share" as possible modes. (The four exclusive lock modes use the correct names in both cases)
The attached patch (against the master branch) fixes this discrepancy, by using "Key Share" and "Share" in the single transaction case, since that matches the documentation. I also updated the test's expected output so it passes again.
Thanks,
--David Cook