I forgot to leave this comment earlier. For me it's a smell that you had to update so many tests with the new behavior. Ideally, we would leave old tests and their assertions intact, as they are testing unrelated behavior to the one we're adding (we're adding a better message in case of no global version file).

I would rather add an extra line of setup to each of these tests to create a global version file that contains "system", and leave the assertions unchanged. I would then add *new* tests that would cover the case of the missing global version file. Sounds alright?