| ... | ... | @@ -476,3 +476,35 @@ def test_ref_not_in_track_warn_error(cli, tmpdir, datafiles): | 
| 476 | 476 |      result = cli.run(project=project, args=['build', 'target.bst'])
 | 
| 477 | 477 |      result.assert_main_error(ErrorDomain.STREAM, None)
 | 
| 478 | 478 |      result.assert_task_error(ErrorDomain.PLUGIN, CoreWarnings.REF_NOT_IN_TRACK)
 | 
|  | 479 | +
 | 
|  | 480 | +
 | 
|  | 481 | +@pytest.mark.skipif(HAVE_GIT is False, reason="git is not available")
 | 
|  | 482 | +@pytest.mark.datafiles(os.path.join(DATA_DIR, 'template'))
 | 
|  | 483 | +@pytest.mark.parametrize("tag,extra_commit", [(False, False), (True, False), (True, True)])
 | 
|  | 484 | +def test_track_fetch(cli, tmpdir, datafiles, tag, extra_commit):
 | 
|  | 485 | +    project = os.path.join(datafiles.dirname, datafiles.basename)
 | 
|  | 486 | +
 | 
|  | 487 | +    # Create the repo from 'repofiles' subdir
 | 
|  | 488 | +    repo = create_repo('git', str(tmpdir))
 | 
|  | 489 | +    ref = repo.create(os.path.join(project, 'repofiles'))
 | 
|  | 490 | +    if tag:
 | 
|  | 491 | +        repo.add_tag('tag')
 | 
|  | 492 | +    if extra_commit:
 | 
|  | 493 | +        repo.add_commit()
 | 
|  | 494 | +
 | 
|  | 495 | +    # Write out our test target
 | 
|  | 496 | +    element = {
 | 
|  | 497 | +        'kind': 'import',
 | 
|  | 498 | +        'sources': [
 | 
|  | 499 | +            repo.source_config()
 | 
|  | 500 | +        ]
 | 
|  | 501 | +    }
 | 
|  | 502 | +    _yaml.dump(element, os.path.join(project, 'target.bst'))
 | 
|  | 503 | +
 | 
|  | 504 | +    # Track it
 | 
|  | 505 | +    result = cli.run(project=project, args=['track', 'target.bst'])
 | 
|  | 506 | +    result.assert_success()
 | 
|  | 507 | +
 | 
|  | 508 | +    # Fetch it
 | 
|  | 509 | +    result = cli.run(project=project, args=['fetch', 'target.bst'])
 | 
|  | 510 | +    result.assert_success() |