launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #05337
[Merge] lp:~jtv/launchpad/minilint-4 into lp:launchpad
Jeroen T. Vermeulen has proposed merging lp:~jtv/launchpad/minilint-4 into lp:launchpad.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~jtv/launchpad/minilint-4/+merge/80699
= Summary =
Fixing some lint in files we touched recently.
= Launchpad lint =
Some lint still remains, where I was reluctant to mess with the code too much:
Checking for conflicts and issues in changed files.
Linting changed files:
lib/canonical/lazr/doc/pidfile.txt
lib/lp/bugs/stories/bug-also-affects/xx-also-affects-upstream-private-bug.txt
lib/lp/bugs/model/tests/test_bug.py
lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt
lib/canonical/launchpad/icing/style-3-0.css
lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt
lib/lp/bugs/model/bugtask.py
./lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt
260: want exceeds 78 characters.
./lib/canonical/launchpad/icing/style-3-0.css
58: Unknown Property name.: -moz-border-radius
59: Unknown Property name.: -webkit-border-radius
60: Unknown Property name.: -khtml-border-radius
61: Unknown Property name.: border-radius
154: Unknown Property name.: word-wrap
201: Invalid value for "CSS Level 2.1" property: -moz-pre-wrap: white-space
202: Invalid value for "CSS Level 2.1" property: -o-pre-wrap: white-space
204: Unknown Property name.: word-wrap
290: Unknown Property name.: disabled
761: Unknown Property name.: -webkit-border-bottom-right-radius
762: Unknown Property name.: -webkit-border-bottom-left-radius
763: Unknown Property name.: -moz-border-radius-bottomright
764: Unknown Property name.: -moz-border-radius-bottomleft
765: Unknown Property name.: border-bottom-right-radius
766: Unknown Property name.: border-bottom-left-radius
846: Invalid value for "CSS Box Module Level 3/CSS Level 2.1" property: -moz-scrollbars-vertical: overflow
1110: Unknown Property name.: -moz-border-radius
1111: Unknown Property name.: -o-border-radius
1112: Unknown Property name.: -webkit-border-radius
1168: Unknown Property name.: filter
1169: Unknown Property name.: -ms-filter
1254: Unknown Property name.: -moz-box-shadow
1255: Unknown Property name.: -webkit-box-shadow
1256: Unknown Property name.: box-shadow
1257: Unknown Property name.: -webkit-border-radius
1258: Unknown Property name.: -moz-border-radius
1259: Unknown Property name.: border-radius
1280: Invalid value for "CSS Level 2.1" property: no-wrap: white-space
1403: Unknown Property name.: -moz-border-radius
1404: Unknown Property name.: -webkit-border-radius
1405: Unknown Property name.: -khtml-border-radius
1406: Unknown Property name.: border-radius
1440: Unknown Property name.: -moz-border-radius
1441: Unknown Property name.: -webkit-border-radius
1442: Unknown Property name.: -khtml-border-radius
1443: Unknown Property name.: border-radius
1450: Unknown Property name.: -moz-border-radius
1451: Unknown Property name.: -webkit-border-radius
1452: Unknown Property name.: -khtml-border-radius
1453: Unknown Property name.: border-radius
1459: Unknown Property name.: -moz-border-radius
1460: Unknown Property name.: -webkit-border-radius
1461: Unknown Property name.: -khtml-border-radius
1462: Unknown Property name.: border-radius
1590: Unknown Property name.: filter
1591: Unknown Property name.: -ms-filter
2038: Invalid value for "CSS Level 2.1" property: rgba(125, 0, 0, 0.9): background-color
2040: Unknown Property name.: text-shadow
2044: Unknown Property name.: -moz-box-shadow
2045: Unknown Property name.: -webkit-box-shadow
2046: Unknown Property name.: box-shadow
127: Line exceeds 78 characters.
1007: Line exceeds 78 characters.
1444: Line exceeds 78 characters.
2021: Line exceeds 78 characters.
2214: Line exceeds 78 characters.
2215: Line exceeds 78 characters.
2284: Line exceeds 78 characters.
2285: Line exceeds 78 characters.
38: I003: To few newlines before selectors.
41: I003: To few newlines before selectors.
46: I003: To few newlines before selectors.
50: I003: To few newlines before selectors.
55: I003: To few newlines before selectors.
64: I003: To few newlines before selectors.
67: I003: To few newlines before selectors.
70: I003: To few newlines before selectors.
74: I003: To few newlines before selectors.
77: I003: To few newlines before selectors.
80: I003: To few newlines before selectors.
84: I003: To few newlines before selectors.
84: I004: Selector must be on a new line.
89: I003: To few newlines before selectors.
92: I003: To few newlines before selectors.
96: I003: To few newlines before selectors.
100: I003: To few newlines before selectors.
104: I003: To few newlines before selectors.
109: I002: To many newlines before selectors.
126: I003: To few newlines before selectors.
129: I007: Each declarations should start on a new line.
132: I003: To few newlines before selectors.
136: I003: To few newlines before selectors.
140: I003: To few newlines before selectors.
144: I014: Rule declarations should end indented on a single new line.
144: I003: To few newlines before selectors.
148: I003: To few newlines before selectors.
152: I003: To few newlines before selectors.
157: I004: Selector must be on a new line.
157: I004: Selector must be on a new line.
157: I004: Selector must be on a new line.
157: I004: Selector must be on a new line.
157: I004: Selector must be on a new line.
161: I003: To few newlines before selectors.
166: I003: To few newlines before selectors.
172: I003: To few newlines before selectors.
178: I003: To few newlines before selectors.
181: I003: To few newlines before selectors.
185: I003: To few newlines before selectors.
185: I004: Selector must be on a new line.
185: I004: Selector must be on a new line.
185: I004: Selector must be on a new line.
185: I004: Selector must be on a new line.
185: I004: Selector must be on a new line.
185: I004: Selector must be on a new line.
189: I003: To few newlines before selectors.
192: I003: To few newlines before selectors.
195: I003: To few newlines before selectors.
195: I004: Selector must be on a new line.
195: I004: Selector must be on a new line.
195: I004: Selector must be on a new line.
195: I004: Selector must be on a new line.
199: I003: To few newlines before selectors.
206: I003: To few newlines before selectors.
206: I004: Selector must be on a new line.
209: I003: To few newlines before selectors.
209: I004: Selector must be on a new line.
213: I003: To few newlines before selectors.
217: I003: To few newlines before selectors.
220: I003: To few newlines before selectors.
220: I004: Selector must be on a new line.
220: I004: Selector must be on a new line.
225: I003: To few newlines before selectors.
225: I004: Selector must be on a new line.
228: I003: To few newlines before selectors.
231: I003: To few newlines before selectors.
240: I003: To few newlines before selectors.
243: I003: To few newlines before selectors.
246: I003: To few newlines before selectors.
249: I003: To few newlines before selectors.
252: I003: To few newlines before selectors.
258: I004: Selector must be on a new line.
267: I003: To few newlines before selectors.
267: I004: Selector must be on a new line.
270: I003: To few newlines before selectors.
270: I004: Selector must be on a new line.
273: I003: To few newlines before selectors.
273: I004: Selector must be on a new line.
273: I004: Selector must be on a new line.
274: I004: Selector must be on a new line.
274: I004: Selector must be on a new line.
279: I003: To few newlines before selectors.
283: I003: To few newlines before selectors.
283: I004: Selector must be on a new line.
286: I003: To few newlines before selectors.
286: I004: Selector must be on a new line.
288: I014: Rule declarations should end indented on a single new line.
289: I003: To few newlines before selectors.
295: I003: To few newlines before selectors.
295: I004: Selector must be on a new line.
299: I003: To few newlines before selectors.
299: I004: Selector must be on a new line.
303: I003: To few newlines before selectors.
306: I003: To few newlines before selectors.
309: I003: To few newlines before selectors.
312: I003: To few newlines before selectors.
321: I003: To few newlines before selectors.
334: I003: To few newlines before selectors.
337: I003: To few newlines before selectors.
340: I003: To few newlines before selectors.
343: I003: To few newlines before selectors.
346: I003: To few newlines before selectors.
349: I003: To few newlines before selectors.
352: I003: To few newlines before selectors.
355: I003: To few newlines before selectors.
355: I004: Selector must be on a new line.
359: I003: To few newlines before selectors.
359: I004: Selector must be on a new line.
362: I003: To few newlines before selectors.
362: I004: Selector must be on a new line.
365: I003: To few newlines before selectors.
365: I004: Selector must be on a new line.
368: I003: To few newlines before selectors.
368: I004: Selector must be on a new line.
373: I003: To few newlines before selectors.
373: I004: Selector must be on a new line.
376: I003: To few newlines before selectors.
376: I004: Selector must be on a new line.
379: I003: To few newlines before selectors.
379: I004: Selector must be on a new line.
382: I003: To few newlines before selectors.
382: I004: Selector must be on a new line.
385: I003: To few newlines before selectors.
385: I004: Selector must be on a new line.
388: I003: To few newlines before selectors.
393: I003: To few newlines before selectors.
398: I003: To few newlines before selectors.
402: I003: To few newlines before selectors.
405: I003: To few newlines before selectors.
409: I003: To few newlines before selectors.
412: I003: To few newlines before selectors.
416: I003: To few newlines before selectors.
419: I003: To few newlines before selectors.
422: I003: To few newlines before selectors.
428: I003: To few newlines before selectors.
432: I003: To few newlines before selectors.
438: I003: To few newlines before selectors.
444: I003: To few newlines before selectors.
450: I003: To few newlines before selectors.
458: I003: To few newlines before selectors.
465: I003: To few newlines before selectors.
468: I003: To few newlines before selectors.
472: I003: To few newlines before selectors.
474: I007: Each declarations should start on a new line.
478: I003: To few newlines before selectors.
484: I003: To few newlines before selectors.
489: I003: To few newlines before selectors.
494: I003: To few newlines before selectors.
497: I003: To few newlines before selectors.
502: I003: To few newlines before selectors.
506: I003: To few newlines before selectors.
511: I003: To few newlines before selectors.
522: I002: To many newlines before selectors.
530: I003: To few newlines before selectors.
533: I003: To few newlines before selectors.
533: I004: Selector must be on a new line.
536: I003: To few newlines before selectors.
537: I004: Selector must be on a new line.
541: I003: To few newlines before selectors.
541: I004: Selector must be on a new line.
546: I003: To few newlines before selectors.
546: I004: Selector must be on a new line.
549: I003: To few newlines before selectors.
549: I004: Selector must be on a new line.
552: I003: To few newlines before selectors.
552: I004: Selector must be on a new line.
555: I003: To few newlines before selectors.
555: I004: Selector must be on a new line.
558: I003: To few newlines before selectors.
561: I003: To few newlines before selectors.
564: I003: To few newlines before selectors.
567: I003: To few newlines before selectors.
570: I003: To few newlines before selectors.
575: I003: To few newlines before selectors.
575: I004: Selector must be on a new line.
578: I003: To few newlines before selectors.
581: I003: To few newlines before selectors.
582: I008: Each declaration must be indented with 4 spaces.
587: I003: To few newlines before selectors.
590: I003: To few newlines before selectors.
594: I003: To few newlines before selectors.
597: I003: To few newlines before selectors.
600: I003: To few newlines before selectors.
606: I003: To few newlines before selectors.
610: I003: To few newlines before selectors.
616: I003: To few newlines before selectors.
619: I003: To few newlines before selectors.
624: I003: To few newlines before selectors.
629: I003: To few newlines before selectors.
629: I004: Selector must be on a new line.
633: I003: To few newlines before selectors.
637: I003: To few newlines before selectors.
637: I004: Selector must be on a new line.
637: I004: Selector must be on a new line.
640: I003: To few newlines before selectors.
643: I003: To few newlines before selectors.
643: I004: Selector must be on a new line.
644: I004: Selector must be on a new line.
644: I004: Selector must be on a new line.
649: I003: To few newlines before selectors.
652: I003: To few newlines before selectors.
652: I004: Selector must be on a new line.
655: I003: To few newlines before selectors.
656: I004: Selector must be on a new line.
657: I004: Selector must be on a new line.
658: I004: Selector must be on a new line.
661: I003: To few newlines before selectors.
664: I003: To few newlines before selectors.
664: I004: Selector must be on a new line.
667: I003: To few newlines before selectors.
667: I004: Selector must be on a new line.
671: I003: To few newlines before selectors.
671: I004: Selector must be on a new line.
674: I003: To few newlines before selectors.
678: I003: To few newlines before selectors.
684: I003: To few newlines before selectors.
687: I003: To few newlines before selectors.
690: I003: To few newlines before selectors.
690: I004: Selector must be on a new line.
693: I003: To few newlines before selectors.
696: I003: To few newlines before selectors.
699: I003: To few newlines before selectors.
703: I003: To few newlines before selectors.
703: I004: Selector must be on a new line.
704: I004: Selector must be on a new line.
705: I008: Each declaration must be indented with 4 spaces.
709: I003: To few newlines before selectors.
712: I003: To few newlines before selectors.
716: I003: To few newlines before selectors.
716: I004: Selector must be on a new line.
721: I003: To few newlines before selectors.
724: I003: To few newlines before selectors.
728: I003: To few newlines before selectors.
733: I003: To few newlines before selectors.
736: I003: To few newlines before selectors.
739: I003: To few newlines before selectors.
742: I003: To few newlines before selectors.
742: I004: Selector must be on a new line.
747: I003: To few newlines before selectors.
747: I004: Selector must be on a new line.
751: I003: To few newlines before selectors.
758: I003: To few newlines before selectors.
776: I003: To few newlines before selectors.
779: I003: To few newlines before selectors.
779: I004: Selector must be on a new line.
782: I003: To few newlines before selectors.
785: I003: To few newlines before selectors.
788: I003: To few newlines before selectors.
791: I003: To few newlines before selectors.
794: I003: To few newlines before selectors.
799: I003: To few newlines before selectors.
802: I003: To few newlines before selectors.
805: I003: To few newlines before selectors.
808: I003: To few newlines before selectors.
811: I003: To few newlines before selectors.
814: I003: To few newlines before selectors.
819: I003: To few newlines before selectors.
822: I003: To few newlines before selectors.
829: I003: To few newlines before selectors.
829: I004: Selector must be on a new line.
832: I003: To few newlines before selectors.
835: I003: To few newlines before selectors.
840: I003: To few newlines before selectors.
848: I003: To few newlines before selectors.
854: I003: To few newlines before selectors.
859: I003: To few newlines before selectors.
862: I003: To few newlines before selectors.
863: I008: Each declaration must be indented with 4 spaces.
880: I003: To few newlines before selectors.
884: I003: To few newlines before selectors.
885: I008: Each declaration must be indented with 4 spaces.
890: I003: To few newlines before selectors.
894: I003: To few newlines before selectors.
898: I003: To few newlines before selectors.
904: I003: To few newlines before selectors.
904: I004: Selector must be on a new line.
910: I003: To few newlines before selectors.
913: I003: To few newlines before selectors.
913: I004: Selector must be on a new line.
918: I003: To few newlines before selectors.
921: I014: Rule declarations should end indented on a single new line.
922: I003: To few newlines before selectors.
925: I003: To few newlines before selectors.
929: I003: To few newlines before selectors.
932: I003: To few newlines before selectors.
936: I003: To few newlines before selectors.
937: I008: Each declaration must be indented with 4 spaces.
940: I014: Rule declarations should end indented on a single new line.
944: I003: To few newlines before selectors.
946: I014: Rule declarations should end indented on a single new line.
947: I003: To few newlines before selectors.
950: I003: To few newlines before selectors.
953: I003: To few newlines before selectors.
956: I003: To few newlines before selectors.
956: I004: Selector must be on a new line.
959: I003: To few newlines before selectors.
963: I003: To few newlines before selectors.
966: I003: To few newlines before selectors.
970: I003: To few newlines before selectors.
976: I003: To few newlines before selectors.
982: I003: To few newlines before selectors.
985: I003: To few newlines before selectors.
988: I003: To few newlines before selectors.
990: I014: Rule declarations should end indented on a single new line.
991: I003: To few newlines before selectors.
994: I003: To few newlines before selectors.
999: I003: To few newlines before selectors.
1002: I003: To few newlines before selectors.
1005: I003: To few newlines before selectors.
1010: I003: To few newlines before selectors.
1011: I008: Each declaration must be indented with 4 spaces.
1016: I003: To few newlines before selectors.
1025: I004: Selector must be on a new line.
1025: I004: Selector must be on a new line.
1033: I003: To few newlines before selectors.
1033: I004: Selector must be on a new line.
1039: I003: To few newlines before selectors.
1043: I003: To few newlines before selectors.
1046: I003: To few newlines before selectors.
1050: I003: To few newlines before selectors.
1053: I003: To few newlines before selectors.
1058: I003: To few newlines before selectors.
1061: I003: To few newlines before selectors.
1064: I003: To few newlines before selectors.
1069: I003: To few newlines before selectors.
1072: I003: To few newlines before selectors.
1078: I003: To few newlines before selectors.
1079: I008: Each declaration must be indented with 4 spaces.
1083: I003: To few newlines before selectors.
1088: I003: To few newlines before selectors.
1095: I003: To few newlines before selectors.
1098: I003: To few newlines before selectors.
1103: I003: To few newlines before selectors.
1109: I003: To few newlines before selectors.
1119: I003: To few newlines before selectors.
1122: I003: To few newlines before selectors.
1126: I003: To few newlines before selectors.
1131: I003: To few newlines before selectors.
1137: I002: To many newlines before selectors.
1144: I003: To few newlines before selectors.
1147: I003: To few newlines before selectors.
1150: I003: To few newlines before selectors.
1156: I003: To few newlines before selectors.
1156: I004: Selector must be on a new line.
1159: I003: To few newlines before selectors.
1162: I003: To few newlines before selectors.
1166: I003: To few newlines before selectors.
1167: I008: Each declaration must be indented with 4 spaces.
1167: I008: Each declaration must be indented with 4 spaces.
1168: I008: Each declaration must be indented with 4 spaces.
1168: I009: Wrong separator on property: value pair.
1170: I014: Rule declarations should end indented on a single new line.
1171: I003: To few newlines before selectors.
1174: I003: To few newlines before selectors.
1181: I003: To few newlines before selectors.
1184: I003: To few newlines before selectors.
1187: I003: To few newlines before selectors.
1190: I003: To few newlines before selectors.
1193: I014: Rule declarations should end indented on a single new line.
1194: I003: To few newlines before selectors.
1197: I003: To few newlines before selectors.
1200: I003: To few newlines before selectors.
1208: I003: To few newlines before selectors.
1212: I003: To few newlines before selectors.
1219: I003: To few newlines before selectors.
1230: I003: To few newlines before selectors.
1235: I003: To few newlines before selectors.
1241: I003: To few newlines before selectors.
1246: I003: To few newlines before selectors.
1261: I003: To few newlines before selectors.
1265: I003: To few newlines before selectors.
1268: I003: To few newlines before selectors.
1273: I003: To few newlines before selectors.
1277: I003: To few newlines before selectors.
1282: I003: To few newlines before selectors.
1287: I003: To few newlines before selectors.
1290: I003: To few newlines before selectors.
1290: I004: Selector must be on a new line.
1299: I003: To few newlines before selectors.
1305: I003: To few newlines before selectors.
1309: I003: To few newlines before selectors.
1309: I004: Selector must be on a new line.
1313: I003: To few newlines before selectors.
1315: I008: Each declaration must be indented with 4 spaces.
1319: I003: To few newlines before selectors.
1319: I004: Selector must be on a new line.
1324: I003: To few newlines before selectors.
1324: I004: Selector must be on a new line.
1329: I003: To few newlines before selectors.
1333: I003: To few newlines before selectors.
1336: I003: To few newlines before selectors.
1341: I003: To few newlines before selectors.
1344: I003: To few newlines before selectors.
1350: I003: To few newlines before selectors.
1356: I003: To few newlines before selectors.
1360: I003: To few newlines before selectors.
1363: I003: To few newlines before selectors.
1366: I014: Rule declarations should end indented on a single new line.
1366: I003: To few newlines before selectors.
1367: I008: Each declaration must be indented with 4 spaces.
1371: I003: To few newlines before selectors.
1374: I003: To few newlines before selectors.
1378: I003: To few newlines before selectors.
1382: I003: To few newlines before selectors.
1385: I003: To few newlines before selectors.
1392: I002: To many newlines before selectors.
1399: I003: To few newlines before selectors.
1410: I003: To few newlines before selectors.
1414: I003: To few newlines before selectors.
1418: I003: To few newlines before selectors.
1421: I003: To few newlines before selectors.
1422: I007: Each declarations should start on a new line.
1424: I014: Rule declarations should end indented on a single new line.
1425: I003: To few newlines before selectors.
1431: I003: To few newlines before selectors.
1436: I003: To few newlines before selectors.
1449: I003: To few newlines before selectors.
1457: I003: To few newlines before selectors.
1466: I003: To few newlines before selectors.
1469: I003: To few newlines before selectors.
1474: I003: To few newlines before selectors.
1476: I014: Rule declarations should end indented on a single new line.
1477: I003: To few newlines before selectors.
1481: I003: To few newlines before selectors.
1484: I003: To few newlines before selectors.
1487: I003: To few newlines before selectors.
1490: I003: To few newlines before selectors.
1494: I003: To few newlines before selectors.
1494: I004: Selector must be on a new line.
1495: I004: Selector must be on a new line.
1495: I004: Selector must be on a new line.
1498: I003: To few newlines before selectors.
1502: I003: To few newlines before selectors.
1503: I008: Each declaration must be indented with 4 spaces.
1509: I003: To few newlines before selectors.
1513: I003: To few newlines before selectors.
1519: I003: To few newlines before selectors.
1524: I002: To many newlines before selectors.
1529: I008: Each declaration must be indented with 4 spaces.
1535: I014: Rule declarations should end indented on a single new line.
1540: I003: To few newlines before selectors.
1541: I008: Each declaration must be indented with 4 spaces.
1550: I003: To few newlines before selectors.
1553: I003: To few newlines before selectors.
1558: I003: To few newlines before selectors.
1562: I003: To few newlines before selectors.
1567: I003: To few newlines before selectors.
1571: I003: To few newlines before selectors.
1577: I002: To many newlines before selectors.
1584: I003: To few newlines before selectors.
1588: I003: To few newlines before selectors.
1590: I009: Wrong separator on property: value pair.
1592: I014: Rule declarations should end indented on a single new line.
1595: I002: To many newlines before selectors.
1598: I003: To few newlines before selectors.
1602: I003: To few newlines before selectors.
1606: I003: To few newlines before selectors.
1609: I003: To few newlines before selectors.
1612: I003: To few newlines before selectors.
1617: I002: To many newlines before selectors.
1617: I004: Selector must be on a new line.
1620: I003: To few newlines before selectors.
1620: I004: Selector must be on a new line.
1621: I004: Selector must be on a new line.
1624: I003: To few newlines before selectors.
1624: I004: Selector must be on a new line.
1625: I004: Selector must be on a new line.
1628: I003: To few newlines before selectors.
1628: I004: Selector must be on a new line.
1631: I003: To few newlines before selectors.
1631: I004: Selector must be on a new line.
1632: I004: Selector must be on a new line.
1633: I004: Selector must be on a new line.
1634: I004: Selector must be on a new line.
1637: I003: To few newlines before selectors.
1637: I004: Selector must be on a new line.
1640: I003: To few newlines before selectors.
1640: I004: Selector must be on a new line.
1643: I003: To few newlines before selectors.
1643: I004: Selector must be on a new line.
1644: I004: Selector must be on a new line.
1647: I003: To few newlines before selectors.
1647: I004: Selector must be on a new line.
1648: I004: Selector must be on a new line.
1651: I003: To few newlines before selectors.
1651: I004: Selector must be on a new line.
1652: I004: Selector must be on a new line.
1653: I004: Selector must be on a new line.
1656: I003: To few newlines before selectors.
1656: I004: Selector must be on a new line.
1657: I004: Selector must be on a new line.
1660: I003: To few newlines before selectors.
1660: I004: Selector must be on a new line.
1663: I003: To few newlines before selectors.
1663: I004: Selector must be on a new line.
1666: I003: To few newlines before selectors.
1666: I004: Selector must be on a new line.
1669: I003: To few newlines before selectors.
1669: I004: Selector must be on a new line.
1672: I003: To few newlines before selectors.
1672: I004: Selector must be on a new line.
1673: I004: Selector must be on a new line.
1678: I002: To many newlines before selectors.
1681: I003: To few newlines before selectors.
1681: I004: Selector must be on a new line.
1684: I003: To few newlines before selectors.
1684: I004: Selector must be on a new line.
1685: I004: Selector must be on a new line.
1688: I003: To few newlines before selectors.
1688: I004: Selector must be on a new line.
1691: I003: To few newlines before selectors.
1691: I004: Selector must be on a new line.
1694: I003: To few newlines before selectors.
1694: I004: Selector must be on a new line.
1697: I003: To few newlines before selectors.
1697: I004: Selector must be on a new line.
1700: I003: To few newlines before selectors.
1700: I004: Selector must be on a new line.
1701: I004: Selector must be on a new line.
1704: I003: To few newlines before selectors.
1704: I004: Selector must be on a new line.
1707: I003: To few newlines before selectors.
1707: I004: Selector must be on a new line.
1710: I003: To few newlines before selectors.
1710: I004: Selector must be on a new line.
1713: I003: To few newlines before selectors.
1713: I004: Selector must be on a new line.
1716: I003: To few newlines before selectors.
1716: I004: Selector must be on a new line.
1719: I003: To few newlines before selectors.
1719: I004: Selector must be on a new line.
1722: I003: To few newlines before selectors.
1722: I004: Selector must be on a new line.
1725: I003: To few newlines before selectors.
1728: I014: Rule declarations should end indented on a single new line.
1728: I003: To few newlines before selectors.
1733: I002: To many newlines before selectors.
1736: I014: Rule declarations should end indented on a single new line.
1736: I003: To few newlines before selectors.
1739: I003: To few newlines before selectors.
1739: I004: Selector must be on a new line.
1742: I003: To few newlines before selectors.
1745: I003: To few newlines before selectors.
1748: I003: To few newlines before selectors.
1748: I004: Selector must be on a new line.
1751: I003: To few newlines before selectors.
1751: I004: Selector must be on a new line.
1754: I003: To few newlines before selectors.
1754: I004: Selector must be on a new line.
1757: I003: To few newlines before selectors.
1757: I004: Selector must be on a new line.
1758: I004: Selector must be on a new line.
1761: I003: To few newlines before selectors.
1761: I004: Selector must be on a new line.
1764: I003: To few newlines before selectors.
1767: I003: To few newlines before selectors.
1770: I003: To few newlines before selectors.
1774: I003: To few newlines before selectors.
1777: I003: To few newlines before selectors.
1780: I003: To few newlines before selectors.
1780: I004: Selector must be on a new line.
1783: I003: To few newlines before selectors.
1783: I004: Selector must be on a new line.
1786: I003: To few newlines before selectors.
1786: I004: Selector must be on a new line.
1787: I004: Selector must be on a new line.
1790: I003: To few newlines before selectors.
1790: I004: Selector must be on a new line.
1791: I004: Selector must be on a new line.
1794: I003: To few newlines before selectors.
1794: I004: Selector must be on a new line.
1797: I003: To few newlines before selectors.
1797: I004: Selector must be on a new line.
1800: I003: To few newlines before selectors.
1803: I003: To few newlines before selectors.
1806: I003: To few newlines before selectors.
1813: I002: To many newlines before selectors.
1817: I003: To few newlines before selectors.
1821: I003: To few newlines before selectors.
1825: I003: To few newlines before selectors.
1829: I003: To few newlines before selectors.
1833: I003: To few newlines before selectors.
1837: I003: To few newlines before selectors.
1844: I002: To many newlines before selectors.
1851: I003: To few newlines before selectors.
1854: I003: To few newlines before selectors.
1858: I003: To few newlines before selectors.
1861: I003: To few newlines before selectors.
1864: I003: To few newlines before selectors.
1867: I003: To few newlines before selectors.
1870: I003: To few newlines before selectors.
1879: I002: To many newlines before selectors.
1883: I004: Selector must be on a new line.
1883: I004: Selector must be on a new line.
1886: I003: To few newlines before selectors.
1886: I004: Selector must be on a new line.
1887: I004: Selector must be on a new line.
1887: I004: Selector must be on a new line.
1890: I003: To few newlines before selectors.
1893: I003: To few newlines before selectors.
1896: I003: To few newlines before selectors.
1899: I003: To few newlines before selectors.
1902: I003: To few newlines before selectors.
1905: I003: To few newlines before selectors.
1908: I003: To few newlines before selectors.
1911: I003: To few newlines before selectors.
1929: I002: To many newlines before selectors.
1937: I003: To few newlines before selectors.
1940: I003: To few newlines before selectors.
1940: I004: Selector must be on a new line.
1940: I004: Selector must be on a new line.
1943: I003: To few newlines before selectors.
1948: I003: To few newlines before selectors.
1951: I003: To few newlines before selectors.
1956: I003: To few newlines before selectors.
1960: I003: To few newlines before selectors.
1961: I008: Each declaration must be indented with 4 spaces.
1971: I003: To few newlines before selectors.
1974: I003: To few newlines before selectors.
1975: I008: Each declaration must be indented with 4 spaces.
1983: I003: To few newlines before selectors.
1984: I008: Each declaration must be indented with 4 spaces.
2001: I003: To few newlines before selectors.
2006: I003: To few newlines before selectors.
2011: I003: To few newlines before selectors.
2014: I003: To few newlines before selectors.
2025: I003: To few newlines before selectors.
2028: I003: To few newlines before selectors.
2048: I003: To few newlines before selectors.
2056: I003: To few newlines before selectors.
2056: I004: Selector must be on a new line.
2060: I003: To few newlines before selectors.
2069: I003: To few newlines before selectors.
2081: I002: To many newlines before selectors.
2091: I003: To few newlines before selectors.
2097: I002: To many newlines before selectors.
2103: I003: To few newlines before selectors.
2109: I002: To many newlines before selectors.
2117: I003: To few newlines before selectors.
2117: I004: Selector must be on a new line.
2120: I003: To few newlines before selectors.
2121: I008: Each declaration must be indented with 4 spaces.
2128: I003: To few newlines before selectors.
2131: I003: To few newlines before selectors.
2134: I003: To few newlines before selectors.
2137: I003: To few newlines before selectors.
2140: I003: To few newlines before selectors.
2148: I014: Rule declarations should end indented on a single new line.
2149: I003: To few newlines before selectors.
2154: I003: To few newlines before selectors.
2159: I003: To few newlines before selectors.
2171: I003: To few newlines before selectors.
2175: I003: To few newlines before selectors.
2175: I004: Selector must be on a new line.
2182: I002: To many newlines before selectors.
2189: I003: To few newlines before selectors.
2194: I003: To few newlines before selectors.
2198: I003: To few newlines before selectors.
2202: I003: To few newlines before selectors.
2206: I003: To few newlines before selectors.
2220: I003: To few newlines before selectors.
2225: I003: To few newlines before selectors.
2230: I003: To few newlines before selectors.
2248: I002: To many newlines before selectors.
2258: I003: To few newlines before selectors.
2261: I003: To few newlines before selectors.
2264: I003: To few newlines before selectors.
2274: I003: To few newlines before selectors.
2277: I003: To few newlines before selectors.
2292: I003: To few newlines before selectors.
2295: I003: To few newlines before selectors.
--
https://code.launchpad.net/~jtv/launchpad/minilint-4/+merge/80699
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~jtv/launchpad/minilint-4 into lp:launchpad.
=== modified file 'lib/canonical/launchpad/icing/style-3-0.css'
--- lib/canonical/launchpad/icing/style-3-0.css 2011-10-26 03:37:10 +0000
+++ lib/canonical/launchpad/icing/style-3-0.css 2011-10-28 17:12:26 +0000
@@ -59,7 +59,7 @@
-webkit-border-radius: 5px 5px 0 0;
-khtml-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
- height:2em;
+ height: 2em;
}
.footer .lp-arcana img {
vertical-align: middle;
@@ -206,7 +206,7 @@
div.left, div.right {
width: 50%;
}
-div.left, .cves{
+div.left, .cves {
clear: both;
float: left;
}
@@ -344,11 +344,11 @@
padding-left: 1em;
}
ol {
- margin-left: 1.8em;
+ margin-left: 1.8em;
}
ol li {
- list-style: decimal outside;
- }
+ list-style: decimal outside;
+ }
li {
padding-bottom: .3em;
}
@@ -376,7 +376,7 @@
ul.meeting, li.meeting {
list-style-image: url(/@@/meeting);
}
-ul.rss, li.rss {
+ul.rss, li.rss {
list-style-image: url(/@@/rss);
}
ul.translation, li.translation {
@@ -608,7 +608,7 @@
border-style: dotted none none none;
}
table.sortable a.sortheader {
- color:#666;
+ color: #666;
font-weight: bold;
text-decoration: none;
display: block;
@@ -803,7 +803,7 @@
vertical-align: middle;
}
input {
- visibility:inherit;
+ visibility: inherit;
}
input[type=radio] {
margin-left: 1em;
@@ -817,7 +817,7 @@
max-width: 60em;
}
button {
- padding:0;
+ padding: 0;
}
button.overlay-close-button {
float: right;
@@ -1090,7 +1090,7 @@
border: solid #666;
border-width: 1px 2px 2px 1px;
padding: 5px 5px 5px 5px;
- width:44em;
+ width: 44em;
}
.sml-informational::before {
content: url('/@@/info');
@@ -1139,7 +1139,7 @@
These appear to be 3.0 specific.
*/
div.see-all {
- text-align:right;
+ text-align: right;
}
span.nolink {
font-weight: bold;
@@ -1157,11 +1157,11 @@
display: none;
}
.invisible-link {
- display:none;
+ display: none;
}
.invisible {
- left:-9999em;
- display:block;
+ left: -9999em;
+ display: block;
}
.transparent {
opacity: 0;
@@ -1220,7 +1220,6 @@
height: 10px;
}
-
/* =========================
Universal
Header
@@ -1304,7 +1303,7 @@
clear: none;
}
.watermark-apps-portlet li {
- display:inline;
+ display: inline;
list-style-type: none;
}
.watermark-apps-portlet li a, .watermark-apps-portlet li span {
@@ -1355,7 +1354,7 @@
font-size: 10px;
}
.breadcrumbs li {
- display:inline;
+ display: inline;
padding: 0;
}
.breadcrumbs li a {
@@ -1587,9 +1586,9 @@
border: 1px solid #ddd;
}
.lowlight {
- opacity: .5;
- filter: alpha(opacity=50);
- -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+ opacity: .5;
+ filter: alpha(opacity=50);
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
}
@@ -2113,7 +2112,7 @@
ul.latest-ppa-updates li {
padding: 3px;
background-repeat: no-repeat;
- background-position:right center;
+ background-position: right center;
}
table#packages_list tr.superseded, tr.blacklisted {
background-color: #eee;
@@ -2190,7 +2189,7 @@
form.translations div.actions {
padding: 1em;
text-align: left;
- clear:both;
+ clear: both;
}
form.translations input {
padding-left: 0.5em;
@@ -2216,7 +2215,7 @@
* https://translations.launchpad.dev/evolution/trunk/+pots/evolution-2.2/+export
*/
form.translations div.alignment .content {
- float:left;
+ float: left;
}
form.translations div.alignment .selector {
margin-right: 0.5em;
@@ -2257,10 +2256,10 @@
padding-bottom: 1em;
}
table.translation-stats td {
- text-align:center;
+ text-align: center;
}
table.translation-stats td.template-name {
- text-align:left;
+ text-align: left;
}
table.translation-stats tfoot td,
table.translation-stats tfoot th {
@@ -2273,10 +2272,10 @@
font-weight: bold;
}
table.translation-stats tfoot th {
- text-align:left;
+ text-align: left;
}
table.translation-stats tfoot td {
- text-align:center;
+ text-align: center;
}
/* Translations help links.
=== modified file 'lib/canonical/lazr/doc/pidfile.txt'
--- lib/canonical/lazr/doc/pidfile.txt 2011-10-27 04:41:57 +0000
+++ lib/canonical/lazr/doc/pidfile.txt 2011-10-28 17:12:26 +0000
@@ -1,4 +1,5 @@
-= The `pidfile` Module =
+The `pidfile` Module
+====================
The pidfile module allows multiple instances on the same machine to create
pidfiles for the same service names, by using configuration values to
@@ -10,7 +11,8 @@
* `remove_pidfile`
-== `pidfile_path` ==
+`pidfile_path`
+--------------
`pidfile_path` is the key to all four of them. Usually, you simply pass it the
name of a service. It then gets the configured name for the current instance
@@ -36,7 +38,8 @@
This basic mechanism supports the other three functions.
-== `make_pidfile` ==
+`make_pidfile`
+--------------
The `make_pidfile` function writes the current process id to a PID file. For
cleanup, it also includes handlers for Python's `atexit`, signal.SIGINT or
@@ -45,8 +48,8 @@
Note that, if you install your own handlers for the two signals, you will want
to call `remove_pidfile` inside them.
-As a simple demonstration, this subprocess creates a pidfile and checks that the
-correct PID is stored in it.
+As a simple demonstration, this subprocess creates a pidfile and checks that
+the correct PID is stored in it.
>>> import sys, subprocess, os, signal
@@ -83,7 +86,7 @@
... pass'''
>>> def start_process():
... cmd = '%s -c "%s"' % (sys.executable, subprocess_code)
- ... p = subprocess.Popen(cmd, shell=True)
+ ... subprocess.Popen(cmd, shell=True)
... for i in range(100):
... if os.path.exists(pidfile_path('nuts')):
... return int(open(pidfile_path('nuts')).read())
@@ -133,7 +136,8 @@
>>> make_pidfile('nuts')
Traceback (most recent call last):
...
- RuntimeError: PID file /var/tmp/...nuts.pid already exists. Already running?
+ RuntimeError: PID file /var/tmp/...nuts.pid already exists.
+ Already running?
>>> current_SIGINT_handler is signal.getsignal(signal.SIGINT)
True
@@ -143,15 +147,16 @@
Stopped successfully
-== `get_pid` ==
+`get_pid`
+---------
The `get_pid` function returns the PID for the given service as an integer, or
None. It may raise a ValueError if the PID file is corrupt.
-This method should only be needed by service or monitoring scripts. Currently no
-checking is done to ensure that the process is actually running, is healthy, or
-died horribly a while ago and its PID is being used by something else. What we
-have is probably good enough.
+This method should only be needed by service or monitoring scripts. Currently
+no checking is done to ensure that the process is actually running, is
+healthy, or died horribly a while ago and its PID is being used by something
+else. What we have is probably good enough.
>>> get_pid('nuts') is None
True
@@ -182,7 +187,8 @@
>>> os.remove(path)
-== `remove_pidfile` ==
+`remove_pidfile`
+----------------
The `remove_pidfile` function removes the PID file. It should only be needed
if you are overriding the default SIGTERM signal handler.
=== modified file 'lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt'
--- lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt 2011-10-27 13:03:04 +0000
+++ lib/lp/bugs/browser/tests/special/bugs-fixed-elsewhere.txt 2011-10-28 17:12:26 +0000
@@ -1,4 +1,5 @@
-= Bugs Fixed Elsewhere =
+Bugs Fixed Elsewhere
+====================
The +bugtarget-portlet-bugfilters-info view for a distribution or
product contains a property for a URL to a list of bugs fixed
@@ -79,7 +80,8 @@
FIXRELEASED
-== Private Bugs ==
+Private Bugs
+------------
Only bugs that the user has permission to view are included in the count.
We are moving away from allowing private bugs to affect multiple projects.
@@ -120,7 +122,8 @@
2L
-== Duplicate Bugs ==
+Duplicate Bugs
+--------------
Bugs that are duplicate of other bugs aren't included in the count.
@@ -130,7 +133,8 @@
1L
-== Resolved Bugs ==
+Resolved Bugs
+-------------
The count includes only bugs that are open in the current context.
=== modified file 'lib/lp/bugs/model/bugtask.py'
--- lib/lp/bugs/model/bugtask.py 2011-10-27 13:03:04 +0000
+++ lib/lp/bugs/model/bugtask.py 2011-10-28 17:12:26 +0000
@@ -416,7 +416,6 @@
if retarget_existing and len(bug.bugtasks) <= 1:
return
# We can add a target so long as the pillar exists already.
- num_affected_pillars = len(bug.affected_pillars)
if (len(bug.affected_pillars) > 0
and target.pillar not in bug.affected_pillars):
raise IllegalTarget(
=== modified file 'lib/lp/bugs/model/tests/test_bug.py'
--- lib/lp/bugs/model/tests/test_bug.py 2011-10-27 13:03:04 +0000
+++ lib/lp/bugs/model/tests/test_bug.py 2011-10-28 17:12:26 +0000
@@ -7,8 +7,8 @@
datetime,
timedelta,
)
+
from pytz import UTC
-
from storm.store import Store
from testtools.testcase import ExpectedException
from zope.component import getUtility
@@ -21,14 +21,14 @@
BugNotificationLevel,
BugNotificationStatus,
)
-from lp.bugs.model.bugnotification import BugNotificationRecipient
-from lp.bugs.scripts.bugnotification import get_email_notifications
from lp.bugs.interfaces.bugnotification import IBugNotificationSet
from lp.bugs.interfaces.bugtask import BugTaskStatus
from lp.bugs.model.bug import (
BugNotification,
BugSubscriptionInfo,
)
+from lp.bugs.model.bugnotification import BugNotificationRecipient
+from lp.bugs.scripts.bugnotification import get_email_notifications
from lp.registry.interfaces.person import PersonVisibility
from lp.services.features.testing import FeatureFixture
from lp.testing import (
@@ -759,7 +759,8 @@
bug.setPrivacyAndSecurityRelated(
private=False, security_related=True, who=who)
subscribers = bug.getDirectSubscribers()
- self.assertFalse(default_bugtask.pillar.bug_supervisor in subscribers)
+ self.assertNotIn(
+ default_bugtask.pillar.bug_supervisor, subscribers)
expected_recipients = [
default_bugtask.pillar.bug_supervisor,
=== modified file 'lib/lp/bugs/stories/bug-also-affects/xx-also-affects-upstream-private-bug.txt'
--- lib/lp/bugs/stories/bug-also-affects/xx-also-affects-upstream-private-bug.txt 2011-10-27 13:03:04 +0000
+++ lib/lp/bugs/stories/bug-also-affects/xx-also-affects-upstream-private-bug.txt 2011-10-28 17:12:26 +0000
@@ -1,4 +1,5 @@
-= Notification of Confidentiality on Upstream Bugfix Requests =
+Notification of Confidentiality on Upstream Bugfix Requests
+===========================================================
When a user files an upstream bugfix request against a bug that is
confidential but not a security vulnerability, the user will be told that the
@@ -11,7 +12,8 @@
>>> from lp.services.features.testing import FeatureFixture
>>> feature_flag = {
- ... 'disclosure.allow_multipillar_private_bugs.enabled': 'on'}
+ ... 'disclosure.allow_multipillar_private_bugs.enabled': 'on',
+ ... }
>>> privacy_flags = FeatureFixture(feature_flag)
>>> privacy_flags.setUp()
@@ -19,12 +21,15 @@
>>> admin_browser.getControl('Bug Supervisor').value = 'name16'
>>> admin_browser.getControl('Change').click()
- >>> admin_browser.open('http://bugs.launchpad.dev/jokosher/+bug/12/+secrecy')
+ >>> admin_browser.open(
+ ... 'http://bugs.launchpad.dev/jokosher/+bug/12/+secrecy')
>>> admin_browser.getControl(
... 'This bug report should be private').selected = True
>>> admin_browser.getControl('Change').click()
- >>> admin_browser.open('http://bugs.launchpad.dev/jokosher/+bug/12/+choose-affected-product')
+ >>> admin_browser.open(
+ ... 'http://bugs.launchpad.dev/jokosher/+bug/12/'
+ ... '+choose-affected-product')
>>> admin_browser.getControl('Project:').value = 'firefox'
>>> admin_browser.getControl('Continue').click()
=== modified file 'lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt'
--- lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt 2011-10-25 02:12:44 +0000
+++ lib/lp/bugs/stories/bug-also-affects/xx-bug-also-affects.txt 2011-10-28 17:12:26 +0000
@@ -28,10 +28,12 @@
>>> browser.getLink(url='+distrotask').click()
>>> browser.url
'http://bugs.launchpad.dev/ubuntu/+bug/6/+distrotask'
+
>>> browser.getControl('Distribution').value = ['ubuntu']
>>> browser.getControl('Continue').click()
>>> browser.url
'http://bugs.launchpad.dev/ubuntu/+bug/6/+distrotask'
+
>>> print get_feedback_messages(browser.contents)
[u'There is 1 error.',
u'This bug is already on Ubuntu. Please specify an affected package
@@ -81,20 +83,21 @@
u'A fix for this bug has already been requested for evolution in
Ubuntu']
-Now let's add a Debian task to bug 1. Since Debian doesn't use Launchpad,
-we add a bug watch as well.
+Now let's add a Debian task to bug 1. Since Debian doesn't use
+Launchpad, we add a bug watch as well.
>>> browser.open('http://localhost/firefox/+bug/1')
>>> browser.getLink(url='+distrotask').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/1/+distrotask'
+ >>> print browser.url
+ http://bugs.launchpad.dev/firefox/+bug/1/+distrotask
+
>>> browser.getControl(name='field.distribution').value = ['debian']
>>> browser.getControl("Source Package Name").value = "alsa-utils"
>>> browser.getControl('URL').value = (
... 'http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=123')
>>> browser.getControl('Continue').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/debian/+source/alsa-utils/+bug/1'
+ >>> print browser.url
+ http://bugs.launchpad.dev/debian/+source/alsa-utils/+bug/1
If we try to add an Ubuntu task together with a bug watch we get an
error, because Ubuntu uses Launchpad as its bug tracker
@@ -105,8 +108,9 @@
>>> browser.getControl('URL').value = (
... 'https://bugzilla.mozilla.org/show_bug.cgi?id=84')
>>> browser.getControl('Continue').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/debian/+source/alsa-utils/+bug/1/+distrotask'
+ >>> print browser.url
+ http://bugs.launchpad.dev/debian/+source/alsa-utils/+bug/1/+distrotask
+
>>> print get_feedback_messages(browser.contents)
[u'There is 1 error.',
u'Bug watches can not be added for Ubuntu, as it uses Launchpad as
@@ -118,21 +122,22 @@
>>> browser.getControl('URL').value = ''
>>> browser.getControl('Continue').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/ubuntu/+source/alsa-utils/+bug/1'
+ >>> print browser.url
+ http://bugs.launchpad.dev/ubuntu/+source/alsa-utils/+bug/1
It's not possible to change a bugtask to a existing one.
>>> browser.getLink(
... url='ubuntu/+source/mozilla-firefox/+bug/1/+editstatus').click()
- >>> browser.url
- 'http://bugs.../ubuntu/+source/mozilla-firefox/+bug/1/+editstatus'
+ >>> print browser.url
+ http://bugs.../ubuntu/+source/mozilla-firefox/+bug/1/+editstatus
>>> browser.getControl(name="ubuntu_mozilla-firefox.target.package"
... ).value = 'alsa-utils'
>>> browser.getControl('Save Changes').click()
- >>> browser.url
- 'http://bugs.../ubuntu/+source/mozilla-firefox/+bug/1/+editstatus'
+ >>> print browser.url
+ http://bugs.../ubuntu/+source/mozilla-firefox/+bug/1/+editstatus
+
>>> print get_feedback_messages(browser.contents)
[...There is 1 error in the data you entered...
u'A fix for this bug has already been requested for alsa-utils in
@@ -141,8 +146,8 @@
>>> browser.getControl(name="ubuntu_mozilla-firefox.target.package"
... ).value = 'pmount'
>>> browser.getControl('Save Changes').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/ubuntu/+source/pmount/+bug/1'
+ >>> print browser.url
+ http://bugs.launchpad.dev/ubuntu/+source/pmount/+bug/1
We want to make people aware of that they should link bugtasks to bug
watches in order to get automatic status updates. So if we try to add a
@@ -153,13 +158,14 @@
>>> browser.getControl('Distribution').value = ['debian']
>>> browser.getControl('Source Package Name').value = 'pmount'
>>> browser.getControl('Continue').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/ubuntu/+source/pmount/+bug/1/+distrotask'
+ >>> print browser.url
+ http://bugs.launchpad.dev/ubuntu/+source/pmount/+bug/1/+distrotask
+
>>> print get_feedback_messages(browser.contents)
[u"Debian doesn't use Launchpad as its bug tracker. ...]
-The form is shown as well, so it's possible to easily change the
-field values, in order to add a bug watch.
+The form is shown as well, so it's possible to easily change the field
+values, in order to add a bug watch.
>>> browser.getControl('URL') is not None
True
@@ -168,8 +174,9 @@
notification will still be displayed.
>>> browser.getControl('Continue').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/ubuntu/+source/pmount/+bug/1/+distrotask'
+ >>> print browser.url
+ http://bugs.launchpad.dev/ubuntu/+source/pmount/+bug/1/+distrotask
+
>>> print get_feedback_messages(browser.contents)
[u"Debian doesn't use Launchpad as its bug tracker. ...]
@@ -177,8 +184,9 @@
redirected to the bug page.
>>> browser.getControl('Add Anyway').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/debian/+source/pmount/+bug/1'
+ >>> print browser.url
+ http://bugs.launchpad.dev/debian/+source/pmount/+bug/1
+
>>> print browser.contents
<...
...>pmount (Debian)</a>...
@@ -205,38 +213,42 @@
>>> private_bug = firefox.createBug(params)
>>> private_bug.setPrivate(True, current_user())
True
+
>>> logout()
>>> browser.open(canonical_url(private_bug, rootsite='bugs'))
>>> browser.getLink(url='+distrotask').click()
>>> browser.getControl(name='field.distribution').value = ['debian']
>>> browser.getControl('Continue').click()
- >>> browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/16/+distrotask'
+ >>> print browser.url
+ http://bugs.launchpad.dev/firefox/+bug/16/+distrotask
+
>>> print get_feedback_messages(browser.contents)
[u'There is 1 error.',
u'This private bug already affects Mozilla Firefox.
Private bugs cannot affect multiple projects.']
-= Forwarding bugs upstream =
+Forwarding bugs upstream
+========================
The +choose-affected-product page is, in fact, a wizard-like page which
allows the user to select the affected product, specify a remote bug URL
and create the actual bugtask/watch (also creating the bugtracker if
necessary).
-Trying to add an upstream task to a bug on the evolution package in Ubuntu
-will cause the product-selection step to be skipped because the package is
-linked to the evolution upstream product.
+Trying to add an upstream task to a bug on the evolution package in
+Ubuntu will cause the product-selection step to be skipped because the
+package is linked to the evolution upstream product.
>>> user_browser.open(
- ... 'http://launchpad.dev/ubuntu/+source/evolution/+bug/6')
+ ... 'http://launchpad.dev/ubuntu/+source/evolution/+bug/6')
>>> user_browser.getLink(url='+choose-affected-product').click()
>>> user_browser.getControl('Project').value
Traceback (most recent call last):
...
LookupError: label 'Project'
+
>>> user_browser.getControl(name='field.product').value
'evolution'
@@ -244,26 +256,26 @@
product, though.
>>> user_browser.getLink('Choose another project').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/ubuntu/+source/evolution/+bug/6/+choose-affected-product?field.product=evolution'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/ubuntu/+source/evolution/+bug/6/+choose-affected-product?field.product=evolution
>>> user_browser.getControl('Project').value
'evolution'
-Just in case we change our mind, there is a cancel link that points
-back to the bug page:
+Just in case we change our mind, there is a cancel link that points back
+to the bug page:
>>> cancel_link = user_browser.getLink('Cancel')
- >>> cancel_link.url
- 'http://bugs.launchpad.dev/ubuntu/+source/evolution/+bug/6'
+ >>> print cancel_link.url
+ http://bugs.launchpad.dev/ubuntu/+source/evolution/+bug/6
But we'll choose Thunderbird.
>>> user_browser.getControl('Project').value = 'thunderbird'
>>> user_browser.getControl('Continue').click()
-Since Thunderbird doesn't use Launchpad, a form is shown asking for
-bug URLs and suchlike:
+Since Thunderbird doesn't use Launchpad, a form is shown asking for bug
+URLs and suchlike:
>>> from lp.bugs.tests.bug import print_upstream_linking_form
>>> print_upstream_linking_form(user_browser)
@@ -274,8 +286,8 @@
( ) I just want to register that it is upstream right now; I
don't have any way to link it.
-We can just link upstream without a URL to say that this has been
-dealt with, but we can't reference it.
+We can just link upstream without a URL to say that this has been dealt
+with, but we can't reference it.
>>> user_browser.getControl('I just want to register').selected = True
>>> print_upstream_linking_form(user_browser)
@@ -287,57 +299,61 @@
don't have any way to link it.
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/thunderbird/+bug/6'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/thunderbird/+bug/6
Let's add the evolution task as well.
>>> user_browser.open(
- ... 'http://launchpad.dev/ubuntu/+source/evolution/+bug/6')
+ ... 'http://launchpad.dev/ubuntu/+source/evolution/+bug/6')
>>> user_browser.getLink(url='+choose-affected-product').click()
- >>> user_browser.url
- 'http://.../ubuntu/+source/evolution/+bug/6/+choose-affected-product'
+ >>> print user_browser.url
+ http://.../ubuntu/+source/evolution/+bug/6/+choose-affected-product
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/evolution/+bug/6'
-
-== Error messages ==
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/evolution/+bug/6
+
+
+Error messages
+--------------
If we try to add an upstream task without specifying a product:
>>> user_browser.open(
... 'http://launchpad.dev/debian/+source/mozilla-firefox/+bug/3')
>>> user_browser.getLink(url='+choose-affected-product').click()
- >>> user_browser.url
- 'http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product'
+ >>> print user_browser.url
+ http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product
>>> user_browser.getControl('Project').value
''
+
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product'
+ >>> print user_browser.url
+ http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product
We get a nice error message.
>>> print get_feedback_messages(user_browser.contents)
[u'There is 1 error.', u'Required input is missing.']
-If we enter a product name that doesn't exist, we inform the user
-about this and ask him to search for the product.
+If we enter a product name that doesn't exist, we inform the user about
+this and ask him to search for the product.
>>> user_browser.getControl('Project').value = 'no-such-product'
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product'
+ >>> print user_browser.url
+ http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product
+
>>> print get_feedback_messages(user_browser.contents)
[u'There is 1 error.',
u'There is no project in Launchpad named "no-such-product"...]
>>> search_link = user_browser.getLink('search for it')
- >>> search_link.url
- 'http://bugs.launchpad.dev/projects'
+ >>> print search_link.url
+ http://bugs.launchpad.dev/projects
Since we don't restrict the input, the user can write anything, so we
need to make sure that everything is quoted before displaying the input.
@@ -348,17 +364,20 @@
>>> user_browser.getControl('Project').value = 'N\xc3\xb6 Such Product&<>'
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product'
+ >>> print user_browser.url
+ http://.../debian/+source/mozilla-firefox/+bug/3/+choose-affected-product
+
>>> print get_feedback_messages(user_browser.contents)
[u'There is 1 error.',
u'There is no project in Launchpad named "N\xf6 Such Product&<...]
-== Linking to bug watches ==
+
+Linking to bug watches
+----------------------
Now we add an upstream task, while adding this new bugtask we can also
-specify a bug watch. If we inadvertently left some leading or trailing white
-space in the bug URL it will be stripped.
+specify a bug watch. If we inadvertently left some leading or trailing
+white space in the bug URL it will be stripped.
>>> user_browser.open(
... 'http://launchpad.dev/debian/+source/mozilla-firefox/'
@@ -371,12 +390,14 @@
... ' https://bugzilla.mozilla.org/show_bug.cgi?id=1234 ')
>>> user_browser.getControl('Add to Bug Report').click()
-Launchpad redirects to the newly created bugtask page, with a row for the
-new bug watch.
-
- >>> user_browser.url
- 'http://bugs.launchpad.dev/alsa-utils/+bug/3'
- >>> affects_table = find_tags_by_class(user_browser.contents, 'listing')[0]
+Launchpad redirects to the newly created bugtask page, with a row for
+the new bug watch.
+
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/alsa-utils/+bug/3
+
+ >>> affects_table = find_tags_by_class(
+ ... user_browser.contents, 'listing')[0]
>>> target_cell = affects_table.tbody.tr.td
>>> from lp.bugs.tests.bug import print_bug_affects_table
@@ -393,13 +414,13 @@
And now we try to add the same upstream again.
>>> user_browser.getLink(url='+choose-affected-product').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/alsa-utils/+bug/3/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/alsa-utils/+bug/3/+choose-affected-product
>>> user_browser.getControl('Project').value = 'alsa-utils'
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/alsa-utils/+bug/3/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/alsa-utils/+bug/3/+choose-affected-product
We get a nice error message.
@@ -412,38 +433,44 @@
>>> user_browser.getControl('Project').value = 'evolution'
>>> user_browser.getControl('Continue').click()
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/evolution/+bug/3'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/evolution/+bug/3
-But if we try to change it to the target of an existing upstream bugtask,
-our validator springs into action.
+But if we try to change it to the target of an existing upstream
+bugtask, our validator springs into action.
>>> user_browser.getLink(url='evolution/+bug/3/+editstatus').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/evolution/+bug/3/+editstatus'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/evolution/+bug/3/+editstatus
+
>>> user_browser.getControl(name='evolution.target.product').value = (
... 'alsa-utils')
>>> user_browser.getControl('Save Changes').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/evolution/+bug/3/+editstatus'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/evolution/+bug/3/+editstatus
+
>>> print get_feedback_messages(user_browser.contents)
[u'There is 1 error in the data you entered...
u'A fix for this bug has already been requested for alsa-utils']
-= Adding bugtask with bug watch =
-
-
-== HTTP & HTTPS URLs ==
+
+Adding bugtask with bug watch
+=============================
+
+
+HTTP & HTTPS URLs
+-----------------
When adding a bug watch together with a new bugtask, you have to enter
the URL of the remote bug.
>>> user_browser.open(
- ... 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product')
+ ... 'http://bugs.launchpad.dev/firefox/+bug/4/'
+ ... '+choose-affected-product')
>>> user_browser.getControl('Project').value = 'gnome-terminal'
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product
>>> user_browser.getControl('I have the URL').selected = True
>>> user_browser.getControl(name='field.bug_url').value = (
@@ -453,40 +480,43 @@
that points back to the bug page:
>>> cancel_link = user_browser.getLink('Cancel')
- >>> cancel_link.url
- 'http://bugs.launchpad.dev/firefox/+bug/4'
+ >>> print cancel_link.url
+ http://bugs.launchpad.dev/firefox/+bug/4
But we're happy, so we add the bug watch.
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/gnome-terminal/+bug/4'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/gnome-terminal/+bug/4
- >>> bug_watches = find_portlet(user_browser.contents, 'Remote bug watches')
+ >>> bug_watches = find_portlet(
+ ... user_browser.contents, 'Remote bug watches')
>>> for li in bug_watches('li'):
... print li.findAll('a')[0].renderContents()
gnome-bugzilla #42
-It's possible to supply an HTTPS URL, even though the bug tracker's
-base URL is HTTP.
+It's possible to supply an HTTPS URL, even though the bug tracker's base
+URL is HTTP.
>>> user_browser.open(
- ... 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product')
+ ... 'http://bugs.launchpad.dev/firefox/+bug/4/'
+ ... '+choose-affected-product')
>>> user_browser.getControl('Project').value = 'netapplet'
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product
>>> user_browser.getControl('I have the URL').selected = True
>>> user_browser.getControl(name='field.bug_url').value = (
... u'https://bugzilla.gnome.org/bugs/show_bug.cgi?id=84')
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/netapplet/+bug/4'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/netapplet/+bug/4
The URL was automatically converted to HTTP:
- >>> bug_watches = find_portlet(user_browser.contents, 'Remote bug watches')
+ >>> bug_watches = find_portlet(
+ ... user_browser.contents, 'Remote bug watches')
>>> for li in bug_watches('li'):
... print li.findAll('a')[0]['href']
http://bugzilla.gnome.org/bugs/show_bug.cgi?id=42
@@ -496,18 +526,19 @@
tracker type it is), an error message is displayed.
>>> user_browser.open(
- ... 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product')
+ ... 'http://bugs.launchpad.dev/firefox/+bug/4/'
+ ... '+choose-affected-product')
>>> user_browser.getControl('Project').value = 'alsa-utils'
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product
>>> user_browser.getControl('I have the URL').selected = True
>>> user_browser.getControl(name='field.bug_url').value = (
... u'http://bugs.unknown/42')
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product
>>> for message in find_tags_by_class(user_browser.contents, 'message'):
... print message.renderContents()
@@ -521,8 +552,8 @@
>>> user_browser.getControl(name='field.bug_url').value = (
... u"http://new.trac/ticket/42")
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product
>>> print get_feedback_messages(user_browser.contents)[0]
The bug tracker with the given URL is not registered in Launchpad.
@@ -531,48 +562,51 @@
As before, if we change our mind, we can back out if we want.
>>> cancel_link = user_browser.getLink('Cancel')
- >>> cancel_link.url
- 'http://bugs.launchpad.dev/firefox/+bug/4'
+ >>> print cancel_link.url
+ http://bugs.launchpad.dev/firefox/+bug/4
-Now the user confirms he wants us to register the bug tracker for him and we
-do that before creating the new bug watch.
+Now the user confirms he wants us to register the bug tracker for him
+and we do that before creating the new bug watch.
>>> user_browser.getControl('Register Bug Tracker').click()
The bug watch is linked, and we're redirected to the bug's page.
- >>> user_browser.url
- 'http://bugs.launchpad.dev/alsa-utils/+bug/4'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/alsa-utils/+bug/4
The bug tracker and bug watch were added. We can see that the bugtracker
has a special name, starting with 'auto-', to indicate that it was
registered automatically.
- >>> bug_watches = find_portlet(user_browser.contents, 'Remote bug watches')
+ >>> bug_watches = find_portlet(
+ ... user_browser.contents, 'Remote bug watches')
>>> for li in bug_watches('li'):
... print li.findAll('a')[0].renderContents()
gnome-bugzilla #42
gnome-bugzilla #84
auto-new.trac #42
-If the user does not specify the base url's schema at all, we complete it
-to HTTP on their behalf:
+If the user does not specify the base url's schema at all, we complete
+it to HTTP on their behalf:
>>> user_browser.open(
- ... 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product')
+ ... 'http://bugs.launchpad.dev/firefox/+bug/4/'
+ ... '+choose-affected-product')
>>> user_browser.getControl('Project').value = 'thunderbird'
>>> user_browser.getControl('Continue').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/firefox/+bug/4/+choose-affected-product
>>> user_browser.getControl('I have the URL').selected = True
>>> user_browser.getControl(name='field.bug_url').value = (
... u'bugzilla.gnome.org/bugs/show_bug.cgi?id=168')
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/thunderbird/+bug/4'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/thunderbird/+bug/4
- >>> bug_watches = find_portlet(user_browser.contents, 'Remote bug watches')
+ >>> bug_watches = find_portlet(
+ ... user_browser.contents, 'Remote bug watches')
>>> for li in bug_watches('li'):
... print li.findAll('a')[0]['href']
http://bugzilla.gnome.org/bugs/show_bug.cgi?id=168
@@ -581,13 +615,14 @@
http://new.trac/ticket/42
-== Email Addresses ==
+Email Addresses
+---------------
Similar things happen when the upstream link is an email address:
>>> user_browser.open(
- ... 'http://bugs.launchpad.dev/jokosher/+bug/12/'
- ... '+choose-affected-product')
+ ... 'http://bugs.launchpad.dev/jokosher/+bug/12/'
+ ... '+choose-affected-product')
>>> user_browser.getControl('Project').value = 'gnome-terminal'
>>> user_browser.getControl('Continue').click()
@@ -609,8 +644,8 @@
confirmation.
>>> user_browser.getControl('Add to Bug Report').click()
- >>> user_browser.url
- 'http://bugs.launchpad.dev/gnome-terminal/+bug/12'
+ >>> print user_browser.url
+ http://bugs.launchpad.dev/gnome-terminal/+bug/12
>>> def print_remote_bug_watches_portlet(browser):
... bug_watches = find_portlet(
@@ -655,8 +690,8 @@
... 'mailto:dark-master-o-bugs@xxxxxxxxxxxxxxxx')
3
-To evade harvesting, the email address above is obfuscated if you're
-not logged in.
+To evade harvesting, the email address above is obfuscated if you're not
+logged in.
>>> anon_browser.open(user_browser.url)
>>> print_remote_bug_watches_portlet(anon_browser)