sapling/eden/scm/tests/test-gitignore-t.py
Mark Juggurnauth-Thomas 796a0ef8af gitignore: add test showing gitignore directory pattern matching a file
Summary:
The gitignore matcher assumes everything is a directory.  This causes problems
if a directory pattern matches a file that we don't wnat to be ignored.

Add a test demonstrating the issue.

Reviewed By: quark-zju

Differential Revision: D29788782

fbshipit-source-id: 4cd41c7c0985a8729443d6c0507ba98fa212049e
2021-07-21 03:40:15 -07:00

76 lines
1.4 KiB
Python

# Copyright (c) Facebook, Inc. and its affiliates.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
from testutil.dott import feature, sh, testtmp # noqa: F401
sh % "newrepo"
sh % "setconfig 'ui.gitignore=1' 'ui.hgignore=0'"
sh % "cat" << r"""
*.tmp
build/
""" > ".gitignore"
sh % "mkdir build exp"
sh % "cat" << r"""
!*
""" > "build/.gitignore"
sh % "cat" << r"""
!i.tmp
""" > "exp/.gitignore"
sh % "touch build/libfoo.so t.tmp Makefile exp/x.tmp exp/i.tmp"
sh % "hg status" == r"""
? .gitignore
? Makefile
? exp/.gitignore
? exp/i.tmp"""
# Test global ignore files
sh % "cat" << r"""
*.pyc
""" > "$TESTTMP/globalignore"
sh % "touch x.pyc"
sh % "hg status" == r"""
? .gitignore
? Makefile
? exp/.gitignore
? exp/i.tmp
? x.pyc"""
sh % "hg status --config 'ui.ignore.global=$TESTTMP/globalignore'" == r"""
? .gitignore
? Makefile
? exp/.gitignore
? exp/i.tmp"""
# Test directory patterns only match directories.
sh % "cat" << r"""
*.tmp
build*/
""" > ".gitignore"
sh % "mkdir buildstuff"
sh % "touch buildstuff/output builddocs.txt"
sh % "hg status" == r"""
? .gitignore
? Makefile
? exp/.gitignore
? exp/i.tmp
? x.pyc"""
# ERROR: builddocs.txt should show up as unknown. It doesn't because of
# gitignorematcher.matchfn assuming it is a directory.