changeset 30611:d5883fd055c6

extensions: change magic "shipped with hg" string I've caught multiple extensions in the wild lying about being 'internal', so it's time to move the goalposts on people. Goalpost moving will continue until third party extensions stop trying to defeat the system.
author Augie Fackler <augie@google.com>
date Tue, 23 Aug 2016 11:26:08 -0400
parents 4435d4c951ec
children d5497eb1d768
files contrib/synthrepo.py hgext/acl.py hgext/blackbox.py hgext/bugzilla.py hgext/censor.py hgext/chgserver.py hgext/children.py hgext/churn.py hgext/clonebundles.py hgext/color.py hgext/convert/__init__.py hgext/eol.py hgext/extdiff.py hgext/fetch.py hgext/fsmonitor/__init__.py hgext/gpg.py hgext/graphlog.py hgext/hgk.py hgext/highlight/__init__.py hgext/histedit.py hgext/journal.py hgext/keyword.py hgext/largefiles/__init__.py hgext/logtoprocess.py hgext/mq.py hgext/notify.py hgext/pager.py hgext/patchbomb.py hgext/purge.py hgext/rebase.py hgext/record.py hgext/relink.py hgext/schemes.py hgext/share.py hgext/shelve.py hgext/strip.py hgext/transplant.py hgext/win32mbcs.py hgext/win32text.py hgext/zeroconf/__init__.py mercurial/commands.py mercurial/dispatch.py mercurial/extensions.py
diffstat 43 files changed, 89 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/synthrepo.py
+++ b/contrib/synthrepo.py
@@ -62,11 +62,11 @@
     util,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
--- a/hgext/acl.py
+++ b/hgext/acl.py
@@ -204,11 +204,11 @@
 
 urlreq = util.urlreq
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def _getusers(ui, group):
 
--- a/hgext/blackbox.py
+++ b/hgext/blackbox.py
@@ -51,11 +51,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 lastui = None
 
 filehandles = {}
--- a/hgext/bugzilla.py
+++ b/hgext/bugzilla.py
@@ -294,11 +294,11 @@
 urlparse = util.urlparse
 xmlrpclib = util.xmlrpclib
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 class bzaccess(object):
     '''Base class for access to Bugzilla.'''
