Your patch is currently failing to pass the whole test suite: 7 failures to be precise.
These failures should help you go from your bash scripts to the python counterparts.
Since you need the 'ln -s' command, you can't make use of the new shell-like facility,
but since you already introduce a modification that make test fail, you should now be able to directly
write the python tests.
Your idea sounds good but your implementation is currently making the versioning of
symlinks imposible instead of only the for the objects accessed through that symlink.