[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [sbws/master] Create args, confs and other fixtures



commit 4f5fd8f5729ef8f734efb8a96b7adbcb585c1252
Author: juga0 <juga@xxxxxxxxxx>
Date:   Thu Jul 5 14:58:32 2018 +0000

    Create args, confs and other fixtures
---
 tests/integration/conftest.py | 115 +++++++++++++++++++++++++++++++++---------
 1 file changed, 91 insertions(+), 24 deletions(-)

diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py
index cfd0e28..1294624 100644
--- a/tests/integration/conftest.py
+++ b/tests/integration/conftest.py
@@ -1,37 +1,72 @@
+"""pytest configuration for integration tests."""
+import argparse
 import pytest
-from tempfile import TemporaryDirectory
-from sbws.util.parser import create_parser
-from sbws.util.config import get_config
-from sbws.util.stem import launch_tor
-import sbws.core.init
 import os
 
+from sbws.core import init
+from sbws.lib.circuitbuilder import GapsCircuitBuilder as CB
+from sbws.lib.destination import DestinationList
+from sbws.lib.relaylist import RelayList
+from sbws.util.config import _get_default_config
+from sbws.util.stem import launch_tor
+
+
+class _PseudoArguments(argparse.Namespace):
+
+    """Just enough of the argparse.Namespace (what you get when you do
+    args = parser.parse_args()) to make get_config() happy
+
+    >>> args = _PseudoArguments(directory='/home/matt/.sbws')
+    >>> args.directory
+    '/home/matt/.sbws'
+
+    """
+
+    def __init__(self, **kw):
+        for key in kw:
+            setattr(self, key, kw[key])
+
+
+@pytest.fixture(scope='session')
+def tmpdir(tmpdir_factory, request):
+    """Create a tmp dir for the tests"""
+    base = str(hash(request.node.nodeid))[:3]
+    bn = tmpdir_factory.mktemp(base)
+    return bn
+
 
 @pytest.fixture(scope='session')
-def parser():
-    return create_parser()
+def sbwshome_empty(tmpdir):
+    """Create sbws home inside of the tests tmp dir without initializing."""
+    home = tmpdir.join('.sbws')
+    os.makedirs(home.strpath, exist_ok=True)
+    return home.strpath
 
 
 @pytest.fixture(scope='session')
-def persistent_empty_dotsbws(parser):
-    '''
-    Creates a ~/.sbws with nothing in it but a config.ini and a datadir/
-    '''
-    d = TemporaryDirectory()
-    args = parser.parse_args(
-        '-d {} --log-level debug init'.format(d.name).split())
-    conf = get_config(args)
-    sbws.core.init.main(args, conf)
-    os.makedirs(os.path.join(d.name, 'datadir'))
-    return d
+def sbwshome_dir(sbwshome_empty):
+    """Create sbws home inside of the tests tmp dir without initializing."""
+    os.makedirs(os.path.join(sbwshome_empty, 'datadir'), exist_ok=True)
+    return sbwshome_empty
 
 
 @pytest.fixture(scope='session')
-def persistent_launch_tor(parser, persistent_empty_dotsbws):
-    d = persistent_empty_dotsbws
-    args = parser.parse_args('-d {}'.format(d.name).split())
-    conf = get_config(args)
-    conf['tor']['extra_lines'] = '''  # noqa: E501
+def args(sbwshome_dir, parser):
+    """Args with sbws home in the tests tmp dir."""
+    args = _PseudoArguments(directory=sbwshome_dir, output=sbwshome_dir,
+                            scale=False, log_level='debug')
+    return args
+
+
+@pytest.fixture(scope='session')
+def conf(sbwshome_dir):
+    """Default configuration with sbws home in the tmp test dir."""
+    conf = _get_default_config()
+    conf['paths']['sbws_home'] = sbwshome_dir
+    conf['destinations']['foo'] = 'on'
+    conf['destinations.foo'] = {}
+    conf['destinations.foo']['url'] = 'http://127.0.0.1:28888/sbws.bin'
+    conf['tor']['extra_lines'] = """  # noqa: E501
 DirAuthority auth1 orport=2002 no-v2 v3ident=D7DBC517EFD2BA1A5012CF1BD0BB38F17C8160BD 127.10.0.1:2003 AA45C13025C037F056E734169891878ED0880231
 DirAuthority auth2 orport=2002 no-v2 v3ident=4EE103A081F400E6622F5461D51782B876BB5C24 127.10.0.2:2003 E7B3C9A0040D628DAC88B0251AE6334D28E8F531
 DirAuthority auth3 orport=2002 no-v2 v3ident=8B85069C7FC0593801E6491A34100264FCE28980 127.10.0.3:2003 35E3B8BB71C81355649AEC5862ECB7ED7EFDBC5C
@@ -39,6 +74,38 @@ TestingTorNetwork 1
 NumCPUs 1
 LogTimeGranularity 1
 SafeLogging 0
-'''
+"""
+    return conf
+
+
+@pytest.fixture(scope='session')
+def sbwshome(sbwshome_dir, args, conf):
+    init.main(args, conf)
+    return sbwshome_dir
+
+
+@pytest.fixture(scope='session')
+def persistent_launch_tor(conf):
     cont = launch_tor(conf)
     return cont
+
+
+@pytest.fixture(scope='session')
+def rl(args, conf, persistent_launch_tor):
+    return RelayList(args, conf, persistent_launch_tor)
+
+
+@pytest.fixture(scope='session')
+def cb(args, conf, persistent_launch_tor, rl):
+    return CB(args, conf, persistent_launch_tor, rl)
+
+
+@pytest.fixture(scope='session')
+def dests(args, conf, persistent_launch_tor, cb, rl):
+    dests, error_msg = DestinationList.from_config(conf, cb, rl,
+                                                   persistent_launch_tor)
+    assert dests, error_msg
+    return dests
+
+
+# @pytest.fixture(scope='session')



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits