diff options
Diffstat (limited to 'tests/completions')
10 files changed, 114 insertions, 17 deletions
diff --git a/tests/completions/completions.py b/tests/completions/completions.py index 4dbb68519..b66950476 100644 --- a/tests/completions/completions.py +++ b/tests/completions/completions.py @@ -3,10 +3,7 @@ import pytest from tests.testutils import cli # Project directory -DATA_DIR = os.path.join( - os.path.dirname(os.path.realpath(__file__)), - "project", -) +DATA_DIR = os.path.dirname(os.path.realpath(__file__)) MAIN_COMMANDS = [ 'build ', @@ -127,7 +124,7 @@ def test_option_choice(cli, cmd, word_idx, expected): assert_completion(cli, cmd, word_idx, expected) -@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'project')) @pytest.mark.parametrize("cmd,word_idx,expected,subdir", [ # Note that elements/ and files/ are partial completions and # as such do not come with trailing whitespace @@ -151,7 +148,7 @@ def test_option_file(datafiles, cli, cmd, word_idx, expected, subdir): assert_completion(cli, cmd, word_idx, expected, cwd=cwd) -@pytest.mark.datafiles(DATA_DIR) +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'project')) @pytest.mark.parametrize("cmd,word_idx,expected,subdir", [ # Note that regular files like project.conf are not returned when # completing for a directory @@ -168,26 +165,49 @@ def test_option_directory(datafiles, cli, cmd, word_idx, expected, subdir): @pytest.mark.datafiles(DATA_DIR) -@pytest.mark.parametrize("cmd,word_idx,expected,subdir", [ +@pytest.mark.parametrize("project,cmd,word_idx,expected,subdir", [ # When running in the project directory - ('bst show ', 2, [e + ' ' for e in PROJECT_ELEMENTS], None), - ('bst build com', 2, ['compose-all.bst ', 'compose-include-bin.bst ', 'compose-exclude-dev.bst '], None), + ('project', 'bst show ', 2, [e + ' ' for e in PROJECT_ELEMENTS], None), + ('project', 'bst build com', 2, + ['compose-all.bst ', 'compose-include-bin.bst ', 'compose-exclude-dev.bst '], None), # When running from the files subdir - ('bst show ', 2, [], 'files'), - ('bst build com', 2, [], 'files'), + ('project', 'bst show ', 2, [], 'files'), + ('project', 'bst build com', 2, [], 'files'), # When passing the project directory - ('bst --directory ../ show ', 4, [e + ' ' for e in PROJECT_ELEMENTS], 'files'), - ('bst --directory ../ build com', 4, + ('project', 'bst --directory ../ show ', 4, [e + ' ' for e in PROJECT_ELEMENTS], 'files'), + ('project', 'bst --directory ../ build com', 4, ['compose-all.bst ', 'compose-include-bin.bst ', 'compose-exclude-dev.bst '], 'files'), # Also try multi arguments together - ('bst --directory ../ checkout t ', 4, ['target.bst '], 'files'), - ('bst --directory ../ checkout target.bst ', 5, ['bin-files/', 'dev-files/'], 'files'), + ('project', 'bst --directory ../ checkout t ', 4, ['target.bst '], 'files'), + ('project', 'bst --directory ../ checkout target.bst ', 5, ['bin-files/', 'dev-files/'], 'files'), + + # When running in the project directory + ('no-element-path', 'bst show ', 2, + [e + ' ' for e in (PROJECT_ELEMENTS + ['project.conf'])] + ['files/'], None), + ('no-element-path', 'bst build com', 2, + ['compose-all.bst ', 'compose-include-bin.bst ', 'compose-exclude-dev.bst '], None), + + # When running from the files subdir + ('no-element-path', 'bst show ', 2, [], 'files'), + ('no-element-path', 'bst build com', 2, [], 'files'), + + # When passing the project directory + ('no-element-path', 'bst --directory ../ show ', 4, + [e + ' ' for e in (PROJECT_ELEMENTS + ['project.conf'])] + ['files/'], 'files'), + ('no-element-path', 'bst --directory ../ show f', 4, ['files/'], 'files'), + ('no-element-path', 'bst --directory ../ show files/', 4, ['files/bin-files/', 'files/dev-files/'], 'files'), + ('no-element-path', 'bst --directory ../ build com', 4, + ['compose-all.bst ', 'compose-include-bin.bst ', 'compose-exclude-dev.bst '], 'files'), + + # Also try multi arguments together + ('no-element-path', 'bst --directory ../ checkout t ', 4, ['target.bst '], 'files'), + ('no-element-path', 'bst --directory ../ checkout target.bst ', 5, ['bin-files/', 'dev-files/'], 'files'), ]) -def test_argument_element(datafiles, cli, cmd, word_idx, expected, subdir): - cwd = str(datafiles) +def test_argument_element(datafiles, cli, project, cmd, word_idx, expected, subdir): + cwd = os.path.join(str(datafiles), project) if subdir: cwd = os.path.join(cwd, subdir) assert_completion(cli, cmd, word_idx, expected, cwd=cwd) diff --git a/tests/completions/no-element-path/compose-all.bst b/tests/completions/no-element-path/compose-all.bst new file mode 100644 index 000000000..ba47081b3 --- /dev/null +++ b/tests/completions/no-element-path/compose-all.bst @@ -0,0 +1,12 @@ +kind: compose + +depends: +- filename: import-bin.bst + type: build +- filename: import-dev.bst + type: build + +config: + # Dont try running the sandbox, we dont have a + # runtime to run anything in this context. + integrate: False diff --git a/tests/completions/no-element-path/compose-exclude-dev.bst b/tests/completions/no-element-path/compose-exclude-dev.bst new file mode 100644 index 000000000..75c14378c --- /dev/null +++ b/tests/completions/no-element-path/compose-exclude-dev.bst @@ -0,0 +1,16 @@ +kind: compose + +depends: +- filename: import-bin.bst + type: build +- filename: import-dev.bst + type: build + +config: + # Dont try running the sandbox, we dont have a + # runtime to run anything in this context. + integrate: False + + # Exclude the dev domain + exclude: + - devel diff --git a/tests/completions/no-element-path/compose-include-bin.bst b/tests/completions/no-element-path/compose-include-bin.bst new file mode 100644 index 000000000..9571203c6 --- /dev/null +++ b/tests/completions/no-element-path/compose-include-bin.bst @@ -0,0 +1,16 @@ +kind: compose + +depends: +- filename: import-bin.bst + type: build +- filename: import-dev.bst + type: build + +config: + # Dont try running the sandbox, we dont have a + # runtime to run anything in this context. + integrate: False + + # Only include the runtim + include: + - runtime diff --git a/tests/completions/no-element-path/files/bin-files/usr/bin/hello b/tests/completions/no-element-path/files/bin-files/usr/bin/hello new file mode 100755 index 000000000..f534a4083 --- /dev/null +++ b/tests/completions/no-element-path/files/bin-files/usr/bin/hello @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "Hello !" diff --git a/tests/completions/no-element-path/files/dev-files/usr/include/pony.h b/tests/completions/no-element-path/files/dev-files/usr/include/pony.h new file mode 100644 index 000000000..40bd0c2e7 --- /dev/null +++ b/tests/completions/no-element-path/files/dev-files/usr/include/pony.h @@ -0,0 +1,12 @@ +#ifndef __PONY_H__ +#define __PONY_H__ + +#define PONY_BEGIN "Once upon a time, there was a pony." +#define PONY_END "And they lived happily ever after, the end." + +#define MAKE_PONY(story) \ + PONY_BEGIN \ + story \ + PONY_END + +#endif /* __PONY_H__ */ diff --git a/tests/completions/no-element-path/import-bin.bst b/tests/completions/no-element-path/import-bin.bst new file mode 100644 index 000000000..a847c0c23 --- /dev/null +++ b/tests/completions/no-element-path/import-bin.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: files/bin-files diff --git a/tests/completions/no-element-path/import-dev.bst b/tests/completions/no-element-path/import-dev.bst new file mode 100644 index 000000000..152a54667 --- /dev/null +++ b/tests/completions/no-element-path/import-dev.bst @@ -0,0 +1,4 @@ +kind: import +sources: +- kind: local + path: files/dev-files diff --git a/tests/completions/no-element-path/project.conf b/tests/completions/no-element-path/project.conf new file mode 100644 index 000000000..e7e35e716 --- /dev/null +++ b/tests/completions/no-element-path/project.conf @@ -0,0 +1,2 @@ +# Project config for frontend build test +name: test diff --git a/tests/completions/no-element-path/target.bst b/tests/completions/no-element-path/target.bst new file mode 100644 index 000000000..b9432fafa --- /dev/null +++ b/tests/completions/no-element-path/target.bst @@ -0,0 +1,8 @@ +kind: stack +description: | + + Main stack target for the bst build test + +depends: +- import-bin.bst +- compose-all.bst |