busybox/testsuite/sort.tests
<<
>>
Prefs
   1#!/bin/sh
   2
   3# SUSv3 compliant sort tests.
   4# Copyright 2005 by Rob Landley <rob@landley.net>
   5# Licensed under GPLv2, see file LICENSE in this source tree.
   6
   7. ./testing.sh
   8
   9# The basic tests.  These should work even with the small busybox.
  10
  11testing "sort" "sort input" "a\nb\nc\n" "c\na\nb\n" ""
  12testing "sort #2" "sort input" "010\n1\n3\n" "3\n1\n010\n" ""
  13testing "sort stdin" "sort" "a\nb\nc\n" "" "b\na\nc\n"
  14testing "sort numeric" "sort -n input" "1\n3\n010\n" "3\n1\n010\n" ""
  15testing "sort reverse" "sort -r input" "wook\nwalrus\npoint\npabst\naargh\n" \
  16        "point\nwook\npabst\naargh\nwalrus\n" ""
  17
  18# These tests require the full option set.
  19
  20optional FEATURE_SORT_BIG
  21# Longish chunk of data re-used by the next few tests
  22
  23data="42        1       3       woot
  2442      1       010     zoology
  25egg     1       2       papyrus
  267       3       42      soup
  27999     3       0       algebra
  28"
  29
  30# testing "description" "command(s)" "result" "infile" "stdin"
  31
  32# Sorting with keys
  33
  34testing "sort one key" "sort -k4,4 input" \
  35"999    3       0       algebra
  36egg     1       2       papyrus
  377       3       42      soup
  3842      1       3       woot
  3942      1       010     zoology
  40" "$data" ""
  41
  42testing "sort key range with numeric option" "sort -k2,3n input" \
  43"42     1       010     zoology
  4442      1       3       woot
  45egg     1       2       papyrus
  467       3       42      soup
  47999     3       0       algebra
  48" "$data" ""
  49
  50testing "sort key range with numeric option and global reverse" \
  51"sort -k2,3n -r input" \
  52"egg    1       2       papyrus
  5342      1       3       woot
  5442      1       010     zoology
  55999     3       0       algebra
  567       3       42      soup
  57" "$data" ""
  58
  59testing "sort key range with multiple options" "sort -k2,3rn input" \
  60"7      3       42      soup
  61999     3       0       algebra
  6242      1       010     zoology
  6342      1       3       woot
  64egg     1       2       papyrus
  65" "$data" ""
  66
  67testing "sort key range with two -k options" "sort -k 2,2n -k 1,1r input" "\
  68d 2
  69b 2
  70c 3
  71" "\
  72c 3
  73b 2
  74d 2
  75" ""
  76
  77testing "sort with non-default leading delim 1" "sort -n -k2 -t/ input" "\
  78/a/2
  79/b/1
  80" "\
  81/a/2
  82/b/1
  83" ""
  84
  85testing "sort with non-default leading delim 2" "sort -n -k3 -t/ input" "\
  86/b/1
  87/a/2
  88" "\
  89/b/1
  90/a/2
  91" ""
  92
  93testing "sort with non-default leading delim 3" "sort -n -k3 -t/ input" "\
  94//a/2
  95//b/1
  96" "\
  97//a/2
  98//b/1
  99" ""
 100
 101testing "sort with non-default leading delim 4" "sort -t: -k1,1 input" "\
 102a:b
 103a/a:a
 104" "\
 105a/a:a
 106a:b
 107" ""
 108
 109testing "sort with ENDCHAR" "sort -t. -k1,1.1 -k2 input" "\
 110ab.1
 111aa.2
 112" "\
 113aa.2
 114ab.1
 115" ""
 116
 117testing "glibc build sort" "sort -t. -k 1,1 -k 2n,2n -k 3 input" "\
 118GLIBC_2.1
 119GLIBC_2.1.1
 120GLIBC_2.2
 121GLIBC_2.2.1
 122GLIBC_2.10
 123GLIBC_2.20
 124GLIBC_2.21
 125" "\
 126GLIBC_2.21
 127GLIBC_2.1.1
 128GLIBC_2.2.1
 129GLIBC_2.2
 130GLIBC_2.20
 131GLIBC_2.10
 132GLIBC_2.1
 133" ""
 134
 135testing "glibc build sort unique" "sort -u -t. -k 1,1 -k 2n,2n -k 3 input" "\
 136GLIBC_2.1
 137GLIBC_2.1.1
 138GLIBC_2.2
 139GLIBC_2.2.1
 140GLIBC_2.10
 141GLIBC_2.20
 142GLIBC_2.21
 143" "\
 144GLIBC_2.10
 145GLIBC_2.2.1
 146GLIBC_2.1.1
 147GLIBC_2.20
 148GLIBC_2.2
 149GLIBC_2.1
 150GLIBC_2.21
 151" ""
 152
 153testing "sort -u should consider field only when discarding" "sort -u -k2 input" "\
 154a c
 155" "\
 156a c
 157b c
 158" ""
 159
 160testing "sort -z outputs NUL terminated lines" "sort -z input" "\
 161one\0three\0two\0\
 162" "\
 163one\0two\0three\0\
 164" ""
 165
 166testing "sort key doesn't strip leading blanks, disables fallback global sort" \
 167"sort -n -k2 -t ' '" " a \n 1 \n 2 \n" "" " 2 \n 1 \n a \n"
 168
 169testing "sort file in place" \
 170"sort -o input input && cat input" "\
 171111
 172222
 173" "\
 174222
 175111
 176" ""
 177
 178# testing "description" "command(s)" "result" "infile" "stdin"
 179
 180exit $FAILCOUNT
 181