=== yofel_ is now known as yofel
karniGood morning!09:01
=== rodrigo__ is now known as rodrigo_
facundobatistaHi all10:26
nessitahello everyone!11:05
nessitaralsina: ping11:34
nessitagatox: ping11:38
gatoxnessita, pong11:39
nessitagatox: hi there! question11:39
gatoxnessita, shoot11:40
nessitagatox: last week I made a review for you where we skipped a whole testcase because it was using the real control panel. I think you told me you were gonna fix that next, but I'm not sure. Can you please confirm?11:40
gatoxnessita, yes, ralsina told me that he has to implement all that test from scratch11:41
gatoxnessita, it was local_folders11:41
nessitagatox: what are you working on today? it may be a good exercise for you to do that ;-)11:42
gatoxnessita, i'm working on this: https://bugs.launchpad.net/ubuntuone-windows-installer/+bug/82087411:42
ubot4gatox: Error: Bug #820874 is private.11:42
* nessita looks11:42
nessitagatox: do you have an ETA for that?11:42
gatoxnessita, i think it can be done for 12ART... code complete for sure... tests is another story :P11:44
nessitagatox: -.-11:44
nessitagatox: code complete means with tests. Ideally before writing the code...11:45
nessitagatox: so, when you're asked for an estimates, always always include the tests11:45
gatoxnessita, i mean, i usually spend more time writing tests and fixing when are some changes...11:45
gatoxnessita, ok.... probably it will be ready for lunch11:45
nessitagatox: ok, so, can you please take over the fixing tests after completing that task?11:46
gatoxnessita, OK!11:46
nessitagatox: great! (unless you had something else in your plate... in that case let me know and we evaluate priorities)11:47
gatoxnessita, no, i think that fixing those test should be done before the other bugs that are not so critical11:47
nessitagatox: GREAT! we're in sync then11:48
nessitagatox: sso branch approver and globally approved, moving to windows-installer12:17
gatoxnessita, awesome!12:17
nessitagatox: so, I'm not sure you're adding a test for the removal of the form errors widget. I'm talking this line added in next():12:19
nessita        self.currentPage().layout().removeWidget(self.form_errors_label)12:19
gatoxnessita, yes, not directly... but that line is executed on "next" for each page that it's called a lot in the tests... but let me add some tests for that12:20
nessitagatox: yes please, let me explain why is necessary: from the user point of view, is important that the form-error message is cleared, once the error is "resolved" (either by retrying or moving forward)12:23
gatoxnessita, yes, i'm writing some tests tocheck that now every time next() is called in test_gui12:24
nessitagatox: great12:24
Chipacanessita: i'm sure you asked me for a review, but i've lost the link12:24
Chipacanessita: now would be a good time12:24
nessitaChipaca: https://code.launchpad.net/~nataliabidart/ubuntuone-client/platform-details/+merge/7172312:25
nessitaChipaca: context: we're adding platform details to the ping url in the u1client side. The moving of credentials into its own module is caused by a nightmare of cicurlar imports between code outside platform and code inside there12:25
ralsinanessita, gatox: good morning, and I have that test case redone in this branch: lp:~ralsina/ubuntuone-windows-installer/local-folder-fixes12:26
gatoxralsina, awesome! :D12:26
nessitaralsina: hi there! I just made another review like 30 minutes ago, you added changes after that?12:26
ralsinanessita: nope, just sitting down at the computer right now12:27
Chipacanessita: me, I would've also logged the return value of f in log_call12:27
nessitaChipaca: makes perfect sense, doing it12:27
nessitaralsina: so, I think you removed the skip of a testcase... I added comments about that in the MP12:27
ralsinanessita: I removed the skip so the tests I added would run, but I can add it back and move them to another tet case. OTOH, in the next branch they would move back12:28
nessitaralsina: right, the thing is that everything fails for me if that testcase is enabled back12:28
Chipacanessita: also, i would've used urllib.urlencode(dict_of_attrs) rather than assembling it myself12:28
ralsinanessita: so, maybe this branch could go in with the other tests in that testcase failing (but those succeeding) instead of adding code I would remove again later today?12:28
Chipacanessita: (re PLATFORM_PARAMS)12:29
ralsinaoh, right it breaks everything for you :-(12:29
nessitaChipaca: ah, that's a good one, let me fix that as well12:29
Chipacanessita: in fact, looks like all you want is urllib.urlencode(PLATFORM_DATA)12:29
nessitaChipaca: let me read the doc and I may nod or not :-D12:30
nessitaralsina: not sure why fixing this branch will make you add code you will remove later today. Can you please help me understand?12:30
nessitaChipaca: I'm nodding! :-)12:31
ralsinanessita: if I move the tests to another test case and move them back into this testcase again, that means adding the testcase and removing it?12:32
nessitaralsina: right, but if I'm following you, the test case you will be adding now will be reused in the next branch?12:32
nessitaI mean, you can add the test case you have in the incoming branch (without all the adding of the tests)12:33
ralsinanessita: actually, since I reimplement most of LocalFoldersPage, the current testcase starts working, AFAIK12:33
ralsinathe next branch has this testcase, but working :-)12:33
nessitaralsina: don't you want to merge that new test case only in this branch?12:34
nessitanew == fixed12:34
ralsinanessita: it will not work for you because of problems in LocalFoldersPage (race conditions)12:34
ralsinaI could just merge this branch to the next one and propose the ext one instead12:35
nessitaralsina: let's do that, and I'll review the next one when is ready (as soon as is ready)12:35
ralsinaok then12:35
faganralsina: any intern work going?12:40
ralsinafagan: just arrived, but I think joshua has some more work on the docs12:40
faganjoshuahoover: you have anything for me to work on?12:41
faganralsina: well I did a big wiki redirect thing on monday I didnt hear about anything else12:41
joshuahooverfagan: how about bug triage? :)12:41
ralsinaactually that's not a bad idea.12:42
faganIll have a look at the list then :)12:42
joshuahooverralsina: fagan completed the last of the big docs tasks we had12:42
ralsinafagan: I need all the NEW/unassigned linux bugs of u1 for the last couple of weeks checked12:42
faganralsina: kk12:42
ralsinajoshuahoover: ok12:43
nessitaChipaca: merged trunk in, urlencode added, test updated, pushed to revno 111112:45
Chipacanessita: awesome.12:45
* Chipaca smiles at beuno12:45
* beuno giggles12:46
faganconnect 4 :D12:46
Chipacafagan: ○○○○○○○12:48
Chipacafagan: ○○○○○○○12:48
Chipacafagan: ○○○○○○○12:48
Chipacafagan: ○○○○○○○12:48
Chipacafagan: ○○○○○○○12:48
Chipacafagan: ○●●●●○○12:49
Chipacafagan: sorry, you lose12:49
* Chipaca runs12:49
faganChipaca: what game were you playing I was white :D12:49
Chipacaheh :)12:50
* fagan is a sharp one 12:50
* Chipaca concedes the match12:50
fagangg wp12:50
Chipacanessita: urlencode will produce unordered results, and that test will randomly fail12:51
Chipacanessita: (because it uses a dict)12:51
nessitalet me patch urlencode then12:51
Chipacanessita: or sort platform_data, or use urlparse to compare :)12:52
Chipacanessita: e.g. urlparse.parse_qsl(urlparse.urlparse(PING_URL).query)12:53
nessitaChipaca: urlparse will not give me a dict back, unless I'm missing something. I'm getting a ParseResult, where the "path" path looks like a string12:53
nessitaah, I was using urlparse.urlparse12:54
Chipacayeah, urlprase.urlparse gives you a namedtuple12:54
Chipacathe 'query' element therein, you extract with parse_qsl12:54
* Chipaca just realized he was reading the code :)12:54
nessitabeuno: I learnt some web programming today! :-D12:55
Chipacanessita: we'll have you doing Plone in no time!12:56
* nessita fades12:56
alecu#nessita { opacity: 0; }13:00
faganralsina, dobey, alecu, nessita, gatox standup13:01
nessitaoh, standup, no notes for me yet, I will go last13:02
faganill go the others can catch up13:02
fagan* a bit of reading13:02
fagan* checking up on recent bugs13:02
fagan* Nope13:02
fagangatox: go13:02
gatoxhttps://code.launchpad.net/~diegosarmentero/ubuntu-sso-client/bug-820872/+merge/71774 and https://code.launchpad.net/~diegosarmentero/ubuntuone-windows-installer/bug-820872/+merge/71773 COMPLETE. Second one finishing some additional tests.13:02
gatoxfinish some work in installer UI bugs13:03
gatoxralsina, go13:03
ralsinaDONE: reviews, calls, worked some more on my pending branches. TODO: merge them, hopefully make u1cp do the right thing when there are no credentials BLOCKED: no13:03
nessitaDONE: bug #827343, reviews13:03
nessitaTODO: control panel UI tweaks, more reviews13:03
nessitaBLOCKED: nopes13:03
nessitaNEXT: dobey? alecu?13:03
ubot4Launchpad bug 827343 in ubuntuone-client "Send platform details when pinging for credentials (affects: 1) (heat: 6)" [High,In progress] https://launchpad.net/bugs/82734313:03
alecuDONE: chased time.clock issues on VirtualBox; worked on fixing tests for the branch for bug #824819. Started looking at eq_inotify tests13:04
alecuTODO: fix the f*#@!ng test that's blocking the whole testrun, work on eq_inotify13:04
alecuBLOCKED: yes, please13:04
ubot4Launchpad bug 824819 in ubuntuone-client "SD and tests need to wait until a watch is removed (affects: 1) (heat: 6)" [High,Triaged] https://launchpad.net/bugs/82481913:04
nessitaalecu: did upgrading VB helped?13:04
alecunessita, no, it does the same. It seems to do it less often though, but it still keeps the clock quiet sometimes13:05
alecunessita, the only way I found was to add a small "time.sleep" whenever we are calling time.clock :P13:06
nessitaalecu: can you somehow workaround this locally to unblock? I mean, what concrete symptom are you having?13:06
alecunessita, but this is not the root cause of the test that's blocking. The clock issue is a sideturn I took while debugging tritcask tests that use it13:07
nessitadobey: go!13:07
dobeyλ DONE: bug #827519, discussion on #817133 and #82034513:07
dobeyλ TODO: finish bug #817133, chat with lisette13:07
dobeyλ BLCK: None.13:08
ubot4Launchpad bug 827519 in ubuntuone-installer "don't add the stable ppa (affects: 1) (heat: 6)" [High,Fix committed] https://launchpad.net/bugs/82751913:08
ubot4Launchpad bug 817133 in ubuntu "[FFe] [needspackaging] ubuntuone-installer needs packaged (affects: 1) (heat: 12)" [High,Incomplete] https://launchpad.net/bugs/81713313:08
nessitaalecu: ok, so feel free to "drop" the tritcask issue for now13:08
alecunessita, the test that blocks right now just blocks the whole test run when running "run_test.sh"13:08
nessitaalecu: which one is it?13:08
alecunessita, but it works fine if I run just that test file13:09
nessitaalecu: is it something in test_vm?13:09
alecunessita, no, it's in test_sync13:09
alecunessita, most of test_vm is running fine on trunk13:09
alecunessita, let me push it, and I'll ask you to run it to see if it hangs like here.13:10
nessitaalecu: sure!13:10
alecunessita, lp:~alecu/ubuntuone-client/watch-finished-deferred13:11
alecunessita, run_tests -t test_sync works13:11
alecunessita, but just "run_tests" hangs up on test_sync.runTest :-(13:12
beunonessita, that'll come in hadny for your rotation *wink*13:12
dobey_ != -13:12
nessitaalecu: FYI:13:13
nessitaText conflict in tests/platform/test_os_helper.py13:13
nessita1 conflicts encountered.13:13
nessitaalecu: can you please fix to ensure we run the same?13:13
alecuoh, sure13:14
nessitaChipaca: is there a cleaner way to solve http://pastebin.ubuntu.com/668248/? I don't like using '://' explicit, but the closest thing I found from urlparse is urlunsplit, but to use it in the test I should chopped off the query content from the ParseResult, which is not cleaner nor clearer, from my POV13:16
alecunessita, fixed and pushed13:26
nessitaalecu: re-branching!13:27
alecunessita, I would not mind about the "://". Just make it a constant, as it would be rare for us to change protocols to something that does not use "://"13:27
nessitaalecu: is a test, and is used in only one place, you think is worth making a constant?13:28
alecumailto:ping@url or telnet:ping.url sounds unreasonable13:28
alecunessita, then don't mind about it!13:28
* nessita does not mind then13:28
nessitaChipaca: fixed and pushed to revno 1112!13:28
Chipacanessita: ok13:29
Chipacanessita: I +1'ed it already13:29
nessitaalecu: run_tests -t test_sync, all green, going with the whole suite now13:31
ralsinanessita, Chipaca: I would like a review of https://code.launchpad.net/~ralsina/ubuntuone-windows-installer/local-folder-fixes/+merge/71857 if you have a moment please13:31
nessitaralsina: sure!13:32
nessitaalecu: run-tests finished: FAILED (skips=39, failures=9, errors=42, successes=2141)13:34
nessitaalecu: what test in particular is being blocked for you?13:35
alecunessita, test_sync.runTest13:35
alecunessita, yes, runTest13:35
nessitahum, that's a setUp or tearDown being blocked13:35
gatoxnessita, test added https://code.launchpad.net/~diegosarmentero/ubuntuone-windows-installer/bug-820872/+merge/7177313:35
nessitaalecu: can you add prints to setUp and tearDown to see where the runTest is being blocked?13:36
alecunessita, I don't think so. I have put pdb.set_trace() in setup, teardown and an overloaded runtest, and it blocks there.13:36
alecunessita, I can try that too13:37
nessitaalecu: so, the runTest is run for every TestCase, which testcase is being blocked? we may wanna check that setUp and his parents, if any13:37
nessitaralsina: is there a testcase for FolderItem?13:41
nessitaI can't find it myself13:41
ralsinanessita: not explicitly. It's old code, but I will add one.13:42
nessitaralsina: thanks!13:42
nessitaplease make sure to assert that:13:44
nessita- the checkstate is unchecked13:44
nessita- the volume id is the  one passed as parameter13:44
nessita- the thread is started if calculate is True, not started if not13:44
nessita- size is None if calculate, 0 if not13:44
nessitaAlso, I would advice moving the self.thread assignment outside the if-else since is the same one no matter the value of calculate13:44
nessita(I'm adding this to the MP)13:45
nessitaChipaca, ralsina: are we mumbling today?13:46
ralsinanessita: instead of a testcase, would it be ok if I add tests in LocalFolders testcase? FolderItem is mostly an implementation detail for that class13:47
nessitaralsina: recommended approach is to have at least a TestCase per each class13:48
nessitaralsina: so we can split it out if needed, or if we add more logic we can isolate that13:48
nessitaalso, is better for the next one who tries to find the tests13:48
nessitato either understand who that class is used, or add more tests, et13:49
=== m_conley_away is now known as m_conley
nessitaalecu: any news?14:00
alecunessita, I've checked the parents, and no news. And since when running alone it passes fine, I'm suspecting one of the previous tests is leaving some broken state.14:01
alecunessita, so right now I'm deleting one by one the previouses .py testfiles and running run_tests again14:02
nessitaralsina: I made more comments in the MP, but I paused the review so we can have some checkpoints to avoid confusion about what's fixed and what's pending.14:10
ralsinanessita: ok14:10
nessitagatox: re-reviewing yours now14:11
gatoxnessita, ok14:11
nessitagatox: on a qss, shall I set font sizes in px or pts?14:11
gatoxnessita, i do it in px14:12
nessitagatox: lisseeeeete asked me to set control panel font to 13px, not sure if that is correct14:12
gatoxnessita, yes, i'm using font-size with px14:12
ralsinanessita: about self.assertFalse(self.ui.folders_info is None) I am asserting that because get_info is *not* finished, because it's a deferred.14:12
nessitaack, thanks14:12
nessitaralsina: but... folder_info can be None, right?14:13
nessitayou're asserting is not None14:13
nessitaor am I missing something?14:13
ralsinaoops, read it the wrong way. get_info is calling a fake deferred that succeeds immediately14:13
ralsinaso, shouldn't that always be a value?14:14
nessitaralsina: answer is "so". Let me explain:14:14
ralsinathe bad part is I can't make initializePage be a generator because it's called by PyQt so can't be a generator, so I should probably go the other path you suggest14:14
nessitaralsina: I think that's the best option, because otherwise, someone who reads that test may think that we ensure that when initializePage ends, folder_Info is not None, which in practice is not True14:15
ralsinaok, makes sense14:15
nessitagatox: question, were the changes to the ui in the branch before? I think they weren't...14:18
ralsinaabout the join(): I am making sure the thread is not running because if it is, it will overwrite the item.size later.14:18
nessitagatox: but please correct me14:18
* gatox looking...14:18
nessitaralsina: what if the thread was not running and you join it? can that fail? /me does not know14:18
ralsinanessita: OTOH, that thread should not be started, so removing14:18
ralsinaif a thread is not running, join returns immediately14:19
gatoxnessita, nop....... sorry... reverting...14:19
nessitaralsina: can we start a thread already joined?14:19
ralsinanessita: sure14:20
ralsinayikes, I was not using the "calculate" parameter if it was a UDF, so the thread was started.14:21
alecunessita, ralsina: why are we using threads in the Qt part?14:21
ralsinaalecu: calculate disk usage of folders in a non-blocking way14:21
alecuralsina, do we have the qt reactor running there?14:22
ralsinaalecu: yes14:23
gatoxnessita, done14:23
alecuralsina, what api are we using to open that thread?14:23
ralsinaalecu: python's threading14:23
ralsinaalecu: I wish I could use QThread, but we can't14:23
alecuralsina, perhaps it would make sense to use the twisted threading14:23
ralsinaalecu: big point for using threading: I already wrote it ;-)14:24
alecuralsina, my point is that we are not sure if threading conflicts with twisted threading on windows.14:24
ralsinaalecu: ugh14:24
ralsinaalecu: still ugh because I have the code here and it works :-(14:25
ralsinaand it has been there for a month or so14:25
nessitaalecu: good point!14:25
alecuralsina, ok, if it works, don't fix it!14:26
nessitaalecu, ralsina: let's file a bug for this and try to schedule this some time in the near future14:26
nessitaalecu: can you please fill the bug?14:26
ralsinafine by me14:26
alecunessita, ralsina: I'm pointing this, because I hate joins14:26
ralsinaalecu: there are no more joins :-)14:27
alecuralsina, cool then.14:27
nessitaalecu: me too, and since ATM very few people is running this, we can't ensure we won t have issues there14:27
* ralsina points out that rewriting things that are not kown to be broken is very non-TDD14:28
nessitaralsina: right, but is good to know that we may have weird issues and they may be caused by threads misbehaving in windows14:29
ralsinanessita: sure, we can keep that in mind14:29
nessitagatox: looks good! though, question: you alse reverted the changes to the qss... I don't think taht's right14:32
nessitagatox: there was a new style for form errors?14:32
nessitaalecu: I'm afraid to ask, but.. yes?14:33
gatoxnessita, oh crap... yes, you are right.....14:33
* gatox is working with form errors everywhere14:33
alecunessita, we are using python threads in syncdaemon too.14:33
nessitaalecu: what for?14:33
alecunessita, in hash_queue and the windows NetworkManager14:33
alecunessita, I've already asked in #chicharra about the hash_queue, and we'll have to wait for mandel to ask about the windows NetworkManager14:34
nessitaalecu: let's fill bug, there's much we can do right now today14:34
nessitathere isn't much* ;-)14:34
gatoxnessita, done14:34
nessitagatox: approved, please seek another review14:37
gatoxalecu, ralsina can you review this branch? https://code.launchpad.net/~diegosarmentero/ubuntuone-windows-installer/bug-820872/+merge/7177314:39
ralsinagatox: sure!14:39
gatoxralsina, thanks!14:39
ralsinanessita: answered comment, pushed fixes14:57
ralsinanow let's look at gatox's branch114:57
nessitaralsina: ack, I will re-review in 15 minutes~14:58
ralsinagatox: shouldn't that fix for critical be done also in sso-client?15:00
nessitaralsina: is done and merged15:01
gatoxralsina, yes...... that branch was merge already15:01
ralsinaoh, ok, forgot about it15:01
ralsinathen it15:01
ralsina's a+115:01
gatoxralsina, cool15:01
dobeylunch time, bbiab15:14
nessitaralsina: I just requested the swap day for next MOnday. gatox will do the same, but he's defining which day will swap the holiday to15:14
ralsinanessita: so both of you and mandel will be here on monday?15:15
gatoxralsina, yes15:16
nessitaralsina: yeap, gatox needs the holidays for pycon and/or christmas break...15:16
ralsinagatox, nessita: cool, I'll approve later today15:16
ralsinafor pycon we can use conference days, can't we?15:16
gatoxralsina, i think i don't have conference days15:16
ralsinagatox: I am not sure you have any conference days until after the probation though15:16
nessitaralsina: yes, but seems like gatox has none...15:16
ralsinayes, on probation there are no holidays/conference days15:17
gatoxralsina, ahhhh, that make sense15:17
ralsinaI'm off for a (today) shortish lunch. See you people in about 40 minutes.15:37
nessitaalecu: you still blocked? :-/15:57
alecunessita, I found that by erasing test_filesystem_notifications.py all the tests pass, and now I'm bisecting inside that.16:03
nessitaalecu: the windows version or the multiplatform onw?16:04
alecunessita, the windows one16:04
nessitaalecu: let me know if I can help debug16:05
nessitalunchtime for me!16:34
ralsinaand back, with belly full16:35
=== beuno is now known as beuno-lunch
nessitaralsina: for future coding (no need to change it now), is recommended to call the addCleanup right after the sentence that makes the env "dirty". What I mean is, ideally right after creating a file, for example, we would add the self.addCleanup call16:57
ralsinanessita: ok, I can move it before merging the branch, so I don't make the diff change16:57
nessitaralsina: one thing I will ask you to fix is that this call:16:58
nessitaself.addCleanup(lambda: shutil.rmtree(self.tmpdir))16:58
nessitashould be:16:58
nessitaself.addCleanup(shutil.rmtree, self.tmpdir)16:58
nessitayou can fix that later as well16:58
ralsinaok, will do both things together16:58
gatoxralsina, please correct me if i'm wrong... but there is no chance to detect focus in and focus out event except that with eventFilter, isn't it?17:05
gatox(i', talking about qlineedit)17:05
ralsinagatox: if you set eventTracking, I think there is, let me check17:05
ralsinayou want focus events, or mouse hover events?17:06
nessitaralsina: question: I see that the mocked info for volumes_info has 3 items in it, where 2 of them are UDFs; but the test_status_after_get_info checks against 5 top level item count. Which ones are the other 3?17:07
alecuI think I foooooooooound it....17:07
ralsinanessita: the default folders (music docs pictures)17:07
nessitaalecu: tell us!!!17:07
gatoxyes...... but i'm using a simple qlineedit inside another widget....... so i should do lineEdit.installEventFilter(self)..... i ask because i know you don't like eventFilter :P17:07
nessitaralsina: ack17:07
alecuI think it was a missing "yield" in test_add_single_watch.17:07
ralsinagatox: which means inheriting unless it's an enhancedlineeedit17:07
alecuI'm testing it all together now.17:07
ralsinagatox: indeed I don't ;-)17:08
nessitaralsina: is there any test for the adding of those default folders?17:08
nessita(I want to follow it in the code, if there is any)17:08
nessitaalecu: no? :-/17:08
ralsinanessita: well, it's checked that they are added (or else there would be only 2), but the function that tells you what they are is going away17:08
alecuno, it was not a missing yield17:08
gatoxralsina, right..... i was reviewing my options...... because it will be inherit just for focusInEvent and focusOutEvent, and i'll need to replace the components in the UI as promotedWidgets17:08
nessitaralsina: not sure I understand. What function is going away? default_folders?17:09
ralsinagatox: let me research 5'. If I don't find an alternative, I'll give you a eventFilter exception :-)17:09
alecuit's an ugly monkeypatch that's not restored :-(17:09
ralsinanessita: yes, it will use the function that's in xdg.basedirectory instead17:09
nessitaalecu: is a call to pacth?17:09
alecunessita, no17:09
alecuWatch.start_watching = start_watching17:09
nessitaralsina: but, the default_folders will remain in place, just the implementation will change, right?17:10
alecunessita, it seems mandel only learned about trial.patch pretty recently :-(17:10
dobeyralsina: what should we do about pyxdg?17:10
ralsinanessita: yes, it will just return three paths from the other function17:10
gatoxralsina, or i can create an enhanced lineedit..... and maybe include some generic logic inside there to check if they are valid and so..... it's not a problem17:11
gatoxralsina, what you think is best17:11
ralsinagatox: http://doc.qt.nokia.com/latest/qapplication.html#focusChanged17:11
ralsinaso no eventFilter for you ;-)17:11
nessitaralsina: so we do need a test to confirm that default_folders is returning what it should, not matter what implementation has. Is that test in the suite already, or shall we add a bug for it?17:11
alecudamn, damn, damn the little childrens17:12
gatoxralsina, jeje ok17:12
ralsinanessita: it makes more sense to add that test in xdg when it's done, right?17:12
ralsinadobey: good question, didn't have time to do anything about it yet :-(17:12
alecunessita, I ended up deleting every test_*.py file except the two involved: test_file_notifications.py and test_sync.py17:13
alecunessita, and then commenting the test functions inside there...17:14
nessitaralsina: so, we need at least 2 (group of) tests: one in u1client when fixing xdg, and another (very likely not the same one) in windows-installer for the default_folders method. This ensures that no matter the implementation of default_folders, we ensure the correctness of the method in installer17:14
alecuthis's been hell :-(17:14
nessitaalecu: I can certainly imagine... :-(17:14
nessitaralsina: I meant: "no matter the implementation of  xdg methods..."17:14
ralsinanessita: not saying not to test the pathsm but there isn't much to check in those paths, since they can be lliterally anything17:15
nessitaralsina: that's why inside installer we should not depend on anything in particular but we very likely patch xdg with fixed paths and assert over that17:15
nessitabut we need test(s) for default_folders17:16
ralsinanessita: not sure what to test beyond "it's three strings"17:16
nessitaralsina: I agree we can add them in an incoming branch, but I want to be sure we're in sync17:16
ralsinanessita: no, I will add it I just am not sure what to test for17:16
nessitaralsina: so, consider this scenario: someone comes and see the default folder implementarion and removes the calls to xdg (or whatever we use) and replace that by the returning of a fixed list with 3 things in it, ['casa', 'perro', 'gato']. We need a test failing because the content of the result, despite having the proper lenght, is not the expected17:17
nessitaralsina: I know no one will approve such a branch, but is a silly example trying to show what you need to test17:18
ralsinabut that is not actually a wrong result (except that they are not absolute paths)17:18
nessitaralsina: it's if I actually use the string 'casa', 'perro' and 'gato'17:18
nessitawe want to ensure the contents are exactly 'My Documetns' and all, where 'My Documents' is not a literal string but something that we patch inside the underlying libraries17:19
ralsinanessita: you can change your documents path to be "c:\users\casa" (or pretty much any other path)17:19
ralsinanessita: http://www.online-tech-tips.com/computer-tips/how-to-move-or-change-the-location-of-my-documents-folder/17:19
nessitaralsina: yes, but that's no the point17:19
ralsinanessita: sorry, I still don't get it17:20
nessitaralsina: assume you have not changed any document path nor name, but I go and change the implementation of default_folder to return a fixed list, always the same17:20
nessitano matter what system we're in, we return 'casa', 'perro' and 'gato'17:20
ralsinacan we use "c:\casa" in your example? Because I do know those have to be absoute paths.17:22
nessitaralsina: no, we can't. I'm evil and I changed default_folders to return [object(), {}, urlparse.urlparse('http://example.com')]17:22
nessitaralsina: what test will fail in that case?17:23
ralsinanessita: ok, I can test that they are 3 strings that represent absolute paths.17:23
ralsinaso it will fail that test.17:23
nessitaralsina: what if I change the implementation to return:17:23
nessita['i', 'want', 'icecream']17:24
ralsinathose are not absolute paths17:24
nessitayour test will no longer fail17:24
nessitaok, what if:17:24
nessita['e:\i', 'f:\want', 'z:\icecream']17:24
nessitaralsina: the point is you need to assert about the contents of the list17:25
ralsinathoat is a valid value for default_folders() so it should not fail17:25
nessitano, is not valid17:25
ralsinayes they are :-)17:25
nessitavalid results are those returned by xdg when queried for special folders17:25
ralsinanessita: xdg can return that17:25
nessitaralsina: as long as the user has those, which in my case is not true17:25
ralsinanessita: no, it can return that even if they don't exist17:26
nessitaralsina: in which case?17:26
ralsinaYou can change your "My Documents" folder to any path. Say, on a removable drive. And then unplug it.17:26
ralsinaIt is an *unusual* value? Yes. Is it invalid? No.17:26
nessitaralsina: yeah, but that is not the point!!!17:27
nessitaralsina: let's mumble17:27
ralsinanessita: which is why I say I don't get the point yet17:27
alecunessita, I'm not sure I get this either17:27
alecunessita, can you sketch some code for how the unittest would work?17:28
ralsinanessita: just as a sidenote it is trivial to create a reimplementation of a function that passes all tests and does nothing useful. It should only record all side effects and return values for each set of input data of the original function, then replay them when tested. Unless you randomize your inputs, of course  ;-)17:43
ralsinaand throw exceptions on all unknown input combinatios, just for fun17:43
nessitaralsina: that is true for some cases, is not for some others17:44
nessitawhen TDDing "sum", is very easy not to cover all cases (almost mandatory) so you can certainly do that17:44
ralsinanessita: it's true for all programs written in a turing-complete language.17:44
nessitano, if you test some function was called with some parameters, you can not fake that in your implementation, you will have to actually call the thing17:45
ralsinaexcept, if you test for all valid imput cmbinations, yes, the result is a vlid implementation17:45
ralsinanessita: yes, I can fake it. I will only call it when the input data is the exact data you used in the tests. If it's different, I will not call it.17:46
ralsinaProof: I can just embed the original function. If the input is the one used in the tests, pass it. If no, raise DivideByZero ;-)17:47
nessitaralsina: I would love if you could use all that energy you're investing in thinking how to break tests to build robust tests :-)17:48
ralsinanessita: I am writing the test, this is old stuff I know from before ;-)17:49
ralsinanessita: just trying to show you that "what if we change the implementation to return fluffy bunnies" has limited persuasion value ;-)17:49
nessitaok, duly noted17:50
=== beuno-lunch is now known as beuno
nessitaralsina: going back to your branch: can you please explain why there is no more need to call join on the calculating threads?17:52
ralsinain the join you mentioned before? Because for UDFs the thread is not started.17:52
ralsinaAnd there is a test that it's not started, too.17:52
ralsinaAnd for non-udfs, I want to let it calculate17:53
nessitaralsina: no, joins in general. I understood we were no longer joining no thread...17:53
nessitaralsina: are we joining the threads that are run?17:53
ralsinanessita: they end eventually.17:53
ralsinanessita: when they end, they push the result into a Queue and we pick it17:53
nessitaralsina: but we need to join them the same, no? at least in C we need to, not sure in python17:54
nessitaalecu: ^17:54
ralsinaNot on python17:54
ralsinajoin() just waits until they end17:54
ralsinaAFAIK, that is17:54
nessitain C, join also releases all the resources the thread has17:55
ralsinathese threads have no local resources17:55
* nessita reads the python doc17:55
ralsinas/local/thread-local/ up there17:56
Chipacanessita: could you look at your msdn downloads page and see if it's working for you?17:57
nessitaralsina: what would happen if we quit the app before each thread finishes?17:57
nessitaChipaca: sure!17:57
ralsinanessita: the threads will end, because they are daemon threads17:57
Chipacanessita: also what browser you use to check :)17:57
nessitaChipaca: argh, can't remember password, on sec17:59
ralsinanessita: pushed the discussed test for special_folders18:01
nessitaChipaca: have the url handy?18:01
nessitaah, I foun it18:01
nessitaChipaca: I can browse https://msdn.microsoft.com/en-us/subscriptions/securedownloads/default.aspx with firefox, want me to try a download?18:02
Chipacanessita: but does it give you a key?18:02
nessitaChipaca: all downloads are "unavailable"18:03
Chipacaright, same here18:04
nessitadid it expire?18:04
nessitaalecu: I will be leaving to uni in 30 minutes, would you please send a report when your day finished, about accomplishments and status so we i can coordinate mandel's work on monday? (and know where things were left)18:06
ralsinanessita: before you leave, can we mumble 5' so you can give me some hints re: bug #828170 ?18:08
ubot4Launchpad bug 828170 in ubuntuone-control-panel "On windows, the control panel fails without credentials (affects: 1) (heat: 6)" [Critical,Triaged] https://launchpad.net/bugs/82817018:08
nessitaralsina: I can implement that tomorrow, if you want18:09
ralsinanessita: you are going to need some support on the installer's side of things, I suspect.18:09
nessitaralsina: why?18:09
ralsinaSo for example, you don't get the license page18:09
nessitaralsina: last mock from design did not involve the installer18:09
ralsinaand what will you use?18:09
nessitaa screen offering the user to login18:10
nessitawith a design fitting the control panel design18:10
ralsinaI imagined as much, but are we doing *another* sso ui?18:10
nessitaso it stays all within the same project18:10
nessitaralsina: no, I will be using SSO UI18:10
nessitabah, what do you mean with another?18:11
ralsinahave you seen the UI provided by SSO without tweaks?18:11
nessitaralsina: no, but I was planning on fixing that as well18:11
ralsinaone thing less for me to look at then18:11
nessitaralsina: want a bug report as a suggestion? :-)18:11
ralsinanessita: sure18:12
ralsinanessita: if you think you are going to integrate SSO into u1cp and fix its UI in one day, I suspect you are being wildly optimistic.18:12
nessitaI know :-)18:13
nessitaralsina: are we embedding payments somehow in the installer?18:13
ralsinaThere is a button that sends you to the page18:13
nessitaralsina: right. I have 2 proposals: either implementing the special_folders in xdg. and/or moving the folder validation to syncdaemon18:14
ralsinanessita: I take the xdg thing. The other sounds painful.18:14
ralsinaPlus, it would mean branches in u1-client u1cp and u1-installer18:14
dobeywell *windows*-installer ;)18:15
ralsinadobey: good point!18:15
nessitagatox, ralsina: I would love to have some reviews for https://code.launchpad.net/~nataliabidart/ubuntuone-control-panel/ui-style-fixes/+merge/7192818:17
ralsinanessita: got it18:17
gatoxnessita, on it18:17
dobeyi think i need a drink18:20
nessitaralsina: if you have more slots, you can also do https://code.launchpad.net/bugs/827465, which is easy but High18:22
ubot4nessita: Error: Bug #827465 is private.18:22
ralsinanessita: in line 70: instad of setting maximum heights, you should set the vertical policy to minimum18:22
ralsinaand then set the height of the inner widgets + paddings18:23
ralsinanessita: usually, fixed pixel sizes on anything but padding is not a good idea18:23
gatoxnessita, if you set the maximum size to 16px..... is it necessary to use fixed policy?18:25
ralsinagatox: either that r set the miimum to 16px too18:25
ralsinaAlso, ask dobey how a 13px font looks on his notebook ;-)18:25
ralsinabut I know where that came from, so it's ok to leave it on18:26
dobey13px or pt?18:27
ralsinaI am guessing it comes to between gnat and half-gnat :-)18:27
gatoxnessita, looks fine by me!18:28
dobeyit looks like anything else that takes up 13 pixels in the vertical direction, i guess :)18:28
ralsinadobey: care to offer a guss in millimeters? ;-)18:28
ralsinabtw: 13px font glyphs usually are about 9px tall in average18:29
dobeyi don't know how tall my screen is in mm18:29
ralsinaI can take 256ths of inches18:29
nessitaralsina: that did not work, I tried it...18:29
dobeybut i mean, 13px will look small on even my workstation18:29
nessitaralsina: I can try again, but later today, I'm leaving running18:29
ralsinanessita: will leave it in the MP then18:30
nessitaralsina: add those notes to the MP and I will take care of them after teaching18:30
nessitaralsina: I will also finish your review later today18:30
nessitabye all!18:30
ralsinanessita: cool, thx. Bye!18:30
dobeyon my workstation, 9 px would be about 2.5 mm18:31
dobeythat's on my workstation18:31
dobeyon my laptop, maybe 1 mm if lucky18:33
ralsinaok, so I hope you are not planning to use ubuntu one when we switch to qt :-(18:35
dobeyi don't even use the control panel now :)18:44
ralsinagatox: do you have the "uninstall on cancel" bug queued?18:53
gatoxyes.... after this branch probably... you told me that the uninstall bug depends on something else, don't you?18:54
gatoxralsina, ^18:55
ralsinaturns out it doesn't :-)18:56
ralsinagatox: all you have to do is call "uninstaller --mode=qt" and it does *exactly* what we want18:56
gatoxralsina, ok... i'll start working on that after this branch! :D18:56
ralsinayou don't have to code anything18:56
gatoxralsina, more awesome! jeje18:56
ralsinaor nothing beyond a call to Popen :-)18:57
gatoxralsina, yes18:57
ralsinaIf you have the bug# handy I will post that there18:57
gatoxralsina, ok.... i'm finishing with this, and then i'll do that18:57
* gatox looking...18:57
gatoxralsina, https://bugs.launchpad.net/ubuntuone-windows-installer/+bug/82341418:58
ubot4gatox: Error: Bug #823414 is private.18:58
ralsinagatox, cool, commenting18:58
dobeyi think maybe i should go get some snackification19:01
nhainesdobey: is your snack indicator blue?  :)19:02
dobeyit's NIR19:04
dobeybrb, must get snacks19:06
ralsinagatox: do we still have a "start syncdaemon on login" checkbox somewhere?19:08
gatoxralsina, that should be added in congratulations19:09
gatoxone of the branches i need to start too19:09
ralsinaI will do it now then19:09
ralsinabut ... not starting syncdaemon makes no sense :-)19:10
gatoxralsina, yes19:10
ralsinagatox: do you have a bug for it?19:10
ralsinaI have bug #826728 for the functionality but none for the ui19:10
ubot4Launchpad bug 826728 in ubuntuone-windows-installer "wizard should add syncdaemon to autostart (affects: 1) (heat: 52)" [High,Triaged] https://launchpad.net/bugs/82672819:10
gatoxralsina, let me check19:10
gatoxralsina, https://bugs.launchpad.net/ubuntuone-windows-installer/+bug/82736519:11
ubot4Launchpad bug 827365 in ubuntuone-windows-installer "Add functionality to Congratulations page checkboxes (affects: 1) (heat: 6)" [Undecided,New]19:11
gatoxralsina, review please: https://code.launchpad.net/~diegosarmentero/ubuntuone-windows-installer/setupaccount-form-behavior/+merge/7193719:36
gatoxralsina, now i have to leave, but i'll leave the computer on, so if you have any comment to this branch please let me know or leave a comment in the merge proposal :D19:37
ralsinagatox: will do!19:41
dobeystill no love19:45
dobeyi hate waiting20:05
=== m_conley is now known as m_conley_away
=== yofel_ is now known as yofel
nessitaralsina: hi there! I replied to the MP... there is a spec and a bug report requesting the 30px height... what shall we do?21:19
nessitaralsina: I can revert that bit so we can land this21:19
ralsinanessita: I mailed you and lisette. We should argue a tiny bit about it tomorrow morning, and then see21:19
ralsinawe can land it tomorrow. Or we can even land it with that, it's just that if we start setting pixel sizes everywhere it's going to be a pain in the future21:20
nessitaralsina: I would like to land it today so I can start a fresh branch tomorrow. I'm happy reverting the fixed size if you'd like21:20
ralsinanessita: nah, let's just push it accoring to spec, and later on, if we change the spec, we will have to review all .ui files anyway21:21
ralsinanessita: I'll change that to approved21:21
ralsinaluckiy detecting all the things that have fixed sizes is easy :-)21:21
nessitayeah there are several fixed heights (I will bring them up tomorrow then)21:22
ralsinanessita: got a link to the MP handy?21:22
ralsinanessita: there, approved in general21:23
ralsinanessita: if you have 5' could you check an email I sent about the congratulations page?21:23
nessitayes, sure21:24
dobeyhave a good evening all!21:32
ralsinabye dobey!21:32
nhainesdobey: bye!21:34
nessitaralsina: so, I read the email, and while answering, I realized I was confused: we have 2 pending stuff to do regarding credentials and control panel:21:34
nessita* what you said today, about starting the control panel without credentials, that I confused with the following:21:34
nessita* what page to show when the user removes the current device, and for this we do have a simple workflow where we only offer to login.21:34
nessitaSo, to implement (1), I think the following:21:35
ralsinajust login so we don't mix metadata from two accounts, right?21:36
nessita* we should provide a single icon in the desktop, which will execute a python script that will check if there are credentials. If there are, we can start the control panel directly, if they are not, we start the wizard. What do you think?21:36
ralsinanessita: that sounds easy to implement21:37
nessitawhat I mean is, the "Ubuntu One"program as such has the intelligence to show one or the other21:37
ralsinait will work weird if the user removes credentials manually but that's his own fault ;-)21:37
nessitaso, to ease things, we can assume in the (windows for now) control panel that credentials are always there21:37
nessitashall I answer this?21:38
ralsinaCurrently, if there are credentials, the wizard jumps to the "computer to cloud" page. I could make it just exec control panel21:38
ralsinaAnd then the wizard is that program already21:38
nessitaralsina: that would work indeed21:38
nessitaand we never provide explictely an icon for launching the control panel21:39
ralsinait also has the code to exec control panel, so it's 5 lines or so21:39
ralsinahow to translate that to linux is going to be a pain :-)21:39
ralsinaor maybe not, we just have to think about that a bit21:39
ralsinaAnyway, I think we have a plan :-)21:39
ralsinaYes, reply at least that we have talked about it and reached an agreement. OTOH, I really need input on the (I think) useless checkboxes.21:41
nessitayes, I have a answer to that21:42
nessitasending shortly21:42
ralsinaAnd now I have to go play "Ben 10 Alien storm" on the Wii for an hour or so ;-)21:42
alecunessita, ralsina: https://code.launchpad.net/~alecu/ubuntuone-client/watch-finished-deferred/+merge/7195521:42
alecuralsina, cool!21:42
ralsinaalecu: saw it. Is that the one that made you curse mandel's ancestors?21:42
alecuralsina, yup21:42
alecuralsina, the whole family, not just ancestors21:43
ralsinaalecu: it's awesome. You can transform into all the aliens, including the ultimates, and they all have signature moves:-)21:43
ralsinaalecu: it's the one we bought in Hamley's21:43
alecuralsina, sounds lovely! we've been playing toy story 3, and I was very pleasantly surprised at how good it was.21:43
ralsinaSo, alecu, have a nice long weekend, nessita, have some rest, see you tomorrow!21:43
* ralsina needs to get that wii chipped21:44
alecuralsina, but the best so far is and has been Zelda twilight princess21:44
alecuralsina, a hundred peso, but then you'll need a usb cdr21:44
ralsinaalecu: ugh21:44
ralsinamaybe I'll just buy the games via the wii store21:45
* ralsina is so burgueois21:45
alecuwe know!21:45
ralsinaok, good night, send me emails about things that may need to be looked at at midnight ;-)21:45
alecuralsina, night!21:46
nhainesI still miss Wind Waker.  :)21:46
nessitaralsina: bye, I'm sending the email as soon as people stop distracting me :-D21:47
alecunhaines, gamecube, right? it wasn't a very common console around here21:55
alecubut now you see wiis everywhere21:56
nessitaalecu: you need something else from me, besides a review?21:57
alecunessita, encouragement?21:57
alecunessita, not really :-)21:57
* alecu loves playing really old games, and will try to get windwaker to use in his wii21:58
nessitaalecu: YOU ROCK! YOU CAN DO THIS!21:58
nessitaalecu: KEEP BREATHING!21:58
nessitaalecu: think about the weekend.... I'm sure you'll have a great time21:58
nessitaand send my saludos to your wife and kid :-)21:58
* alecu bends down and tries to catch his breath21:58
alecusaludos will be dice!21:59
nhainesalecu: exactly!  The only trouble would be finding a GameCube controller to use in your Wii to play Windwaker.  :)22:01
alecuoh, right :/22:03
nhainesalecu: I don't know why the Wii classic controllers don't work... even the L/R triggers feel analog to me (maybe not on the new CC Pros).  :(22:04
nessitaalecu: I have a question: in this code we're kind of ignoring the real exception, is that intended? self._watch_started_deferred.errback, Failure())22:05
alecunessita, the Failure() constructor with no parameters *keeps* the raised exception.22:06
alecunessita, its like "just raise"22:06
nessitaalecu: oh, I did not not know that!22:06
nessitayou taught me something new todat22:07
alecunessita, me neither, learned it for this branch :-)22:07
nessitaalecu: the branch looks good, will run tests and then approve. I'll make sure this lands tomorrow.22:07
alecunessita, what's lovely is that it keeps the original stacktrace22:07
nessitathat is lovely indeed, and clean22:07
ralsinanessita: stiill around?23:09
ralsinaok, no she is not :-)23:09
tntchey, any word on the server problem that means I can't save playlists?23:45

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