Commit Graph

84 Commits

Author SHA1 Message Date
David Wilson f6d87faf37 tests: import ansible_helpers_test. 2018-03-19 21:58:31 +05:45
Alex Willmer 4b373c421b core: Standardise type of Importer.whitelist
This seemed a reasonable streamlining, but I'm happy to be overruled.
2018-03-19 21:58:31 +05:45
Alex Willmer 8338caa419 tests: Add mitogen.core.is_blacklisted_import() tests
These test the current behviour, which may not be exactly the intended
behaviour. Refs #98
2018-03-19 21:58:31 +05:45
Alex Willmer 491355548d tests: Fix typo in ResolveRelPathTest 2018-03-19 21:58:30 +05:45
Alex Willmer ef35d55523 tests: Remove jinja2/markupsafe modules from FindRelatedTest
Not sure how they got there, but Django doesn't use Jinja without
explicit configuration.
2018-03-19 21:58:30 +05:45
Alex Willmer eee312a57e tests: Fix expected values FindRelatedTest for Django 1.11.4 2018-03-19 21:58:30 +05:45
Alex Willmer 4424bfbb7a tests: Add new FindRelatedImportsTest 2018-03-19 21:58:30 +05:45
Alex Willmer 9e43f5e6ba tests: Remove module under search from expected results
This matches a tweak made in 8765f761c9
2018-03-19 21:58:30 +05:45
Alex Willmer 0f9bfc1e21 tests: Rename FindRelatedImportsTest -> FindRelatedTest 2018-03-19 21:58:30 +05:45
David Wilson afc8697288 core: Ensure add_handler() callbacks really receive _DEAD on shutdown 2018-03-19 21:58:30 +05:45
David Wilson ccd9c62399 tests: stubs for future whitelist/blacklist tests. 2018-03-19 21:58:29 +05:45
Alex Willmer f4405c6bbc Split IterReadTest & WriteAllTest into test_parent
This matches their respective functions under test, which now reside in
mitogen.parent.
2018-03-19 21:58:29 +05:45
Alex Willmer 4fb1b928b7 Adjust unittest for master -> parent split
Tests should now match changes in
4d31300dd0
2018-03-19 21:58:29 +05:45
Alex Willmer 9ccff0f5d1 Fix TypeError while initiliazing ImporterMixin
Since f44356af32 mitogen.core.Importer()
takes a Router instance.
2018-03-19 21:58:29 +05:45
Alex Willmer fa0f390d4d FIx syntax error in FindRelatedImportsTest.test_django_db_models 2018-03-19 21:58:29 +05:45
David Wilson dd088908df select: clean up API. 2018-03-19 21:58:28 +05:45
David Wilson 219718740b Move django test script into permanent test 2018-03-19 21:58:28 +05:45
David Wilson ec1de4b4b9 tests: ensure strace is available in the docker image..
..and enable privileged=True since that's needed for ptrace()
2018-03-19 21:58:28 +05:45
David Wilson b2909ee5f4 Replace nasty print statements in six_brokenpkg. 2018-03-19 21:58:28 +05:45
Alex Willmer 7e01c5bed5 Import and use unittest2 without aliasing it 2018-03-19 21:58:28 +05:45
Alex Willmer e8e023ce59 Use specific TestCase assertions throughout tests
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.
2018-03-19 21:58:28 +05:45
Alex Willmer df9556d1d9 Replace custom assertContains() with unitest2 assertIn() 2018-03-19 21:58:27 +05:45
Alex Willmer 17da6e9998 Use unittest2 in all tests
This allows using features such as TestCase,assertIsInstance on Python
2.6 and earlier.
2018-03-19 21:58:27 +05:45
Alex Willmer 3831ac360f Replace all calls to file() with open()
Although these are synonyms in Python 2.x, when using MyPy to typecheck
code use of file() causes spurious errors.

This commit also serves as one small step to Python 3.x compatibility,
since 3.x removes the file() builtin.
2018-03-19 21:58:27 +05:45
R W H Bricheno df61f6ab4d Prevent MacOS exception on shutdown of closed socket. 2018-03-19 21:58:27 +05:45
R W H Bricheno 39f325af3e Fix getting the directory path on Mac OS X. 2018-03-19 21:58:27 +05:45
Alex Willmer 026669aa93 tests: Fix GetModuleViaPkgutilTest fetching .pyc
On my laptop (Ubuntu 17.10, Python 2.7.14 in a virtualenv),
`test_regular_mod` fails with

