# Local docker test runner

**URL:** <https://forum.ansible.com/t/local-docker-test-runner/30212>\
**Category:** Ansible Developer\
**Created:** [April 29, 2019, 1:45pm UTC](https://forum.ansible.com/t/local-docker-test-runner/30212 "2019-04-29T13:45:19Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![user19](https://avatars.discourse-cdn.com/v4/letter/u/3be4f8/32.png) [@user19](https://forum.ansible.com/u/user19)\
**Post date:** [April 29, 2019, 1:45pm UTC](https://forum.ansible.com/t/local-docker-test-runner/30212/1 "2019-04-29T13:45:19Z")

</div>

Hi!

Is there an easy way to run ansible unittests and integration tests locally before push? Some kind of preconfigured docker container with all deps installed?

---

<div class="post-metadata">

**Author:** ![sivel](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/sivel/32/1198_2.png) [@sivel](https://forum.ansible.com/u/sivel)\
**Post date:** [April 29, 2019, 2:18pm UTC](https://forum.ansible.com/t/local-docker-test-runner/30212/2 "2019-04-29T14:18:14Z")

</div>

Yes, please see [https://docs.ansible.com/ansible/latest/dev\_guide/testing.html](https://docs.ansible.com/ansible/latest/dev_guide/testing.html) for more detail.

In short:

ansible-test units --docker default /path/to/unit/test\_something.py

---

<div class="post-metadata">

**Author:** ![Andrew\_Klychkov](https://avatars.discourse-cdn.com/v4/letter/a/eb9ed0/32.png) [@Andrew\_Klychkov](https://forum.ansible.com/u/Andrew_Klychkov)\
**Post date:** [April 29, 2019, 3:19pm UTC](https://forum.ansible.com/t/local-docker-test-runner/30212/3 "2019-04-29T15:19:39Z")

</div>

Hello, I can send you a short manual later.  
Please, ping me to [aaklychkov@mail.ru](mailto:aaklychkov@mail.ru)

пн, 29 апр. 2019 г. в 16:45, Андрей Тужилин \<[andrei.tuzhilin@gmail.com](mailto:andrei.tuzhilin@gmail.com)\>:

---

<div class="post-metadata">

**Author:** ![user19](https://avatars.discourse-cdn.com/v4/letter/u/3be4f8/32.png) [@user19](https://forum.ansible.com/u/user19)\
**Post date:** [April 29, 2019, 6:56pm UTC](https://forum.ansible.com/t/local-docker-test-runner/30212/4 "2019-04-29T18:56:37Z")

</div>

I’ve tried it with different shells (bash and fish), different python envs (MacOS built-in and virtual env with python 2.7 and 3.6) with no luck. All comes down to this:

`

bash-3.2$ ./bin/ansible-test sanity --test pep8  
Sanity check using pep8  
Traceback (most recent call last):  
File “./bin/ansible-test”, line 15, in   
lib.cli.main()  
File “/Users/andy/workspace/contrib/ansible/test/runner/lib/cli.py”, line 108, in main  
args.func(config)  
File “/Users/andy/workspace/contrib/ansible/test/runner/lib/sanity/ **init**.py”, line 113, in command\_sanity  
result = test.test(args, targets)  
File “/Users/andy/workspace/contrib/ansible/test/runner/lib/sanity/pep8.py”, line 66, in test  
stdout, stderr = run\_command(args, cmd, capture=True)  
File “/Users/andy/workspace/contrib/ansible/test/runner/lib/util.py”, line 366, in run\_command  
cmd\_verbosity=cmd\_verbosity, str\_errors=str\_errors)  
File “/Users/andy/workspace/contrib/ansible/test/runner/lib/util.py”, line 432, in raw\_command  
process = subprocess.Popen(cmd, env=env, stdin=stdin, stdout=stdout, stderr=stderr, cwd=cwd)  
File “/Users/andy/.pyenv/versions/3.6.8/lib/python3.6/subprocess.py”, line 729, in **init**  
restore\_signals, start\_new\_session)  
File “/Users/andy/.pyenv/versions/3.6.8/lib/python3.6/subprocess.py”, line 1364, in \_execute\_child  
raise child\_exception\_type(errno\_num, err\_msg, err\_filename)  
OSError: [Errno 7] Argument list too long: ‘/Users/andy/.local/share/virtualenvs/ansible-FTkjm-xR/bin/python’

`

So, I thought, maybe there is a preconfigured docker environment, that just works…

---

<div class="post-metadata">

**Author:** ![Andrew\_Klychkov](https://avatars.discourse-cdn.com/v4/letter/a/eb9ed0/32.png) [@Andrew\_Klychkov](https://forum.ansible.com/u/Andrew_Klychkov)\
**Post date:** [April 29, 2019, 7:13pm UTC](https://forum.ansible.com/t/local-docker-test-runner/30212/5 "2019-04-29T19:13:26Z")

</div>

I’v just sent my manual to you. Hope it will be useful

пн, 29 апр. 2019 г. в 21:56, Андрей Тужилин \<[andrei.tuzhilin@gmail.com](mailto:andrei.tuzhilin@gmail.com)\>:

---

<div class="post-metadata">

**Author:** ![user19](https://avatars.discourse-cdn.com/v4/letter/u/3be4f8/32.png) [@user19](https://forum.ansible.com/u/user19)\
**Post date:** [May 6, 2019, 4:19pm UTC](https://forum.ansible.com/t/local-docker-test-runner/30212/6 "2019-05-06T16:19:52Z")

</div>

I think the guide needs some polishing… It’s missing some statements about requirements.txt (and there are tons of them!) import for instance.  
I have an issue with `source hacking/env-setup` - don’t actually know what it is actually, maybe it is in conflict with brew ansible package, which uses some environment too…

I’ve ended up creating a small docker-compose script to run everything (including python env and this hacking stuff) inside container, so no collisions would be possible. Maybe it will be useful in some way: [https://github.com/astorath/ansible-test](https://github.com/astorath/ansible-test)
