It's weird how many languages represent tests as functions. They rarely take arguments and very rarely (never?) call other tests.
Is it the right abstraction?
miniblog.
Related Posts
Cases where it makes more sense to use concrete types rather than generics, even if you can be generic:
I'm not convinced that offering the staging area is a good default for git.
It's an abstraction that newcomers have to learn before their first commit. Subversion style "commit every tracked file" isn't as pretty (`git add` is general) but it's the common case.
I really like the one-module-per-file model of JavaScript or Python.
If you're storing code in files, you might as well leverage file boundaries. If modules are a separate abstraction (e.g Rust, OCaml), it's harder to learn and choose how to organise code.