diff --git a/mercurial/ui.py b/mercurial/ui.py
index 72f2a19c5f88791e156711e4a90f241a1a8b3c0c_bWVyY3VyaWFsL3VpLnB5..89003c49315c507a5bab40ddd7f790791ec7c30c_bWVyY3VyaWFsL3VpLnB5 100644
--- a/mercurial/ui.py
+++ b/mercurial/ui.py
@@ -798,7 +798,7 @@
         If ui is not interactive, the default is returned.
         """
         if not self.interactive():
-            self.write(msg, ' ', default, "\n")
+            self.write(msg, ' ', default or '', "\n")
             return default
         try:
             r = self._readline(self.label(msg, 'ui.prompt'))
diff --git a/tests/test-committer.t b/tests/test-committer.t
index 72f2a19c5f88791e156711e4a90f241a1a8b3c0c_dGVzdHMvdGVzdC1jb21taXR0ZXIudA==..89003c49315c507a5bab40ddd7f790791ec7c30c_dGVzdHMvdGVzdC1jb21taXR0ZXIudA== 100644
--- a/tests/test-committer.t
+++ b/tests/test-committer.t
@@ -66,6 +66,31 @@
   date:        Thu Jan 01 00:00:00 1970 +0000
   summary:     commit-1
   
+# test prompt username
+
+  $ cat > .hg/hgrc <<EOF
+  > [ui]
+  > askusername = True
+  > EOF
+
+  $ echo 12345 > asdf
+  $ hg commit --config ui.interactive=False -m ask
+  enter a commit username: 
+  no username found, using '[^']*' instead (re)
+  $ hg rollback -q
+
+  $ hg commit --config ui.interactive=True -m ask <<EOF
+  > Asked User <ask@example.com>
+  > EOF
+  enter a commit username: Asked User <ask@example.com>
+  $ hg tip
+  changeset:   5:84c91d963b70
+  tag:         tip
+  user:        Asked User <ask@example.com>
+  date:        Thu Jan 01 00:00:00 1970 +0000
+  summary:     ask
+  
+
 # test no .hg/hgrc (uses generated non-interactive username)
 
   $ echo space > asdf