Fixes include
- Setting cloexec flag on pipe files, using set_inheritable on sockets,
and close_fds=False on subprocess.Popen to work around file
descriptors not being inheritable by default in new versions of python
- Adding mitogen.exit_status variable and avoiding os.kill call so fake
'ssh' script is able to exit cleanly with correct status code
- Fixing broken os.dup call in ExternalContext._setup_master when input
and output streams have the same descriptor
- Updating fakessh module to do necessary python3 string/byte
conversions, and use updated mitogen Protocol, Stream, and Router apis
- Simplifying fakessh startup sequence so there aren't unnecessary
differences between ways control and data handles are passed, and ways
master and slave processes are initialized
- Fixing shutdown race conditions where subprocess exit handling or
stdin EOF handling could result in a truncated stdout stream
- Updating and adding a lot of docstrings and comments
- Adding Process.proc is None / is not None assertions to be clear about
which parts of fakessh.Process code are specific to the slave process,
and which parts are specific to the master process.
- Re-enabling unit test case and updating an outdated file path so it
passes
- namespace & document test accounts in README.md
- standardize the password format everywhere, and ensure the passwords
differ everywhere.
- Add MITOGEN_TEST_DISTRO environment variable.
e.g. assert x == y -> self.assertEqual(x, y);
self.assertTrue(isinstance(x, y)) -> self.assertIsInstance(x, y)
These specific methods give more useful errors in the case of a test
failure.