sapling/tests/test-check-execute.t
Jun Wu 67db9ced8b test-check-execute: make it a fast test
Summary: `hg files .` is fast. Therefore use it.

Reviewed By: singhsrb

Differential Revision: D9800126

fbshipit-source-id: d22c42599f7a4e923d0261f6cd670dd111965ef9
2018-09-12 16:44:27 -07:00

46 lines
2.5 KiB
Perl

#require test-repo execbit hg10
$ . "$TESTDIR/helpers-testrepo.sh"
$ cd "`dirname "$TESTDIR"`"
$ testrepohg files . > "$TESTTMP/filelist"
$ python << EOF
> import os, stat
> for path in open(os.path.join(os.environ["TESTTMP"], "filelist")).read().splitlines():
> if path.startswith("fb/"):
> continue
> content = open(path).read()
> isexec = bool(stat.S_IEXEC & os.stat(path).st_mode)
> ispy = path.endswith(".py")
> issh = path.endswith(".sh")
> isrs = path.endswith(".rs")
> if content.startswith("#!"):
> interpreter = os.path.basename(content.split("\n")[0].split()[-1])
> else:
> interpreter = None
> if ispy and isexec and interpreter not in {"python", "python2", "python3"}:
> print("%s is a Python script but does not have Python interpreter specified" % path)
> elif issh and isexec and interpreter not in {"sh", "bash", "zsh", "fish"}:
> print("%s is a Shell script but does not have Shell interpreter specified" % path)
> elif isexec and not interpreter:
> print("%s is executable but does not have #!" % path)
> elif not isexec and interpreter and not isrs:
> print("%s is not an executable but does have #!" % path)
> EOF
contrib/builddeb_fb/debian/rules is not an executable but does have #!
contrib/dockerlib.sh is not an executable but does have #!
contrib/plan9/9mail is not an executable but does have #!
contrib/vagrant/provision.sh is not an executable but does have #!
contrib/vagrant/run-tests.sh is not an executable but does have #!
mercurial/entrypoint.py is a Python script but does not have Python interpreter specified
tests/fixtures/addspecial.sh is not an executable but does have #!
tests/fixtures/mergeexternals.sh is not an executable but does have #!
tests/fixtures/project_name_with_space.sh is not an executable but does have #!
tests/fixtures/rename-closed-branch-dir.sh is not an executable but does have #!
tests/infinitepush/library.sh is not an executable but does have #!
tests/test-fb-hgext-cstore-datapackstore.py is a Python script but does not have Python interpreter specified
tests/test-fb-hgext-cstore-treemanifest.py is a Python script but does not have Python interpreter specified
tests/test-fb-hgext-cstore-uniondatapackstore.py is a Python script but does not have Python interpreter specified
tests/test-fb-hgext-revisionstore-datastore.py is a Python script but does not have Python interpreter specified