16e59b4f

Author: Tom Sydney Kerckhove <syd@cs-syd.eu>

Committer: Tom Sydney Kerckhove <NorfairKing@users.noreply.github.com>

Say what a path is

A FilePath is a String, so nothing about it says whether it holds a file or a
directory, whether it is absolute or relative, or whether it is a path at all.
The specs here named one twenty times: resourceDir was a String in eight of
them, and three separate copies of rootAt took one.

They take path's Path now, and ask path-io for the listings. Where a library
wants a String it gets toFilePath at the call, which is the one place a path
should be spelled that way.

Three things fell out of it rather than being aimed at:

hopinion-gen no longer depends on directory. listDirRel answers with the
directories and the files already told apart, which is what every one of these
listings wanted, so several assertions that compared sorted strings now compare
Path values and say which kind they expected.

Project.hs compared a directory's name against two words. It compares
directories now, so the trailing separator that made dropTrailingPathSeparator
necessary is not in the way.

sydtest moves to 0.30.0.0, where scenarioDir hands over a Path Rel File rather
than a FilePath. That is what the two scenario-driven specs needed, and it is
why the pin moves in a commit that otherwise only touches this repository.

No rule enforces any of this yet. That is the next commit, and it is separate
because this one is a change to existing code and that one is not.