← Back to team overview

ubuntu-bugcontrol team mailing list archive

[Merge] lp:~roignac/apport/bugpattern-check_for_duplicates into lp:~ubuntu-bugcontrol/apport/ubuntu-bugpatterns

 

Vadim Rutkovsky has proposed merging lp:~roignac/apport/bugpattern-check_for_duplicates into lp:~ubuntu-bugcontrol/apport/ubuntu-bugpatterns.

Requested reviews:
  Ubuntu Bug Control (ubuntu-bugcontrol)

For more details, see:
https://code.launchpad.net/~roignac/apport/bugpattern-check_for_duplicates/+merge/74391

test-local now checks that duplicate issues also match the pattern.
Maybe this should be optional?
-- 
https://code.launchpad.net/~roignac/apport/bugpattern-check_for_duplicates/+merge/74391
Your team Ubuntu Bug Control is requested to review the proposed merge of lp:~roignac/apport/bugpattern-check_for_duplicates into lp:~ubuntu-bugcontrol/apport/ubuntu-bugpatterns.
=== modified file 'test-local'
--- test-local	2011-07-07 23:29:01 +0000
+++ test-local	2011-09-07 10:58:29 +0000
@@ -4,16 +4,26 @@
 
 import apport
 from apport.crashdb import get_crashdb
+from launchpadlib.launchpad import Launchpad
+
+def match_bug(bugnumber):
+    db = get_crashdb(None)
+    report = db.download(bugnumber)
+    match = report.search_bug_patterns('bugpatterns.xml')
+    
+    if match:
+        print 'LP: #%s: Matched bug pattern: %s' % (bugnumber, match )
+    else:
+        print 'LP: #%s: No match' % sys.argv[1]
+        sys.exit(1)
+
+lp = Launchpad.login_anonymously('apport', 'production')
 
 if len(sys.argv) != 2:
     print >> sys.stderr, 'Usage: %s <.crash file or bug number>' % sys.argv[0]
     sys.exit(1)
 
-if sys.argv[1].isdigit():
-    db = get_crashdb(None)
-    report = db.download(sys.argv[1])
-    #report.write(open('/tmp/report.crash', 'w'))
-else:
+if not sys.argv[1].isdigit():
     report = apport.Report()
     try:
         f = open(sys.argv[1])
@@ -22,12 +32,24 @@
         sys.exit(1)
     report.load(f)
     f.close()
-
-match = report.search_bug_patterns('bugpatterns.xml')
-
-if match:
-    print 'LP: #%s: Matched bug pattern: %s' % ( sys.argv[1], match )
+    match = report.search_bug_patterns('bugpatterns.xml')
+
+    if match:
+        print 'LP: #%s: Matched bug pattern: %s' % ( sys.argv[1], match )
+        sys.exit(0)
+    else:
+        print 'LP: #%s: No match' % sys.argv[1]
+        sys.exit(1)
+else:
+    match_bug(sys.argv[1])
+      
+    bug = lp.bugs[sys.argv[1]]
+    # if bug is a duplicate - call this for parent
+    if bug.duplicate_of:
+        match_bug(bug.duplicate_of.id)
+    if bug.duplicates.total_size:
+        print "Checking duplicate bugs.."
+        for duplicate in bug.duplicates:
+            match_bug(duplicate.id)
+
     sys.exit(0)
-else:
-    print 'LP: #%s: No match' % sys.argv[1]
-    sys.exit(1)