```
AssertionError: "\nimport sys\n\n\ndef say_hi():\n    print 'hi'\n" !=
'\x03\xf3\r\n\xbbW\xd5Yc\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00@\x00\x00\x00s\x19\x00\x00\x00d\x00\x00d\x01\x00l\x00\x00Z\x00\x00d\x02\x00\x84\x00\x00Z\x01\x00d\x01\x00S(\x03\x00\x00\x00i\xff\xff\xff\xffNc\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00C\x00\x00\x00s\t\x00\x00\x00d\x01\x00GHd\x00\x00S(\x02\x00\x00\x00Nt\x02\x00\x00\x00hi(\x00\x00\x00\x00(\x00\x00\x00\x00(\x00\x00\x00\x00(\x00\x00\x00\x00sF\x00\x00\x00/home/alex/src/mitogen/tests/data/module_finder_testmod/regular_mod.pyt\x06\x00\x00\x00say_hi\x05\x00\x00\x00s\x02\x00\x00\x00\x00\x01(\x02\x00\x00\x00t\x03\x00\x00\x00sysR\x01\x00\x00\x00(\x00\x00\x00\x00(\x00\x00\x00\x00(\x00\x00\x00\x00sF\x00\x00\x00/home/alex/src/mitogen/tests/data/module_finder_testmod/regular_mod.pyt\x08\x00\x00\x00<module>\x02\x00\x00\x00s\x02\x00\x00\x00\x0c\x03'
```

`__file__` contains the path of the compiled `.pyc`, not the `.py`
source file.
2018-03-19 21:58:27 +05:45
David Wilson 65defaa354 tests: initial first_stage_test. 2018-03-19 21:58:27 +05:45
Alex Willmer 8dcfb1b7f7 testlib: Auto negotiate Docker API version
Ubuntu 17.04 provides Docker 1.12.6, which has API version 1.24.
`dev_requirements.txt` specifies the docker-py 2.5.1, which by default
requests API version 1.30.

Hence when the SSH unit tests try to run the container specified in
`DockerizedSshDaemon` an error occurs

```
APIError: 400 Client Error: Bad Request ("client is newer than server
(client API version: 1.30, server API version: 1.24)")
```
2018-03-19 21:58:27 +05:45
Alex Willmer 94992940dd ssh_test: Correct hostname in SShTest.test_stream_name()
I presume that `u1704` is a relic of a bygone container/host.
2018-03-19 21:58:27 +05:45
Alex Willmer dfc7b85504 testlib: Wait for sshd before running tests
On Ubuntu 17.10 something (probably Docker) appears to be accepting
connections, before sshd is fully ready. This results in a race
condition, and hence connection errors for the first few tests (2-3 on
my laptop).

testlib.wait_for_port() checks not only that the port can be connected
to, but also something resembling the sshd banner is sent.

Fixes #51
2018-03-19 21:58:27 +05:45
David Wilson f8a84616d7 tests: stop responder_test spamming the logs 2018-03-19 21:58:27 +05:45
David Wilson 7389272dc4 tests: stop fakessh spamming the logs 2018-03-19 21:58:27 +05:45
David Wilson 828f60351b importer: Delete _get_module_via_parent entirely
Can't figure out what it's supposed to do any more, and can't find a
version of Ansible before August 2016 (when I wrote that code) that
seems to need it.

Add some more mitigations to avoid sending dylibs.
2018-03-19 21:58:27 +05:45
David Wilson 17a05dc14f Try to be compatible with older Docker daemons; (hopefully) closes #46 2018-03-19 21:35:37 +05:45
David Wilson b7a9aa46cf core: More robust shutdown
Now there is a separate SHUTDOWN message that relies only on being
received by the broker thread, the main thread can be hung horribly and
the process will still eventually receive a SIGTERM.
2018-03-19 21:35:37 +05:45
David Wilson 32d029ed75 Add test that hangs the main thread during shutdown. 2018-03-19 21:35:37 +05:45
David Wilson 3285fc2f75 Implement test_aborted_on_local_context_disconnect 2018-03-19 21:35:37 +05:45
David Wilson dfe68b33d6 Handle docker running on localhost. 2018-03-19 21:35:37 +05:45
David Wilson bee1a86aa1 Let utils_test run directly too. 2018-03-19 21:35:37 +05:45
David Wilson 690ee6dbe2 Fix select_test failure, remove crap old timing_test. 2018-03-19 21:35:37 +05:45
David Wilson 9c8ff7ecf6 Remove proxy_test (duplicates sudo_test) 2018-03-19 21:35:37 +05:45
David Wilson f22d05a7ad frameworkize nested_test. 2018-03-19 21:35:37 +05:45
David Wilson 15bf0f54e2 Beginnings of module_finder_test 2018-03-19 21:35:37 +05:45
David Wilson d17af194b5 Fix importer_test constructor signature. 2018-03-19 21:35:37 +05:45
David Wilson 2454dcc990 core: loosen assertion to allow fakessh_test to succeed. 2018-03-19 21:35:37 +05:45
David Wilson bc801bc2ed Allow call_function_test to succeed depite testlib import. 2018-03-19 21:35:37 +05:45
David Wilson 118fe01be5 Use enhanced assertRaises in call_function_test.py. 2018-03-19 21:35:37 +05:45
David Wilson 9b13a4cc61 Fix 2 call_function_test failures. 2018-03-19 21:35:37 +05:45
David Wilson 236d83418c Simple scan_code_imports test. 2018-03-19 21:35:37 +05:45