From fea7f2c74c40c070a57e8f2a44404c1c0186e8b4 Mon Sep 17 00:00:00 2001 From: Jun Wu Date: Sun, 26 Mar 2017 17:59:33 -0700 Subject: [PATCH] debugfsinfo: improve case-sensitive testing Previously the case-sensitive test was for the current directory, and is fragile with errors, and could remove a real file called ".debugfsinfo". This patch improves the case-sensitive testing so it test the given path using a unique temporary file, and does not crash on errors. --- mercurial/debugcommands.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py index c6288daeab..e04891e81a 100644 --- a/mercurial/debugcommands.py +++ b/mercurial/debugcommands.py @@ -788,14 +788,17 @@ def debugfileset(ui, repo, expr, **opts): @command('debugfsinfo', [], _('[PATH]'), norepo=True) def debugfsinfo(ui, path="."): """show information detected about current filesystem""" - util.writefile('.debugfsinfo', '') ui.write(('exec: %s\n') % (util.checkexec(path) and 'yes' or 'no')) ui.write(('fstype: %s\n') % (util.getfstype(path) or '(unknown)')) ui.write(('symlink: %s\n') % (util.checklink(path) and 'yes' or 'no')) ui.write(('hardlink: %s\n') % (util.checknlink(path) and 'yes' or 'no')) - ui.write(('case-sensitive: %s\n') % (util.fscasesensitive('.debugfsinfo') - and 'yes' or 'no')) - util.tryunlink('.debugfsinfo') + casesensitive = '(unknown)' + try: + with tempfile.NamedTemporaryFile(prefix='.debugfsinfo', dir=path) as f: + casesensitive = util.fscasesensitive(f.name) and 'yes' or 'no' + except OSError: + pass + ui.write(('case-sensitive: %s\n') % casesensitive) @command('debuggetbundle', [('H', 'head', [], _('id of head node'), _('ID')),