Re: [PATCH] ui: do not translate empty configsource() to 'none' (API)

2016-12-19 Thread Augie Fackler
On Sun, Dec 18, 2016 at 06:54:27PM +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara 
> # Date 1477212420 -32400
> #  Sun Oct 23 17:47:00 2016 +0900
> # Node ID f2565fc73557e6cbf78119da2953bfae6d457f94
> # Parent  7d505a99f16d0a7faae231432deef5c9bcfd3ad1
> ui: do not translate empty configsource() to 'none' (API)

Sure, queued, thanks.

>
> It should be processed when displaying data, so we can get "source": "" in
> JSON output.
>
> diff --git a/mercurial/chgserver.py b/mercurial/chgserver.py
> --- a/mercurial/chgserver.py
> +++ b/mercurial/chgserver.py
> @@ -271,9 +271,6 @@ def _loadnewui(srcui, args):
>  if ':' in source or source == '--config':
>  # path:line or command line
>  continue
> -if source == 'none':
> -# ui.configsource returns 'none' by default
> -source = ''
>  newui.setconfig(section, name, value, source)
>
>  # load wd and repo config, copied from dispatch.py
> diff --git a/mercurial/commands.py b/mercurial/commands.py
> --- a/mercurial/commands.py
> +++ b/mercurial/commands.py
> @@ -1804,29 +1804,28 @@ def config(ui, repo, *values, **opts):
>  raise error.Abort(_('only one config item permitted'))
>  matched = False
>  for section, name, value in ui.walkconfig(untrusted=untrusted):
> +source = ui.configsource(section, name, untrusted)
>  value = str(value)
>  if fm.isplain():
> +source = source or 'none'
>  value = value.replace('\n', '\\n')
>  entryname = section + '.' + name
>  if values:
>  for v in values:
>  if v == section:
>  fm.startitem()
> -fm.condwrite(ui.debugflag, 'source', '%s: ',
> - ui.configsource(section, name, untrusted))
> +fm.condwrite(ui.debugflag, 'source', '%s: ', source)
>  fm.write('name value', '%s=%s\n', entryname, value)
>  matched = True
>  elif v == entryname:
>  fm.startitem()
> -fm.condwrite(ui.debugflag, 'source', '%s: ',
> - ui.configsource(section, name, untrusted))
> +fm.condwrite(ui.debugflag, 'source', '%s: ', source)
>  fm.write('value', '%s\n', value)
>  fm.data(name=entryname)
>  matched = True
>  else:
>  fm.startitem()
> -fm.condwrite(ui.debugflag, 'source', '%s: ',
> - ui.configsource(section, name, untrusted))
> +fm.condwrite(ui.debugflag, 'source', '%s: ', source)
>  fm.write('name value', '%s=%s\n', entryname, value)
>  matched = True
>  fm.end()
> diff --git a/mercurial/ui.py b/mercurial/ui.py
> --- a/mercurial/ui.py
> +++ b/mercurial/ui.py
> @@ -249,8 +249,9 @@ class ui(object):
>  if not p:
>  continue
>  if '%%' in p:
> +s = self.configsource('paths', n) or 'none'
>  self.warn(_("(deprecated '%%' in path %s=%s from 
> %s)\n")
> -  % (n, p, self.configsource('paths', n)))
> +  % (n, p, s))
>  p = p.replace('%%', '%')
>  p = util.expandpath(p)
>  if not util.hasscheme(p) and not os.path.isabs(p):
> @@ -291,7 +292,7 @@ class ui(object):
>  return untrusted and self._ucfg or self._tcfg
>
>  def configsource(self, section, name, untrusted=False):
> -return self._data(untrusted).source(section, name) or 'none'
> +return self._data(untrusted).source(section, name)
>
>  def config(self, section, name, default=None, untrusted=False):
>  if isinstance(name, list):
> diff --git a/tests/test-config.t b/tests/test-config.t
> --- a/tests/test-config.t
> +++ b/tests/test-config.t
> @@ -84,6 +84,32 @@ Test case sensitive configuration
> }
>]
>
> +Test empty config source:
> +
> +  $ cat < emptysource.py
> +  > def reposetup(ui, repo):
> +  > ui.setconfig('empty', 'source', 'value')
> +  > EOF
> +  $ cp .hg/hgrc .hg/hgrc.orig
> +  $ cat <> .hg/hgrc
> +  > [extensions]
> +  > emptysource = `pwd`/emptysource.py
> +  > EOF
> +
> +  $ hg config --debug empty.source
> +  read config from: * (glob)
> +  none: value
> +  $ hg config empty.source -Tjson
> +  [
> +   {
> +"name": "empty.source",
> +"source": "",
> +"value": "value"
> +   }
> +  ]
> +
> +  $ cp .hg/hgrc.orig .hg/hgrc
> +
>  Test "%unset"
>
>$ cat >> $HGRCPATH < ___
> Mercurial-devel mailing list
> Mercurial-devel@mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

