aboutsummaryrefslogtreecommitdiff
path: root/suite.py
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-17 08:53:47 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-17 08:53:47 +0200
commit24fc395a7853f03def1350f7ff35a7f819473b79 (patch)
treee776137c0840870a579b917aab00791b3e065fe6 /suite.py
parent2ac2df38b1d812f5ef25a4d9a9f25143005b82b8 (diff)
downloadminishell_test-24fc395a7853f03def1350f7ff35a7f819473b79.tar.gz
minishell_test-24fc395a7853f03def1350f7ff35a7f819473b79.tar.bz2
minishell_test-24fc395a7853f03def1350f7ff35a7f819473b79.zip
Added Test and Suite class
Diffstat (limited to 'suite.py')
-rw-r--r--suite.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/suite.py b/suite.py
new file mode 100644
index 0000000..3da5f67
--- /dev/null
+++ b/suite.py
@@ -0,0 +1,57 @@
+import config
+from test import Test
+
+class Suite:
+ available = []
+
+ @classmethod
+ def run_all(cls):
+ for s in cls.available:
+ s.run()
+
+ @classmethod
+ def setup(cls, asked_names: [str]):
+ if len(asked_names) == 0:
+ asked_names = [s.name for s in cls.available]
+ for s in cls.available:
+ if s.name in asked_names:
+ s.generate()
+ cls.available = [s for s in cls.available if s.name in asked_names]
+
+ def __init__(self, name: str):
+ self.name = name
+ self.generator_func = None
+ self.tests = []
+
+ def add(self, test):
+ self.tests.append(test)
+
+ def add_generator(self, generator):
+ self.generator_func = generator
+
+ def run(self):
+ if config.VERBOSE_LEVEL == 0:
+ print(self.name + ": ", end="")
+ else:
+ print("{} {:#<41}".format("#" * 39, self.name + " "))
+ for t in self.tests:
+ t.run()
+ if config.VERBOSE_LEVEL == 0:
+ print()
+
+ def generate(self):
+ self.generator_func()
+
+
+def suite(origin):
+ """ decorator for a suite function (fmt: suite_[name]) """
+
+ name = origin.__name__[len("suite_"):]
+ s = Suite(name)
+ def test_generator():
+ def test(cmd: str, setup: str = "", files: [str] = [], exports: {str, str} = {}):
+ s.add(Test(cmd, setup, files, exports))
+ origin(test)
+ s.add_generator(test_generator)
+ Suite.available.append(s)
+ return test_generator