1#! /usr/bin/env atf-sh
2
3. $(atf_get_srcdir)/test_environment.sh
4
5tests_init \
6	autoremove \
7	autoremove_quiet \
8	autoremove_dryrun
9
10autoremove_prep() {
11	touch file1
12	touch file2
13
14	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg pkg1 test 1
15	cat << EOF >> pkg1.ucl
16files: {
17	${TMPDIR}/file1: "",
18	${TMPDIR}/file2: "",
19}
20scripts: {
21	post-deinstall: "exit 1"
22}
23EOF
24
25	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg dep1 master 1
26	cat << EOF >> dep1.ucl
27deps: {
28	test {
29		origin: test,
30		version: 1
31	}
32}
33EOF
34
35	atf_check \
36	    -o match:".*Installing.*\.\.\.$" \
37	    -e empty \
38	    -s exit:0 \
39	    pkg register -A -M pkg1.ucl
40
41	atf_check \
42	    -o match:".*Installing.*\.\.\.$" \
43	    -e empty \
44	    -s exit:0 \
45	    pkg register -M dep1.ucl
46
47	atf_check \
48	    -o match:".*Deinstalling.*\.\.\.$" \
49	    -e empty \
50	    -s exit:0 \
51	    pkg delete -y master
52}
53
54autoremove_body() {
55	autoremove_prep
56
57	atf_check \
58	    -o match:"Deinstalling test-1\.\.\." \
59	    -e inline:"${PROGNAME}: POST-DEINSTALL script failed\n" \
60	    -s exit:0 \
61	    pkg autoremove -y
62
63	atf_check \
64	    -o empty \
65	    -e empty \
66	    -s exit:0 \
67	    pkg info
68
69	test ! -f ${TMPDIR}/file1 -o ! -f ${TMPDIR}/file2 || atf_fail "Files are still present"
70}
71
72autoremove_no_scripts_body() {
73	autoremove_prep
74
75	atf_check \
76	    -o match:"Deinstalling test-1\.\.\." \
77	    -e empty \
78	    -s exit:0 \
79	    pkg autoremove -yDq
80
81	atf_check \
82	    -o empty \
83	    -e empty \
84	    -s exit:0 \
85	    pkg info
86
87	test ! -f ${TMPDIR}/file1 -o ! -f ${TMPDIR}/file2 || atf_fail "Files are still present"
88}
89
90
91autoremove_quiet_body() {
92	autoremove_prep
93
94	atf_check \
95	    -o empty \
96	    -e inline:"${PROGNAME}: POST-DEINSTALL script failed\n" \
97	    -s exit:0 \
98	    pkg autoremove -yq
99
100	atf_check \
101	    -o empty \
102	    -e empty \
103	    -s exit:0 \
104	    pkg info
105
106	test ! -f ${TMPDIR}/file1 -o ! -f ${TMPDIR}/file2 || atf_fail "Files are still present"
107}
108
109autoremove_dryrun_body() {
110	autoremove_prep
111
112	atf_check \
113	    -o match:"^Installed packages to be REMOVED:$" \
114	    -o match:"^	test: 1$" \
115	    -e empty \
116	    -s exit:0 \
117	    pkg autoremove -yn
118
119	atf_check \
120	    -o match:"^test-1                         a test$" \
121	    -e empty \
122	    -s exit:0 \
123	    pkg info
124
125	test -f ${TMPDIR}/file1 -o -f ${TMPDIR}/file2 || atf_fail "Files are missing"
126}
127