[Rt-commit] rt branch, 4.2/multi-value-cf-in-rest, repushed

Alex Vandiver alexmv at bestpractical.com
Mon Feb 2 21:55:59 EST 2015


The branch 4.2/multi-value-cf-in-rest was deleted and repushed:
       was ce0a194ec583c4d5bc0fd08149283e88e758b8be
       now 82a0d98af204af4062d0d7118035f09a0d27c6a7

1:  887bdc6 ! 1:  eebb44a Add (failing) tests for escaping
    @@ -7,7 +7,7 @@
     +++ b/t/web/command_line.t
     @@
      expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    - expect_like(qr/CF\.{MultipleCF$$}: '1,2\\'s,3'/i, 'Verified change');
    + expect_like(qr/\QCF.{MultipleCF$$}\E: '1,2\\'s,3'/i, 'Verified change');
      
     +# Test escaping of quotes - generate (foo)(bar') with no escapes
     +my $ticket = RT::Ticket->new($RT::SystemUser);
2:  d9d923b ! 2:  4a7e19c Update the tests to be more thorough
    @@ -8,24 +8,24 @@
     @@
      expect_like(qr/Ticket $ticket_id updated/, 'Changed cf');
      expect_send("show ticket/$ticket_id -f CF-myCF$$", 'Checking new value');
    - expect_like(qr/CF\.{myCF$$}: 1,2,3/i, 'Verified change');
    + expect_like(qr/\QCF.{myCF$$}\E: 1,2,3/i, 'Verified change');
     -expect_send("edit ticket/$ticket_id set CF-myCF$$=\"1's,2,3\"", 'Changing CF...');
     +expect_send(qq{edit ticket/$ticket_id set CF-myCF$$="1's,2,3"}, 'Changing CF...');
      expect_like(qr/Ticket $ticket_id updated/, 'Changed cf');
      expect_send("show ticket/$ticket_id -f CF-myCF$$", 'Checking new value');
    - expect_like(qr/CF\.{myCF$$}: 1's,2,3/i, 'Verified change');
    + expect_like(qr/\QCF.{myCF$$}\E: 1's,2,3/i, 'Verified change');
     @@
      expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    - expect_like(qr/CF\.{MultipleCF$$}: b,\s*c,\s*o/i, 'Verified multiple cf change');
    + expect_like(qr/\QCF.{MultipleCF$$}\E: b,\s*c,\s*o/i, 'Verified multiple cf change');
      
     -expect_send("edit ticket/$ticket_id set CF.{MultipleCF$$}=\"'a,b,c'\" ", 'Changing CF...');
     -expect_like(qr/Ticket $ticket_id updated/, 'Changed multiple cf');
     -expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    --expect_like(qr/CF\.{MultipleCF$$}: 'a,b,c'/i, 'Verified change');
    +-expect_like(qr/\QCF.{MultipleCF$$}\E: 'a,b,c'/i, 'Verified change');
     -expect_send("edit ticket/$ticket_id del CF.{MultipleCF$$}=a", 'Changing CF...');
     -expect_like(qr/Ticket $ticket_id updated/, 'Changed multiple cf');
     -expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    --expect_like(qr/CF\.{MultipleCF$$}: 'a,b,c'/i, 'Verified change');
    +-expect_like(qr/\QCF.{MultipleCF$$}\E: 'a,b,c'/i, 'Verified change');
     +sub multi_round_trip {
     +    my ($op, $value, $regex) = @_;
     +    $Test::Builder::Level++;
    @@ -38,28 +38,32 @@
     +    expect_send(qq{edit ticket/$ticket_id $op CF.{MultipleCF$$}="$quoted"}, qq{CF $op $value});
     +    expect_like(qr/Ticket $ticket_id updated/,                              qq{Got expected "updated" answer});
     +    expect_send(qq{show ticket/$ticket_id -f CF.{MultipleCF$$}},            qq{Sent "show"});
    -+    expect_like(qr/CF\.{MultipleCF$$}: $regex$/i,                           qq{Answer matches $regex});
    ++    expect_like(qr/\QCF.{MultipleCF$$}\E: $regex$/i,                        qq{Answer matches $regex});
     +}
      
     -expect_send("edit ticket/$ticket_id set CF.{MultipleCF$$}=q{a,b,c}", 'Changing CF...');
     -expect_like(qr/Ticket $ticket_id updated/, 'Changed multiple cf');
     -expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    --expect_like(qr/CF\.{MultipleCF$$}: 'a,b,c'/i, 'Verified change');
    +-expect_like(qr/\QCF.{MultipleCF$$}\E: 'a,b,c'/i, 'Verified change');
     -expect_send("edit ticket/$ticket_id del CF.{MultipleCF$$}=a", 'Changing CF...');
     -expect_like(qr/Ticket $ticket_id updated/, 'Changed multiple cf');
     -expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    --expect_like(qr/CF\.{MultipleCF$$}: 'a,b,c'/i, 'Verified change');
    +-expect_like(qr/\QCF.{MultipleCF$$}\E: 'a,b,c'/i, 'Verified change');
     -expect_send("edit ticket/$ticket_id del CF.{MultipleCF$$}=\"'a,b,c'\"", 'Changing CF...');
     -expect_like(qr/Ticket $ticket_id updated/, 'Changed multiple cf');
     -expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    --expect_like(qr/CF\.{MultipleCF$$}: \s*$/i, 'Verified change');
    +-expect_like(qr/\QCF.{MultipleCF$$}\E: \s*$/i, 'Verified change');
     +# Test simple quoting
     +my $ticket = RT::Ticket->new($RT::SystemUser);
     +$ticket->Load($ticket_id);
     +multi_round_trip(set => q|'a,b,c'|,  qr/'a,b,c'/);
     +is($ticket->CustomFieldValues("MultipleCF$$")->Count, 1,     "Has only one CF value");
     +is($ticket->FirstCustomFieldValue("MultipleCF$$"), q{a,b,c}, "And that CF value is as expected");
    -+
    + 
    +-expect_send("edit ticket/$ticket_id set CF.{MultipleCF$$}=\"q{1,2's,3}\"", 'Changing CF...');
    +-expect_like(qr/Ticket $ticket_id updated/, 'Changed multiple cf');
    +-expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    +-expect_like(qr/\QCF.{MultipleCF$$}\E: '1,2\\'s,3'/i, 'Verified change');
     +multi_round_trip(del => q|a|,        qr/'a,b,c'/);
     +is($ticket->CustomFieldValues("MultipleCF$$")->Count, 1,     "Still has only one CF value");
     +is($ticket->FirstCustomFieldValue("MultipleCF$$"), q{a,b,c}, "And that CF value is as expected");
    @@ -81,11 +85,6 @@
     +
     +multi_round_trip(del => q|q{1,2's,3}|, qr/\s*/);
     +is($ticket->CustomFieldValues("MultipleCF$$")->Count, 0, "Now has no CF values");
    - 
    --expect_send("edit ticket/$ticket_id set CF.{MultipleCF$$}=\"q{1,2's,3}\"", 'Changing CF...');
    --expect_like(qr/Ticket $ticket_id updated/, 'Changed multiple cf');
    --expect_send("show ticket/$ticket_id -f CF.{MultipleCF$$}", 'Checking new value');
    --expect_like(qr/CF\.{MultipleCF$$}: '1,2\\'s,3'/i, 'Verified change');
      
      # Test escaping of quotes - generate (foo)(bar') with no escapes
     -my $ticket = RT::Ticket->new($RT::SystemUser);
3:  24dac2e = 3:  8da086c Compare base64 versions of the data, soas to not spew binary data on failure
4:  dec993f = 4:  a4ce86f Only escape the output if we're going to quote it
5:  8a2cce9 = 5:  577ecd5 Note that the vsplit code is duplicated
6:  f3530b9 ! 6:  3355b94 Move to a regex-based quoting parser for vsplit
    @@ -32,15 +32,15 @@
     -                }
     -                push @words, $s;
     -            }
    --            elsif ( $a =~ /^q{/ ) {
    +-            elsif ( $a =~ /^q\{/ ) {
     -                my $s = $a;
    --                while ( $a !~ /}$/ ) {
    +-                while ( $a !~ /\}$/ ) {
     -                    ( $a, $b ) =
     -                      split /\s*,\s*/, $b, 2;
     -                    $s .= ',' . $a;
     -                }
    --                $s =~ s/^q{/'/;
    --                $s =~ s/}/'/;
    +-                $s =~ s/^q\{/'/;
    +-                $s =~ s/\}/'/;
     -                push @words, $s;
     +    my ($val, $strip) = @_;
     +    my @words;
    @@ -57,9 +57,9 @@
     +                           (')   # Single-quoted string
     +                           ((?>[^\\']*(?:\\.[^\\']*)*))'
     +                       |
    -+                           q{(.*?)}  # A perl-ish q{} string; this does
    -+                                     # no paren balancing, however, and
    -+                                     # only exists for back-compat
    ++                           q\{(.*?)\} # A perl-ish q{} string; this does
    ++                                      # no paren balancing, however, and
    ++                                      # only exists for back-compat
     +                       |
     +                           (.*?)     # Anything else, until the next comma
     +                       )
    @@ -187,14 +187,14 @@
     -                            $s =~ s/\\'/'/g;
     -                            push @new, $s;
     -                        }
    --                        elsif ( $a =~ /^q{/ ) {
    +-                        elsif ( $a =~ /^q\{/ ) {
     -                            my $s = $a;
    --                            while ( $a !~ /}$/ ) {
    +-                            while ( $a !~ /\}$/ ) {
     -                                ( $a, $b ) = split /\s*,\s*/, $b, 2;
     -                                $s .= ',' . $a;
     -                            }
    --                            $s =~ s/^q{//;
    --                            $s =~ s/}//;
    +-                            $s =~ s/^q\{//;
    +-                            $s =~ s/\}//;
     -                            push @new, $s;
     -                        }
     -                        else {
7:  ce0a194 = 7:  82a0d98 Un-TODO the tests



More information about the rt-commit mailing list