Mercurial > dropbear
changeset 1863:b550845e500b
Use venv for test_aslr
Otherwise we can't find the psutil dependency
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sun, 30 Jan 2022 13:37:20 +0800 |
parents | 6f265a35159a |
children | 49ce974c3215 |
files | test/Makefile.in test/test_aslr.py test/test_dropbear.py |
diffstat | 3 files changed, 23 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/test/Makefile.in Sun Jan 30 10:23:06 2022 +0800 +++ b/test/Makefile.in Sun Jan 30 13:37:20 2022 +0800 @@ -1,12 +1,14 @@ srcdir=@srcdir@ +SHELL=bash + all: test test: venv/bin/pytest fakekey - ./venv/bin/pytest --hostkey=fakekey --dbclient=../dbclient --dropbear=../dropbear $(srcdir) + (source ./venv/bin/activate; pytest --hostkey=fakekey --dbclient=../dbclient --dropbear=../dropbear $(srcdir) ) one: venv/bin/pytest fakekey - ./venv/bin/pytest --hostkey=fakekey --dbclient=../dbclient --dropbear=../dropbear $(srcdir) -k exit + (source ./venv/bin/activate; pytest --hostkey=fakekey --dbclient=../dbclient --dropbear=../dropbear $(srcdir) -k exit) fakekey: ../dropbearkey -t ecdsa -f $@
--- a/test/test_aslr.py Sun Jan 30 10:23:06 2022 +0800 +++ b/test/test_aslr.py Sun Jan 30 13:37:20 2022 +0800 @@ -8,7 +8,11 @@ Tests that two consecutive connections have different address layouts. This indicates that re-exec makes ASLR work """ - cmd = (Path(request.node.fspath).parent / "parent_dropbear_map.py").resolve() + map_script = (Path(request.node.fspath).parent / "parent_dropbear_map.py").resolve() + # run within the same venv, for python deps + activate = own_venv_command() + cmd = f"{activate}; {map_script}" + print(cmd) r = dbclient(request, cmd, capture_output=True, text=True) map1 = r.stdout.rstrip() print(r.stderr, file=sys.stderr)
--- a/test/test_dropbear.py Sun Jan 30 10:23:06 2022 +0800 +++ b/test/test_dropbear.py Sun Jan 30 13:37:20 2022 +0800 @@ -57,6 +57,20 @@ # wait for response return subprocess.run(full_args, **kwargs) +def own_venv_command(): + """ Returns a command to run as a prefix to get the same venv + as the current running Python. Returns '' on not a virtualenv + """ + try: + print(os.environ) + venv = os.environ['VIRTUAL_ENV'] + print(venv) + except KeyError: + return "" + + # note: bash/zsh unix specific + return f"source {venv}/bin/activate" + class HandleTcp(socketserver.ThreadingMixIn, socketserver.TCPServer): """ Listens for a single incoming request, sends a response if given, and returns the inbound data.