This guy seems to be part of the problem.

test_managercli.py starts a patcher at module scope (and not in SubManFixture or a test class ).

Then that mock.patch.stopall() stops all the mock's that were patched with patch, include the test_managercli
one. So if a order like:

test/__init__ imported
test/test_logutil.py is imported
test/test_managercli.py is imported    # and creates the is_valid_server_info mock
test/test_logutil runs
test/test_logutil's tearDown runs, calling patch.stopall(), stopping is_valid_server_info patch
test/test_managercli.py runs
    -- hit some tests, then eventually call the real is_valid_server_info in CliCommand.main on some url that fails, and calls sys.exit
old version nosetests freaks out because it doesn't catch BaseException on 2.6 and throws a wobbly

tl;dr we shouldn't set mock.patch'er's that won't get recreated for each test (ie, at module import time)