--- a/hgext/censor.py
+++ b/hgext/censor.py
@@ -42,11 +42,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('censor',
     [('r', 'rev', '', _('censor file from specified revision'), _('REV')),
--- a/hgext/chgserver.py
+++ b/hgext/chgserver.py
@@ -63,11 +63,11 @@
     util,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 _log = commandserver.log
 
--- a/hgext/children.py
+++ b/hgext/children.py
@@ -26,11 +26,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('children',
     [('r', 'rev', '',
--- a/hgext/churn.py
+++ b/hgext/churn.py
@@ -26,11 +26,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def maketemplater(ui, repo, tmpl):
     return cmdutil.changeset_templater(ui, repo, False, None, tmpl, None, False)
--- a/hgext/clonebundles.py
+++ b/hgext/clonebundles.py
@@ -169,7 +169,7 @@
     wireproto,
 )
 
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def capabilities(orig, repo, proto):
     caps = orig(repo, proto)
--- a/hgext/color.py
+++ b/hgext/color.py
@@ -170,11 +170,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # start and stop parameters for effects
 _effects = {'none': 0, 'black': 30, 'red': 31, 'green': 32, 'yellow': 33,
--- a/hgext/convert/__init__.py
+++ b/hgext/convert/__init__.py
@@ -23,11 +23,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # Commands definition was moved elsewhere to ease demandload job.
 
--- a/hgext/eol.py
+++ b/hgext/eol.py
@@ -104,11 +104,11 @@
     util,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # Matches a lone LF, i.e., one that is not part of CRLF.
 singlelf = re.compile('(^|[^\r])\n')
--- a/hgext/extdiff.py
+++ b/hgext/extdiff.py
@@ -84,11 +84,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def snapshot(ui, repo, files, node, tmproot, listsubrepos):
     '''snapshot files as of some revision
--- a/hgext/fetch.py
+++ b/hgext/fetch.py
@@ -26,11 +26,11 @@
 release = lock.release
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('fetch',
     [('r', 'rev', [],
--- a/hgext/fsmonitor/__init__.py
+++ b/hgext/fsmonitor/__init__.py
@@ -113,11 +113,11 @@
     watchmanclient,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # This extension is incompatible with the following blacklisted extensions
 # and will disable itself when encountering one of these:
--- a/hgext/gpg.py
+++ b/hgext/gpg.py
@@ -23,11 +23,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 class gpg(object):
     def __init__(self, path, key=None):
--- a/hgext/graphlog.py
+++ b/hgext/graphlog.py
@@ -25,11 +25,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('glog',
     [('f', 'follow', None,
--- a/hgext/hgk.py
+++ b/hgext/hgk.py
@@ -54,11 +54,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('debug-diff-tree',
     [('p', 'patch', None, _('generate patch')),
--- a/hgext/highlight/__init__.py
+++ b/hgext/highlight/__init__.py
@@ -41,11 +41,11 @@
     fileset,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def pygmentize(web, field, fctx, tmpl):
     style = web.config('web', 'pygments_style', 'colorful')
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -213,11 +213,11 @@
     def known(cls):
         return set([v for k, v in cls.__dict__.items() if k[0] != '_'])
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 actiontable = {}
 primaryactions = set()
--- a/hgext/journal.py
+++ b/hgext/journal.py
@@ -39,11 +39,11 @@
 cmdtable = {}
 command = cmdutil.command(cmdtable)
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # storage format version; increment when the format changes
 storageversion = 0
--- a/hgext/keyword.py
+++ b/hgext/keyword.py
@@ -112,11 +112,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # hg commands that do not act on keywords
 nokwcommands = ('add addremove annotate bundle export grep incoming init log'
--- a/hgext/largefiles/__init__.py
+++ b/hgext/largefiles/__init__.py
@@ -119,11 +119,11 @@
     uisetup as uisetupmod,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 reposetup = reposetup.reposetup
 
--- a/hgext/logtoprocess.py
+++ b/hgext/logtoprocess.py
@@ -40,11 +40,11 @@
 import subprocess
 import sys
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def uisetup(ui):
     if platform.system() == 'Windows':
--- a/hgext/mq.py
+++ b/hgext/mq.py
@@ -99,11 +99,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # force load strip extension formerly included in mq and import some utility
 try:
--- a/hgext/notify.py
+++ b/hgext/notify.py
@@ -148,11 +148,11 @@
     util,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # template for single changeset can include email headers.
 single_template = '''
--- a/hgext/pager.py
+++ b/hgext/pager.py
@@ -75,11 +75,11 @@
     util,
     )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def _runpager(ui, p):
     pager = subprocess.Popen(p, shell=True, bufsize=-1,
--- a/hgext/patchbomb.py
+++ b/hgext/patchbomb.py
@@ -87,11 +87,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def _addpullheader(seq, ctx):
     """Add a header pointing to a public URL where the changeset is available
--- a/hgext/purge.py
+++ b/hgext/purge.py
@@ -38,11 +38,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('purge|clean',
     [('a', 'abort-on-err', None, _('abort if an error occurs')),
--- a/hgext/rebase.py
+++ b/hgext/rebase.py
@@ -66,11 +66,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def _nothingtorebase():
     return 1
--- a/hgext/record.py
+++ b/hgext/record.py
@@ -22,11 +22,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 
 @command("record",
--- a/hgext/relink.py
+++ b/hgext/relink.py
@@ -21,11 +21,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('relink', [], _('[ORIGIN]'))
 def relink(ui, repo, origin=None, **opts):
--- a/hgext/schemes.py
+++ b/hgext/schemes.py
@@ -56,11 +56,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 
 class ShortRepository(object):
--- a/hgext/share.py
+++ b/hgext/share.py
@@ -56,11 +56,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 @command('share',
     [('U', 'noupdate', None, _('do not create a working directory')),
--- a/hgext/shelve.py
+++ b/hgext/shelve.py
@@ -54,11 +54,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 backupdir = 'shelve-backup'
 shelvedir = 'shelved'
--- a/hgext/strip.py
+++ b/hgext/strip.py
@@ -23,11 +23,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 def checksubstate(repo, baserev=None):
     '''return list of subrepos at a different revision than substate.
--- a/hgext/transplant.py
+++ b/hgext/transplant.py
@@ -40,11 +40,11 @@
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 class transplantentry(object):
     def __init__(self, lnode, rnode):
--- a/hgext/win32mbcs.py
+++ b/hgext/win32mbcs.py
@@ -55,11 +55,11 @@
     error,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 _encoding = None                                # see extsetup
 
--- a/hgext/win32text.py
+++ b/hgext/win32text.py
@@ -52,11 +52,11 @@
     util,
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # regexp for single LF without CR preceding.
 re_single_lf = re.compile('(^|[^\r])\n', re.MULTILINE)
--- a/hgext/zeroconf/__init__.py
+++ b/hgext/zeroconf/__init__.py
@@ -40,11 +40,11 @@
     server as servermod
 )
 
-# Note for extension authors: ONLY specify testedwith = 'internal' for
+# Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
 # be specifying the version(s) of Mercurial they are tested with, or
 # leave the attribute unspecified.
-testedwith = 'internal'
+testedwith = 'ships-with-hg-core'
 
 # publish
 
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2396,6 +2396,10 @@
     for extname, extmod in sorted(exts, key=operator.itemgetter(0)):
         extsource = extmod.__file__
         exttestedwith = getattr(extmod, 'testedwith', '').split()
+        if exttestedwith == ['ships-with-hg-core']:
+            showtestedwith = ['internal']
+        else:
+            showtestedwith = exttestedwith
         extbuglink = getattr(extmod, 'buglink', None)
 
         fm.startitem()
@@ -2406,7 +2410,8 @@
             fm.write('name', '%s', extname)
             if not exttestedwith:
                 fm.plain(_(' (untested!)\n'))
-            elif exttestedwith == ['internal'] or hgver in exttestedwith:
+            elif (exttestedwith == ['ships-with-hg-core']
+                  or hgver in exttestedwith):
                 fm.plain('\n')
             else:
                 lasttestedversion = exttestedwith[-1]
@@ -2415,9 +2420,9 @@
         fm.condwrite(ui.verbose and extsource, 'source',
                  _('  location: %s\n'), extsource or "")
 
-        fm.condwrite(ui.verbose and exttestedwith, 'testedwith',
+        fm.condwrite(ui.verbose and showtestedwith, 'testedwith',
                      _('  tested with: %s\n'),
-                     fm.formatlist(exttestedwith, name='ver'))
+                     fm.formatlist(showtestedwith, name='ver'))
 
         fm.condwrite(ui.verbose and extbuglink, 'buglink',
                  _('  bug reporting: %s\n'), extbuglink or "")
--- a/mercurial/dispatch.py
+++ b/mercurial/dispatch.py
@@ -927,7 +927,7 @@
                 break
 
             # Never blame on extensions bundled with Mercurial.
-            if testedwith == 'internal':
+            if testedwith == 'ships-with-hg-core':
                 continue
 
             tested = [util.versiontuple(t, 2) for t in testedwith.split()]
--- a/mercurial/extensions.py
+++ b/mercurial/extensions.py
@@ -532,4 +532,4 @@
 
 def ismoduleinternal(module):
     exttestedwith = getattr(module, 'testedwith', None)
-    return exttestedwith == "internal"
+    return exttestedwith == "ships-with-hg-core"