def test_diff_helper(path): # make test dataset components of interesting states ds = Dataset.create(path, force=True) # detached dataset, not a submodule nosub = Dataset.create(opj(path, 'nosub')) # unmodified, proper submodule sub_clean = ds.create('sub_clean', force=True) # proper submodule, but commited modifications not commited in parent sub_modified = ds.create('sub_modified', force=True) sub_modified.add('modified') # proper submodule with untracked changes sub_dirty = ds.create('sub_dirty', force=True) ds.add(['clean', 'modified']) ds.unlock('modified') with open(opj(ds.path, 'modified'), 'w') as f: f.write('modified_content') file_mod = opj(ds.path, 'modified') # standard `git diff` no special args, reports modified, but not untracked res = list(_parse_git_diff(ds.path)) assert_result_count(res, 3) assert_result_count(res, 1, path=file_mod) assert_result_count(res, 1, path=sub_modified.path) assert_result_count(res, 1, path=sub_dirty.path)