summaryrefslogtreecommitdiff
path: root/fable.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2019-06-22 20:18:06 +0300
committerLars Wirzenius <liw@liw.fi>2019-06-22 20:28:00 +0300
commit03a1a4fc96a4d919c1dedead159dedae7c8bac6e (patch)
tree2923e6a50b51127ad7286be1aa346968ff80f3d6 /fable.py
parentfae7a206cb0204bed44ae3c54c5a5a05091df994 (diff)
downloadfable-poc-03a1a4fc96a4d919c1dedead159dedae7c8bac6e.tar.gz
Change: move fable.py to fable/__init__.py
Diffstat (limited to 'fable.py')
-rw-r--r--fable.py134
1 files changed, 0 insertions, 134 deletions
diff --git a/fable.py b/fable.py
deleted file mode 100644
index bee5ce4..0000000
--- a/fable.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# Note that the API of this module is guaranteed to change.
-
-import argparse
-import logging
-import os
-import sys
-import shutil
-import tempfile
-
-
-class Context:
-
- def __init__(self):
- self._vars = {}
-
- def get(self, key, default=None):
- return self._vars.get(key, default)
-
- def __getitem__(self, key):
- return self._vars[key]
-
- def __setitem__(self, key, value):
- self._vars[key] = value
-
-
-class Settingses:
-
- def __init__(self):
- self._scenarios = []
-
- def add_scenario(self, name):
- self._scenarios.append(name)
-
- def is_wanted_scenario(self, name):
- return (not self._scenarios or
- any(name.casefold() == w.casefold() for w in self._scenarios))
-
-
-class Datadir:
-
- def __init__(self):
- self._dirname = None
- self._ours = False
-
- def get(self):
- if self._dirname is None:
- self._dirname = tempfile.mkdtemp()
- logging.info('Created temporary directory %s', self._dirname)
- self._ours = True
- return self._dirname
-
- def set(self, dirname):
- if dirname is not None:
- self._dirname = os.path.abspath(dirname)
- if not os.path.exists(self._dirname):
- os.mkdir(self._dirname)
- self._ours = False
-
- def cleanup(self):
- if self._ours:
- logging.debug('Removing %s', self._dirname)
- shutil.rmtree(self._dirname)
-
-
-class Run:
-
- def __init__(self):
- self._name = None
- self._context = None
- self._srcdir = None
- self._settingses = Settingses()
- self._datadir = None
- self._tempdir = None
- self._parse_options()
-
- def _parse_options(self):
- p = argparse.ArgumentParser()
- p.add_argument('--log', default='/dev/null')
- p.add_argument('--tempdir')
- p.add_argument(
- '--scenario', '-s', action='append', dest='scenarios', default=[])
- args = p.parse_args()
- self._setup_logging(args.log)
- self._tempdir = args.tempdir
- for s in args.scenarios:
- self._settingses.add_scenario(s)
-
- def _setup_logging(self, filename):
- format = '%(asctime)s %(levelname)s %(message)s'
- logging.basicConfig(
- filename=filename, format=format, level=logging.DEBUG)
- logging.info('test program starts =============')
-
- def get_context(self):
- return self._context
-
- def start(self, name):
- if not self._settingses.is_wanted_scenario(name):
- logging.info('Skipping unwanted scenario %s', name)
- return False
-
- logging.info('Start scenario %s', name)
- self._context = Context()
- self._name = name
- self._srcdir = os.getcwd()
- self._datadir = Datadir()
- self._datadir.set(self._tempdir)
- dirname = tempfile.mkdtemp(dir=self._datadir.get())
- os.chdir(dirname)
- return True
-
- def end(self):
- logging.info('OK %s', self._name)
- sys.stdout.write('OK: {}\n'.format(self._name))
- os.chdir(self._srcdir)
- self._datadir.cleanup()
-
-
-def assertTrue(a):
- if not a:
- raise Exception(
- 'expected {!r} to be true, but was disappointed'.format(a, b))
-
-
-def assertEqual(a, b):
- if a != b:
- raise Exception(
- 'expected {!r} == {!r}, but was disappointed'.format(a, b))
-
-
-def assertNotEqual(a, b):
- if a == b:
- raise Exception(
- 'expected {!r} != {!r}, but was disappointed'.format(a, b))