mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
796a0ef8af
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
76 lines
1.4 KiB
Python
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.
|