... |
... |
@@ -281,3 +281,44 @@ def test_argument_element_invalid(datafiles, cli, project, cmd, word_idx, expect |
281
|
281
|
])
|
282
|
282
|
def test_help_commands(cli, cmd, word_idx, expected):
|
283
|
283
|
assert_completion(cli, cmd, word_idx, expected)
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+@pytest.mark.datafiles(os.path.join(DATA_DIR, 'project'))
|
|
287
|
+def test_argument_artifact(cli, tmpdir, datafiles):
|
|
288
|
+ project = os.path.join(datafiles.dirname, datafiles.basename)
|
|
289
|
+
|
|
290
|
+ # Build an import element with no dependencies (as there will only be ONE cache key)
|
|
291
|
+ result = cli.run(project=project, args=['build', 'import-bin.bst']) # Has no dependencies
|
|
292
|
+ result.assert_success()
|
|
293
|
+
|
|
294
|
+ # Get the key and the artifact ref ($project/$element_name/$key)
|
|
295
|
+ key = cli.get_element_key(project, 'import-bin.bst')
|
|
296
|
+ artifact = os.path.join('test', 'import-bin', key)
|
|
297
|
+
|
|
298
|
+ # Test autocompletion of the artifact
|
|
299
|
+ cmds = [
|
|
300
|
+ 'bst artifact log ',
|
|
301
|
+ 'bst artifact log t',
|
|
302
|
+ 'bst artifact log test/'
|
|
303
|
+ ]
|
|
304
|
+
|
|
305
|
+ for i, cmd in enumerate(cmds):
|
|
306
|
+ word_idx = 3
|
|
307
|
+ result = cli.run(project=project, cwd=project, env={
|
|
308
|
+ '_BST_COMPLETION': 'complete',
|
|
309
|
+ 'COMP_WORDS': cmd,
|
|
310
|
+ 'COMP_CWORD': str(word_idx)
|
|
311
|
+ })
|
|
312
|
+ words = []
|
|
313
|
+ if result.output:
|
|
314
|
+ words = result.output.splitlines() # This leaves an extra space on each e.g. 'foo.bst ']
|
|
315
|
+ words = [word.strip() for word in words]
|
|
316
|
+
|
|
317
|
+ if i == 0:
|
|
318
|
+ expected = PROJECT_ELEMENTS + [artifact] # We should now be able to see the artifact
|
|
319
|
+ elif i == 1:
|
|
320
|
+ expected = ['target.bst', artifact]
|
|
321
|
+ elif i == 2:
|
|
322
|
+ expected = [artifact]
|
|
323
|
+
|
|
324
|
+ assert expected == words
|