[PATCH 4 of 5 RFC] various hacks to make some tests pass
Idan Kamara
idankk86 at gmail.com
Fri Jun 3 21:37:26 UTC 2011
On Sat, Jun 4, 2011 at 12:20 AM, Matt Mackall <mpm at selenic.com> wrote:
> On Fri, 2011-06-03 at 23:04 +0300, Idan Kamara wrote:
> > # HG changeset patch
> > # User Idan Kamara <idankk86 at gmail.com>
> > # Date 1307131444 -10800
> > # Node ID 1a75ec54cf1092c2e3690511b54d2bf941c974de
> > # Parent 629b46ad35e63f5217ae782d950dfb5c5835380e
> > various hacks to make some tests pass
> >
> > the problem is the commandserver replaces stdout/err, so after dup'ing
> them
> > output no longer goes through the redirected ones.
>
> General note: this sort of thing should go -before- the thing that
> introduces the breakage. That way at every point in history, tests still
> pass.
>
I'm aware, I never intended these to be end up in the history actually.
> Specific note: these hacks are a little unfortunate. Also seems like the
> actual issue is you can't dup a channel?
>
Yes, not sure how to solve that elegantly though.
> > diff -r 629b46ad35e6 -r 1a75ec54cf10 mercurial/cmdutil.py
> > --- a/mercurial/cmdutil.py Fri Jun 03 17:34:54 2011 +0300
> > +++ b/mercurial/cmdutil.py Fri Jun 03 23:04:04 2011 +0300
> > @@ -161,7 +161,7 @@
> >
> > if not pat or pat == '-':
> > fp = writable and sys.stdout or sys.stdin
> > - return os.fdopen(os.dup(fp.fileno()), mode)
> > + return fp
> > if hasattr(pat, 'write') and writable:
> > return pat
> > if hasattr(pat, 'read') and 'r' in mode:
> > @@ -503,7 +503,7 @@
> > if not fp:
> > fp = makefileobj(repo, template, node, total=total,
> seqno=seqno,
> > revwidth=revwidth, mode='ab')
> > - if fp != template:
> > + if fp != template and fp not in (sys.stdout, sys.stderr):
> > shouldclose = True
> > if fp != sys.stdout and hasattr(fp, 'name'):
> > repo.ui.note("%s\n" % fp.name)
> > diff -r 629b46ad35e6 -r 1a75ec54cf10 mercurial/commands.py
> > --- a/mercurial/commands.py Fri Jun 03 17:34:54 2011 +0300
> > +++ b/mercurial/commands.py Fri Jun 03 23:04:04 2011 +0300
> > @@ -946,7 +946,8 @@
> > if opts.get('decode'):
> > data = repo.wwritedata(abs, data)
> > fp.write(data)
> > - fp.close()
> > + if fp not in (sys.stdout, sys.stderr):
> > + fp.close()
> > err = 0
> > return err
> >
> > _______________________________________________
> > Mercurial-devel mailing list
> > Mercurial-devel at selenic.com
> > http://selenic.com/mailman/listinfo/mercurial-devel
>
>
> --
> Mathematics is the supreme nostalgia of our time.
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20110604/bbc2585b/attachment.html>
More information about the Mercurial-devel
mailing list