safehasattr: pass attribute name as string instead of bytes
This is a step toward replacing `util.safehasattr` usage with plain `hasattr`.
The builtin function behave poorly in Python2 but this was fixed in Python3.
These change are done one by one as they tend to have a small odd to trigger
puzzling breackage.
#require cargo test-repo
$ . "$TESTDIR/helpers-testrepo.sh"
$ cd "$TESTDIR"/../rust
Check if Cargo.lock is up-to-date. Will fail with a 101 error code if not.
$ cargo check --locked --all --quiet
However most CIs will run `cargo build` or similar before running the tests, so we need to check if it was modified
$ testrepohg diff Cargo.lock