| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/perl | |
| 2 # | |
| 3 # Copyright (C) 2009, 2010 Chris Jerdonek (chris.jerdonek@gmail.com) | |
| 4 # Copyright (C) Research In Motion 2010. All rights reserved. | |
| 5 # | |
| 6 # Redistribution and use in source and binary forms, with or without | |
| 7 # modification, are permitted provided that the following conditions are | |
| 8 # met: | |
| 9 # | |
| 10 # * Redistributions of source code must retain the above copyright | |
| 11 # notice, this list of conditions and the following disclaimer. | |
| 12 # * Redistributions in binary form must reproduce the above | |
| 13 # copyright notice, this list of conditions and the following disclaimer | |
| 14 # in the documentation and/or other materials provided with the | |
| 15 # distribution. | |
| 16 # * Neither the name of Google Inc. nor the names of its | |
| 17 # contributors may be used to endorse or promote products derived from | |
| 18 # this software without specific prior written permission. | |
| 19 # | |
| 20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| 21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| 22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
| 23 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
| 24 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| 25 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
| 26 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| 27 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| 28 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| 29 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| 30 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| 31 | |
| 32 # Unit tests of VCSUtils::fixChangeLogPatch(). | |
| 33 | |
| 34 use strict; | |
| 35 use warnings; | |
| 36 | |
| 37 use Test::More; | |
| 38 use VCSUtils; | |
| 39 | |
| 40 # The source ChangeLog for these tests is the following: | |
| 41 # | |
| 42 # 2009-12-22 Alice <alice@email.address> | |
| 43 # | |
| 44 # Reviewed by Ray. | |
| 45 # | |
| 46 # Changed some code on 2009-12-22. | |
| 47 # | |
| 48 # * File: | |
| 49 # * File2: | |
| 50 # | |
| 51 # 2009-12-21 Alice <alice@email.address> | |
| 52 # | |
| 53 # Reviewed by Ray. | |
| 54 # | |
| 55 # Changed some code on 2009-12-21. | |
| 56 # | |
| 57 # * File: | |
| 58 # * File2: | |
| 59 | |
| 60 my @testCaseHashRefs = ( | |
| 61 { # New test | |
| 62 diffName => "fixChangeLogPatch: [no change] In-place change.", | |
| 63 inputText => <<'END', | |
| 64 --- ChangeLog | |
| 65 +++ ChangeLog | |
| 66 @@ -1,5 +1,5 @@ | |
| 67 2010-12-22 Bob <bob@email.address> | |
| 68 | |
| 69 - Reviewed by Sue. | |
| 70 + Reviewed by Ray. | |
| 71 | |
| 72 Changed some code on 2010-12-22. | |
| 73 END | |
| 74 expectedReturn => { | |
| 75 patch => <<'END', | |
| 76 --- ChangeLog | |
| 77 +++ ChangeLog | |
| 78 @@ -1,5 +1,5 @@ | |
| 79 2010-12-22 Bob <bob@email.address> | |
| 80 | |
| 81 - Reviewed by Sue. | |
| 82 + Reviewed by Ray. | |
| 83 | |
| 84 Changed some code on 2010-12-22. | |
| 85 END | |
| 86 } | |
| 87 }, | |
| 88 { # New test | |
| 89 diffName => "fixChangeLogPatch: [no change] Remove first entry.", | |
| 90 inputText => <<'END', | |
| 91 --- ChangeLog | |
| 92 +++ ChangeLog | |
| 93 @@ -1,11 +1,3 @@ | |
| 94 -2010-12-22 Bob <bob@email.address> | |
| 95 - | |
| 96 - Reviewed by Ray. | |
| 97 - | |
| 98 - Changed some code on 2010-12-22. | |
| 99 - | |
| 100 - * File: | |
| 101 - | |
| 102 2010-12-22 Alice <alice@email.address> | |
| 103 | |
| 104 Reviewed by Ray. | |
| 105 END | |
| 106 expectedReturn => { | |
| 107 patch => <<'END', | |
| 108 --- ChangeLog | |
| 109 +++ ChangeLog | |
| 110 @@ -1,11 +1,3 @@ | |
| 111 -2010-12-22 Bob <bob@email.address> | |
| 112 - | |
| 113 - Reviewed by Ray. | |
| 114 - | |
| 115 - Changed some code on 2010-12-22. | |
| 116 - | |
| 117 - * File: | |
| 118 - | |
| 119 2010-12-22 Alice <alice@email.address> | |
| 120 | |
| 121 Reviewed by Ray. | |
| 122 END | |
| 123 } | |
| 124 }, | |
| 125 { # New test | |
| 126 diffName => "fixChangeLogPatch: [no change] Remove entry in the middle.", | |
| 127 inputText => <<'END', | |
| 128 --- ChangeLog | |
| 129 +++ ChangeLog | |
| 130 @@@ -7,10 +7,6 @@ | |
| 131 | |
| 132 * File: | |
| 133 | |
| 134 -2010-12-22 Bob <bob@email.address> | |
| 135 - | |
| 136 - Changed some code on 2010-12-22. | |
| 137 - | |
| 138 2010-12-22 Alice <alice@email.address> | |
| 139 | |
| 140 Reviewed by Ray. | |
| 141 END | |
| 142 expectedReturn => { | |
| 143 patch => <<'END', | |
| 144 --- ChangeLog | |
| 145 +++ ChangeLog | |
| 146 @@@ -7,10 +7,6 @@ | |
| 147 | |
| 148 * File: | |
| 149 | |
| 150 -2010-12-22 Bob <bob@email.address> | |
| 151 - | |
| 152 - Changed some code on 2010-12-22. | |
| 153 - | |
| 154 2010-12-22 Alice <alice@email.address> | |
| 155 | |
| 156 Reviewed by Ray. | |
| 157 END | |
| 158 } | |
| 159 }, | |
| 160 { # New test | |
| 161 diffName => "fixChangeLogPatch: [no change] Far apart changes (i.e. more tha
n one chunk).", | |
| 162 inputText => <<'END', | |
| 163 --- ChangeLog | |
| 164 +++ ChangeLog | |
| 165 @@ -7,7 +7,7 @@ | |
| 166 | |
| 167 * File: | |
| 168 | |
| 169 -2010-12-22 Bob <bob@email.address> | |
| 170 +2010-12-22 Bobby <bob@email.address> | |
| 171 | |
| 172 Changed some code on 2010-12-22. | |
| 173 | |
| 174 @@ -21,7 +21,7 @@ | |
| 175 | |
| 176 * File2: | |
| 177 | |
| 178 -2010-12-21 Bob <bob@email.address> | |
| 179 +2010-12-21 Bobby <bob@email.address> | |
| 180 | |
| 181 Changed some code on 2010-12-21. | |
| 182 END | |
| 183 expectedReturn => { | |
| 184 patch => <<'END', | |
| 185 --- ChangeLog | |
| 186 +++ ChangeLog | |
| 187 @@ -7,7 +7,7 @@ | |
| 188 | |
| 189 * File: | |
| 190 | |
| 191 -2010-12-22 Bob <bob@email.address> | |
| 192 +2010-12-22 Bobby <bob@email.address> | |
| 193 | |
| 194 Changed some code on 2010-12-22. | |
| 195 | |
| 196 @@ -21,7 +21,7 @@ | |
| 197 | |
| 198 * File2: | |
| 199 | |
| 200 -2010-12-21 Bob <bob@email.address> | |
| 201 +2010-12-21 Bobby <bob@email.address> | |
| 202 | |
| 203 Changed some code on 2010-12-21. | |
| 204 END | |
| 205 } | |
| 206 }, | |
| 207 { # New test | |
| 208 diffName => "fixChangeLogPatch: [no change] First line is new line.", | |
| 209 inputText => <<'END', | |
| 210 --- ChangeLog | |
| 211 +++ ChangeLog | |
| 212 @@ -1,3 +1,11 @@ | |
| 213 +2009-12-22 Bob <bob@email.address> | |
| 214 + | |
| 215 + Reviewed by Ray. | |
| 216 + | |
| 217 + Changed some more code on 2009-12-22. | |
| 218 + | |
| 219 + * File: | |
| 220 + | |
| 221 2009-12-22 Alice <alice@email.address> | |
| 222 | |
| 223 Reviewed by Ray. | |
| 224 END | |
| 225 expectedReturn => { | |
| 226 patch => <<'END', | |
| 227 --- ChangeLog | |
| 228 +++ ChangeLog | |
| 229 @@ -1,3 +1,11 @@ | |
| 230 +2009-12-22 Bob <bob@email.address> | |
| 231 + | |
| 232 + Reviewed by Ray. | |
| 233 + | |
| 234 + Changed some more code on 2009-12-22. | |
| 235 + | |
| 236 + * File: | |
| 237 + | |
| 238 2009-12-22 Alice <alice@email.address> | |
| 239 | |
| 240 Reviewed by Ray. | |
| 241 END | |
| 242 } | |
| 243 }, | |
| 244 { # New test | |
| 245 diffName => "fixChangeLogPatch: [no change] No date string.", | |
| 246 inputText => <<'END', | |
| 247 --- ChangeLog | |
| 248 +++ ChangeLog | |
| 249 @@ -6,6 +6,7 @@ | |
| 250 | |
| 251 * File: | |
| 252 * File2: | |
| 253 + * File3: | |
| 254 | |
| 255 2009-12-21 Alice <alice@email.address> | |
| 256 | |
| 257 END | |
| 258 expectedReturn => { | |
| 259 patch => <<'END', | |
| 260 --- ChangeLog | |
| 261 +++ ChangeLog | |
| 262 @@ -6,6 +6,7 @@ | |
| 263 | |
| 264 * File: | |
| 265 * File2: | |
| 266 + * File3: | |
| 267 | |
| 268 2009-12-21 Alice <alice@email.address> | |
| 269 | |
| 270 END | |
| 271 } | |
| 272 }, | |
| 273 { # New test | |
| 274 diffName => "fixChangeLogPatch: New entry inserted in middle.", | |
| 275 inputText => <<'END', | |
| 276 --- ChangeLog | |
| 277 +++ ChangeLog | |
| 278 @@ -11,6 +11,14 @@ | |
| 279 | |
| 280 Reviewed by Ray. | |
| 281 | |
| 282 + Changed some more code on 2009-12-21. | |
| 283 + | |
| 284 + * File: | |
| 285 + | |
| 286 +2009-12-21 Alice <alice@email.address> | |
| 287 + | |
| 288 + Reviewed by Ray. | |
| 289 + | |
| 290 Changed some code on 2009-12-21. | |
| 291 | |
| 292 * File: | |
| 293 END | |
| 294 expectedReturn => { | |
| 295 patch => <<'END', | |
| 296 --- ChangeLog | |
| 297 +++ ChangeLog | |
| 298 @@ -1,3 +1,11 @@ | |
| 299 +2009-12-21 Alice <alice@email.address> | |
| 300 + | |
| 301 + Reviewed by Ray. | |
| 302 + | |
| 303 + Changed some more code on 2009-12-21. | |
| 304 + | |
| 305 + * File: | |
| 306 + | |
| 307 2009-12-21 Alice <alice@email.address> | |
| 308 | |
| 309 Reviewed by Ray. | |
| 310 END | |
| 311 } | |
| 312 }, | |
| 313 { # New test | |
| 314 diffName => "fixChangeLogPatch: New entry inserted earlier in the file, but
after an entry with the same author and date.", | |
| 315 inputText => <<'END', | |
| 316 --- ChangeLog | |
| 317 +++ ChangeLog | |
| 318 @@ -70,6 +70,14 @@ | |
| 319 | |
| 320 2009-12-22 Alice <alice@email.address> | |
| 321 | |
| 322 + Reviewed by Sue. | |
| 323 + | |
| 324 + Changed some more code on 2009-12-22. | |
| 325 + | |
| 326 + * File: | |
| 327 + | |
| 328 +2009-12-22 Alice <alice@email.address> | |
| 329 + | |
| 330 Reviewed by Ray. | |
| 331 | |
| 332 Changed some code on 2009-12-22. | |
| 333 END | |
| 334 expectedReturn => { | |
| 335 patch => <<'END', | |
| 336 --- ChangeLog | |
| 337 +++ ChangeLog | |
| 338 @@ -1,3 +1,11 @@ | |
| 339 +2009-12-22 Alice <alice@email.address> | |
| 340 + | |
| 341 + Reviewed by Sue. | |
| 342 + | |
| 343 + Changed some more code on 2009-12-22. | |
| 344 + | |
| 345 + * File: | |
| 346 + | |
| 347 2009-12-22 Alice <alice@email.address> | |
| 348 | |
| 349 Reviewed by Ray. | |
| 350 END | |
| 351 } | |
| 352 }, | |
| 353 { # New test | |
| 354 diffName => "fixChangeLogPatch: Leading context includes first line.", | |
| 355 inputText => <<'END', | |
| 356 --- ChangeLog | |
| 357 +++ ChangeLog | |
| 358 @@ -1,5 +1,13 @@ | |
| 359 2009-12-22 Alice <alice@email.address> | |
| 360 | |
| 361 + Reviewed by Sue. | |
| 362 + | |
| 363 + Changed some more code on 2009-12-22. | |
| 364 + | |
| 365 + * File: | |
| 366 + | |
| 367 +2009-12-22 Alice <alice@email.address> | |
| 368 + | |
| 369 Reviewed by Ray. | |
| 370 | |
| 371 Changed some code on 2009-12-22. | |
| 372 END | |
| 373 expectedReturn => { | |
| 374 patch => <<'END', | |
| 375 --- ChangeLog | |
| 376 +++ ChangeLog | |
| 377 @@ -1,3 +1,11 @@ | |
| 378 +2009-12-22 Alice <alice@email.address> | |
| 379 + | |
| 380 + Reviewed by Sue. | |
| 381 + | |
| 382 + Changed some more code on 2009-12-22. | |
| 383 + | |
| 384 + * File: | |
| 385 + | |
| 386 2009-12-22 Alice <alice@email.address> | |
| 387 | |
| 388 Reviewed by Ray. | |
| 389 END | |
| 390 } | |
| 391 }, | |
| 392 { # New test | |
| 393 diffName => "fixChangeLogPatch: Leading context does not include first line.
", | |
| 394 inputText => <<'END', | |
| 395 @@ -2,6 +2,14 @@ | |
| 396 | |
| 397 Reviewed by Ray. | |
| 398 | |
| 399 + Changed some more code on 2009-12-22. | |
| 400 + | |
| 401 + * File: | |
| 402 + | |
| 403 +2009-12-22 Alice <alice@email.address> | |
| 404 + | |
| 405 + Reviewed by Ray. | |
| 406 + | |
| 407 Changed some code on 2009-12-22. | |
| 408 | |
| 409 * File: | |
| 410 END | |
| 411 expectedReturn => { | |
| 412 patch => <<'END', | |
| 413 @@ -1,3 +1,11 @@ | |
| 414 +2009-12-22 Alice <alice@email.address> | |
| 415 + | |
| 416 + Reviewed by Ray. | |
| 417 + | |
| 418 + Changed some more code on 2009-12-22. | |
| 419 + | |
| 420 + * File: | |
| 421 + | |
| 422 2009-12-22 Alice <alice@email.address> | |
| 423 | |
| 424 Reviewed by Ray. | |
| 425 END | |
| 426 } | |
| 427 }, | |
| 428 { # New test | |
| 429 diffName => "fixChangeLogPatch: Non-consecutive line additions.", | |
| 430 | |
| 431 # This can occur, for example, if the new ChangeLog entry includes | |
| 432 # trailing white space in the first blank line but not the second. | |
| 433 # A diff command can then match the second blank line of the new | |
| 434 # ChangeLog entry with the first blank line of the old. | |
| 435 # The svn diff command with the default --diff-cmd has done this. | |
| 436 inputText => <<'END', | |
| 437 @@ -1,5 +1,11 @@ | |
| 438 2009-12-22 Alice <alice@email.address> | |
| 439 + <pretend-whitespace> | |
| 440 + Reviewed by Ray. | |
| 441 | |
| 442 + Changed some more code on 2009-12-22. | |
| 443 + | |
| 444 +2009-12-22 Alice <alice@email.address> | |
| 445 + | |
| 446 Reviewed by Ray. | |
| 447 | |
| 448 Changed some code on 2009-12-22. | |
| 449 END | |
| 450 expectedReturn => { | |
| 451 patch => <<'END', | |
| 452 @@ -1,3 +1,9 @@ | |
| 453 +2009-12-22 Alice <alice@email.address> | |
| 454 + <pretend-whitespace> | |
| 455 + Reviewed by Ray. | |
| 456 + | |
| 457 + Changed some more code on 2009-12-22. | |
| 458 + | |
| 459 2009-12-22 Alice <alice@email.address> | |
| 460 | |
| 461 Reviewed by Ray. | |
| 462 END | |
| 463 } | |
| 464 }, | |
| 465 { # New test | |
| 466 diffName => "fixChangeLogPatch: Additional edits after new entry.", | |
| 467 inputText => <<'END', | |
| 468 @@ -2,10 +2,17 @@ | |
| 469 | |
| 470 Reviewed by Ray. | |
| 471 | |
| 472 + Changed some more code on 2009-12-22. | |
| 473 + | |
| 474 + * File: | |
| 475 + | |
| 476 +2009-12-22 Alice <alice@email.address> | |
| 477 + | |
| 478 + Reviewed by Ray. | |
| 479 + | |
| 480 Changed some code on 2009-12-22. | |
| 481 | |
| 482 * File: | |
| 483 - * File2: | |
| 484 | |
| 485 2009-12-21 Alice <alice@email.address> | |
| 486 | |
| 487 END | |
| 488 expectedReturn => { | |
| 489 patch => <<'END', | |
| 490 @@ -1,11 +1,18 @@ | |
| 491 +2009-12-22 Alice <alice@email.address> | |
| 492 + | |
| 493 + Reviewed by Ray. | |
| 494 + | |
| 495 + Changed some more code on 2009-12-22. | |
| 496 + | |
| 497 + * File: | |
| 498 + | |
| 499 2009-12-22 Alice <alice@email.address> | |
| 500 | |
| 501 Reviewed by Ray. | |
| 502 | |
| 503 Changed some code on 2009-12-22. | |
| 504 | |
| 505 * File: | |
| 506 - * File2: | |
| 507 | |
| 508 2009-12-21 Alice <alice@email.address> | |
| 509 | |
| 510 END | |
| 511 } | |
| 512 }, | |
| 513 ); | |
| 514 | |
| 515 my $testCasesCount = @testCaseHashRefs; | |
| 516 plan(tests => $testCasesCount); # Total number of assertions. | |
| 517 | |
| 518 foreach my $testCase (@testCaseHashRefs) { | |
| 519 my $testNameStart = "fixChangeLogPatch(): $testCase->{diffName}: comparing"; | |
| 520 | |
| 521 my $got = VCSUtils::fixChangeLogPatch($testCase->{inputText}); | |
| 522 my $expectedReturn = $testCase->{expectedReturn}; | |
| 523 | |
| 524 is_deeply($got, $expectedReturn, "$testNameStart return value."); | |
| 525 } | |
| OLD | NEW |