/srv/irclogs.ubuntu.com/2005/09/08/#launchpad.txt

kiko-afkis SteveA still around?12:04
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: ShipItNG: Allow people to place new orders and shipit admins to search for existing requests and approve, cancel or change them. It's also possible to create new standard shipit requests, which are the options presented to users when they place new orders. r=kiko (patch-2342: guilherme.salgado@canonical.com)12:25
=== rbelem-afk is now known as rbelem
kikoYES!12:26
lifelessSteveA: fixed12:27
=== camilotelles [n=Camilo@20132139198.user.veloxzone.com.br] has joined #launchpad
=== stub [n=stub@203-217-37-199.dyn.iinet.net.au] has joined #launchpad
=== bradb [n=bradb@modemcable033.209-70-69.mc.videotron.ca] has joined #launchpad
=== bradb [n=bradb@modemcable033.209-70-69.mc.videotron.ca] has left #launchpad []
=== stub [n=stub@203-217-37-199.dyn.iinet.net.au] has joined #launchpad
stublifeless: Can you please mirror rocketfuel@canonical.com/launchpad--production--1.3103:42
lifelessdone03:43
lifelessstub: how is the z3 test foo coming along - did my suggested design make sense to jim ?03:46
stubI havn't looked at it recently. There is some low hanging fruit I want to make to it first. I think the redesign can be retrofitted after (and it is all tested so we can ensure all the features remain as expected) given time and inclination. I havn't discussed the redesin with Jim though, as I was more interested in ensuring it supports the features we need rather than how it is implemented.03:49
lifelessstub: ok.03:50
lifelesstrial has a similar requirement, also implemented 'differently'. I'm thinking I might do up a sibling project to subunit to do unit resource management03:51
stubThere is a desire to get something into Python 2.5 I believe03:51
lifelesshave I shown you subunit ?03:52
stubNope03:56
lifelesshttp://www.robertcollins.net/unittest/subunit03:57
lifelessstub: what do you think ?04:12
stubCould be useful. The new Z3 test runner has the interesting property that the process is only restarted if a teardown reports that something can't be torn down, whereas the subunit model seems to require you to cluster tests that should be run in a seperate process together.04:16
lifelesswell, it lets you mix and match04:17
lifelessIsolatedTestCase runs a single test in a separate process on os.fork() supporting systems04:17
lifelessI plan to write an IsolatedTestSuite that runs its contents in a separate process04:17
lifelessthats probably ~1 hr to do.04:17
lifeless(given testing and all)04:17
stubTo meet the Z3 requirements it would need to reinvoke the subprocess if a testcase raised a NotImplementedError in its tearDown method.04:19
stuberm... but in english04:20
stub(Which could be done just by building another IsolatedTestSuite on the fly containing the remaining tests and invoking it)04:21
=== Alinux [n=Ubuntu@p54A3BA43.dip0.t-ipconnect.de] has joined #launchpad
lifelessstub: ;004:24
lifelessstub: though, I think that that is somewhat ugly and problematic. What if the thing that won't tear down is postgresql. 04:24
lifelessstub: I think the Right Thing to do is to stop at that point, and fail. IOW I don't think the requirement is a good or useful one, though maybe I can be convinced.04:25
stubIt is used to say 'this test used a fixture that cannot be torn easily/efficiently without restarting the process'. Not 'I failed to tear something down'.04:26
spivOh, cute abuse of NotImplementedError :)04:27
stubSo a test can say 'I'm going to totally fuck up the global environment, and I can rely on the test runner to clean it up for me'. Without having to move that test to a seperate suite to run in a seperate process.04:27
stubAlso, it a test raises NotImplementedError in the setUp, that test should be skipped (eg. for tests that can only run on certain platforms or require dependancies that are not installed).04:28
lifelessstub: I would just make that test derive from IsolatedTestCase which will do that much more easily04:28
spiv(Hmm, I don't think I've ever seen any form of use of NotImplementedError that wasn't at least a mild abuse... ;)04:28
lifelessstub: NotImplementedError in the setUp will result in the test failing in stock pyunit. I'm absolutely positive that that is the wrong way to do 'skipped' tests. But that is a different discussion.04:29
stublifeless: But that involves messing with the test. If a test uses the FooLayer (or FooResource i would prefer), the FooLayer might change its behavior and start raising NotImplementedError in the Layers teardown.04:29
lifelessstub: this feels very very dirty to me - its abdicating the responsibility to write good testable software by making the testing environment about 3 OOM more complex.04:30
stubIt is lowering the barrier to write and maintain tests, and isn't anywhere near an order of magniture more complex, let alone 3.04:30
=== spiv decoded OOM as "orders of magic" at first
stuborders of manure  might be approprate for software development ;)04:31
lifelessuhm, its at least 10 times the complexity - it completely breaks ability to construct a test suite and run it in an adhoc maner.04:31
lifelessit mixes all three concepts into one messy pond that someone is going to have to maintain.04:32
stubWhy? Your test suite is already forking itself.04:32
stubThis already exists in the Z3 test stuff (except the NotImplementedError in setup, which is trivial to add and Jim agreed with)04:33
lifelessforking is quite different from having a TestCase able to find out about the remaining tests.04:33
stubThe testcase doesn't need to know about remaining tests04:34
lifelessI know it exists theere, and having seen what z3 does, thats -why- I think it is worth a throw away and redo.04:34
lifelesssigh. As an example, the new z3 runner is not compatible with subunit's planned IsolatedTestSuite, because it breaks the abstraction barrier.04:35
lifelesslook, lets not argue about the current implementation, lets talk about the high level goals, and about whether there is a good clean way to achieve them.04:35
stubYes - if IsolatedTestSuite impllemented the behavior I dscsribe, Z3 would no longer need to do that04:36
stubOr you could refactor Z3 to push the forking behavior into the testsuite (reimplementing IsolatedTestSuite effectively).04:36
stubAlthough the barrier might still need to be broken for stuff like profiling and code coverage reports - I know little about that.04:37
stubGoals: A test uses one or more fixtures. Ideally the developer doesn't need to add boilerplate to setUp/tearDown to maintain the fixtures. The test runner can do it in many cases.04:39
stubGoals 2: All the tests for a project can be run and a profile report generated to identify the slow tests that might need to be optimized or flagged 'run occasionally' rather than 'run always'04:39
stubGoals 2: All the tests for a project can be run and a code coverage report generated to help identify untested paths.04:40
stuberm...304:40
stubGoals 4: It a fixture/resource/layer/whatever we call it of a test decides that it can't be arsed tearing itself down properly, it can inform the runner/suite/whatever and the next test will be run in a fresh process04:41
lifelessstub: so, I don't have time to really do a good job of this right now, being about to fly out.04:41
stubGoals 5: Resources should only be setup/torndown as infrequently as possible. So the suite/runner should sort the order minimizing the invokations.04:42
stubok.04:42
lifelessstub: can you mail me the goals, and I'll see what I can do wearing my consultant hat about offering a unittest compatible approach to doing them, I'll also give a high level 'invariants to preserve' about unittest, which give it the awesome flexability that we see in things like smalltalk and java, and the python community seems to have forgotten.,04:42
lifelessa note on goals - goals 5 has a useful first sentence, but the second one suggests not understanding the object interactions for unittest, which leads to difficulty. ;004:43
stubThen perhaps the existing object interactions for unittest are flawed. My understanding is that the suite is resposible for calling the setup-test-teardown sequence though.04:45
lifelessits not.04:46
lifelessthe unittest Test interface has one method : 'run(result=None)'04:47
spivIt's remarkably hard to find a good documentation summarising the xUnit design.04:47
lifelessI agree.04:47
spiv(although asking lifeless seems to be a good substitute...)04:48
lifelessit took me, oh about 2 years from first meeting it before it all sunk in and I realised I grokked it.04:48
lifelessat that point, I started proslytising :004:48
stubAnyway - the resource cannot tear itself down unless something tells it how many tests are going to be using it. And the test can't tear resources down unless they know about all subsequent tests. So the testsuite or testrunner needs to make it happen.04:48
lifelessstub: I described how to do resources compatibly before, I think, like subunit, that I need to just write proof of concept code.04:49
lifelessand demonstrate tests that run independently AND optimise in the presence of a smarter Suite.04:49
lifelessso - drop me that email :)04:49
stubTests are never run 'independently' - they always need a runner to invoke them. 04:50
lifelesssorry, thats bullshit04:50
stubYou run your tests without a TextTestRunner or something?04:50
lifelessabsolutely.04:51
stubHow?04:51
lifelessrobertc@lifelesslap:~/source/unittest/subunit$ PYTHONPATH=lib python04:52
lifelessPython 2.4.1 (#2, Mar 30 2005, 21:51:10) 04:52
lifeless[GCC 3.3.5 (Debian 1:3.3.5-8ubuntu2)]  on linux204:52
lifelessType "help", "copyright", "credits" or "license" for more information.04:52
lifeless>>> import subunit04:52
lifeless>>> suite=subunit.test_suite()04:52
lifeless>>> import unittest04:52
lifeless>>> result = unittest.TestResult()04:52
lifeless>>> suite.run(result)04:52
lifeless>>> 04:52
bob2*cough*thatcouldbeadoctest*cough*04:52
stubOk - so you just implemented your own runner.04:52
lifelessnope04:52
lifelesswell, you could argue that I guess.04:52
lifelessbut the point is that there is a defined no-dependency from tests executing to a runner04:53
stubIf you said that you required a suite, your manual test runner would be almost as simple and more functionality could be available.04:54
stubAgh.... you *have* a suite04:54
lifelessbut you cannot mandate a suite either:04:54
lifelessPYTHONPATH=lib python04:55
lifelessPython 2.4.1 (#2, Mar 30 2005, 21:51:10) 04:55
lifeless[GCC 3.3.5 (Debian 1:3.3.5-8ubuntu2)]  on linux204:55
lifelessType "help", "copyright", "credits" or "license" for more information.04:55
lifeless>>> import subunit.tests.test_test_protocol04:55
lifeless>>> test = subunit.tests.test_test_protocol.TestTestImports("test_imports")04:55
lifeless>>> test.run()04:55
lifelessthats the defined interface for a TestCase. If that doesn't work, you are no longer pyunit compatible.04:56
stubAnd that is a problem?04:56
lifelessand so far I've seen no reason to break that interface.04:56
lifelessyes, its a problem.04:56
=== robitaille [n=daniel@d154-5-117-228.bchsia.telus.net] has joined #launchpad
lifelessunless you want to partition zope related code off from the test of python, you should be compatible with stock python testing tools04:57
lifelessbeing compatible lets you do nice things such as use stock gui runners, remote test reports and the like04:58
stubUnless the changed API is a good thing and it becomes the new pyunit04:58
lifelessand noone writes them at the moment because *everyone breaks the api* and thus the projects big enough to write such things cannot write them for everyone.04:58
lifelessI'm deathly afraid of a bad changed api becoming the new pyunit. and what I've seen so far is seriously bad IMO.04:59
lifelessits less flexible, more tightly coupled. That makes it harder to extend compatibly and will then be locked in untill python 3000.05:00
lifelesswhich I really dont want.05:00
lifelessanyway, I'm getting shorter and shorter here, having just had two projects saying the same thing to me at once.05:00
lifelessand I fly in 9 hours05:00
lifelessso.. please email me as soon as possible, I might work on a prototype on the flight05:00
spivWorking code would be very valuable here.05:01
lifelessI certainly get that impression05:02
lifelesssitting down with radix and mumak at the twisted sprint convinced them they can do what they want in a tasteful manner without being gratuitisouly incompatible with pyunit. And they wouldn't be able to use the z3 test runner as easily05:03
stubAnyway - I think the Z3 test runner could be happily mutated into what we want. Really all that is involved is shuffling some code around a bit. And I'm sure Jim would be happy with any changes that help get it acceped into Python 2.5 provided he doesn't lose desirable functionality.05:05
stubAbout the only bit I think could cause difficulty is the profiling and codecoverage which I mentioned before.05:06
lifelessstub: if thats the case, cool. The _big_ problem at the moment is the manual iteration of the test case composite structure.05:06
lifelessso - email me and jim if you like.05:06
lifelessif you do it today, I'll have the email with me on the plane05:06
stubYup. Stuff that into an intelligent test suite, and require the layers to implement from a common base class for the setup/teardown only-if-needed stuff to work.05:07
lifelessthe thing to note is that test suites are recursive05:08
lifelessso some care is needed ;005:08
stubViral intelligent test suites - it notices that something it is going to recurse to is dumb and wraps it ;)05:10
lifelessmmm05:11
lifelessit notices its recursing to something foreign and it forks()05:11
lifelessthat would be ok.05:11
dilysMerge to rocketfuel@canonical.com/dists--devel--0: [trivial]  production 1.31 config (patch-111: stuart.bishop@canonical.com)05:25
dilysMerge to rocketfuel@canonical.com/launchpad--production--1.31: Cherrypick patch-2341 (patch-1: brad.bollenbach@canonical.com, rocketfuel@canonical.com)05:52
dilysMerge to rocketfuel@canonical.com/launchpad--production--1.31: Cherrypick patch-2342 (patch-2: guilherme.salgado@canonical.com, rocketfuel@canonical.com)06:18
=== rbelem is now known as rbelem-zzz
=== Alinux [n=Ubuntu@p54A3AD7C.dip0.t-ipconnect.de] has joined #launchpad
=== robertbb [n=robertbb@d154-20-136-58.bchsia.telus.net] has joined #launchpad
=== Alinux [n=Ubuntu@p54A3AD7C.dip0.t-ipconnect.de] has joined #launchpad
=== zyga [n=zyga@2-mi2-1.acn.waw.pl] has joined #launchpad
=== stub [n=stub@203-217-37-199.dyn.iinet.net.au] has joined #launchpad
=== dand [n=dand@freenet.cs.utt.ro] has joined #launchpad
dilysMerge to thelove@canonical.com/dists--bazaar--1.5: new build (patch-79)10:23
=== dand [n=dand@freenet.cs.utt.ro] has left #launchpad ["Leaving"]
=== hannosch [i=hannosch@85.182.69.225] has joined #launchpad
hannoschjordi: ping?12:22
sivanghey hannosch 12:25
hannoschhi12:25
hannoschI am looking for jordi as he wanted to discuss something about how to setup plone in rosetta12:26
sivanghannosch: seems he away, email him so he would get back to you.12:43
hannoschHe was looking for me on #plone in response to my last email, so I suppose he wants to discuss something directly ;)12:46
=== Keybuk [n=scott@syndicate.netsplit.com] has joined #launchpad
=== Nafallo [n=nafallo@unaffiliated/nafallo] has joined #launchpad
=== Seveas [n=seveas@seveas.demon.nl] has joined #launchpad
=== jinty [n=jinty@210.Red-83-39-7.pooles.rima-tde.net] has joined #launchpad
=== zyga [n=zyga@2-mi2-1.acn.waw.pl] has joined #launchpad
=== rbelem-zzz is now known as rbelem
=== jinty [n=jinty@228.Red-81-36-163.pooles.rima-tde.net] has joined #launchpad
=== rbelem [n=rodrigo@200.231.108.90] has joined #launchpad
=== ubuntulog [n=warthylo@port49.ds1-van.adsl.cybercity.dk] has joined #launchpad
=== Topic for #launchpad: Discussion with Launchpad users and developers. || https://launchpad.net/ || Includes Rosetta and Malone. || Developers' meeting, Thursday 8 Sep, 12:00 UTC
=== Topic (#launchpad): set by SteveA at Thu Sep 1 14:05:24 2005
=== WaterSevenUb [i=user@195-23-220-91.net.novis.pt] has left #launchpad []
salgadoSteveA, around?05:29
=== WaterSevenUb [n=WaterSev@195-23-220-151.net.novis.pt] has joined #launchpad
=== stub [n=stub@203-217-37-199.dyn.iinet.net.au] has joined #launchpad
=== jinty [n=jinty@221.Red-81-36-165.pooles.rima-tde.net] has joined #launchpad
=== robitaille [n=daniel@d154-5-117-228.bchsia.telus.net] has joined #launchpad
=== Seveas [n=seveas@seveas.demon.nl] has joined #launchpad
=== SnakeBite [n=SnakeBit@84.242.143.64] has joined #launchpad
=== robitaille [n=daniel@d154-5-117-228.bchsia.telus.net] has joined #launchpad
=== rbelem-afk is now known as rbelem
=== Alinux [n=Ubuntu@p54A3AD7C.dip0.t-ipconnect.de] has joined #launchpad
=== rbelem is now known as rbelem-afk
=== Seveas [n=seveas@seveas.demon.nl] has joined #launchpad
=== zyga [n=zyga@2-mi2-1.acn.waw.pl] has joined #launchpad
=== robertbb [n=robertbb@d154-20-136-58.bchsia.telus.net] has joined #launchpad
sd-tuxhi, i want to download a .po file from rosetta but i can't do it because of this BUG : https://launchpad.net/malone/bugs/1978  doe's anybody know how other way to downsload my translations :) ?11:21

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