[PATCH] ui: do not translate empty configsource() to 'none' (API)

2016-12-18 Thread Yuya Nishihara
# HG changeset patch
# User Yuya Nishihara 
# Date 1477212420 -32400
#  Sun Oct 23 17:47:00 2016 +0900
# Node ID f2565fc73557e6cbf78119da2953bfae6d457f94
# Parent  7d505a99f16d0a7faae231432deef5c9bcfd3ad1
ui: do not translate empty configsource() to 'none' (API)

It should be processed when displaying data, so we can get "source": "" in
JSON output.

diff --git a/mercurial/chgserver.py b/mercurial/chgserver.py
--- a/mercurial/chgserver.py
+++ b/mercurial/chgserver.py
@@ -271,9 +271,6 @@ def _loadnewui(srcui, args):
 if ':' in source or source == '--config':
 # path:line or command line
 continue
-if source == 'none':
-# ui.configsource returns 'none' by default
-source = ''
 newui.setconfig(section, name, value, source)
 
 # load wd and repo config, copied from dispatch.py
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1804,29 +1804,28 @@ def config(ui, repo, *values, **opts):
 raise error.Abort(_('only one config item permitted'))
 matched = False
 for section, name, value in ui.walkconfig(untrusted=untrusted):
+source = ui.configsource(section, name, untrusted)
 value = str(value)
 if fm.isplain():
+source = source or 'none'
 value = value.replace('\n', '\\n')
 entryname = section + '.' + name
 if values:
 for v in values:
 if v == section:
 fm.startitem()
-fm.condwrite(ui.debugflag, 'source', '%s: ',
- ui.configsource(section, name, untrusted))
+fm.condwrite(ui.debugflag, 'source', '%s: ', source)
 fm.write('name value', '%s=%s\n', entryname, value)
 matched = True
 elif v == entryname:
 fm.startitem()
-fm.condwrite(ui.debugflag, 'source', '%s: ',
- ui.configsource(section, name, untrusted))
+fm.condwrite(ui.debugflag, 'source', '%s: ', source)
 fm.write('value', '%s\n', value)
 fm.data(name=entryname)
 matched = True
 else:
 fm.startitem()
-fm.condwrite(ui.debugflag, 'source', '%s: ',
- ui.configsource(section, name, untrusted))
+fm.condwrite(ui.debugflag, 'source', '%s: ', source)
 fm.write('name value', '%s=%s\n', entryname, value)
 matched = True
 fm.end()
diff --git a/mercurial/ui.py b/mercurial/ui.py
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -249,8 +249,9 @@ class ui(object):
 if not p:
 continue
 if '%%' in p:
+s = self.configsource('paths', n) or 'none'
 self.warn(_("(deprecated '%%' in path %s=%s from 
%s)\n")
-  % (n, p, self.configsource('paths', n)))
+  % (n, p, s))
 p = p.replace('%%', '%')
 p = util.expandpath(p)
 if not util.hasscheme(p) and not os.path.isabs(p):
@@ -291,7 +292,7 @@ class ui(object):
 return untrusted and self._ucfg or self._tcfg
 
 def configsource(self, section, name, untrusted=False):
-return self._data(untrusted).source(section, name) or 'none'
+return self._data(untrusted).source(section, name)
 
 def config(self, section, name, default=None, untrusted=False):
 if isinstance(name, list):
diff --git a/tests/test-config.t b/tests/test-config.t
--- a/tests/test-config.t
+++ b/tests/test-config.t
@@ -84,6 +84,32 @@ Test case sensitive configuration
}
   ]
 
+Test empty config source:
+
+  $ cat < emptysource.py
+  > def reposetup(ui, repo):
+  > ui.setconfig('empty', 'source', 'value')
+  > EOF
+  $ cp .hg/hgrc .hg/hgrc.orig
+  $ cat <> .hg/hgrc
+  > [extensions]
+  > emptysource = `pwd`/emptysource.py
+  > EOF
+
+  $ hg config --debug empty.source
+  read config from: * (glob)
+  none: value
+  $ hg config empty.source -Tjson
+  [
+   {
+"name": "empty.source",
+"source": "",
+"value": "value"
+   }
+  ]
+
+  $ cp .hg/hgrc.orig .hg/hgrc
+
 Test "%unset"
 
   $ cat >> $HGRCPATH