1 # $NetBSD: t_sort.sh,v 1.1 2012/03/17 16:33:15 jruoho Exp $ 2 # 3 # Copyright (c) 2008, 2009, 2010 The NetBSD Foundation, Inc. 4 # 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 8 # are met: 9 # 1. Redistributions of source code must retain the above copyright 10 # notice, this list of conditions and the following disclaimer. 11 # 2. Redistributions in binary form must reproduce the above copyright 12 # notice, this list of conditions and the following disclaimer in the 13 # documentation and/or other materials provided with the distribution. 14 # 15 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 # POSSIBILITY OF SUCH DAMAGE. 26 # 27 28 atf_test_case basic 29 basic_head() 30 { 31 atf_set "descr" "Basic functionality test" 32 } 33 basic_body() 34 { 35 cat >in <<EOF 36 z b m f 37 y c o e 38 x a n h 39 x a n g 40 EOF 41 42 cat >expout <<EOF 43 x a n g 44 x a n h 45 y c o e 46 z b m f 47 EOF 48 49 atf_check -o file:expout sort in 50 } 51 52 atf_test_case empty_file 53 empty_file_head() 54 { 55 atf_set "descr" "Tests sorting an empty file" 56 } 57 empty_file_body() 58 { 59 touch empty 60 atf_check -o empty sort -S empty 61 atf_check sort -S -c empty 62 atf_check sort -S -c -u empty 63 } 64 65 atf_test_case end_of_options 66 end_of_options_head() 67 { 68 atf_set "descr" "Determination of end of option list" 69 } 70 end_of_options_body() 71 { 72 echo x >-k 73 atf_check -o file:-k -x "sort -S -- -k </dev/null" 74 atf_check -s not-exit:1 -e ignore -x "sort -S - -c </dev/null" 75 } 76 77 atf_test_case missing_newline 78 missing_newline_head() 79 { 80 atf_set "descr" "Tests with missing new line in input file" 81 } 82 missing_newline_body() 83 { 84 printf '%s' x >in 85 atf_check -o inline:'x\n' sort in 86 } 87 88 atf_test_case null_bytes 89 null_bytes_head() 90 { 91 atf_set "descr" "Tests the behavior of null bytes" 92 } 93 null_bytes_body() 94 { 95 printf '\0b\n\0a\n' >in 96 atf_check -o inline:'\0a\n\0b\n' sort -S in 97 } 98 99 atf_test_case long_records 100 long_records_head() 101 { 102 atf_set "descr" "Tests long lines and keys" 103 } 104 long_records_body() 105 { 106 awk 'BEGIN { x="x" 107 for(i=1; i<=12; i++) x = x x 108 for(i=15; i<=25; i++) print x i 109 }' >in 110 111 awk 'BEGIN { x="x" 112 for(i=1; i<=12; i++) x = x x 113 for(i=25; i>=15; i--) print x i 114 }' >out 115 116 atf_check -o file:out sort -r in 117 atf_check -o file:out sort -k 1,1r -k 1 in 118 } 119 120 atf_test_case long_file 121 long_file_head() 122 { 123 atf_set "descr" "Tests with a long file to try to force intermediate" \ 124 "files" 125 } 126 long_file_body() 127 { 128 awk 'BEGIN { for(i=0; i<20000; i++) print rand() }' >in 129 sort -S -r in | awk '$0 "x" != x { print ; x = $0 "x" }' >out 130 atf_check -o file:out sort -u -r in 131 } 132 133 atf_test_case any_char 134 any_char_head() 135 { 136 atf_set "descr" "Tests with files containing non-printable/extended" \ 137 "characters" 138 } 139 any_char_body() 140 { 141 atf_check -o file:$(atf_get_srcdir)/d_any_char_dflag_out.txt \ 142 sort -d -k 2 $(atf_get_srcdir)/d_any_char_in.txt 143 144 atf_check -o file:$(atf_get_srcdir)/d_any_char_fflag_out.txt \ 145 sort -f -k 2 $(atf_get_srcdir)/d_any_char_in.txt 146 147 atf_check -o file:$(atf_get_srcdir)/d_any_char_iflag_out.txt \ 148 sort -i -k 2 $(atf_get_srcdir)/d_any_char_in.txt 149 } 150 151 atf_test_case bflag 152 bflag_head() 153 { 154 atf_set "descr" "Tests the -b flag" 155 } 156 bflag_body() 157 { 158 cat >in <<EOF 159 b 160 a 161 EOF 162 163 atf_check -o file:in sort -b in 164 atf_check -o file:in -x "sort -b <in" 165 atf_check -s exit:1 -o ignore -e ignore -x "sort in | sort -c -r" 166 } 167 168 atf_test_case cflag 169 cflag_head() 170 { 171 atf_set "descr" "Tests the -c flag" 172 } 173 cflag_body() 174 { 175 cat >in <<EOF 176 b 177 a 178 EOF 179 180 atf_check -s exit:1 -e ignore sort -S -c in 181 } 182 183 atf_test_case kflag_one_field 184 kflag_one_field_head() 185 { 186 atf_set "descr" "Tests the -k flag with one field" 187 } 188 kflag_one_field_body() 189 { 190 cat >in <<EOF 191 z b m f 192 y c o e 193 x a n h 194 x a n g 195 EOF 196 197 cat >expout <<EOF 198 x a n g 199 x a n h 200 z b m f 201 y c o e 202 EOF 203 204 atf_check -o file:expout sort -k2.1 in 205 } 206 207 atf_test_case kflag_two_fields 208 kflag_two_fields_head() 209 { 210 atf_set "descr" "Tests the -k flag with two fields" 211 } 212 kflag_two_fields_body() 213 { 214 cat >in <<EOF 215 z b m f 216 y c o e 217 x a n h 218 x a n g 219 EOF 220 221 cat >expout <<EOF 222 x a n h 223 x a n g 224 z b m f 225 y c o e 226 EOF 227 atf_check -o file:expout sort -k2.1,2.0 in 228 } 229 230 atf_test_case kflag_many_fields 231 kflag_many_fields_head() 232 { 233 atf_set "descr" "Tests the -k flag with many fields" 234 } 235 kflag_many_fields_body() 236 { 237 cat >in <<EOF 238 0:2:3:4:5:6:7:8:9 239 1:1:3:4:5:6:7:8:9 240 1:2:2:4:5:6:7:8:9 241 1:2:3:3:5:6:7:8:9 242 1:2:3:4:4:6:7:8:9 243 1:2:3:4:5:5:7:8:9 244 1:2:3:4:5:6:6:8:9 245 1:2:3:4:5:6:7:7:9 246 1:2:3:4:5:6:7:8:8 247 EOF 248 249 cat >out <<EOF 250 1:2:3:4:5:6:7:8:8 251 1:2:3:4:5:6:7:7:9 252 1:2:3:4:5:6:6:8:9 253 1:2:3:4:5:5:7:8:9 254 1:2:3:4:4:6:7:8:9 255 1:2:3:3:5:6:7:8:9 256 1:2:2:4:5:6:7:8:9 257 1:1:3:4:5:6:7:8:9 258 0:2:3:4:5:6:7:8:9 259 EOF 260 261 atf_check -o file:out sort -t: -k9 -k8 -k7 -k6 -k5 -k4 -k3 \ 262 -k2 -k1 in 263 } 264 265 atf_test_case kflag_outofbounds 266 kflag_outofbounds_head() 267 { 268 atf_set "descr" "Tests the -k flag with out of bounds fields" 269 } 270 kflag_outofbounds_body() 271 { 272 cat >in <<EOF 273 0 5 274 1 4 275 2 3 276 3 2 277 4 1 278 5 0 279 EOF 280 281 atf_check -o file:in sort -k2.2,2.1 -k2.3,2.4 in 282 } 283 284 atf_test_case kflag_nonmonotone 285 kflag_nonmonotone_head() 286 { 287 atf_set "descr" "Tests the -k flag with apparently nonmonotone" \ 288 "field specs" 289 } 290 kflag_nonmonotone_body() 291 { 292 cat >in <<EOF 293 aaaa c 294 x a 295 0 b 296 EOF 297 298 atf_check -o file:in sort -k2,1.3 -k2.5,2.5 in 299 } 300 301 atf_test_case kflag_limits 302 kflag_limits_head() 303 { 304 atf_set "descr" "Tests the -k flag field limits" 305 } 306 kflag_limits_body() 307 { 308 cat >in <<EOF 309 a 2 310 a 1 311 b 2 312 b 1 313 EOF 314 315 cat >out <<EOF 316 b 2 317 b 1 318 a 2 319 a 1 320 EOF 321 322 atf_check -o file:out sort -r -k1,1 -k2n in 323 } 324 325 atf_test_case kflag_alpha 326 kflag_alpha_head() 327 { 328 atf_set "descr" "Tests the -k flag with various alpha fields" 329 } 330 kflag_alpha_body() 331 { 332 sort >in <<EOF 333 01:04:19:01:16:01:21:01 a 334 02:03:13:15:13:19:15:02 a 335 03:02:07:09:07:13:09:03 a 336 04:01:01:03:01:07:03:04 a 337 05:08:20:16:17:02:20:05 aa 338 06:07:14:18:14:20:14:06 aa 339 07:06:08:10:08:14:08:07 aa 340 08:05:02:04:02:08:02:08 aa 341 09:16:22:02:22:04:24:13 b 342 10:15:16:20:19:22:18:14 b 343 11:14:10:12:10:16:12:15 b 344 12:13:04:06:04:10:06:16 b 345 13:24:24:22:24:06:22:21 bb 346 14:23:18:24:21:24:16:22 bb 347 15:22:12:14:12:18:10:23 bb 348 16:21:06:08:06:12:04:24 bb 349 17:12:21:21:18:03:19:09 ab 350 18:11:15:19:15:21:13:10 ab 351 19:10:09:11:09:15:07:11 ab 352 20:09:03:05:03:09:01:12 ab 353 21:20:23:17:23:05:23:17 ba 354 22:19:17:23:20:23:17:18 ba 355 23:18:11:13:11:17:11:19 ba 356 24:17:05:07:05:11:05:20 ba 357 EOF 358 359 atf_check -x "sort -S -k2b -k2 in >xx" 360 atf_check -e ignore sort -c -t: -k2n xx 361 362 atf_check -x "sort -S -k2,2.1b -k2 in >xx" 363 atf_check -e ignore sort -c -t: -k3n xx 364 365 atf_check -x "sort -S -k2.3 -k2 in >xx" 366 atf_check -e ignore sort -c -t: -k4n xx 367 368 atf_check -x "sort -S -k2b,2.3 -k2 in >xx" 369 atf_check -e ignore sort -c -t: -k5n xx 370 371 atf_check -x "sort -S -k2.3,2.1b -k2 in >xx" 372 atf_check -e ignore sort -c -t: -k6n xx 373 374 atf_check -x "sort -S -k2,2.1b -k2r in >xx" 375 atf_check -e ignore sort -c -t: -k7n xx 376 377 atf_check -x "sort -S -b -k2,2 -k2 in >xx" 378 atf_check -e ignore sort -c -t: -k8n xx 379 380 # XXX This test is broken. The standard is not clear on the behavior. 381 #atf_check -x "sort -S -b -k2,2b -k2 in >xx" 382 #atf_check -e ignore sort -c -t: -k3n xx 383 } 384 385 atf_test_case kflag_no_end 386 kflag_no_end_head() 387 { 388 atf_set "descr" "Tests the -k flag with a field without end" 389 } 390 kflag_no_end_body() 391 { 392 cat >in <<EOF 393 a-B 394 a+b 395 a b 396 A+b 397 a b 398 EOF 399 400 cat >out <<EOF 401 a b 402 a b 403 A+b 404 a-B 405 a+b 406 EOF 407 408 atf_check -o file:out sort -df -k 1 -k 1d <in 409 } 410 411 atf_test_case mflag 412 mflag_head() 413 { 414 atf_set "descr" "Tests the -m flag" 415 } 416 mflag_body() 417 { 418 cat >in1 <<EOF 419 a 420 ab 421 ab 422 bc 423 ca 424 EOF 425 cat >in2 <<EOF 426 Z 427 a 428 aa 429 ac 430 c 431 EOF 432 cat >out <<EOF 433 Z 434 a 435 a 436 aa 437 ab 438 ab 439 ac 440 bc 441 c 442 ca 443 EOF 444 445 atf_check -o file:out sort -S -m in1 in2 446 } 447 448 atf_test_case mflag_uflag 449 mflag_uflag_head() 450 { 451 atf_set "descr" "Tests the -m flag together with -u" 452 } 453 mflag_uflag_body() 454 { 455 cat >in <<EOF 456 a 457 b 458 c 459 d 460 EOF 461 462 atf_check -o file:in sort -m -u in 463 } 464 465 atf_test_case mflag_uflag_first 466 mflag_uflag_first_head() 467 { 468 atf_set "descr" "Tests that the -m flag together with -u picks the" \ 469 "first among equal" 470 } 471 mflag_uflag_first_body() 472 { 473 cat >in <<EOF 474 3B 475 3b 476 3B2 477 ~3B2 478 4.1 479 41 480 5 481 5. 482 EOF 483 484 cat >out <<EOF 485 3B 486 3B2 487 4.1 488 5 489 EOF 490 491 atf_check -o file:out sort -mudf in 492 atf_check -o file:out sort -mudf -k1 in 493 } 494 495 atf_test_case nflag 496 nflag_head() 497 { 498 atf_set "descr" "Tests the -n flag" 499 } 500 nflag_body() 501 { 502 cat >in <<EOF 503 -99.0 504 -99.1 505 -.0002 506 -10 507 2 508 0010.000000000000000000000000000000000001 509 10 510 3x 511 x 512 EOF 513 514 cat >expout <<EOF 515 -99.1 516 -99.0 517 -10 518 -.0002 519 x 520 2 521 3x 522 10 523 0010.000000000000000000000000000000000001 524 EOF 525 526 atf_check -o file:expout sort -n in 527 } 528 529 atf_test_case nflag_rflag 530 nflag_rflag_head() 531 { 532 atf_set "descr" "Tests the -n and -r flag combination" 533 } 534 nflag_rflag_body() 535 { 536 cat >in <<EOF 537 1 538 123 539 2 540 EOF 541 542 cat >expout <<EOF 543 123 544 2 545 1 546 EOF 547 548 atf_check -o file:expout sort -rn in 549 } 550 551 atf_test_case oflag 552 oflag_head() 553 { 554 atf_set "descr" "Tests the -o flag" 555 } 556 oflag_body() 557 { 558 cat >in <<EOF 559 1 560 1 561 2 562 2 563 3 564 3 565 4 566 4 567 EOF 568 569 atf_check sort -u -o in in 570 571 cat >expout <<EOF 572 1 573 2 574 3 575 4 576 EOF 577 578 atf_check -o file:expout cat in 579 } 580 581 atf_test_case oflag_displaced 582 oflag_displaced_head() 583 { 584 atf_set "descr" "Tests the -o flag after the file names" 585 } 586 oflag_displaced_body() 587 { 588 atf_check sort -S /dev/null -o out 589 test -f out || atf_fail "File not created" 590 } 591 592 atf_test_case rflag 593 rflag_head() 594 { 595 atf_set "descr" "Tests the -r flag" 596 } 597 rflag_body() 598 { 599 cat >in <<EOF 600 z b m f 601 y c o e 602 x a n h 603 x a n g 604 EOF 605 606 cat >expout <<EOF 607 z b m f 608 y c o e 609 x a n h 610 x a n g 611 EOF 612 613 atf_check -o file:expout sort -r in 614 } 615 616 atf_test_case sflag 617 sflag_head() 618 { 619 atf_set "descr" "Tests the -s flag" 620 } 621 sflag_body() 622 { 623 cat >in <<EOF 624 a 2 625 b 1 626 c 2 627 a 1 628 b 2 629 c 1 630 EOF 631 632 cat >out <<EOF 633 a 2 634 a 1 635 b 1 636 b 2 637 c 2 638 c 1 639 EOF 640 641 atf_check -o file:out sort -s -k1,1 in 642 } 643 644 atf_test_case sflag_many_files 645 sflag_many_files_head() 646 { 647 atf_set "descr" "Tests the -s flag with multiple files" 648 } 649 sflag_many_files_body() 650 { 651 cat >in1 <<EOF 652 c 2 653 a 2 654 EOF 655 656 cat >in2 <<EOF 657 c 1 658 b 1 659 a 1 660 EOF 661 662 cat >out <<EOF 663 c 2 664 b 1 665 a 2 666 EOF 667 668 atf_check -o file:out sort -smru -k1,1 in1 in1 in2 in2 669 } 670 671 atf_test_case tflag 672 tflag_head() 673 { 674 atf_set "descr" "Tests the -t flag" 675 } 676 tflag_body() 677 { 678 cat >in <<EOF 679 a: 680 a! 681 EOF 682 683 atf_check -o file:in sort -t : -r +0 in 684 atf_check -o file:in sort -t : +0 -1 in 685 atf_check -o file:in sort -t : -r -k 1 in 686 atf_check -o file:in sort -t : -k 1,1 in 687 } 688 689 atf_test_case tflag_alphabetic 690 tflag_alphabetic_head() 691 { 692 atf_set "descr" "Tests the -t flag with a character as the delimiter" 693 } 694 tflag_alphabetic_body() 695 { 696 cat >in <<EOF 697 zXa 698 yXa 699 zXb 700 EOF 701 702 atf_check -o file:in sort -tX -k2 -k1r,1 in 703 } 704 705 atf_test_case tflag_char_pos 706 tflag_char_pos_head() 707 { 708 atf_set "descr" "Tests the -t flag with character positions in fields" 709 } 710 tflag_char_pos_body() 711 { 712 cat >in <<EOF 713 : ab 714 :bac 715 EOF 716 717 cat >out <<EOF 718 :bac 719 : ab 720 EOF 721 722 atf_check -o file:out sort -b -t: +1.1 in 723 atf_check -o file:out sort -t: +1.1r in 724 atf_check -o file:out sort -b -t: -k 2.2 in 725 atf_check -o file:out sort -t: -k 2.2r in 726 } 727 728 atf_test_case tflag_whitespace 729 tflag_whitespace_head() 730 { 731 atf_set "descr" "Tests the -t flag with spaces and tabs as the" \ 732 "delimiter" 733 } 734 tflag_whitespace_body() 735 { 736 cat >in <<EOF 737 b c 738 b c 739 b c 740 EOF 741 742 atf_check -o file:in sort -t ' ' -k2,2 in 743 atf_check -o file:in sort -t ' ' -k2.1,2.0 in 744 745 cat >out <<EOF 746 b c 747 b c 748 b c 749 EOF 750 751 atf_check -o file:out sort -t ' ' -k2,2 in 752 atf_check -o file:out sort -t ' ' -k2.1,2.0 in 753 754 cat >out <<EOF 755 b c 756 b c 757 b c 758 EOF 759 760 atf_check -o file:out sort -S -k2 in 761 762 cat >out <<EOF 763 b c 764 b c 765 b c 766 EOF 767 768 atf_check -o file:out sort -S -k2b in 769 } 770 771 atf_test_case uflag 772 uflag_head() 773 { 774 atf_set "descr" "Tests the -u flag" 775 } 776 uflag_body() 777 { 778 cat >in <<EOF 779 a 780 aa 781 aaa 782 aa 783 EOF 784 785 cat >expout <<EOF 786 a 787 aa 788 aaa 789 EOF 790 791 atf_check -o file:expout sort -u in 792 } 793 794 atf_test_case uflag_rflag 795 uflag_rflag_head() 796 { 797 atf_set "descr" "Tests the -u and -r flag combination" 798 } 799 uflag_rflag_body() 800 { 801 cat >in <<EOF 802 a 803 aa 804 aaa 805 aa 806 EOF 807 808 cat >expout <<EOF 809 aaa 810 aa 811 a 812 EOF 813 814 atf_check -o file:expout sort -ru in 815 } 816 817 atf_test_case plus_one 818 plus_one_head() 819 { 820 atf_set "descr" "Tests +- addressing: +1 should become -k2.1" 821 } 822 plus_one_body() 823 { 824 cat >in <<EOF 825 z b m f 826 y c o e 827 x a n h 828 x a n g 829 EOF 830 831 cat >expout <<EOF 832 x a n g 833 x a n h 834 z b m f 835 y c o e 836 EOF 837 838 atf_check -o file:expout sort +1 in 839 } 840 841 atf_test_case plus_one_minus_two 842 plus_one_minus_two_head() 843 { 844 atf_set "descr" "Tests +- addressing: +1 -2 should become -k2.1,2.0" 845 } 846 plus_one_minus_two_body() 847 { 848 cat >in <<EOF 849 z b m f 850 y c o e 851 x a n h 852 x a n g 853 EOF 854 855 cat >expout <<EOF 856 x a n h 857 x a n g 858 z b m f 859 y c o e 860 EOF 861 862 atf_check -o file:expout sort +1 -2 in 863 } 864 865 atf_test_case plus_zero 866 plus_zero_head() 867 { 868 atf_set "descr" "Tests +- addressing: '-- +0' raised a '-k1.1: No" \ 869 "such file or directory' error" 870 } 871 plus_zero_body() 872 { 873 echo 'good contents' >./+0 874 875 atf_check -o file:+0 sort -- +0 876 } 877 878 atf_test_case plus_nonmonotone 879 plus_nonmonotone_head() 880 { 881 atf_set "descr" "Tests += addressing: apparently nonmonotone field" \ 882 "specs" 883 } 884 plus_nonmonotone_body() 885 { 886 cat >in <<EOF 887 aaaa c 888 x a 889 0 b 890 EOF 891 892 atf_check -o file:in sort +1 -0.3 +1.4 -1.5 in 893 } 894 895 atf_test_case plus_as_path 896 plus_as_path_head() 897 { 898 atf_set "descr" "Tests +- addressing: 'file +0' raised a '-k1.1: No" \ 899 "such file or directory' error" 900 } 901 plus_as_path_body() 902 { 903 echo 'good contents' >./+0 904 echo 'more contents' >in 905 cat ./+0 in >expout 906 907 atf_check -o file:expout sort in +0 908 } 909 910 atf_test_case plus_bad_tempfile 911 plus_bad_tempfile_head() 912 { 913 atf_set "descr" "Tests +- addressing: intermediate wrong behavior" \ 914 "that raised a '+0: No such file or directory' error" 915 } 916 plus_bad_tempfile_body() 917 { 918 echo 'good contents' >in 919 atf_check -o file:in sort -T /tmp +0 in 920 } 921 922 atf_test_case plus_rflag_invalid 923 plus_rflag_invalid_head() 924 { 925 atf_set "descr" "Tests +- addressing: invalid record delimiter" 926 } 927 plus_rflag_invalid_body() 928 { 929 ( 930 echo 'z b m f' 931 echo 'y c o e' 932 echo 'x a n h' 933 echo 'x a n g' 934 ) | tr '\n' '+' >in 935 936 atf_check -o inline:'x a n g+x a n h+z b m f+y c o e+' \ 937 sort -R + -k2 in 938 } 939 940 atf_test_case plus_tflag 941 plus_tflag_head() 942 { 943 atf_set "descr" "Tests +- addressing: using -T caused a 'No such file" \ 944 "or directory' error" 945 } 946 plus_tflag_body() 947 { 948 mkdir ./+ 949 yes | sed 200000q | sort -T + >/dev/null || atf_fail "program failed" 950 } 951 952 atf_test_case plus_no_end 953 plus_no_end_head() 954 { 955 atf_set "descr" "Tests +- addressing: field without end" 956 } 957 plus_no_end_body() 958 { 959 cat >in <<EOF 960 a-B 961 a+b 962 a b 963 A+b 964 a b 965 EOF 966 967 cat >out <<EOF 968 a b 969 a b 970 A+b 971 a-B 972 a+b 973 EOF 974 975 atf_check -o file:out sort -df +0 +0d in 976 } 977 978 atf_init_test_cases() 979 { 980 atf_add_test_case basic 981 atf_add_test_case empty_file 982 atf_add_test_case end_of_options 983 atf_add_test_case missing_newline 984 atf_add_test_case null_bytes 985 atf_add_test_case long_records 986 atf_add_test_case long_file 987 atf_add_test_case any_char 988 atf_add_test_case bflag 989 atf_add_test_case cflag 990 atf_add_test_case kflag_one_field 991 atf_add_test_case kflag_two_fields 992 atf_add_test_case kflag_many_fields 993 atf_add_test_case kflag_outofbounds 994 atf_add_test_case kflag_nonmonotone 995 atf_add_test_case kflag_limits 996 atf_add_test_case kflag_alpha 997 atf_add_test_case kflag_no_end 998 atf_add_test_case mflag 999 atf_add_test_case mflag_uflag 1000 atf_add_test_case mflag_uflag_first 1001 atf_add_test_case nflag 1002 atf_add_test_case nflag_rflag 1003 atf_add_test_case oflag 1004 atf_add_test_case oflag_displaced 1005 atf_add_test_case rflag 1006 atf_add_test_case sflag 1007 atf_add_test_case sflag_many_files 1008 atf_add_test_case tflag 1009 atf_add_test_case tflag_alphabetic 1010 atf_add_test_case tflag_char_pos 1011 atf_add_test_case tflag_whitespace 1012 atf_add_test_case uflag 1013 atf_add_test_case uflag_rflag 1014 atf_add_test_case plus_one 1015 atf_add_test_case plus_one_minus_two 1016 atf_add_test_case plus_zero 1017 atf_add_test_case plus_nonmonotone 1018 atf_add_test_case plus_as_path 1019 atf_add_test_case plus_bad_tempfile 1020 atf_add_test_case plus_rflag_invalid 1021 atf_add_test_case plus_tflag 1022 atf_add_test_case plus_no_end 1023 } 1024