# HG changeset patch # User Matt Johnston # Date 1643521040 -28800 # Node ID b550845e500bd5d684e0e918816b258e9f2e15d2 # Parent 6f265a35159a764d40cfb71cd6c64942f9bec642 Use venv for test_aslr Otherwise we can't find the psutil dependency diff -r 6f265a35159a -r b550845e500b test/Makefile.in --- 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 $@ diff -r 6f265a35159a -r b550845e500b test/test_aslr.py --- 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) diff -r 6f265a35159a -r b550845e500b test/test_dropbear.py --- 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.