Python 2.7 testing
SandboxedTestCase.maketree
HadoopFilesystem removal with(out) path slashes

rm path/to/dir   - Remove the directory and its contents
rm path/to/dir/  - Remove the directory and its contents
rm path/to/dir/* - Keep the directory but remove its contents
Test LocalFilesystem removal with(out) path slashes

rm path/to/dir   - Remove the directory and its contents
rm path/to/dir/  - Remove the directory and its contents
rm path/to/dir/* - Keep the directory but remove its contents
S3Filesystem.{ls,rm} "directory" behaviours

ls path/to/dir   - Will list the contents of `ls path/to/dir` if
                   path/to/dir is not actually a file. That is: if
                   path/to/dir does not exist or it's a zero-byte file
                   we'll try looking in path/to/dir/*.

                   Related: path_exists is based on ls and where the
                   keys my/files/{a,b,c,d}.txt exist then my/ and
                   my/files shall too (even though the keys are not
                   defined).

rm path/to/dir   - Will remove any keys within path/to/dir/* if
                   path/to/dir is not itself a key of more than zero
                   bytes.
rm path/to/dir/  - Will remove any keys within path/to/dir/* regardless
                   of whether path/to/dir exists as a key in itself.
                   This is the safest way to use rm but still not the
                   most common because most path-handling functions
                   don't typically return a trailing slash.
rm path/to/dir/* - As above.