summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-04-19 13:39:05 +0900
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-04-19 15:11:47 +0900
commit670487bed0019048aa48576442fffd4d7368d4e3 (patch)
tree3b9ba16f06f78c86b147535e5dcf16e7a7e2f717
parentd73d75c4e4091174cea307b2ff22687e8f513ef0 (diff)
downloadbuildstream-670487bed0019048aa48576442fffd4d7368d4e3.tar.gz
tests/frontend/track.py: Added test for `bst track --deps none`
This guards against regressions of issue #367
-rw-r--r--tests/frontend/track.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/frontend/track.py b/tests/frontend/track.py
index 5142dee45..f8818ffb5 100644
--- a/tests/frontend/track.py
+++ b/tests/frontend/track.py
@@ -117,6 +117,46 @@ def test_track_recurse(cli, tmpdir, datafiles, kind):
@pytest.mark.datafiles(DATA_DIR)
+def test_track_single(cli, tmpdir, datafiles):
+ project = os.path.join(datafiles.dirname, datafiles.basename)
+ dev_files_path = os.path.join(project, 'files', 'dev-files')
+ element_path = os.path.join(project, 'elements')
+ element_dep_name = 'track-test-dep.bst'
+ element_target_name = 'track-test-target.bst'
+
+ # Create our repo object of the given source type with
+ # the dev files, and then collect the initial ref.
+ #
+ repo = create_repo('git', str(tmpdir))
+ ref = repo.create(dev_files_path)
+
+ # Write out our test targets
+ generate_element(repo, os.path.join(element_path, element_dep_name))
+ generate_element(repo, os.path.join(element_path, element_target_name),
+ dep_name=element_dep_name)
+
+ # Assert that tracking is needed for both elements
+ assert cli.get_element_state(project, element_dep_name) == 'no reference'
+ assert cli.get_element_state(project, element_target_name) == 'no reference'
+
+ # Now first try to track only one element
+ result = cli.run(project=project, args=[
+ 'track', '--deps', 'none',
+ element_target_name])
+ result.assert_success()
+
+ # And now fetch it
+ result = cli.run(project=project, args=[
+ 'fetch', '--deps', 'none',
+ element_target_name])
+ result.assert_success()
+
+ # Assert that the dependency is waiting and the target has still never been tracked
+ assert cli.get_element_state(project, element_dep_name) == 'no reference'
+ assert cli.get_element_state(project, element_target_name) == 'waiting'
+
+
+@pytest.mark.datafiles(DATA_DIR)
@pytest.mark.parametrize("kind", [(kind) for kind in ALL_REPO_KINDS])
def test_track_recurse_except(cli, tmpdir, datafiles, kind):
project = os.path.join(datafiles.dirname, datafiles.basename)