[05:40] <sm0x> Hey, i have a Question about ISO Testing, is there a difference between testing on testdrive and testing with a ubuntu direct installed on my physical hardware? Should we test both or is one of them enough?
[05:44] <Noskcaj> sm0x, Testing on real hardware is preferred due to being able to check how hardware that people will use.
[05:45] <Noskcaj> However any testing is great, and testdrive can probably test faster due to know setup time
[05:46] <Noskcaj> Remember that testdrive will make live USBs for you to test on real hardware if you want
[05:48] <sm0x> ok thanks for the answer :)
[05:49] <sm0x> how often we should test the daily image? i think it makes not much sense when i test really every day the iso, or?
[06:09] <Noskcaj> sm0x, As much as possible. I try to test three different ISOs a week. e.g. xubuntu AMD64, Ubuntu i386, Lubuntu AMD64
[06:09] <Noskcaj> That's probably a good middle ground
[06:09] <Noskcaj> Just try to find as many bugs as possible
[06:11] <sm0x> ok thx :)
[07:04] <sm0x> hey, one more question, when i have in the shutdown-dialog (iso testing) a few lines marked with "fail", should i report them ?
[07:10] <Noskcaj> sm0x, as in once you've clicked shutdown? no, unless something breaks when you next log in
[07:10] <Noskcaj> Evening e11bits
[07:10] <Noskcaj> oops, i mean, elfy
[07:10] <elfy> hi Noskcaj
[07:11] <DanChapman> Morning elfy, Noskcaj o/
[07:11] <elfy> hi DanChapman :)
[07:16] <sm0x> Noskcaj: yes, It happens directly after i see the "installation finish"-dialog -> i click on reboot (http://imagesup.net/?di=16137378288414)
[07:17] <Noskcaj> sm0x, It's fine, that happens
[07:19] <sm0x> ok thx :)
[07:20] <Noskcaj> no problem
[20:42] <thomi> Morning all
[20:42] <thomi> WebbyIT: Did you get an answer to your question?
[20:42] <WebbyIT> thomi: which question?
 Hi all :) How can I verify, with autopilot, that an object doesn't exist?
[20:43] <WebbyIT> thomi: oh yes, thanks, I used introspection :)
[20:43] <thomi> cool
[20:43] <thomi> WebbyIT: you can also ask questions in #ubuntu-autopilot
[20:44] <WebbyIT> thomi: oh, thanks!
[20:49] <WebbyIT> thomi: BTW, this is what I answered for: https://code.launchpad.net/~rpadovani/ubuntu-calculator-app/1188703/+merge/174632 :)
[20:52] <thomi> WebbyIT: hmm, you shouldn't need to use get_root_instance like that
[20:52] <thomi> get_root_instance just returns the root of the tree - which you already have in 'self.app'
[20:53] <WebbyIT> thomi: so if I use self.app is the same thing?
[20:53] <WebbyIT> thomi: or there is a better way to do this?
[20:54] <thomi> WebbyIT: the thing you get back from calling 'self.launch_test_application' is the root of the tree.
[20:55] <thomi> WebbyIT: if you use select_single or select_many on that object, you're searching the entire tree
[20:55] <thomi> so yeah, you can use 'self.app' whenever you want to search the entire tree
[20:55] <WebbyIT> thomi: ok, thanks, now I'm going to update my commit :)
[20:56] <thomi> I'd make a method called 'get_calc_label' that does 'self.app.select_single('CalcLabel', id=label_id)' behind the scenes
[20:56] <thomi> so you hide away the complexities of how to get that particular part of the user interface from the test code
[20:56] <thomi> that way, if/when the application updates it's internal structure, you on;ly need to change the test code in a single place
[21:00] <WebbyIT> thomi: so, I have to do a get_calc_label and then something like self.assertThat(self.simple_page.get_calc_label(label_id), Equals(None)
[21:01] <thomi> WebbyIT: that sounds correct to me, yes
[21:01] <WebbyIT> thomi: ok, thanks :)
[21:01] <thomi> WebbyIT: even better, use the eventually matcher, like this:
[21:02] <thomi> fn = lambda: self.simple_page.get_calc_lable(label_id)
[21:02] <thomi> self.assertThat(fn, Eventually(Equals(None)))
[21:03] <thomi> if you pass a callable object into assertThat and use the eventually matcher, the matcher knows what to do :)
[21:22] <WebbyIT> thomi: thanks to you, here a better implementation :D https://code.launchpad.net/~rpadovani/ubuntu-calculator-app/1188703/+merge/174632
[21:25] <WebbyIT> thomi: to check if has been saved, can I use self.assertThat(label, Eventually(NotEquals(None)))?
[21:31] <thomi> WebbyIT: does the CalcLabel object name change? I'm wondering if that could be hard-coded, rather than passed in?
[21:33] <thomi> WebbyIT: also, I recommend you hide those drag operations behind a function
[21:33] <WebbyIT> thomi: are you thinking to something like def get_object(self, object, label_id):?
[21:33] <thomi> WebbyIT: no, something like:
[21:33] <thomi> label = lambda: self.simple_page.get_calc_label()
[21:34] <thomi> i.e.- does 'label_id' change from one run to the next, or is it a constant?
[21:34] <WebbyIT> thomi: no, it's change
[21:34] <WebbyIT> thomi: is based on how many calc you have done
[21:34] <thomi> WebbyIT: ahh, ok then :)
[21:35] <thomi> WebbyIT: I'd still put those drag operations behgind a method or function though
[21:35] <thomi> WebbyIT: so instead of having this in your test code: "self.pointing_device.drag(tx + h / 3 , ty - w / 2, tx - h / 3, ty - w /2)"
[21:35] <thomi> you can have this: "self.delete_calculation()"
[21:35] <WebbyIT> thomi: good idea :)
[21:35] <thomi> which makes your tests a lot more readable, and means you don't need to use comments
[21:36] <thomi> WebbyIT: in general, my rule of thumb is that if I need a comment to explain what the test does, I probably need to change things to make the code more obvious :)
[21:36] <WebbyIT> thomi: cool rule :) Is better implement it in test_simple_page.py or in simple_page.py?
[21:37] <WebbyIT> simple_page.py is the emulator
[21:38] <thomi> WebbyIT: I'd do it in the emulator, since this seems like something that will be used often
[21:38] <thomi> if it's something that's likely to only be used by that one test suite, I'd put it in the test suite
[21:39] <WebbyIT> thomi: ok, thanks for your availability :)
[21:52] <thomi> WebbyIT: no worries - it's Monday for me anyway :)