File: test_cli.sh

package info (click to toggle)
vips 8.17.3-2
  • links: PTS
  • area: main
  • in suites: sid
  • size: 52,228 kB
  • sloc: ansic: 169,684; cpp: 12,156; python: 4,887; sh: 733; perl: 40; makefile: 25; javascript: 6
file content (104 lines) | stat: -rwxr-xr-x 2,495 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#!/bin/sh

# this test is also in test_resample.py (though much smaller and neater) ...
# keep this test to exercise the cli interface

# set -x

. ./variables.sh

test_rotate() {
	im=$1
	inter=$2

	printf "testing $inter ... "

	# 90 degree clockwise rotate
	trn="0 1 1 0"

	$vips affine $im $tmp/t1.v "$trn" --interpolate $inter
	$vips affine $tmp/t1.v $tmp/t2.v "$trn" --interpolate $inter
	$vips affine $tmp/t2.v $tmp/t1.v "$trn" --interpolate $inter
	$vips affine $tmp/t1.v $tmp/t2.v "$trn" --interpolate $inter

	test_difference $im $tmp/t2.v 1

	echo "ok"
}

# vsqbs is non-interpolatory, don't test this way

echo "testing with $(basename $image)"
for i in nearest bicubic bilinear nohalo lbb; do
	test_rotate $image $i
done

test_size() {
	to_test=$1
	correct_width=$2
	correct_height=$3

	width=$($vipsheader -f width $to_test)
	height=$($vipsheader -f height $to_test)
	if [ $width -ne $correct_width ]; then
		echo width is $width, not $correct_width
		exit 1
	fi
	if [ $height -ne $correct_height ]; then
		echo height is $height, not $correct_height
		exit 1
	fi
}

test_thumbnail() {
	geo=$1
	correct_width=$2
	correct_height=$3

	printf "testing thumbnail -s $geo ... "
	$vipsthumbnail $image -s "$geo" -o $tmp/t1.jpg
	test_size $tmp/t1.jpg $correct_width $correct_height

	echo "ok"
}

test_thumbnail 100 66 100
test_thumbnail 100x100 66 100
test_thumbnail x100 66 100
test_thumbnail "100x100<" 290 442
test_thumbnail "2000<" 1312 2000
test_thumbnail "100x100>" 66 100
test_thumbnail "2000>" 290 442

# test thumbnail to and from pipes
echo -n "testing thumbnail of stdin / stdout ... "
$vipsthumbnail stdin -s 100 -o $tmp/t1.jpg < $image
test_size $tmp/t1.jpg 66 100
cat $image | $vipsthumbnail stdin -s 100 -o $tmp/t1.jpg
test_size $tmp/t1.jpg 66 100
cat $image | $vipsthumbnail stdin -s 100 -o .jpg > $tmp/t1.jpg
test_size $tmp/t1.jpg 66 100
cat $image | $vipsthumbnail stdin -s 100 -o .jpg | cat > $tmp/t1.jpg
echo ok
test_size $tmp/t1.jpg 66 100

# test max-coord
# this will coredumop on an assert fail in debug builds, so block coredumps
ulimit -c 0
echo -n "testing --vips-max-coord ... "
if $vips black $tmp/t1.v 1000 1000 --vips-max-coord 120 > /dev/null 2>&1; then
  echo "FAIL"
  echo "--vips-max-coord CLI arg test failed"
  exit 1
fi
echo ok

echo -n "testing VIPS_MAX_COORD ... "
export VIPS_MAX_COORD=120
if $vips black $tmp/t1.v 1000 1000 > /dev/null 2>&1; then
  echo "FAIL"
  echo "VIPS_MAX_COORD env var test failed"
  exit 1
fi
echo ok
unset VIPS_MAX_COORD