/srv/irclogs.ubuntu.com/2012/04/10/#launchpad-dev.txt

cjwatsonbenji: thanks for your review of https://code.launchpad.net/~cjwatson/launchpad/api-build-builder/+merge/101162; would you mind landing it for me?00:34
lifelessStevenK: enterpriseid probably needs a fixup approach00:40
lifelessStevenK: otherwise it will become a source of circular imports00:40
lifelesscjwatson: I'm loving your recent stuff :)00:41
lifelesscjwatson: are you finding the LoC constraint problematic ?00:41
lifelesswgrant: StevenK: wallyworld: one of you reprobates should be around and able to land cjwatson's branch ?00:42
cjwatsonlifeless: I'm not sure; I alternate between finding it a tedious source of busywork and thinking it's a useful way to make the codebase less of an inaccessible monster00:42
wallyworldlifeless: sure, even though i'm not sure what a reprobate is00:42
cjwatsonlifeless: so far I've had enough sources of crap to remove that it's not been too bad00:43
cjwatson(in practice)00:43
wallyworldcjwatson: which branch do you need landed?00:43
cjwatsonwallyworld: https://code.launchpad.net/~cjwatson/launchpad/api-build-builder/+merge/10116200:43
lifelesswallyworld: thanks00:43
wallyworldnp00:43
lifelesswallyworld: lossely, scoundrels00:43
wallyworldlifeless: clearly i need to have a thesaurus handy when talking to you :-P00:44
cjwatsonlifeless: Francis muttered something a few months back about possibly giving me PQM access; what oaths would I need to swear in blood for that?00:44
lifelesscjwatson: an rt asking for it, webops can talk you through the bits00:45
cjwatsonthis branch will take me to joint second non-LP Canonical contributor :)00:45
cjwatsonlifeless: OK, great, I'll put that in tomorrow00:46
spmcjwatson: it's tomorrow, today.00:46
* spm messes with colin's mind00:46
cjwatsonmy family are about to go away for a few days, so I fully expect to be on weirdo timezones00:46
nigelbspm: that took a bit to understand... future ma.00:48
nigelb*man00:48
* spm bows, todays troll achievement, unlocked. *ding*.00:48
lifelessspm: don't forget to do it daily; tis classic grinding00:49
spmlifeless: indeed. this is the cross I bear00:50
StevenKlifeless: If you mean fixup like _schema_circular_imports, I object.00:57
lifelessStevenK: I imported enterpriseid_to_object from lp.services.mail and the world ended00:57
StevenKlifeless: Sure, so it needs a solution, but I *hate* _schema_circular_imports as a pattern and do not want to repeat it.00:58
lifelesssure00:58
lifelesswallyworld: thesaurus :00:59
lifelesshttps://www.google.com/search?q=reprobate&client=fs00:59
StevenKHe is calling us villianous01:00
wallyworldlifeless: i was being rhetorical before :-)01:00
lifelesswallyworld: :P01:00
StevenKlifeless is an expert at answering questions you weren't asking.01:00
cjwatsonlifeless: I am curious whether you expect the LoC constraint to actually result in a net reduction of code by some point, I must say :-)01:01
lifelesscjwatson: if it stops the bleeding, I will be content01:01
* cjwatson nods01:01
lifelesscjwatson: I expect the cultural values to shift over time01:01
wallyworldStevenK: perhaps he knows they need answering before we do01:01
lifelesscjwatson: and once that happens, we've won01:01
lifelesscjwatson: I see rules as, at most, a way to flag things that are likely problematic from the desired values01:02
StevenKlifeless: How do you suggest we fix enterpriseid?01:02
lifelessStevenK: there are three general patterns I know of; one is to have the module provide framework but no registrations - and then register into it01:04
lifelessStevenK: the second is to use something lazy - e.g. lazy_import, or local imports in factory-functions, to let the module not import the world but still know about it01:04
lifelessStevenK: the third is to put all the needed imports at the end of the module after the things it exports01:05
lifelesse.g.01:05
lifelessimports01:05
lifelesspublic thing01:05
lifelesspublic thing01:05
lifelessmore imports01:05
StevenKI dislike the imports at the end as a pattern too.01:05
lifelessmy first inclination is to use the solution we have used elsewhere01:05
lifelessand IFF that works worse for this case than those cases, hunt for something else.01:06
lifelessbut I'm lazy01:06
* StevenK stabs _schema_circular_imports and then twists the knife.01:06
lifelesswgrant: lp:~lifeless/launchpad/notificationapi is my <rough and minimal> sketch01:08
wgrantaaaa01:09
wgrantphew, it's not scanned yet01:09
* lifeless goes hunting for test case code matching 'please run jobs'01:14
wgrantyay, go's next stupid package manager reimplementation has debconf questions01:18
lifelessthere was a prior one?01:19
wgrantI mean "next" as in "next in the line of programming language designers ignoring nearly 20 years of prior art and doing it all again themselves because fuck every other language"01:20
StevenKSounds like Go.01:20
StevenKThose who don't understand history are doomed to repeat it.01:21
StevenK(Is my bitterness about Go showing yet?)01:22
wallyworldStevenK: we (Canonical) seem to be jumping on the Go bandwagon?01:26
StevenKOnly because Gustavo is pushing it.01:27
wallyworldsure one person doesn't make policy though01:28
* StevenK pulls the messaging indicator out, and stabs it through the heart.01:31
StevenKThe message it considers unread is OPEN in Thunderbird01:32
lifelesswgrant: StevenK: https://bugs.launchpad.net/launchpad/+bug/30496 seems half-or-more-done, could I impose on one of you to either translate whats remaining for me, or do so in the bug ?01:33
_mup_Bug #30496: [feature-request] status pages for uploaded packages <feature> <lp-soyuz> <Launchpad itself:Triaged> < https://launchpad.net/bugs/30496 >01:33
lifelessStevenK: and Mark is too01:33
lifelessdunno exactly how the wagon is structured.01:34
StevenKlifeless: I'm trying to contain my bitterness since this is a public forum.01:34
lifelessStevenK: indeed01:34
wgrantlifeless: It wants something like http://qa.ubuntuwire.org/ftbfs/ but with more queue integration etc01:36
StevenKAnd expiring old entries01:36
wgrantThat does expire old entries :)01:37
lifelessso, can you edit the summary to reflect this ?01:38
lifelessright now, my eyes glaze and roll back in my head01:38
StevenKWelcome to Soyuz01:39
bigjoolsheh01:39
lifelesswell, its more the description is awkward01:41
nigelbI realy need to setup a launchpad qdb01:41
nigelband, of course, put everything spm says.01:41
StevenKHaha01:41
lifelessit should either describe the symtoms - the things users can't do - or if its going to ask for something, ask directly rather than in semi-passive phrases01:41
spm:-)01:42
bigjoolsare you saying that everything that spm says is a joke?01:42
ajmitchnigelb: but he's so entertaining01:42
nigelbbigjools: everything he says in launchpad-dev. I suspect he does work in other channels ;)01:42
nigelbajmitch: Indeed!01:42
lifelesswgrant: StevenK: will you guys be drive-by fixing https://bugs.launchpad.net/launchpad/+bug/249112 ?01:42
_mup_Bug #249112: Changing security status requires clicking "This report is public" <confusing-ui> <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/249112 >01:42
bigjools"work"01:42
bigjools;)01:42
wgrantlifeless: Yes01:42
wgrantStevenK has it fixed.01:43
StevenK"Fixed"01:43
lifelessits fixed? Can close ?01:43
wgrant... in a branch01:43
StevenKlifeless: It's in progress.01:43
StevenKAssign to me and mark it so if you wish, I'm working on it this week.01:43
lifelessdone01:50
wgrantOh02:24
wgrantAwesome02:25
wgrantWe're still using YUI 3.0.0's cssgrids02:25
wgrantRather than 3.3's.02:25
wgrantDeliberately.02:25
wgrantI wonder why02:25
wgrantjelmer: bzr daily builds have been failing for a while. Looks like 04_serve_address is in bzr.dev, so it can be dropped from the packaging branch?02:55
pooliehi wgrant02:55
pooliebit later even for jelmer in cet, i think02:55
poolie //hope02:55
wgrantHi poolie02:56
wgrantI hope it's a bit late, yes :)02:57
poolie*late02:57
wallyworldwgrant: do you know, if i'm defining a new ws collection using export_as_webservice_collection, what version string do i use for export_as_webservice_entry and export method operation_for_version in order for it to all work?04:54
wallyworldatm, wadl generation fails because the collection adaptor generated by the ws infrastructure has no entry_schema defined04:55
lifelesswallyworld: devel04:55
wallyworldlifeless: tried that :-(04:56
wallyworldi double check though since i've tried a few things04:56
wgrantwallyworld: beta04:56
wgrantIt has to be the earliest version04:56
wallyworldtried that too :-(04:56
wgrantdiff?04:56
wallyworldone sec04:57
wallyworldwgrant: https://pastebin.canonical.com/64011/04:58
wgrantwallyworld: looking05:05
wallyworldwgrant: thanks. i need to rejig the web service stuff for services so that services can be exposed nicely via launchpadlib. hence i need a service collection which i didn't need before since i relied on traversal05:06
wgrantyep05:07
bigjoolsthe LP api stuff is a lesson in how not to design an API, right from how it's coded to how it's presented05:10
wgrantwallyworld: Are you sure this is going to work at all, given the different types that can be returned?05:10
wgrantIt'll work if you hardcode .services in launchpadlib05:11
wgrantBut not if you use API methods on IServiceFactory05:11
wallyworldwgrant: the return types will all implement IService05:12
wgrant(saying lp.services.getByName('sharing') in launchpadlib will probably just return an IService, without the implementation-specific methods.05:12
wallyworldi've added .services to launchpadlib but it doesn't work without a collection being defined05:13
wgrantwallyworld: You'll need to do something like PillarSet05:14
wgrantNot PersonSet or BugSet.05:14
wgrantBecause of the different types.05:15
wallyworldi'll look at that. does the PIllarSet pattern allow something like lp.services['sharing'].foo() to be used?05:15
wgrantThat's exactly what it allows.05:15
wallyworldwhat's the collection name? 'pillars' is assume?05:16
wgrant(note that these are client-side *Set definitions, independent of the server ones)05:16
wgrantNo collection.05:16
lifelessbigjools: well, it had a set of specific goals, which it reached.05:16
wgrantThey're client side utter hideousness.05:16
wgrantBut they're the only way to do this sensibly.05:16
lifelessbigjools: sadly, some things we consider very important weren't there as goals, metrics - nor deliverabels05:16
wgrantwallyworld: Can't get past this:05:16
wgrantLocationError: (<lazr.restful.tales.WadlServiceRootResourceAPI object at 0xfda208c>, 'top_level_resources')05:17
wgrantwallyworld: Even after removing the ServicesLink05:17
bigjoolslifeless: it's what happens when you leave someone alone to do something important05:17
wallyworldwgrant: that's exactly my problem, and i too removed the link05:17
wgrantAh05:17
wgrantI thought you'd got past that05:17
wgrantSo I will dig more05:17
bigjoolslifeless: it's just crap on so many levels I despair05:17
wallyworldwgrant: so would i be wrong is assuming we cannot defined a new collection atm?05:17
wgrantIt's pretty elegant, pretty and nice.05:17
wgrantIt's just completely ineffective at anything ata ll :)05:17
lifelessbigjools: nah, it wasn't because it was one person; it was because of fundamental approaches - like the choice to expose internal model objects05:18
lifelessbigjools: which was, AIUI, mandated05:18
lifelessanyhow05:18
lifelesswe have it now05:18
lifelessand need to migrate gracefully05:18
wgrantwallyworld: We can define a new collection. And lp.services.getByName('sharing') will work. But the object you get back will have no methods.05:18
wgrantwallyworld: With the client-side hack, lp.services['sharing'] will work and have methods.05:18
wallyworldbigjools: it's one of the reasons i did the services stuff - to try and keep internal model things hidden05:19
wallyworldwgrant: client-side hack = pillarset?05:19
wgrantI am wondering if the pragmatic approach may be to register all the services as top-level entries05:19
wgrantwallyworld: Yes05:19
bigjoolswallyworld: fuck yes05:20
bigjoolslifeless: well I am sure that was the case but there's other human factors involved which I don't want to discuss on a public channel05:20
wallyworldbigjools: note though that it does use the restful infrastructure so there are some concessions05:21
bigjoolslifeless: anyway I'd love to see us migrating to something else.  I doubt we'll find the resources though :(05:21
bigjoolswallyworld: restful is fine if used correctly05:21
wgrantMmm05:22
wallyworldwgrant: not sure about exposing all services as top level entities05:22
wgrantIt's not clear what "correctly" is05:22
wgrantFor our needs, correctly RESTful is difficult.05:22
wallyworldwgrant: services aside, i still wonder why defining a new simple collection of entities didn't work for me05:23
wgrantwallyworld: It shouldn't fail to build, and I'm trying to work out why it is.05:23
wgrantBut it also won't be useful once it does build.05:23
wallyworldwgrant: is that because it checks the ws.op client side and complains if it doesn;t think there's a server side end point to handle it?05:24
wgrantwallyworld: I believe so.05:24
wgrantIt will respect the collection's resource type05:24
wallyworldwell, what it believes it to be05:24
wgrantWhat you declared it to be :)05:25
wallyworldso it's static05:25
wgrantBasically.05:26
wgrantYou have to explicitly downcast.05:26
wgrantBy saying lp.load('someuri')05:26
wallyworldwhich i'm trying to hide from the user05:26
wgrantAnd it's not possible with the current implementation.05:27
wgrantUnless you do something like PillarSet05:27
wgrantWhich implements client-side URL generation05:27
wgrantWhich it then spits into lp.load directly.05:27
wallyworldso i wonder if it's worth doing this then. i guess so to make it user friendly05:27
wgrantwallyworld: Oh, the error message was obvious all along.05:34
wallyworldi didn't know how to fix it though05:34
wallyworldor why the entry_resource was None05:34
wallyworldwhich was the root cause05:35
wgrantYou are truly ignorant of the world's cultures. "LocationError: (<lazr.restful.tales.WadlServiceRootResourceAPI object at 0xfda208c>, 'top_level_resources')" is TALESlish for "IService isn't imported by lp.registry.interfaces.webservice"05:35
wgrantEveryone should know that.05:35
wgrant(I suspect it's hiding an AttributeError or KeyError under that LocationError, as TALES is wont to do)05:35
wallyworldit wasn't before either, but i guess adding a collection made it matter05:36
wgrantIt wasn't involved in the root before.05:36
wgrantI suspect only the root relies on the webservice registrations without anything else.05:37
wgrantAlso, fuck TAES.05:37
wgrantTALES05:37
wallyworldwgrant: right, will try that. thanks for looking. i wasted too much time on that :-(05:38
bigjoolslifeless: is there any support in testtools for re-running tests under different setup conditions?06:13
=== almaisan-away is now known as al-maisan
wgrantbigjools: scenarios06:20
wgranteg lib/lp/poppy/tests/test_poppy.py06:20
bigjoolsI knew someone would say that06:21
wgrantAlthough that uses bzrlib's, not testscenarios06:21
bigjoolsthere's a clone_test_with_new_id thing, but no explanation of how to use it06:22
wallyworldwgrant: turns out i don't need to do any client side hacking - it all just works without06:22
wallyworldah, it depends06:24
wallyworldlaunchpad.services['sharing'].foo() works06:24
wallyworldlaunchpad.services('sharing').foo() doesn't06:24
wallyworldthat's pretty sad06:25
wgrantWhy would services('sharing') work?06:25
wallyworldwgrant: it doesn't since it checks that the method exists and it doesn;t as far as the client knows06:28
wallyworldbut why does services['sharing'] work06:28
wallyworldit must not do the same client side checks06:28
lifelessbigjools: testscenarios06:28
lifelessbigjools: (python-testscenarios)06:29
bigjoolslifeless: any online docs?06:29
lifelessbigjools: what test-poppy is using is an earlier edition of that06:29
lifelesshttp://pypi.python.org/pypi/testscenarios06:29
bigjoolsthanks06:30
lifelessbigjools: obviously if you have q's I'll be happy to answer06:32
bigjoolslifeless: doc seems good so far thanks!06:32
bigjoolslifeless: ok question: the scenarios list isn't explained very well, what is supposed to be in it?06:43
lifelessa list of (name, dict-of-things-to-apply) tuples06:43
lifelesse.g. ...     test.scenarios = [06:43
lifeless...         ('scenario_1_0', {}),06:43
lifeless...         ('scenario_1_1', {})]06:43
lifelessthe dict maps attribute names to values06:43
lifelesse.g.06:43
bigjools,lifelessall,06:44
bigjoolsgrear06:44
lifeless{'foo': 'bar'}06:44
bigjoolslifeless: apply to what?06:44
lifelesswill make self.foo be 'bar' once the test is setUp06:44
bigjoolsok06:44
lifelesssee the dynamic scenarios example06:45
lifelessthat makes two scenarios, one that sets self.hash=md5 and one that sets self.hash=sha106:45
bigjoolsright06:45
wallyworldwgrant: so setting collection_of=None and forcing it to lookup what the resource entry provides seems to do the trick. but a trap that [] and () both return service resources which behave differently06:46
wgrantwallyworld: () isn't documented and really shouldn't work at all06:46
wgrantI don't know why it does06:46
wgrantI'm surprised collection_of=None works06:47
wgrantWait.06:47
wgrantcollection_of=None where?06:47
wallyworldi'll keep using [] in my test code and at least launchpadlib will work in both case06:47
wallyworldin the ServiceSet class06:47
wgrantOh06:47
wgrantI thought you were doing this without the client-side hack :)06:47
wgrant16:22:38 < wallyworld> wgrant: turns out i don't need to do any client side hacking - it all just works without06:47
wallyworldi am06:47
wgrantconfuse06:47
wgrantd06:48
wallyworldbut i need to define a client side set06:48
wallyworldbut only the one - not one for sharing, one for ...06:48
wgrantThat's the client-side hacking we wanted to avoid :)06:48
wallyworldthere's also BugSet too etc06:48
wgrantSince it requires a client upgrade, which is less than ideal. But it's probably unavoidable.06:48
wgrantSure.06:48
wgrantPrecedent doesn't make it less nauseating.06:49
wallyworldso i thought that having a ServiceSet was kosher (like BugSet etc). and that avoiding SHaringServiceSet, FooServiceSet like was done for pillars was not using any hacks06:49
wgrantIt's accepted, but still evil since it means we can't evolve the webservice without client changes.06:50
wgrantWhich sort of destroys the entire purpose of WADL06:50
wallyworldyes. i didn;t think we could anyway06:50
wgrantHm?06:51
wgrantAs we saw before, you can add new types, methods, top-level entries, top-level collections without changing the client.06:51
wgrantBut not this sort of top-level collection06:51
wallyworldgiven our current implementation (ie BugSet, XXXSet all defined in the client side lib) i thought we needed to make that compromise06:51
wgrant'all'06:51
wgrantAren't there only 3 of them?06:51
wallyworldBug, Pillar, Product, Person, Distribution etc06:52
wgrantThose are only needed because we wanted foos['somefoo'] to work06:52
wgrantCollections with normal methods don't need one of those client-side hacks.06:52
wallyworldso it's really a limitation of our infrastructure06:53
wallyworldsince all the client side classes do is define _get_url_from_id06:53
wallyworldand that could be put in the wadl06:53
wallyworldas an attribute06:53
wgrantIn this case we want services['someservice'] to work, partly because due to lazr.restfulclient limitations the ServiceFactory's methods will only return objects with IService's methods06:53
wgrantYes.06:53
lifelessthere is a bug06:53
lifelessabout allowing arbitrary interfaces on each api object06:53
lifelessrather than predicting the interface for collection elements06:54
wgrantBut in this particular case we only want that workaround to get that functionality to workaround another limitation06:54
wgrantlifeless: Right, that would work too06:54
wallyworldso for now i'll do a new version of launchpadlib06:54
=== mabac__ is now known as mabac
adeuringgood morning08:00
lifelessbigjools: it making more sense now?08:10
bigjoolslifeless: yes thanks - rvba is on it :)08:11
rvbaHi lifeless.08:11
czajkowskigood morning08:12
lifelesscool08:16
rvbalifeless: was this about the testscenarios thingy?08:19
lifelessyah08:27
rvbalifeless: I've been bitten by 872887.  Any advice on how to use testscenarios with nose?08:32
lifelessrvba: use load_tests with nose208:38
lifelessrvba: or don't use nose, its terrifying08:38
lifelessrvba: or figure out how to make nose do a custom callback before test execution, it probably has a hook somewhere for that, it just won't be compatible with anything else08:39
rvbalifeless: ok, I'll try to do that thanks.  (too late, we're already using nose extensively.  It's worked fine so far to easily integrate django tests, twisted tests, etc….  But maybe it's terrifying inside ;) )08:43
lifelessrvba: it is; are you using nose's 'twisted' thing, or testtool's twisted async module ?08:48
lifelessrvba: (it is terrifying inside)08:49
* lifeless *far* preferrs using testtools.run / subunit.run to nose.08:49
rvbalifeless: testtool's08:50
lifelessrvba: phew :)(08:51
lifelesss/(//08:51
rvbatesttools*08:51
=== jam1 is now known as jam
rvbalifeless: fwiw load_tests (module level function) is called without any argument by nose.09:02
lifelessyay, totally incompatible09:03
rvbaindeed.09:04
rvbaI guess I'll have to resort to nose-specific hooks.09:05
* rvba starts to hate nose.09:05
lifelesshttp://pypi.python.org/pypi/discover - see load_tests on that page09:05
lifelessrvba: welcome to my world09:05
rvbaI guess nose stinks :)09:06
rvbalifeless: in fact, nose is simply treating load_tests as a module level test function.09:12
lifelessyup09:14
rvbajam: Hi (I'm from the Launchpad team). I'm struggling quite a bit trying to get nose working with testscenarios and I see that you've been trying to do that as well (https://bugs.launchpad.net/testscenarios/+bug/872887). Do you happen to remember what you ended up doing to generate the scenarios?10:05
_mup_Bug #872887: TestwithScenarios incompatible with nose 1.1.2 <testscenarios:Invalid> < https://launchpad.net/bugs/872887 >10:05
cjwatsonargh doctests with sampledata.  hate hate hate10:24
cjwatsonthings I do not like include reading current-dev.sql to discover exactly what should be guaranteed in a given test10:24
cjwatsonalso, the "bob the builder" joke in the test suite gets very old after (a) you've read it a few hundred times (b) your child watches enough of it that you get the theme tune in your head every time you see it10:26
lifelesscjwatson: current-dev.sql has bad data in it10:27
cjwatsonindeed, but I'm not quite sure of your point :)10:29
lifelesswhats guaranteed in a test isn't well demonstrated by current.sql10:30
lifeless(and current-dev.sql isn't used at all for tests ;))10:30
cjwatsonuh, current, ok.  but I meant doctests that are basically pretty-printing objects straight out of the sampledata.10:31
lifelessokies10:31
lifelesskill crush destroy10:31
cjwatsonquite.  need to make this branch pass for now, though :)10:32
wgrantIs this webservice doctests for build.builder?10:34
cjwatsonYes10:34
cjwatsonI've pushed a fix10:34
cjwatsonhttp://bazaar.launchpad.net/~cjwatson/launchpad/api-build-builder/revision/15073 is no more evil than the crap around it, I think10:37
=== al-maisan is now known as almaisan-away
StevenKcjwatson: A few hundred, you say? I was sighing about it after the tenth time, and I have no young child. :-)10:54
StevenKI don't know whether to blame Julian or Celso for that particular piece of Soyuz.10:55
cjwatsonyou sure it's not a Daniel thing?10:58
wgrantI believe it was Daniel10:58
cjwatsonmost of the puns are his fault10:58
StevenKOh.10:58
StevenKIs he still in Melbourne?10:59
StevenKI have a few ... debts to settle.10:59
cjwatsonSilverstone, not Stone10:59
StevenKOh, bah.10:59
cjwatsonAFAIK he was never in Melbourne10:59
cjwatsonarguably transitively my fault for feeding him salami while he wrote chunks of Soyuz at my house, I guess10:59
StevenKDaniel Stone was, though.10:59
jamrvba: basically, I stopped using nose w/ testscenarios...11:17
jamSpecifically, nose doesn't seem to support the python 2.6+ test feature of "load_tests"11:17
jamif you look here: http://bazaar.launchpad.net/~jameinel/u1db/c-oauth/view/head:/u1db/tests/__init__.py#L30411:18
jamThat is the adapter function I wrote, which allows you to do: "from ... import load_with_scenarios as load_tests11:19
jamand then python 2.6/7 unittest and testtools itself11:19
jamwill load the tests in your module and parameterize them with testscenarios11:19
jamnose doesn't support having "load_tests" defining how to extract tests cases from a module11:19
jamand I never figured out how nose does that sort of thing11:20
rvbajam: thanks.  I've been trying to use nose-specific stuff to generate the scenarios but no luck so far…11:21
jamrvba: testscenarios lets you do the parameterization by either inheriting from its TestCase or by using a load-time hook11:22
jamI tried the test case approach, but it was broken for a lot of cases11:22
jama lot of runners, I should say11:22
jamspecifically, there are ones that assume the number of tests that will be *run* with one call to .run() is always going to be 111:23
jambut the test-case based approach creates them on-the-fly11:23
jamso I recommend going with the load-time version11:23
jambut I don't know how to get nose to not try and load your tests normally, and only accept them through your loader11:23
rvbaYeah, but an assertion in nose makes that approach impossible to use with nose.11:23
jamrvba: exactly11:23
rvbaI even tried to monkey patch nose to remove that assertion but then there is something wrong with how the tests are run.11:24
rvbajam: anyway, thanks for sharing the result of your experiments.  I'll try again for a few hours and I guess I'll not use testscenarios if I can't find a proper way to use it with nose.11:27
rick_hrvba: have you tried to file a bug/hit up the mailing list? I know Jason's been working on putting out some nose2 releases. Helpful guy.11:27
jamrvba: yeah, I didn't need much from a test runner. I ended up writing a plugin to hook into bzr's test infrastructure, as it is the best I've found yet :)11:28
=== salgado-afk is now known as salgado
rvbarick_h: I haven't tried that.  I'll look into it thanks.11:28
jam(partial loading, progress bars, regex matching, etc, etc.)11:28
lifelessjam: the only runner I know that assumes one TestCase == 1 test is nose11:35
lifelessjam: everything else i"ve see, however awful, honours the protocol11:35
jamlifeless: sure, though everything else is subtle shades of broken in different ways :)11:36
lifelessjam: I'd love bug reports; I commented on all your current ones I think11:36
jamlifeless: yeah, its mostly problems with the actual runners11:36
* lifeless goes back to bed.11:36
jamlike not great support for --verbose, etc11:36
rick_hI love the nose --with-id11:38
rick_huse that one all the time11:38
jmlhey12:28
jmlI've seen a fair bit of chatter about testtools & friends over the last couple of days12:29
jmlI haven't followed it all closely, but I'd like to know: how can I help?12:29
wallyworldcjwatson: i've merged your branch directly since the fixes you did were just test fixes so you can update locally and your changes will be there12:45
cjwatsonwallyworld: excellent, thanks12:51
wallyworldnp12:51
cjwatsonjtv: if my changes to https://code.launchpad.net/~cjwatson/launchpad/remove-query-distro-pending-suites/+merge/101174 meet with your approval, do you think you could land that for me?12:52
jtvcjwatson: I'll have a look.12:53
deryckMorning, all.12:59
rick_hmorning13:00
jtvcjwatson: I know this is terrible but I don't even know what the state of the landing machinery in LP is.  Is just setting the MP to Approved enough now?  If not, you may need to get help from someone who's actively on LP duty for the landing.  My setup isn't in a usable state.13:14
StevenKjtv: Tossing at ec2 for cjwatson and you.13:17
jtvThanks!13:17
jtvAnd those drop bears are sugar-free by the way.13:17
StevenKHaha13:17
jtvGood to see code shrinking into something better, no?13:17
cjwatsonjtv: ah, I didn't realise you weren't actively on LP at the moment13:19
cjwatsonStevenK: thanks13:19
czajkowskiStevenK: herrrro13:26
StevenKczajkowski: O hai13:29
StevenKcjwatson: I've marked it no-qa, you didn't have a bug linked, but feel free to do some QA on DF when it lands.13:30
cjwatsonI didn't really think there was much plausible QA, as if it broke anything it should have failed tests13:31
cjwatsonbut I can run the publisher through on DF if you like, I guess13:31
StevenKcjwatson: If you're happy with no QA, then it's fine.13:31
cjwatsoncool13:32
rick_hadeuring: let me know what symlink/js file there you have out of whack.13:46
rick_hthe file I think you're looking at should be in build/lp/app/languages.js13:46
rick_hsorry, build/js/lp13:46
adeuringrick_h: no, its build/js/lp/app/worlddata13:47
sinzuijcsackett, I will be afk for about 75 minute because I am picking up my computer.13:47
rick_hadeuring: so that used to be a symlink to the worlddata directory, but the launguages.js was moved into app13:48
adeuringrick_h: OTP13:48
rick_hadeuring: ok13:48
StevenKrick_h: Oh, bah.13:54
jcsackett sinzui: ack.13:54
rick_hStevenK: huh?13:55
rick_hStevenK: heard back from sidnei yesterday so we've got to redo the meeting. Should we just try again for next week? Any day work best for you since you're the late one?13:55
StevenKrick_h: The symlinks we craft in combo-rootdir13:56
rick_hStevenK: I didn't think we did any symlinks any more13:56
rick_hStevenK: I was pretty sure I removed all those13:56
rick_hStevenK: yea, yui is the only symlink any more13:57
StevenKOh, neat.13:57
StevenKrick_h: Any day is fine with me.13:57
rick_hStevenK: ok, will get another email out today.13:57
rick_hStevenK: yea, that's the bug/issue, adeuring has a symlink for some reason13:57
bachi czajkowski13:58
czajkowskibac: howdy13:59
czajkowskibac: skype/G+ ?13:59
jmlhello14:09
jmlI've just uploaded fixes for the failing tests in my branch, could someone please attempt to land it?14:10
jmlis no one around?14:13
rick_hjml: I'll try to pull that down and land it again. thanks for updating14:24
adeuringrick_h: I removed the bad symlink build/js/lp/app/worlddata and now "make jsbuild" ends with IOError: [Errno 2] No such file or directory: 'build/js/lp/app/worlddata'14:24
jmlrick_h: thanks.14:26
rick_hadeuring: do you have the traceback from that IOError?14:26
adeuringrick_h: http://paste.ubuntu.com/923374/14:27
adeuringrick_h: actually, the _is_ a symlink: ls -l build/js/lp/app/worlddata14:27
adeuringlrwxrwxrwx 1 abel abel 41 2012-01-02 10:02 build/js/lp/app/worlddata -> ../../../lp/services/worlddata/javascript14:27
rick_hadeuring: rm -rf you whole build dir please and then run make clean make14:28
adeuringrick_h: same as before. BTW, the date of the new symlink is odd: 10:02, but my local time is 16:3014:30
adeuringrick_h: well, the "creation date" is 2012-01-02...14:30
rick_hadeuring: so the build dir got recreated but the symlink is still ther?14:31
adeuringrick_h: yes...14:31
rick_his there a build/js/lp/app/languages.js file and -min?14:31
rick_hboth with current modifeid dates on them?14:31
rick_hadeuring: can you dbl check your bin/combo-rootdir script? http://paste.mitechie.com/show/610/14:32
rick_hadeuring: that is what used to create the symlinks14:32
adeuringrick_h: that's what I have. "diff" output is empty14:33
adeuringrick_h: ahhh....  there is this bad symlink already in lib/lp/app/javascript14:35
rick_hadeuring: ah, that would explain it14:36
rick_hadeuring: yea, there should be no symlinks in there14:36
rick_hadeuring: and the build script copies the files out of there and minimizes them in the build location14:36
adeuringrick_h: I removed it; "make jsbuild" now works14:37
rick_hadeuring: awesome!14:37
rick_hadeuring: I guess at some point that symlink was there and we didn't explicitly cleanup/remove it14:37
rick_hI've had to redo my devel/etc so many times didn't hit it14:38
adeuringrick_h: seems so.14:38
rick_hjml: ok, up to the ec2 gods now14:39
jmlrick_h: thanks.14:41
=== salgado is now known as salgado-lunch
=== salgado-lunch is now known as salgado
jcsackettsinzui: got time for a quick chat? just need to clear up a few points.16:13
sinzuiokay16:13
=== matsubara is now known as matsubara-lunch
=== deryck is now known as deryck[lunch]
=== matsubara-lunch is now known as matsubara
=== garyposter is now known as gary_poster
=== deryck[lunch] is now known as deryck
timrcquestion: do I programatically add a comment to a bug via newMessage()? Something about the use of the word "message" and not "comment" makes me nervous, here18:33
cjwatsontimrc: yes18:42
timrccjwatson, perfect, thanks18:43
cjwatsonhey, if somebody wants to review https://code.launchpad.net/~cjwatson/launchpad/remove-services-unicode-csv/+merge/101315 for me, I can test my shiny new landing access18:55
lifelessgary_poster: so, testtools and subunit19:55
gary_posterlifeless, good call thanks19:55
lifelesshum19:55
lifelesssubunit has the idea that tag changes happen at one of two places19:55
lifelessbetween tests19:55
lifelessand for one test19:56
lifelesschanges that happen between tests are applied to all subsequent tests19:56
lifelesschanges that happen for one test are not19:56
lifelesstesttools should be broadly compatible with that, if its not, its an unintended incompatability19:56
lifelessI think testtools TestResult not being per-test aware is probably a naivety bug19:58
lifelessrather than intention19:58
gary_posterlifeless, cool.  We might or might not clarify that in testtools in a patch then.  thanks!20:00
lifelessde nada20:08
lifelessflacoste: you around today?20:08
flacostelifeless: i am, but booked wall-to-wall with calls20:08
lifelessno worries20:15
=== matsubara is now known as matsubara-afk
=== matsubara-afk is now known as matsubara
StevenKsinzui: http://pastebin.ubuntu.com/924059/22:18
=== salgado is now known as salgado-afk
sinzuiStevenK, Your approach is right. We just need to make the simpleterms to ensure we get the right value, token, and title: here are examples: http://pastebin.ubuntu.com/924071/22:36
sinzuiwallyworld, I see my comment is still in lazr.restful and that the code is guessing top-level collections. The code recovers from exceptions: http://pastebin.ubuntu.com/924082/22:44
sinzuiwallyworld, https://launchpad.net/moovida22:51
sinzuiwallyworld, http://people.canonical.com/~curtis/disclosure/22:57
rick_hwoot, yui 3.5 is official http://www.yuiblog.com/blog/2012/04/10/announcing-yui-3-5-0/23:44

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!