git/t/t9002-column.sh
Nguyễn Thái Ngọc Duy 3f8eccbe16 column: add dense layout support
Normally all cells (and in turn columns) share the same width. This
layout mode can waste space because one long item can stretch our all
columns.

With COL_DENSE enabled, column width is calculated indepdendently. All
columns are shrunk to minimum, then it attempts to push cells of the
last row over to the next column with hope that everything still fits
even there's one row less. The process is repeated until the new layout
cannot fit in given width any more, or there's only one row left
(perfect!).

Apparently, this mode consumes more cpu than the old one, but it makes
better use of terminal space. For layouting one or two screens, cpu
usage should not be detectable.

This patch introduces option handling code besides layout modes and
enable/disable to expose this feature as "dense". The feature can be
turned off by specifying "nodense".

Thanks-to: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-27 09:26:38 -07:00

181 lines
2.8 KiB
Bash
Executable File

#!/bin/sh
test_description='git column'
. ./test-lib.sh
test_expect_success 'setup' '
cat >lista <<\EOF
one
two
three
four
five
six
seven
eight
nine
ten
eleven
EOF
'
test_expect_success 'never' '
git column --indent=Z --mode=never <lista >actual &&
test_cmp lista actual
'
test_expect_success 'always' '
cat >expected <<\EOF &&
Zone
Ztwo
Zthree
Zfour
Zfive
Zsix
Zseven
Zeight
Znine
Zten
Zeleven
EOF
git column --indent=Z --mode=plain <lista >actual &&
test_cmp expected actual
'
test_expect_success '80 columns' '
cat >expected <<\EOF &&
one two three four five six seven eight nine ten eleven
EOF
COLUMNS=80 git column --mode=column <lista >actual &&
test_cmp expected actual
'
cat >expected <<\EOF
one
two
three
four
five
six
seven
eight
nine
ten
eleven
EOF
test_expect_success COLUMNS_CAN_BE_1 'COLUMNS = 1' '
COLUMNS=1 git column --mode=column <lista >actual &&
test_cmp expected actual
'
test_expect_success 'width = 1' '
git column --mode=column --width=1 <lista >actual &&
test_cmp expected actual
'
COLUMNS=20
export COLUMNS
test_expect_success '20 columns' '
cat >expected <<\EOF &&
one seven
two eight
three nine
four ten
five eleven
six
EOF
git column --mode=column <lista >actual &&
test_cmp expected actual
'
test_expect_success '20 columns, nodense' '
cat >expected <<\EOF &&
one seven
two eight
three nine
four ten
five eleven
six
EOF
git column --mode=column,nodense < lista > actual &&
test_cmp expected actual
'
test_expect_success '20 columns, dense' '
cat >expected <<\EOF &&
one five nine
two six ten
three seven eleven
four eight
EOF
git column --mode=column,dense < lista > actual &&
test_cmp expected actual
'
test_expect_success '20 columns, padding 2' '
cat >expected <<\EOF &&
one seven
two eight
three nine
four ten
five eleven
six
EOF
git column --mode=column --padding 2 <lista >actual &&
test_cmp expected actual
'
test_expect_success '20 columns, indented' '
cat >expected <<\EOF &&
one seven
two eight
three nine
four ten
five eleven
six
EOF
git column --mode=column --indent=" " <lista >actual &&
test_cmp expected actual
'
test_expect_success '20 columns, row first' '
cat >expected <<\EOF &&
one two
three four
five six
seven eight
nine ten
eleven
EOF
git column --mode=row <lista >actual &&
test_cmp expected actual
'
test_expect_success '20 columns, row first, nodense' '
cat >expected <<\EOF &&
one two
three four
five six
seven eight
nine ten
eleven
EOF
git column --mode=row,nodense <lista >actual &&
test_cmp expected actual
'
test_expect_success '20 columns, row first, dense' '
cat >expected <<\EOF &&
one two three
four five six
seven eight nine
ten eleven
EOF
git column --mode=row,dense <lista >actual &&
test_cmp expected actual
'
test_done