sapling/eden/scm/tests/test-adding-invalid-utf8-t.py
Durham Goode ceca615943 workingcopy: enable rust walker by default in tests
Summary: Let's enable it for tests. We'll slow roll it in production.

Reviewed By: quark-zju

Differential Revision: D19543790

fbshipit-source-id: be7d18dd8ffe51615a27c39ebf4247ec405b4097
2020-03-17 10:39:15 -07:00

41 lines
1.5 KiB
Python
Raw Blame History

# coding=utf-8
# 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
feature.require(["py2"])
feature.require(["no-windows", "no-osx"])
# Test that trying to add invalid utf8 files to the repository will fail.
sh % "hg init"
open("\x9d\xc8\xac\xde\xa1\xee", "wb").write("test")
# fsmonitor ignores the file once, so it has slightly different output from here
if feature.check("fsmonitor"):
sh % "hg status" == "skipping invalid utf-8 filename: '\x9d\xc8\xac\xde\xa1\xee'"
sh % "hg addremove" == ""
sh % "hg commit -m 'adding a filename that is invalid utf8'" == r"""
nothing changed
[1]"""
else:
# This is different from the fsmonitor output above because the Rust walker error
# reporting escapes the invalid unicode characters with unicode codepoint \ufffd
# (which encodes to bytes \xef\xbf\xbd).
sh % "hg status" == "skipping invalid utf-8 filename: '\xef\xbf\xbd\xc8\xac\xde\xa1\xef\xbf\xbd'"
sh % "hg addremove" == "skipping invalid utf-8 filename: '\xef\xbf\xbd\xc8\xac\xde\xa1\xef\xbf\xbd'"
sh % "hg commit -m 'adding a filename that is invalid utf8'" == r"""
skipping invalid utf-8 filename: '<EFBFBD>Ȭޡ<EFBFBD>'
skipping invalid utf-8 filename: '<EFBFBD>Ȭޡ<EFBFBD>'
nothing changed
[1]"""