Fix: exit code of calling `ls` on a non-existent entry on MacOS is different from that on Linux

On MacOS, the exit code of calling `ls` on a non-existent entry returns 1, instead of 2 as on Linux.

```bash
~/Projects/shell.py (master ✔ ) > ls asfasfasdf
ls: asfasfasdf: No such file or directory
~/Projects/shell.py (master ✔ ) > echo $?
1
```

Also, `assertEquals` is deprecated; use `assertEqual` instead :)