So, i thought long about this.

In my opinion, the best thing we could do is load all the files at application startup, create all base corporations first hand (before any game is created) and store them in a BASE_CORPORATIONS dictionary (key is the slug) available for all the app life. Then, in `corporation.base_corporation`, we simply retrieve the BaseCorporation associated with the slug.

That way, we avoid reading the same files multiple times and we keep the initialisation burden minimal: once the dict is built, there should be no more reason to use the BaseCorporation() constructor ever again (except, of course, in tests.)


Regarding tests,
I have a proposition for you in d7fc2b0ec51.
This should also solve your money issue in other tests (no more first / last conflict)