Ticket #180 (new enhancement)
buildbot try does the wrong thing with mercurial queues
| Reported by: | dsallings | Owned by: | dsallings |
|---|---|---|---|
| Priority: | major | Milestone: | 0.8.+ |
| Version: | 0.7.6 | Keywords: | hg |
| Cc: | afri, dustin, dsallings, marcusl, burcin@… |
Description
We'd like to be able to use buildbot try and mercurial queues. It's a pretty simple change to make:
Instead of asking for the tree identity, ask for the identity of the qparent. If there's not a qparent, ask for the current identity (as is done now). Then always diff against the discovered patch level.
A patch is attached that seems to do the job well.
Attachments
Change History
Changed 4 years ago by dsallings
-
attachment
try-mq.diff
added
comment:2 Changed 3 years ago by Ben
- Cc dustin added
Seems reasonable to me, any objections to that one ?
For the non Mercurial aware, this patch means that if you have any pending patch (as opposed to normal changeset) on your repository, the diff is done with those actual pending patches. If not, revert back to the current modif on the working dir.
comment:3 Changed 3 years ago by dustin
- Status changed from new to closed
- Resolution set to fixed
http://repo.or.cz/w/buildbot.git?a=shortlog;h=refs/remotes/dustin/bug180
(note: I have no way to test this, as I don't use hg -- I'm going on Ben's "seems reasonable")
comment:4 Changed 3 years ago by Ben
- Status changed from closed to reopened
- Resolution fixed deleted
Note that a test case would be nice ...
I'll try to combine one tonight.
comment:5 Changed 3 years ago by Ben
- Owner set to dsallings
- Status changed from reopened to new
I cannot make my testsuite working ...
So I leave the ticket open, untill *someone* fix the testsuite or the patch ....
Here is where I am so far (see patch actually)
comment:6 Changed 3 years ago by Ben
- Type changed from defect to enhancement
to finish for today, it's more a wish than a defect ...
comment:8 Changed 3 years ago by dustin
- Cc dsallings added
- Keywords review removed
OK, this patch is available in integrated form at:
http://repo.or.cz/w/buildbot.git?a=shortlog;h=refs/remotes/dustin/bug180
Since this is a "draft", I haven't pulled it into the dev tree yet, and will un-mark it for review.
===============================================================================
[ERROR]: buildbot.test.test_vc.Mercurial.testTryMq
Traceback (most recent call last):
File "/home/dustin/devel/projects/buildbot/t/buildbot/buildbot/test/test_vc.py", line 345, in check
+ ": see logs for stdout")
exceptions.RuntimeError: command ['/usr/bin/hg', 'qnew', '-f', 'patch.diff'] finished with exit code 255: see logs for stdout
By the way, dsallings, what is your full name and email address, so I can give you credit?
comment:10 Changed 3 years ago by dsallings
I just realized this was showing an error. I haven't used hg with buildbot in a while, but I was using it with this recipe. Is it actually failing? If so, does the log show anything?
comment:11 Changed 3 years ago by dustin
looks like 'qnew' is too new for my version of hg?
[I] dev-util/mercurial
Available versions: 1.0.1-r2 ~1.0.1-r3 1.0.2 {bash-completion bugzilla cvs darcs emacs git gpg subversion test zsh-completion}
Installed versions: 1.0.2(02:02:29 12/03/08)(-bash-completion -bugzilla -emacs -gpg -test -zsh-completion)
Homepage: http://www.selenic.com/mercurial/
Description: Scalable distributed SCM
comment:12 Changed 3 years ago by dsallings
You have to enable mq before the commands work:
~/.hgrc:
[extensions] hgext.mq =
comment:13 Changed 3 years ago by dsallings
Sorry, poorly formatted.
[extensions] hgext.mq=
comment:14 Changed 3 years ago by dustin
Hmm, I don't really know what that means, but is there some way to detect that and either skip the tests or give a helpful failure message in that case? That might deserve another bug.
For now, I see this, which I don't really know how to diagnose.
===============================================================================
[FAIL]: buildbot.test.test_vc.Mercurial.testTryMq
Traceback (most recent call last):
File "/home/dustin/devel/projects/buildbot/t/buildbot/buildbot/test/test_vc.py", line 964, in _do_getpatch_trunkhead_2
self.failUnlessIn("try",ss.patch[1])
File "/home/dustin/devel/projects/buildbot/t/buildbot/buildbot/test/test_vc.py", line 382, in failUnlessIn
self.failUnless(string.find(substring) != -1, msg)
twisted.trial.unittest.FailTest: did not see the expected substring 'try' in string ''
-------------------------------------------------------------------------------
Ran 1 tests in 4.782s
By the way, I have cloned the buildbot repo at http://github.com/djmitche/buildbot. If you want to meet me in #buildbot (freenode), maybe we can figure out a way to make this patch process easier.
comment:15 Changed 3 years ago by dsallings
hg help | grep qnew
comment:16 Changed 3 years ago by dustin
OK, I added a fix to detect the mq extension and skip if it's not present, at
However, with the proper .hgrc, this is still failing..
comment:17 Changed 3 years ago by dustin
hmm, this may be due to an earlier commit. Running 'git bisect' now.
comment:18 Changed 3 years ago by dsallings
This is just under a year old. I pretty much don't use hg anymore for anything, but the functionality was very useful when I was.
That is to say, I don't know how useful I'll be in getting it up-to-date, as I don't use it anymore, and last time I tried updating local git changes over cvs, there were too many conflicts.
It might be good to reach out to more hg users and see if anyone can at least tell if it still works.
comment:19 Changed 3 years ago by dustin
gotcha, thanks.
comment:21 Changed 3 years ago by marcusl
Is it skipping the entire Mercurial tests or just the mq-part? It looks like it's the entire shebang, which is a bit worrying, no?
Also, how about using the repository's hgrc file ( i.e .hg/hgrc) to just enable the extension for our test repo?
Just my 0.02$.
comment:22 Changed 3 years ago by dustin
- Milestone changed from undecided to 0.7.+
This is still failing for me; I just rebased it onto master.
comment:23 Changed 3 years ago by marcusl
I've merged with current master and made a small mod that only skips the tryMqTest. It fails here too, but at least the failure is more localized and more test work without mq-enabled.
comment:24 Changed 3 years ago by dustin
I've got your most recent changes merged in my bug180, but it's still failing. Just FYI :)
comment:25 Changed 2 years ago by dustin
- Milestone changed from 0.8.+ to 0.7.12
What's going on here? I pulled marcusl's bug180 branch. I have
[extensions] hgext.mq=
in my .hgrc, and
dustin@euclid ~/code/buildbot/t/buildbot [bug180] $ hg showconfig | grep hgext extensions.hgext.mq=
yet
[SKIPPED]: buildbot.test.test_vc.MercurialInRepo.testCheckout Add 'hgext.mq =' to the '[extensions]' section of ~/.hgrc
We should really either get this merged or give up..
comment:26 Changed 2 years ago by marcusl
Haven't worked on for.. well.. 8 months.
I'm not using mq either, so I've never gotten around to scratch this itch properly.
comment:27 Changed 2 years ago by dustin
- Milestone changed from 0.7.12 to 0.8.0
next release, then :)
comment:30 Changed 3 months ago by burcin
- Cc burcin@… added
attachment:try-mq.diff works for me, after manually applying the patch to tryclient.py. Could this be merged for the next release?
The first hunk of https://github.com/marcusl/buildbot/commit/50c3be07aa646a3668e38503e3abd25d1bb00879 seems to remove the code that checks if mq is available. Perhaps reverting this would fix the tests.
comment:31 Changed 3 months ago by marcusl
The commit was made to only disable the testTryMq() test, not the entire Mercurial test case, when mq is not enabled. (Since I and many others didn't use MQ, Mercurial tests weren't run at all.)
That was the intention at least. Looking at it now, it seems as if MercurialHelper?._qnew_supported might be set (or not), and the commit removed some code which would update that value again.
The right thing would be to make sure that _qnew_supported has a correct value always, and not to rely on the unit tests to check and set it. (Could be a property that's set lazily inside MercurialHelper?, on first access....)
![[Buildbot Logo]](/chrome/site/header-text-transparent.png)
try with mq support