summaryrefslogtreecommitdiff
path: root/tests/rpmconflict.at
blob: 802804d62c1f92cf1b23807c4130d434839458fd (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
124
125
126
127
128
129
130
131
#    rpmconflict.at: rpm file conflict tests

AT_BANNER([RPM file conflicts])

# ------------------------------
# (Build and) install conflicting package (should fail)
AT_SETUP([rpm -U to package with file conflict])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
rm -rf "${TOPDIR}"

for p in "one" "two"; do
    run rpmbuild --quiet -bb \
        --define "pkg $p" \
	--define "filedata $p" \
          ${RPMDATA}/SPECS/conflicttest.spec
done

runroot rpm -U "${TOPDIR}"/RPMS/noarch/conflictone-1.0-1.noarch.rpm
runroot rpm -U "${TOPDIR}"/RPMS/noarch/conflicttwo-1.0-1.noarch.rpm
],
[1],
[ignore],
[ignore])
AT_CLEANUP

# ------------------------------
# Install conflicting packages in same transaction (should fail)
AT_SETUP([rpm -U two packages with a conflicting file])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR

runroot rpm -U \
  "${TOPDIR}"/RPMS/noarch/conflictone-1.0-1.noarch.rpm \
  "${TOPDIR}"/RPMS/noarch/conflicttwo-1.0-1.noarch.rpm
],
[2],
[ignore],
[ignore])
AT_CLEANUP

# ------------------------------
# (Build and) install package with shareable file
AT_SETUP([rpm -U package with shareable file])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
rm -rf "${TOPDIR}"

for p in "one" "two"; do
    run rpmbuild --quiet -bb \
        --define "pkg $p" \
	--define "filedata same_stuff" \
          ${RPMDATA}/SPECS/conflicttest.spec
done

runroot rpm -U "${TOPDIR}"/RPMS/noarch/conflictone-1.0-1.noarch.rpm
runroot rpm -U "${TOPDIR}"/RPMS/noarch/conflicttwo-1.0-1.noarch.rpm
],
[0],
[ignore],
[ignore])
AT_CLEANUP

# ------------------------------
# Install packages with shareable file in same transaction
AT_SETUP([rpm -U two packages with shareable file])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR

runroot rpm -U \
  "${TOPDIR}"/RPMS/noarch/conflictone-1.0-1.noarch.rpm \
  "${TOPDIR}"/RPMS/noarch/conflicttwo-1.0-1.noarch.rpm
],
[0],
[ignore],
[ignore])
AT_CLEANUP


# ------------------------------
# Replace directory with symlink, this is expected to fail
AT_SETUP([rpm -U replacing directory with symlink])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
rm -rf "${TOPDIR}"
rm -rf "${RPMTEST}"/usr/{share,lib}/symlinktest*

run rpmbuild --quiet -bb \
    --define "rel 1" --without symlink ${RPMDATA}/SPECS/symlinktest.spec
run rpmbuild --quiet -bb \
    --define "rel 2" --with symlink ${RPMDATA}/SPECS/symlinktest.spec

runroot rpm -U "${TOPDIR}"/RPMS/noarch/symlinktest-1.0-1.noarch.rpm
runroot rpm -U "${TOPDIR}"/RPMS/noarch/symlinktest-1.0-2.noarch.rpm
],
[1],
[],
[error: unpacking of archive failed on file /usr/share/symlinktest: cpio: rename failed - Is a directory
error: symlinktest-1.0-2.noarch: install failed
error: symlinktest-1.0-1.noarch: erase skipped
])
AT_CLEANUP

# ------------------------------
# Replace symlink with a directory - the upgrade succeeds but leaves an
# orphan directory that the symlink now points to. Should verify the
# result more carefully...
AT_SETUP([rpm -U replacing symlink with directory])
AT_KEYWORDS([install])
AT_CHECK([
RPMDB_CLEAR
rm -rf "${TOPDIR}"
rm -rf "${RPMTEST}"/usr/{share,lib}/symlinktest*

run rpmbuild --quiet -bb \
    --define "rel 1" --with symlink ${RPMDATA}/SPECS/symlinktest.spec
run rpmbuild --quiet -bb \
    --define "rel 2" --without symlink ${RPMDATA}/SPECS/symlinktest.spec

runroot rpm -U "${TOPDIR}"/RPMS/noarch/symlinktest-1.0-1.noarch.rpm
runroot rpm -U "${TOPDIR}"/RPMS/noarch/symlinktest-1.0-2.noarch.rpm
],
[0],
[],
[])
AT_CLEANUP