summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Coldrick <othko97@gmail.com>2018-11-22 16:44:14 +0000
committerThomas Coldrick <othko97@gmail.com>2018-12-20 11:41:29 +0000
commit9b5e21337660f7085093c8d745497bce90c7f59e (patch)
tree2c02bfb0508829addbd14c9da341fc584fa6d574
parent67d8d0a1cdb4948158a4fe0387df44e960575993 (diff)
downloadbuildstream-9b5e21337660f7085093c8d745497bce90c7f59e.tar.gz
bst fmt: Add tests for core functionality
-rw-r--r--tests/completions/completions.py1
-rw-r--r--tests/integration/fmt.py75
-rw-r--r--tests/integration/project/elements/fmt/bad-format.bst4
-rw-r--r--tests/integration/project/elements/fmt/except.bst4
-rw-r--r--tests/integration/project/elements/fmt/good-format.bst4
-rw-r--r--tests/integration/project/elements/fmt/stack.bst5
6 files changed, 93 insertions, 0 deletions
diff --git a/tests/completions/completions.py b/tests/completions/completions.py
index 372ed7840..303bc945b 100644
--- a/tests/completions/completions.py
+++ b/tests/completions/completions.py
@@ -9,6 +9,7 @@ MAIN_COMMANDS = [
'artifact ',
'build ',
'checkout ',
+ 'fmt ',
'help ',
'init ',
'pull ',
diff --git a/tests/integration/fmt.py b/tests/integration/fmt.py
new file mode 100644
index 000000000..4580d5e32
--- /dev/null
+++ b/tests/integration/fmt.py
@@ -0,0 +1,75 @@
+import os
+import pytest
+
+from tests.testutils import cli_integration as cli
+from tests.testutils.site import IS_LINUX
+
+
+DATA_DIR = os.path.join(
+ os.path.dirname(os.path.realpath(__file__)),
+ "project"
+)
+
+
+@pytest.mark.integration
+@pytest.mark.datafiles(DATA_DIR)
+def test_fmt_single(cli, tmpdir, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+ element_name = 'fmt/bad-format.bst'
+ good_element = 'fmt/good-format.bst'
+
+ with open(os.path.join(project, 'elements', good_element)) as element:
+ good = element.readlines()
+
+ res = cli.run(project=project, args=['fmt', element_name])
+ assert res.exit_code == 0
+
+ with open(os.path.join(project, 'elements', element_name)) as element:
+ final = element.readlines()
+
+ # Have to test only the last line, rather than full file because of #767
+ assert final[-1] == good[-1]
+
+
+@pytest.mark.integration
+@pytest.mark.datafiles(DATA_DIR)
+def test_fmt_all(cli, tmpdir, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+ check_elements = ['fmt/bad-format.bst', 'fmt/except.bst']
+ target = 'fmt/stack.bst'
+
+ initial_lines = []
+ for e in check_elements:
+ with open(os.path.join(project, 'elements', e)) as element:
+ initial_lines.append(element.readlines()[-1])
+
+ with open(os.path.join(project, 'elements', 'fmt/good-format.bst')) as element:
+ expected = element.readlines()[-1]
+
+ res = cli.run(project=project, args=['fmt', '--all', target])
+ assert res.exit_code == 0
+
+ for i, _ in enumerate(initial_lines):
+ with open(os.path.join(project, 'elements', check_elements[i])) as element:
+ assert element.readlines()[-1] == expected
+
+
+@pytest.mark.integration
+@pytest.mark.datafiles(DATA_DIR)
+def test_fmt_except(cli, tmpdir, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+ bad_target = 'fmt/bad-format.bst'
+ except_target = 'fmt/except.bst'
+ target = 'fmt/stack.bst'
+
+ with open(os.path.join(project, 'elements', 'fmt/good-format.bst')) as element:
+ formatted = element.readlines()[-1]
+
+ res = cli.run(project=project, args=['fmt', '--all', target, '--except', except_target])
+ assert res.exit_code == 0
+
+ with open(os.path.join(project, 'elements', except_target)) as element:
+ assert formatted != element.readlines()[-1]
+
+ with open(os.path.join(project, 'elements', bad_target)) as element:
+ assert formatted == element.readlines()[-1]
diff --git a/tests/integration/project/elements/fmt/bad-format.bst b/tests/integration/project/elements/fmt/bad-format.bst
new file mode 100644
index 000000000..bbecc3a43
--- /dev/null
+++ b/tests/integration/project/elements/fmt/bad-format.bst
@@ -0,0 +1,4 @@
+kind: stack
+
+depends:
+ - filename: base.bst
diff --git a/tests/integration/project/elements/fmt/except.bst b/tests/integration/project/elements/fmt/except.bst
new file mode 100644
index 000000000..bbecc3a43
--- /dev/null
+++ b/tests/integration/project/elements/fmt/except.bst
@@ -0,0 +1,4 @@
+kind: stack
+
+depends:
+ - filename: base.bst
diff --git a/tests/integration/project/elements/fmt/good-format.bst b/tests/integration/project/elements/fmt/good-format.bst
new file mode 100644
index 000000000..44e2293a7
--- /dev/null
+++ b/tests/integration/project/elements/fmt/good-format.bst
@@ -0,0 +1,4 @@
+kind: stack
+
+depends:
+- filename: base.bst
diff --git a/tests/integration/project/elements/fmt/stack.bst b/tests/integration/project/elements/fmt/stack.bst
new file mode 100644
index 000000000..0252d5417
--- /dev/null
+++ b/tests/integration/project/elements/fmt/stack.bst
@@ -0,0 +1,5 @@
+kind: stack
+depends:
+- filename: fmt/bad-format.bst
+- filename: fmt/good-format.bst
+- filename: fmt/except.bst