summaryrefslogtreecommitdiff
path: root/test/librefetch-test.sh
blob: b4be0515fd7e056f0e484b1442e6fb0992c30ec3 (plain)
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/env roundup

describe librefetch
. ./test-common.sh

KEYSERVER=hkp://pool.sks-keyservers.net
GPG="gpg --quiet --batch --no-tty --no-permission-warning --keyserver ${KEYSERVER}"

common_before() {
	mkdir -p "$XDG_CONFIG_HOME"/{pacman,libretools} "$tmpdir/srcdest"

	cat <<EOF > "$XDG_CONFIG_HOME/pacman/makepkg.conf"
DLAGENTS=('ftp::/usr/bin/curl -fC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
          'http::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
          'https::/usr/bin/curl -fLC - --retry 3 --retry-delay 3 -o %o %u'
          'rsync::/usr/bin/rsync --no-motd -z %u %o'
          'scp::/usr/bin/scp -C %u %o')
BUILDDIR=""
SRCDEST=$tmpdir/srcdest
. ${_librelib_conf_sh_pkgconfdir}/librefetch-makepkg.conf
EOF
	sed -i 's,/usr/bin/librefetch,$(which librefetch),' \
	    "${_librelib_conf_sh_pkgconfdir}/librefetch-makepkg.conf"

	export MAKEPKG_CONF="$XDG_CONFIG_HOME/pacman/makepkg.conf"

	printf '%s\n' \
		'MIRRORS=("phony://example.com/dir/")' \
		'DOWNLOADER=/usr/bin/false' \
		> "$XDG_CONFIG_HOME/libretools/librefetch.conf"

	printf '%s\n' \
	       'Key-Type: RSA' \
	       'Key-Length: 1024' \
	       'Key-Usage: sign' \
	       'Name-Real: Temporary LibreTools testsuite key' \
	       'Name-Email: libretools-test@localhost' \
	       'Expire-Date: 0' \
	       '%no-protection' \
	       '%commit' \
	    | $GPG --gen-key 2>/dev/null
}

it_displays_help() {
	LC_ALL=C librefetch -h >$tmpdir/stdout 2>$tmpdir/stderr

	[[ "$(sed 1q $tmpdir/stdout)" =~ Usage:.* ]]
	empty $tmpdir/stderr
}

# This test used to be called "it_cleans_src_libre_first", but let's
# be honest: it checks pretty much everything related to normal
# operation.
it_runs_with_mksource() {
	local srcball=testpkg-1.0.tar.gz
	cp librefetch.d/* "$tmpdir/"
	cd "$tmpdir"
	mv PKGBUILD{-mksource,}

	# Create garbage, to verifiy that it cleans src-libre first
	mkdir -p src-libre/foo
	touch src-libre/foo/file

	# Run librefetch
	makepkg -g

	# Verify that no temporary files were left around
	not test -e librefetch.*

	# Verify:
	# - The srcball was created...
	# - ... and is in the correct directory
	# - The srcball does not contain the garbage created earlier
	# - The files in the srcball are in the correct order (if the
	#   order isn't ensured, then this would only sometimes fail,
	#   unfortunately).
	bsdtar tf "$tmpdir/srcdest/$srcball" > list-pkg.txt
	diff -u list.txt list-pkg.txt
	# Verify that the signature was created and matches
	gpg --quiet --verify "$tmpdir/srcdest/$srcball"{.sig,} 2>/dev/null
}

it_runs_with_srcbuild() {
	local srcball=testpkg-1.0.tar.gz
	cp librefetch.d/* "$tmpdir/"
	cd "$tmpdir"
	mv PKGBUILD{-srcbuild,}
	mv SRCBUILD{-srcbuild,}

	# Create garbage, to verifiy that it cleans src-libre first
	mkdir -p src-libre/foo
	touch src-libre/foo/file

	# Run librefetch
	makepkg -g

	# Verify that no temporary files were left around
	not test -e librefetch.*

	# Verify:
	# - The srcball was created...
	# - ... and is in the correct directory
	# - The srcball does not contain the garbage created earlier
	# - The files in the srcball are in the correct order (if the
	#   order isn't ensured, then this would only sometimes fail,
	#   unfortunately).
	bsdtar tf "$tmpdir/srcdest/$srcball" > list-pkg.txt
	diff -u list.txt list-pkg.txt
	# Verify that the signature was created and matches
	gpg --quiet --verify "$tmpdir/srcdest/$srcball"{.sig,} 2>/dev/null
}

it_recurses() {
	local srcball=testpkg-1.0.tar.gz
	cp librefetch.d/* "$tmpdir/"
	cd "$tmpdir"
	mv PKGBUILD{-recurse,}

	makepkg -g
	bsdtar tf "$tmpdir/srcdest/$srcball" > list-pkg.txt
	diff -u list.txt list-pkg.txt
	gpg --quiet --verify "$tmpdir/srcdest/$srcball"{.sig,} 2>/dev/null
}