Valentin David pushed to branch valentindavid/fix_included_junction_track at BuildStream / buildstream
Commits:
-
b38ee8a6
by Valentin David at 2018-08-08T09:47:30Z
2 changed files:
Changes:
| ... | ... | @@ -273,7 +273,8 @@ class Stream(): |
| 273 | 273 |
except_targets=except_targets,
|
| 274 | 274 |
track_except_targets=except_targets,
|
| 275 | 275 |
track_cross_junctions=cross_junctions,
|
| 276 |
- fetch_subprojects=True)
|
|
| 276 |
+ fetch_subprojects=True,
|
|
| 277 |
+ only_track=True)
|
|
| 277 | 278 |
|
| 278 | 279 |
track_queue = TrackQueue(self._scheduler)
|
| 279 | 280 |
self._add_queue(track_queue, track=True)
|
| ... | ... | @@ -833,6 +834,7 @@ class Stream(): |
| 833 | 834 |
# use_artifact_config (bool): Whether to initialize artifacts with the config
|
| 834 | 835 |
# artifact_remote_url (bool): A remote url for initializing the artifacts
|
| 835 | 836 |
# fetch_subprojects (bool): Whether to fetch subprojects while loading
|
| 837 |
+ # only_track (bool): Whether it should only calculate tracking
|
|
| 836 | 838 |
#
|
| 837 | 839 |
# Returns:
|
| 838 | 840 |
# (list of Element): The primary element selection
|
| ... | ... | @@ -847,7 +849,8 @@ class Stream(): |
| 847 | 849 |
use_artifact_config=False,
|
| 848 | 850 |
artifact_remote_url=None,
|
| 849 | 851 |
fetch_subprojects=False,
|
| 850 |
- dynamic_plan=False):
|
|
| 852 |
+ dynamic_plan=False,
|
|
| 853 |
+ only_track=False):
|
|
| 851 | 854 |
|
| 852 | 855 |
# Load rewritable if we have any tracking selection to make
|
| 853 | 856 |
rewritable = False
|
| ... | ... | @@ -905,6 +908,10 @@ class Stream(): |
| 905 | 908 |
for element in track_selected:
|
| 906 | 909 |
element._schedule_tracking()
|
| 907 | 910 |
|
| 911 |
+ if only_track:
|
|
| 912 |
+ self._pipeline.resolve_elements(track_selected)
|
|
| 913 |
+ return [], track_selected
|
|
| 914 |
+ |
|
| 908 | 915 |
# ArtifactCache.setup_remotes expects all projects to be fully loaded
|
| 909 | 916 |
for project in self._context.get_projects():
|
| 910 | 917 |
project.ensure_fully_loaded()
|
| ... | ... | @@ -612,3 +612,25 @@ def test_track_include_junction(cli, tmpdir, datafiles, ref_storage, kind): |
| 612 | 612 |
# Assert that we are now buildable because the source is
|
| 613 | 613 |
# now cached.
|
| 614 | 614 |
assert cli.get_element_state(project, element_name) == 'buildable'
|
| 615 |
+ |
|
| 616 |
+ |
|
| 617 |
+@pytest.mark.datafiles(DATA_DIR)
|
|
| 618 |
+@pytest.mark.parametrize("ref_storage", [('inline'), ('project.refs')])
|
|
| 619 |
+@pytest.mark.parametrize("kind", [(kind) for kind in ALL_REPO_KINDS])
|
|
| 620 |
+def test_track_junction_included(cli, tmpdir, datafiles, ref_storage, kind):
|
|
| 621 |
+ project = os.path.join(datafiles.dirname, datafiles.basename)
|
|
| 622 |
+ element_path = os.path.join(project, 'elements')
|
|
| 623 |
+ subproject_path = os.path.join(project, 'files', 'sub-project')
|
|
| 624 |
+ sub_element_path = os.path.join(subproject_path, 'elements')
|
|
| 625 |
+ junction_path = os.path.join(element_path, 'junction.bst')
|
|
| 626 |
+ |
|
| 627 |
+ configure_project(project, {
|
|
| 628 |
+ 'ref-storage': ref_storage,
|
|
| 629 |
+ '(@)': ['junction.bst:test.yml']
|
|
| 630 |
+ })
|
|
| 631 |
+ |
|
| 632 |
+ generate_junction(str(tmpdir.join('junction_repo')),
|
|
| 633 |
+ subproject_path, junction_path, store_ref=False)
|
|
| 634 |
+ |
|
| 635 |
+ result = cli.run(project=project, args=['track', 'junction.bst'])
|
|
| 636 |
+ result.assert_success()
|
