Mercurial > hg > mercurial-source
changeset 40325:8d8e61df8259
narrowspec: validate patterns when loading and saving spec file
Patterns should be normalized and validated before being passed into
narrowspec.save(). Let's assert that by checking immediately before
writing the narrow spec file. And let's assert that patterns loaded
from the spec file also conform.
Differential Revision: https://phab.mercurial-scm.org/D4524
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Tue, 11 Sep 2018 15:28:41 -0700 (2018-09-11) |
parents | 238a1480d7ad |
children | ce20caecacbd |
files | mercurial/narrowspec.py tests/test-narrow-patterns.t |
diffstat | 2 files changed, 34 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/narrowspec.py +++ b/mercurial/narrowspec.py @@ -164,9 +164,15 @@ if profiles: raise error.Abort(_("including other spec files using '%include' is not" " supported in narrowspec")) + + validatepatterns(includepats) + validatepatterns(excludepats) + return includepats, excludepats def save(repo, includepats, excludepats): + validatepatterns(includepats) + validatepatterns(excludepats) spec = format(includepats, excludepats) repo.svfs.write(FILENAME, spec)
--- a/tests/test-narrow-patterns.t +++ b/tests/test-narrow-patterns.t @@ -439,3 +439,31 @@ abort: invalid prefix on narrow pattern: set:ignored (narrow patterns must begin with one of the following: path:, rootfilesin:) [255] + + $ cat .hg/store/narrowspec + [include] + path:dir1 + path:dir1/dirA + [exclude] + + $ cat > .hg/store/narrowspec << EOF + > [include] + > glob:** + > EOF + + $ hg tracked + abort: invalid prefix on narrow pattern: glob:** + (narrow patterns must begin with one of the following: path:, rootfilesin:) + [255] + + $ cat > .hg/store/narrowspec << EOF + > [include] + > path:. + > [exclude] + > set:ignored + > EOF + + $ hg tracked + abort: invalid prefix on narrow pattern: set:ignored + (narrow patterns must begin with one of the following: path:, rootfilesin:) + [255]