]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 601519 - Test pronouns (like %user%, %reporter%, etc.) in xt/search.t
authorMax Kanat-Alexander <mkanat@bugzilla.org>
Sun, 3 Oct 2010 23:35:35 +0000 (16:35 -0700)
committerMax Kanat-Alexander <mkanat@bugzilla.org>
Sun, 3 Oct 2010 23:35:35 +0000 (16:35 -0700)
r=mkanat, a=mkanat (module owner)

xt/lib/Bugzilla/Test/Search.pm
xt/lib/Bugzilla/Test/Search/Constants.pm
xt/lib/Bugzilla/Test/Search/FieldTest.pm

index 5137302b71c96424be04c81a8266c626d136c2f6..02ff48a80b0dc9d574d42ce7562c6a32c00db5bd 100644 (file)
@@ -592,6 +592,7 @@ sub _create_one_bug {
     my $update_alias = $self->bug_update_value($number, 'alias');
     
     # Otherwise, make bug 6 a clone of bug 1.
+    my $real_number = $number;
     $number = 1 if $number == 6;
     
     my $reporter = $self->bug_create_value($number, 'reporter');
@@ -689,9 +690,14 @@ sub _create_one_bug {
         $update_params{groups} = { add => $update_params{groups},
                                    remove => $bug->groups_in };
         my @cc_remove = map { $_->login } @{ $bug->cc_users };
-        my $cc_add = $update_params{cc};
-        $cc_add = [$cc_add] if !ref $cc_add;
-        $update_params{cc} = { add => $cc_add, remove => \@cc_remove };
+        my $cc_new = $update_params{cc};
+        my @cc_add = ref($cc_new) ? @$cc_new : ($cc_new);
+        # We make the admin an explicit CC on bug 1 (but not on bug 6), so
+        # that we can test the %user% pronoun properly.
+        if ($real_number == 1) {
+            push(@cc_add, $self->admin->login);
+        }
+        $update_params{cc} = { add => \@cc_add, remove => \@cc_remove };
         my $see_also_remove = $bug->see_also;
         my $see_also_add = [$update_params{see_also}];
         $update_params{see_also} = { add => $see_also_add, 
index e001ad6a5c5a7dc98572fdc9cf266ecf7bc185d5..aeb392c700aacdc7f2d8817190901143e9ce073f 100644 (file)
@@ -336,6 +336,9 @@ use constant CHANGED_VALUE_BROKEN => (
 # while the other fails. In this case, we have a special override for
 # "operator-value", which uniquely identifies tests.
 use constant KNOWN_BROKEN => {
+    "equals-%group.<1-bug_group>%" => {
+        commenter => { contains => [1,2,3,4,5] },
+    },
     notequals    => { NEGATIVE_BROKEN },
     notsubstring => { NEGATIVE_BROKEN },
     notregexp    => { NEGATIVE_BROKEN },
@@ -1262,6 +1265,7 @@ use constant SPECIAL_PARAM_TESTS => (
     { field => 'resolution', operator => 'anyexact', value => '---',
       contains => [5] },
     
+    # email* query parameters.
     { field => 'assigned_to', operator => 'anyexact',
       value => '<1>, <2-reporter>', contains => [1,2],
       extra_params => { emailreporter1 => 1 } },
@@ -1270,7 +1274,28 @@ use constant SPECIAL_PARAM_TESTS => (
       extra_params => {
           email2 => generate_random_password(100), emaillongdesc2 => 1,
       },
-    }
+    },
+    
+    # standard pronouns
+    { field => 'assigned_to', operator => 'equals', value => '%assignee%',
+      contains => [1,2,3,4,5] },
+    { field => 'reporter', operator => 'equals', value => '%reporter%',
+      contains => [1,2,3,4,5] },
+    { field => 'qa_contact', operator => 'equals', value => '%qacontact%',
+      contains => [1,2,3,4,5] },
+    { field => 'cc', operator => 'equals', value => '%user%',
+      contains => [1] },
+    # group pronouns
+    { field => 'reporter', operator => 'equals',
+      value => '%group.<1-bug_group>%', contains => [1,2,3,4,5] },
+    { field => 'assigned_to', operator => 'equals',
+      value => '%group.<1-bug_group>%', contains => [1,2,3,4,5] },
+    { field => 'qa_contact', operator => 'equals',
+      value => '%group.<1-bug_group>%', contains => [1,2,3,4] },
+    { field => 'cc', operator => 'equals',
+      value => '%group.<1-bug_group>%', contains => [1,2,3,4] },
+    { field => 'commenter', operator => 'equals',
+      value => '%group.<1-bug_group>%', contains => [1,2,3,4,5] },
 );
 
 1;
index f73facb19945b1bfa03f505825e5e8b752eeb406..3e7fd2521d5d4773910a2cc385821b8f73f03ef9 100644 (file)
@@ -431,7 +431,13 @@ sub _translate_value_for_bug {
     $value =~ s/<$number-delta>/$bug_delta/g;
     my $reporter = $bug->reporter->login;
     $value =~ s/<$number-reporter>/$reporter/g;
-
+    if ($value =~ /<$number-bug_group>/) {
+        my @bug_groups = map { $_->name } @{ $bug->groups_in };
+        @bug_groups = grep { $_ =~ /^\d+-group-/ } @bug_groups;
+        my $group = $bug_groups[0];
+        $value =~ s/<$number-bug_group>/$group/g;
+    }
+    
     my @bug_values = $self->bug_values($number);    
     return $value if !@bug_values;