/ tests / frontend / rubypuppet.sh
rubypuppet.sh
  1  #! /usr/bin/env atf-sh
  2  
  3  # If you remove rubygem-ruby-augeas from puppet as deps pkg will not remove puppet
  4  # but also don't reinstall it which is also wrong.
  5  
  6  . $(atf_get_srcdir)/test_environment.sh
  7  
  8  tests_init \
  9  	pkg_puppet
 10  
 11  pkg_puppet_body() {
 12  	touch puppet.file
 13  	touch ruby.file
 14  	touch rubygemrubyaugeas.file
 15  	touch rubygemhiera.file
 16  	touch rubygems.file
 17  
 18  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkgf \
 19  		rubygemrubyaugeas \
 20  		rubygem-ruby-augeas \
 21  		textproc/rubygem-augeas \
 22  		1.0
 23  	cat << EOF >> rubygemrubyaugeas.ucl
 24  deps: {
 25  	ruby: {
 26  		origin: "lang/ruby20",
 27  		version: "2.0"
 28  	},
 29  	ruby20-gems: {
 30  		origin: "lang/ruby-gems",
 31  		version: "1.0"
 32  	}
 33  }
 34  files: {
 35  	${TMPDIR}/rubygemrubyaugeas.file: "",
 36  }
 37  EOF
 38  
 39  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkgf \
 40  		puppet \
 41  		puppet \
 42  		sysutils/puppet \
 43  		1.0
 44  	cat << EOF >> puppet.ucl
 45  deps: {
 46  	ruby: {
 47  		origin: "lang/ruby20",
 48  		version: "2.0"
 49  	},
 50  	rubygem-hiera: {
 51  		origin: "lang/rubygem-hiera",
 52  		version: "1.0"
 53  	},
 54  	rubygem-ruby-augeas: {
 55  		origin: "textproc/rubygem-augeas",
 56  		version: "1.0"
 57  	}
 58  }
 59  files: {
 60  	${TMPDIR}/puppet.file: "",
 61  }
 62  EOF
 63  
 64  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkgf \
 65  		ruby \
 66  		ruby \
 67  		lang/ruby20 \
 68  		2.0
 69  	cat << EOF >> ruby.ucl
 70  shlibs_provided [
 71  	"libruby20.so.20",
 72  ]
 73  files: {
 74  	${TMPDIR}/ruby.file: "",
 75  }
 76  EOF
 77  
 78  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkgf \
 79  		rubygem-hiera \
 80  		rubygem-hiera \
 81  		lang/rubygem-hiera \
 82  		1.0
 83  	cat << EOF >> rubygem-hiera.ucl
 84  deps: {
 85  	ruby: {
 86  		origin: "lang/ruby20",
 87  		version: "2.0"
 88  	},
 89  	ruby20-gems: {
 90  		origin: "lang/ruby-gems",
 91  		version: "1.0"
 92  	},
 93  }
 94  files: {
 95  	${TMPDIR}/rubygemhiera.file: "",
 96  }
 97  EOF
 98  
 99  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkgf \
100  		ruby-gems20  \
101  		ruby20-gems \
102  		lang/ruby-gems \
103  		1.0
104  	cat << EOF >> ruby-gems20.ucl
105  deps: {
106  	ruby {
107  		origin: lang/ruby20,
108  		version: "2.0"
109  	}
110  }
111  files: {
112  	${TMPDIR}/rubygems.file: "",
113  }
114  EOF
115  
116  	mkdir reposconf
117  	cat << EOF > reposconf/repo1.conf
118  local1: {
119  	url: file://${TMPDIR},
120  	enabled: true
121  }
122  EOF
123  
124  	for p in ruby ruby-gems20 rubygem-hiera rubygemrubyaugeas puppet; do
125  		atf_check \
126  		    -o ignore \
127  		    -e empty \
128  		    -s exit:0 \
129  		    pkg create -M ./${p}.ucl
130  	done
131  
132  	atf_check \
133  	    -o inline:"Creating repository in .:  done\nPacking files for repository:  done\n" \
134  	    -e empty \
135  	    -s exit:0 \
136  	    pkg repo .
137  
138  	atf_check \
139  	    -o ignore \
140  	    -s exit:0 \
141  	    pkg -o REPOS_DIR="${TMPDIR}"/reposconf -o PKG_CACHEDIR="${TMPDIR}" install -y puppet
142  
143  #### NEW
144  	rm reposconf/repo1.conf
145  	rm -f *.ucl
146  	rm *.txz
147  	rm *.pkg
148  
149  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkgf \
150  		rubygemrubyaugeas.new \
151  		rubygem-ruby-augeas \
152  		textproc/rubygem-augeas \
153  		1.0
154  	cat << EOF >> rubygemrubyaugeas.new.ucl
155  deps: {
156  	ruby: {
157  		origin: "lang/ruby21",
158  		version: "2.1"
159  	},
160  	ruby21-gems: {
161  		origin: "lang/ruby-gems",
162  		version: "1.0"
163  	}
164  }
165  files: {
166  	${TMPDIR}/rubygemrubyaugeas.file: "",
167  }
168  EOF
169  
170  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkgf \
171  		puppet.new \
172  		puppet \
173  		lang/ruby21 \
174  		1.0
175  	cat << EOF >> puppet.new.ucl
176  deps: {
177  	ruby: {
178  		origin: "lang/ruby21",
179  		version: "2.1"
180  	},
181  	rubygem-hiera: {
182  		origin: "lang/rubygem-hiera",
183  		version: "1.0"
184  	},
185  	rubygem-ruby-augeas: {
186  		origin: "textproc/rubygem-augeas",
187  		version: "1.0"
188  	}
189  }
190  files: {
191  	${TMPDIR}/puppet.file: "",
192  }
193  EOF
194  
195  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ruby.new ruby 2.1
196  	cat << EOF >> ruby.new.ucl
197  shlibs_provided [
198  	"libruby21.so.21",
199  ]
200  files: {
201  	${TMPDIR}/ruby.file: "",
202  }
203  EOF
204  
205  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg rubygem-hiera.new rubygem-hiera 1.0
206  	cat << EOF >> rubygem-hiera.new.ucl
207  deps: {
208  	ruby: {
209  		origin: "lang/ruby21",
210  		version: "2.1"
211  	},
212  	ruby21-gems: {
213  		origin: "lang/ruby-gems",
214  		version: "1.0"
215  	},
216  }
217  files: {
218  	${TMPDIR}/rubygemhiera.file: "",
219  	}
220  EOF
221  
222  	atf_check -s exit:0 sh ${RESOURCEDIR}/test_subr.sh new_pkg ruby-gems21.new ruby21-gems 1.0
223  	cat << EOF >> ruby-gems21.new.ucl
224  deps: {
225  	ruby {
226  		origin: lang/ruby21,
227  		version: "2.1"
228  	}
229  }
230  files: {
231  	${TMPDIR}/rubygems.file: "",
232  }
233  EOF
234  
235  	for p in ruby ruby-gems21 rubygem-hiera rubygemrubyaugeas puppet; do
236  		atf_check \
237  		    -o ignore \
238  		    -e empty \
239  		    -s exit:0 \
240  		    pkg create -M ./${p}.new.ucl
241  	done
242  
243  	atf_check \
244  	    -o inline:"Creating repository in .:  done\nPacking files for repository:  done\n" \
245  	    -e empty \
246  	    -s exit:0 \
247  	    pkg repo .
248  
249  	mkdir reposconf
250  	cat << EOF > reposconf/repo.conf
251  local: {
252  	url: file://${TMPDIR}/,
253  	enabled: true
254  }
255  EOF
256  
257  	OUTPUT="Updating local repository catalogue...
258  ${JAILED}Fetching meta.conf:  done
259  ${JAILED}Fetching data:  done
260  Processing entries:  done
261  local repository update completed. 5 packages processed.
262  All repositories are up to date.
263  Checking for upgrades (4 candidates):  done
264  Processing candidates (4 candidates):  done
265  Checking integrity... done (1 conflicting)
266    - ruby21-gems-1.0 conflicts with ruby20-gems-1.0 on ${TMPDIR}/rubygems.file
267  Checking integrity... done (0 conflicting)
268  The following 6 package(s) will be affected (of 0 checked):
269  
270  New packages to be INSTALLED:
271  	ruby21-gems: 1.0
272  
273  Installed packages to be UPGRADED:
274  	ruby: 2.0 -> 2.1
275  
276  Installed packages to be REINSTALLED:
277  	puppet-1.0 (direct dependency changed: ruby)
278  	rubygem-hiera-1.0 (direct dependency changed: ruby21-gems)
279  	rubygem-ruby-augeas-1.0 (direct dependency changed: ruby21-gems)
280  
281  Installed packages to be REMOVED:
282  	ruby20-gems: 1.0
283  
284  Number of packages to be removed: 1
285  Number of packages to be installed: 1
286  Number of packages to be upgraded: 1
287  Number of packages to be reinstalled: 3
288  "
289  
290  	atf_check \
291  	    -o inline:"${OUTPUT}" \
292  	    -s exit:0 \
293  	    pkg -o REPOS_DIR="${TMPDIR}/reposconf" -o PKG_CACHEDIR="${TMPDIR}" upgrade -yn
294  }