This PR replace the name heuristics used by nitunit by nice and tidy annotations.
Before:
~~~nit
module test_my_test is test_suite
import test_suite
class TestMyTest
super TestSuite
redef fun before do # something
fun test_my_test do
assert true
end
end
~~~
After:
~~~nit
module my_test is test
class MyTest
test
fun setup is before do # something
fun my_test is test do
assert true
end
end
~~~
Motivations:
* cleaner API / naming policy
* [BDD](https://en.wikipedia.org/wiki/Behavior-driven_development) friendly
* more flexibility as one can define a `after` method in the lib that will only be executed on children module tagged with `test`
* more extensible as one can improve nitunit to support `test(timeout = 150)` or `test(res= "res/test_file.res")`
Used annotations:
* `test` on modules, classes and properties to indicate that nitunit must run this module/class/method
* `before`, `after` on properties from all classes but `Sys` for the before/after each case hooks
* `before_all`, `after_all` on properties from `Sys` for the before/after all cases hooks
This also removes the need of the `lib/test_suite` module.
I also migrated the existing test suites to the new annotations system. Let's see what Jenkins has to say about it.
Should fix #2165
Pull-Request: #2474
Reviewed-by: Jean Privat <jean@pryen.org>