actually, a good example of the benefits of no test names is in some of the splint tests. For example, https://github.com/NoahTheDuke/splint/blob/d3c3563ca459e51dd96f15798372bed9c2817f04/test/noahtheduke/splint/rules/lint/thread_macro_one_arg_test.clj. I'm testing a single rule so I have a single defdescribe. the namespace matches the rule name (noahtheduke.splint.rules.lint.thread-macro-one-arg-test), and then the var is named for the rule as well, thread-macro-one-arg-test. so the full var is noahtheduke.splint.rules.lint.thread-macro-one-arg-test/thread-macro-one-arg-test. that's a lot of redundancy. the namespace already defines the focus on this specific test, so having a single var with a bunch of nested test cases is kind of silly.
i could instead write
(test! "-> 1 arg"
(expect-match
[{:rule-name 'lint/thread-macro-one-arg
:form '(->> arg form)
:alt '(form arg)}]
"(-> arg form)"
(single-rule-config rule-name))
(expect-match
[{:alt '(form arg)}]
"(-> arg (form))"
(single-rule-config rule-name))
(expect-match
[{:alt '(form arg 10)}]
"(-> arg (form 10))"
(single-rule-config rule-name)))
and have it stand alone.if i want to run a specific test, i could write {:focus true} under a test case and run the whole namespace again and it'll only run the focused test
1) lazytest's runner looks at a given namespace and checks if there is a suite in :lazytest/ns-suite OR finds all test vars in the namespace and binds them together into a suite. Suites are the unit of structure in lazytest and they can nest. so a namespace suite can have an arbitrary set of nested suites underneath. by default, these will be var suites containing normal suites and test cases, but they could also be test cases directly or normal suites with further nested suites and test cases.
2) running a subset of them can happen by marking them with :focus metadata.
3) why? i'll let the expectations v1 documentation handle that: https://clojure-expectations.github.io/odds-ends.html but in short: names are hard to choose and like comments grow stale over time, so better to avoid them and just run everything.
4) how? currently, you either use one of the qunit helpers, or you manually call alter-meta on the namespace and conj a suite into the metadata. i meant to include a generic helper to do this but forgor 💀
i personally don't like the style, but along with my helper function prep-ns-suite!, it's nice to never have outdated tests in my namespace because i renamed something without unmapping it first.