Lines Matching refs:self

70         def _assertEditables(self, moved=[], removed=[], installed=[],
86 self.assertEqualParsable(self.output,
324 def setUp(self):
325 pkg5unittest.SingleDepotTestCase.setUp(self)
326 self.make_misc_files(self.misc_files)
328 def __get_mf_path(self, fmri_str, pub=None):
335 path_comps = [self.dc.get_repodir(), "publisher",
342 def __get_file_path(self, path):
344 must be present in self.fhashes."""
346 fpath = os.path.sep.join([self.dc.get_repodir(), "publisher",
348 fhash = self.fhashes[path]
351 def __inject_nofile(self, path):
352 fpath = self.__get_file_path(path)
356 def __inject_nomanifest(self, fmri_str):
357 mpath = self.__get_mf_path(fmri_str)
360 def test_cli(self):
363 self.cli_helper("install")
364 self.cli_helper("exact-install")
366 def cli_helper(self, install_cmd):
367 self.image_create(self.rurl)
369 self.pkg("-@", exit=2)
370 self.pkg("-s status", exit=2)
371 self.pkg("-R status", exit=2)
373 self.pkg("{0} -@ foo".format(install_cmd), exit=2)
374 self.pkg("{0} -vq foo".format(install_cmd), exit=2)
375 self.pkg("{0}".format(install_cmd), exit=2)
376 self.pkg("{0} foo@x.y".format(install_cmd), exit=1)
377 self.pkg("{0} pkg:/foo@bar.baz".format(install_cmd), exit=1)
379 def test_basics_1_install(self):
382 plist = self.pkgsend_bulk(self.rurl, self.foo10)
383 self.image_create(self.rurl)
385 self.pkg("list -a")
386 self.pkg("list", exit=1)
388 self.pkg("install --parsable=0 foo")
389 self.assertEqualParsable(self.output,
392 self.pkg("list")
393 self.pkg("verify")
395 self.pkg("uninstall --parsable=0 foo")
396 self.assertEqualParsable(self.output,
398 self.pkg("verify")
400 def test_basics_1_exact_install(self):
403 plist = self.pkgsend_bulk(self.rurl, self.foo10)
404 self.image_create(self.rurl)
406 self.pkg("list -a")
407 self.pkg("list", exit=1)
409 self.pkg("exact-install --parsable=0 foo")
410 self.assertEqualParsable(self.output,
414 self.pkg("exact-install foo", exit=4)
415 self.pkg("list")
416 self.pkg("verify")
418 self.pkg("uninstall --parsable=0 foo")
419 self.assertEqualParsable(self.output,
421 self.pkg("verify")
423 def test_basics_2(self):
427 self.basics_2_helper("install")
428 self.basics_2_helper("exact-install")
430 def basics_2_helper(self, install_cmd):
433 self.dc.start()
435 self.pkgsend_bulk(self.durl, (self.foo10, self.foo11),
437 self.image_create(self.durl)
439 self.pkg("list -a")
440 self.pkg("{0} foo".format(install_cmd))
444 api_inst = self.get_img_api_obj()
450 self.assertEqual(cache_dirs, [])
452 self.pkg("verify")
453 self.pkg("list")
455 self.pkg("search -l /lib/libc.so.1")
456 self.pkg("search -r /lib/libc.so.1")
457 self.pkg("search -l blah", exit=1)
458 self.pkg("search -r blah", exit=1)
461 libc_path = os.path.join(self.get_img_path(), "lib/libc.so.1")
464 assert (lstat[stat.ST_MTIME] == self.foo11_timestamp)
469 self.pkg("verify", exit=1)
471 self.pkg("uninstall foo")
472 self.pkg("verify")
473 self.pkg("list -a")
474 self.pkg("verify")
475 self.dc.stop()
477 def test_basics_3(self):
481 self.basics_3_helper("install")
482 self.basics_3_helper("exact-install")
484 def basics_3_helper(self, installed_cmd):
487 self.dc.start()
489 self.pkgsend_bulk(self.durl, (self.foo10, self.foo11))
490 self.image_create(self.durl)
491 self.pkg("set-property flush-content-cache-on-success False")
495 api_inst = self.get_img_api_obj()
501 self.assertEqual(cache_dirs, [])
503 self.pkg("{0} foo@1.0".format(installed_cmd))
504 self.pkg("list foo@1.0")
505 self.pkg("list foo@1.1", exit=1)
507 self.pkg("{0} foo@1.1".format(installed_cmd))
517 self.assertNotEqual(cache_dirs, [])
519 self.pkg("list foo@1.1")
520 self.pkg("list foo@1.0", exit=1)
521 self.pkg("list foo@1")
522 self.pkg("verify")
524 self.pkg("uninstall foo")
525 self.pkg("list -a")
526 self.pkg("verify")
527 self.dc.stop()
529 def test_basics_4(self):
533 self.basics_4_helper("install")
534 self.basics_4_helper("exact-install")
536 def basics_4_helper(self, installed_cmd):
539 self.dc.start()
541 self.pkgsend_bulk(self.durl, (self.foo10, self.foo11,
542 self.bar10))
543 self.image_create(self.durl)
546 self.pkg("set-property flush-content-cache-on-success False")
550 api_inst = self.get_img_api_obj()
556 self.assertEqual(cache_dirs, [])
558 self.pkg("list -a")
559 self.pkg("{0} bar@1.0".format(installed_cmd))
569 self.assertNotEqual(cache_dirs, [])
571 self.pkg("list")
572 self.pkg("verify")
573 self.pkg("uninstall -v bar foo")
576 self.pkg("list bar", exit=1)
577 self.pkg("list foo", exit=1)
578 self.pkg("verify")
579 self.dc.stop()
581 def test_basics_5_install(self):
588 self.pkgsend_bulk(self.rurl, (self.bar10, self.bar11,
589 self.foo10, self.foo11, self.foo12, self.boring10,
590 self.boring11))
591 self.image_create(self.rurl)
593 self.pkg("install foo@1.0 bar@1.0 boring@1.0")
594 self.pkg("list foo@1.0 boring@1.0 bar@1.0")
595 self.pkg("install -v bar@1.1") # upgrade bar
596 self.pkg("list bar@1.1 foo@1.2 boring@1.0")
597 self.pkg("install -v bar@1.0") # downgrade bar
598 self.pkg("list bar@1.0 foo@1.2 boring@1.0")
600 def test_basics_5_exact_install(self):
605 self.pkgsend_bulk(self.rurl, (self.bar10, self.bar11,
606 self.foo10, self.foo11, self.foo12, self.boring10,
607 self.boring11))
608 self.image_create(self.rurl)
610 self.pkg("exact-install foo@1.0 bar@1.0 boring@1.0")
611 self.pkg("list foo@1.0 boring@1.0 bar@1.0")
612 self.pkg("exact-install -v bar@1.1") # upgrade bar
613 self.pkg("list bar@1.1 foo@1.2")
614 self.pkg("list boring@1.0", exit=1)
616 def test_basics_6_install(self):
621 t1dir = os.path.join(self.test_root, "test-repo")
622 self.create_repo(t1dir, properties={ "publisher": {
624 self.pkgsend_bulk(t1dir, (self.bar10,
625 self.foo10, self.foo11, self.foo12, self.boring10,
626 self.boring11))
627 self.image_create("file:{0}".format(t1dir))
636 t2dir = os.path.join(self.test_root, "pub2-repo")
637 self.create_repo(t2dir, properties={ "publisher": {
639 self.pkgsend_bulk(t2dir, self.bar11)
641 self.pkg("set-publisher -p {0}".format(t2dir))
642 self.pkg("install '*@latest'")
646 self.pkg("list")
647 self.pkg("info bar@1.0 foo@1.2 boring@1.1")
649 self.pkg("set-publisher --non-sticky test")
650 self.pkg("set-publisher -P pub2 ")
651 self.pkg("install bar@latest")
655 self.pkg("list")
656 self.pkg("info bar@1.1")
662 def test_basics_6_exact_install(self):
667 t1dir = os.path.join(self.test_root, "test-repo")
668 self.create_repo(t1dir, properties={ "publisher": {
670 self.pkgsend_bulk(t1dir, (self.bar10,
671 self.foo10, self.foo11, self.foo12, self.boring10,
672 self.boring11))
673 self.image_create("file:{0}".format(t1dir))
682 t2dir = os.path.join(self.test_root, "pub2-repo")
683 self.create_repo(t2dir, properties={ "publisher": {
685 self.pkgsend_bulk(t2dir, self.bar11)
687 self.pkg("set-publisher -p {0}".format(t2dir))
688 self.pkg("exact-install '*@latest'")
692 self.pkg("list")
693 self.pkg("info bar@1.0 foo@1.2 boring@1.1")
695 self.pkg("set-publisher --non-sticky test")
696 self.pkg("set-publisher -P pub2 ")
697 self.pkg("exact-install bar@latest")
701 self.pkg("info bar@1.1")
702 self.pkg("list foo@1.2")
703 self.pkg("list boring@1.1", exit=1)
709 def test_basics_7_install(self):
712 self.pkgsend_bulk(self.rurl, self.xbar11)
713 self.image_create(self.rurl)
714 self.pkg("install xbar@1.0", exit=1)
716 def test_basics_7_exact_install(self):
719 self.pkgsend_bulk(self.rurl, self.xbar11)
720 self.image_create(self.rurl)
721 self.pkg("exact-install xbar@1.0", exit=1)
723 def test_basics_8_exact_install(self):
726 self.pkgsend_bulk(self.rurl, (self.foo11, self.foo12))
727 self.image_create(self.rurl)
729 self.pkg("exact-install foo@1.1 foo@1.2", exit=1)
731 def test_basics_9_exact_install(self):
734 self.pkgsend_bulk(self.rurl, (self.bar10, self.bar11,
735 self.foo10, self.foo12))
736 self.image_create(self.rurl)
738 self.pkg("install bar@1.1")
739 self.pkg("exact-install bar@1.0")
740 self.pkg("list bar@1.0")
741 self.pkg("list foo@1.2")
743 def test_freeze_exact_install(self):
748 self.pkgsend_bulk(self.rurl, (self.fbar10, self.ffoo10,
749 self.fbar11, self.ffoo11))
750 self.image_create(self.rurl)
753 self.pkg("install fbar@1.0")
754 self.pkg("freeze fbar@1.0")
755 self.pkg("exact-install fbar@1.1")
756 self.pkg("list fbar@1.1")
757 self.pkg("list ffoo@1.1")
758 self.pkg("uninstall '*'")
761 self.image_create(self.rurl)
762 self.pkg("install fbar@1.0 ffoo@1.0")
763 self.pkg("freeze fbar@1.0")
764 self.pkg("freeze ffoo@1.0")
765 self.pkg("exact-install fbar@1.1")
766 self.pkg("list fbar@1.1")
767 self.pkg("list ffoo@1.1")
769 def test_basics_mdns(self):
772 self.pkgsend_bulk(self.rurl, self.foo11)
773 self.image_create(self.rurl)
775 self.pkg("set-property mirror-discovery True")
776 self.pkg("list -a")
777 self.pkg("list", exit=1)
779 self.pkg("install foo")
781 self.pkg("list")
782 self.pkg("verify")
784 self.pkg("uninstall foo")
785 self.pkg("verify")
787 def test_basics_ipv6(self):
793 self.dc.set_address("::1")
794 self.dc.start()
796 durl = self.dc.get_depot_url()
797 self.pkgsend_bulk(durl, (self.foo10, self.foo12))
798 self.wait_repo(self.dc.get_repodir())
799 self.image_create(durl)
801 self.pkg("install foo@1.0")
802 self.pkg("info foo@1.0")
804 self.pkg("update")
805 self.pkg("list")
806 self.pkg("info foo@1.2")
807 self.pkg("uninstall '*'")
808 self.dc.stop()
809 self.dc.set_address(None)
811 def test_image_upgrade(self):
816 self.image_upgrade_helper("install")
817 self.image_upgrade_helper("exact-install")
819 def image_upgrade_helper(self, install_cmd):
820 self.pkgsend_bulk(self.rurl, (self.foo10, self.foo11,
821 self.bar10))
822 self.image_create(self.rurl)
824 self.pkg("{0} bar@1.0".format(install_cmd))
826 self.pkgsend_bulk(self.rurl, (self.foo12, self.bar11))
827 self.pkg("refresh")
829 self.pkg("contents -H")
830 self.pkg("list")
831 self.pkg("refresh")
833 self.pkg("list")
834 self.pkg("verify")
835 self.pkg("update -v")
836 self.pkg("verify")
838 self.pkg("list foo@1.2")
839 self.pkg("list bar@1.1")
841 self.pkg("uninstall bar foo")
842 self.pkg("verify")
844 def test_dependent_uninstall(self):
848 self.pkgsend_bulk(self.rurl, (self.foo10, self.bar10))
849 self.image_create(self.rurl)
851 self.pkg("install bar@1.0")
853 self.pkg("uninstall -v foo", exit=1)
854 self.pkg("list bar")
855 self.pkg("list foo")
857 def test_bug_1338(self):
860 self.pkg("list -a")
861 self.pkgsend_bulk(self.rurl, self.bar11)
862 self.image_create(self.rurl)
864 self.pkg("install xbar@1.1", exit=1)
866 def test_bug_1338_2(self):
870 self.pkgsend_bulk(self.rurl, (self.bar11, self.baz10))
871 self.image_create(self.rurl)
872 self.pkg("list -a")
873 self.pkg("install baz@1.0 bar@1.1")
875 def test_bug_1338_3(self):
879 self.pkgsend_bulk(self.rurl, (self.xbar10, self.xdeep10))
880 self.image_create(self.rurl)
882 self.pkg("install xdeep@1.0", exit=1)
884 def test_bug_1338_4(self):
888 self.pkgsend_bulk(self.rurl, self.ydeep10)
889 self.image_create(self.rurl)
891 self.pkg("install ydeep@1.0", exit=1)
893 def test_bug_2795(self):
896 self.pkgsend_bulk(self.rurl, (self.foo11, self.foo12))
897 self.image_create(self.rurl)
899 self.pkg("install foo@1.1 foo@1.2", exit=1)
901 def test_bug_6018(self):
919 plist = self.pkgsend_bulk(self.rurl, (self.a6018_1,
920 self.a6018_2, self.b6018_1))
921 self.image_create(self.rurl)
922 self.pkg("install b6018@1 a6018@1")
924 self.pkg("update --parsable=0")
925 self.assertEqualParsable(self.output,
927 self.pkg("list b6018@1 a6018@2")
929 def test_install_matching(self):
933 self.install_matching_helper("install")
934 self.install_matching_helper("exact-install")
936 def install_matching_helper(self, install_cmd):
937 self.pkgsend_bulk(self.rurl, (self.foo10, self.bar10,
938 self.baz10))
939 self.image_create(self.rurl)
946 self.pkg("{0} 'ba*' 'b*'".format(install_cmd), exit=1)
947 self.pkg("{0} 'ba*'".format(install_cmd), exit=0)
948 self.pkg("list foo", exit=0)
949 self.pkg("list bar", exit=0)
950 self.pkg("list baz", exit=0)
951 self.pkg("uninstall 'b*' 'f*'")
955 self.pkg("{0} pkg:/foo /foo ///foo pkg:///foo".format(install_cmd))
956 self.pkg("list")
957 self.pkg("verify pkg:/foo /foo ///foo pkg:///foo")
958 self.pkg("uninstall pkg:/foo /foo ///foo "
961 def test_bad_package_actions(self):
965 self.bad_package_actions("install")
966 self.bad_package_actions("exact-install")
968 def bad_package_actions(self, install_cmd):
971 plist = self.pkgsend_bulk(self.rurl, (self.badfile10,
972 self.baddir10))
973 self.image_create(self.rurl)
976 self.pkg("{0} {1}".format(install_cmd, " ".join(plist)))
981 mdata = self.get_img_manifest(pfmri)
988 self.pkg("uninstall {0}".format(pfmri.pkg_name))
995 self.debug("Testing with bad mode "
998 self.write_img_manifest(pfmri, bad_mdata)
999 self.pkg("--debug manifest_validate=Never "
1007 self.debug("Testing with bad owner "
1012 self.write_img_manifest(pfmri, bad_mdata)
1013 self.pkg("--debug manifest_validate=Never "
1018 self.debug("Testing with bad group "
1023 self.write_img_manifest(pfmri, bad_mdata)
1024 self.pkg("--debug manifest_validate=Never "
1033 self.debug("Testing with bad action "
1036 self.write_img_manifest(pfmri, bad_mdata)
1037 self.pkg("--debug manifest_validate=Never "
1041 def test_bug_3770(self):
1045 self.pkgsend_bulk(self.rurl, self.foo11)
1046 self.image_create(self.rurl)
1049 self.pkg("set-publisher --no-refresh -O {0} test".format(self.durl))
1050 self.pkg("install foo@1.1", exit=1)
1052 def test_bug_9929(self):
1059 self.dc.start()
1060 self.pkgsend_bulk(self.durl, self.foo11)
1061 self.image_create(self.durl)
1063 self.pkg("install foo")
1066 self.dc.stop()
1067 self.pkg("set-publisher --no-refresh -O {0} test".format(self.durl))
1068 self.pkg("uninstall foo")
1070 def test_bug_16189(self):
1078 afmri = self.pkgsend_bulk(self.rurl, self.a16189)
1079 bfmri = self.pkgsend_bulk(self.rurl, self.b16189)
1080 self.image_create(self.rurl)
1082 repo = self.dc.get_repo()
1091 self.pkg("install a16189", exit=1)
1094 self.image_destroy()
1095 self.image_create(self.rurl)
1101 self.pkg("install a16189", exit=1)
1103 def test_install_fuzz(self):
1108 self.pkgsend_bulk(self.rurl, self.fuzzy)
1109 self.image_create(self.rurl)
1111 self.pkg("install fuzzy@1")
1112 self.pkg("verify -v")
1113 self.pkg("update -vvv fuzzy@2")
1114 self.pkg("verify -v")
1120 self.debug("fname: {0}".format(name))
1121 self.assertTrue(os.path.exists(os.path.join(self.get_img_path(),
1124 self.pkg("uninstall -vvv fuzzy")
1126 def test_sysattrs(self):
1133 plist = self.pkgsend_bulk(self.rurl, [self.secret1,
1134 self.secret2, self.secret3, self.secret4, self.secret5,
1135 self.secret6])
1139 self.image_create(self.rurl)
1140 self.pkg("install secret1")
1141 self.assertTrue("WARNING" in self.errout)
1145 self.debug(self.rurl)
1146 old_img_path = self.img_path()
1147 self.set_img_path(tempfile.mkdtemp(dir="/var/tmp"))
1149 self.image_create(self.rurl)
1152 self.pkg("install secret1", su_wrap=True, exit=1)
1155 self.pkg("install secret1")
1156 fpath = os.path.join(self.img_path(),"p1/cat")
1162 self.assertTrue(expected in out, out)
1164 self.pkg("install secret2")
1165 fpath = os.path.join(self.img_path(),"p2/cat")
1171 self.assertTrue(expected in out, out)
1174 self.pkg("install secret3")
1175 self.pkg("uninstall secret3")
1176 self.pkg("install secret4")
1177 self.pkg("uninstall secret4")
1180 self.pkg("install secret5")
1181 self.pkg("uninstall secret5")
1182 self.pkg("install secret6")
1184 shutil.rmtree(self.img_path())
1185 self.set_img_path(old_img_path)
1187 def test_install_to_reserved_directories(self):
1217 self.image_create(self.rurl)
1218 self.pkgsend_bulk(self.rurl, [b1, b2, b3, b4, b5])
1220 self.pkg("install b1", exit=1)
1221 self.pkg("install b2", exit=1)
1223 self.pkg("install b3", exit=0)
1227 self.pkg("install b4", exit=1)
1229 self.pkg("install b5", exit=0)
1231 def test_update_to_reserved_directories(self):
1251 self.image_create(self.rurl)
1252 self.pkgsend_bulk(self.rurl, [b1, b2, b3])
1254 self.pkg("install b1@1.0-0", exit=0)
1255 self.pkg("update b1@2.0-0", exit=1)
1257 self.pkg("update b1@3.0-0", exit=0)
1259 def test_readonly_files(self):
1263 self.pkgsend_bulk(self.rurl, self.rofiles)
1264 self.image_create(self.rurl)
1267 self.pkg("install -vvv rofilesdir@1.0")
1268 pdir = os.path.join(self.get_img_path(), "rofdir")
1273 self.pkg("install -vvv rofiles@1.0")
1278 self.pkg("verify -vvv rofilesdir", exit=1)
1279 self.pkg("uninstall -vvv rofiles@1.0")
1283 self.dir_exists("rofdir", mode=0o555)
1288 def test_error_messages(self):
1293 repo_path = self.dc.get_repodir()
1294 durl = self.dc.get_depot_url()
1295 self.dc.start()
1296 self.image_create(durl)
1298 fmris = self.pkgsend_bulk(repo_path, (self.filemissing,
1299 self.manimissing))
1300 self.__inject_nofile("tmp/truck1")
1301 self.pkg("install filemissing", exit=1)
1302 self.assertTrue("pkg://test/filemissing@1.0,5.11:20160426T084036Z"
1303 in self.errout)
1304 self.image_create("file://" + repo_path)
1305 self.pkg("install filemissing", exit=1)
1306 self.assertTrue("pkg://test/filemissing@1.0,5.11:20160426T084036Z"
1307 in self.errout)
1308 self.__inject_nomanifest(fmris[1])
1309 self.pkg("install manimissing", exit=1)
1310 self.assertTrue("pkg://test/manimissing@1.0,5.11:20160426T084036Z"
1311 in self.errout)
1312 self.dc.stop()
1332 def setUp(self):
1333 pkg5unittest.ApacheDepotTestCase.setUp(self, ["test1", "test2"],
1335 self.make_misc_files(self.misc_files)
1336 self.durl1 = self.dcs[1].get_depot_url()
1337 self.durl2 = self.dcs[2].get_depot_url()
1338 self.pkgsend_bulk(self.durl1, self.foo11)
1339 self.pkgsend_bulk(self.durl2, self.upgrade_np10)
1341 def test_corrupt_web_cache(self):
1346 fmris = self.pkgsend_bulk(self.durl1, (self.foo11,
1347 self.upgrade_np10))
1351 self.image_create(self.durl1)
1355 self.sysrepo("")
1356 sc_runtime_dir = os.path.join(self.test_root, "sysrepo_runtime")
1358 sc_cache = os.path.join(self.test_root, "sysrepo_cache")
1363 sysrepo_port = self.next_free_port
1364 self.next_free_port += 1
1366 sysrepo_port, sc_runtime_dir, testcase=self)
1367 self.register_apache_controller("sysrepo", sc)
1376 self.image_create(props={"use-system-repo": True})
1377 self.pkg("install foo@1.1")
1378 self.pkg("uninstall foo")
1382 self.image_create(props={"use-system-repo": True})
1386 self.assertTrue(os.path.exists(path))
1414 "{0}/test1/manifest/0/foo@{1}".format(self.durl1, quote(
1417 self.durl1),
1425 self.debug("url:{0}".format(url))
1431 self.assertTrue(content != [b"noodles\n"],
1439 self.assertTrue(content == [b"noodles\n"],
1445 self.pkg("refresh --full")
1446 self.pkg("contents -rm foo@1.1")
1447 self.pkg("install foo@1.1")
1455 self.assertTrue(content != ["noodles\n"],
1461 repodir = self.dcs[1].get_repodir()
1464 self.image_create(props={"use-system-repo": True})
1482 self.pkg("install foo@1.1", stderr=True, exit=1)
1488 self.assertTrue(
1490 self.errout)
1491 self.assertTrue(
1493 self.errout)
1494 self.assertTrue("(happened 3 times)" in self.errout)
1503 shutil.rmtree(os.path.join(self.img_path(),
1505 self.pkg("contents -rm foo@1.1", stderr=True, exit=1)
1510 self.assertTrue(
1512 self.errout)
1513 self.assertTrue("2: Invalid content: manifest hash failure"
1514 in self.errout)
1515 self.assertTrue("(happened 3 times)" in self.errout)
1520 self.pkg("refresh --full", stderr=True, exit=1)
1521 self.assertTrue("catalog.base.C' is invalid." in
1522 self.errout)
1536 def test_granular_proxy(self):
1544 self.image_create(self.durl1)
1545 self.sysrepo("")
1546 sc_runtime_dir = os.path.join(self.test_root, "sysrepo_runtime")
1548 sc_cache = os.path.join(self.test_root, "sysrepo_cache")
1553 sysrepo_port = self.next_free_port
1554 self.next_free_port += 1
1556 sysrepo_port, sc_runtime_dir, testcase=self)
1557 self.register_apache_controller("sysrepo", sc)
1561 self.image_create()
1562 self.pkg("set-publisher -p {0} --proxy {1}".format(self.durl1,
1564 self.pkg("install foo")
1565 self.pkg("uninstall foo")
1570 self.pkg("install --no-refresh foo", exit=1)
1574 self.pkg("set-publisher --no-refresh -g {0} test1".format(
1575 self.durl1), exit=1)
1577 self.pkg("set-publisher --no-refresh -g {0} "
1578 "--proxy http://noodles test1".format(self.durl1),
1584 # that the proxy for self.durl1 isn't being used.
1585 self.pkg("set-publisher -g {0} test2".format(self.durl2))
1586 self.pkg("install --no-refresh "
1588 self.pkg("uninstall pkg://test2/upgrade-np@1.0")
1589 self.pkg("set-publisher -G {0} test2".format(self.durl2))
1594 self.pkg("publisher")
1595 self.pkg("set-publisher -G {0} test1".format(self.durl1))
1596 self.pkg("set-publisher --no-refresh -g {0} "
1597 "--proxy http://noodles test1".format(self.durl1))
1599 self.pkg("refresh", env_arg=env)
1600 self.pkg("install foo", env_arg=env)
1601 self.pkg("uninstall foo", env_arg=env)
1605 self.pkg("install foo", env_arg=env)
1606 self.pkg("uninstall foo", env_arg=env)
1610 self.pkg("install foo", env_arg=env)
1611 self.pkg("refresh --full", env_arg=env)
1634 def setUp(self):
1635 pkg5unittest.SingleDepotTestCase.setUp(self)
1636 self.make_misc_files(self.misc_files)
1638 def test_install_changed_manifest(self):
1643 plist = self.pkgsend_bulk(self.rurl, self.foo10)
1645 self.image_create(self.rurl)
1646 self.seed_ta_dir("ta3")
1647 api_inst = self.get_img_api_obj()
1650 self.pkg("contents -r foo")
1653 self.pkgsign_simple(self.dc.get_repodir(), plist[0])
1656 self.pkg("set-property signature-policy require-signatures")
1660 self._api_install(api_inst, ["foo"])
1662 def test_keep_installed_changed_manifest(self):
1666 pfmri = self.pkgsend_bulk(self.rurl, self.disappear10)[0]
1668 self.image_create(self.rurl)
1669 api_inst = self.get_img_api_obj()
1672 self._api_install(api_inst, ["disappear"])
1674 self.assertTrue(os.path.isfile(os.path.join(
1675 self.img_path(), "bin", "cat")))
1676 repo = self.dc.get_repo()
1687 pfmri = self.pkgsend_bulk(self.rurl, self.disappear11)[0]
1688 self._api_update(api_inst)
1689 self.assertTrue(not os.path.isfile(os.path.join(
1690 self.img_path(), "bin", "cat")))
1754 def setUp(self):
1755 pkg5unittest.SingleDepotTestCase.setUp(self)
1756 self.pkgsend_bulk(self.rurl, self.pkgs)
1758 def test_basics(self):
1761 self.image_create(self.rurl)
1762 self.pkg("install A@1")
1763 self.pkg("install -v trigger@1")
1764 self.pkg("list A@1 trigger@1")
1767 self.pkg("uninstall -v trigger")
1768 self.pkg("list A@2")
1770 self.pkg("install -v trigger@2")
1771 self.pkg("uninstall -v trigger")
1772 self.pkg("list A@1")
1775 self.pkg("install -v trigger@3")
1776 self.pkg("uninstall -v trigger")
1777 self.pkg("list A", exit=1)
1780 self.pkg("install -v trigger@4 A@1")
1781 self.pkg("uninstall -v trigger")
1782 self.pkg("list A", exit=1)
1783 self.pkg("install -v trigger@4 A@2")
1784 self.pkg("uninstall -v trigger")
1785 self.pkg("list A", exit=1)
1788 self.pkg("install -v trigger@6 A@1")
1789 self.pkg("uninstall -v trigger")
1790 self.pkg("list A", exit=1)
1793 self.pkg("install -v trigger@6 A@2")
1794 self.pkg("uninstall -v trigger")
1795 self.pkg("list A")
1798 self.pkg("install -v trigger@5 A@2 B@2")
1799 self.pkg("uninstall -v trigger")
1800 self.pkg("list A B", exit=1)
1803 self.pkg("install -v trigger@5 A@1 B@1")
1804 self.pkg("uninstall -v trigger")
1805 self.pkg("list A@1 B@1")
1808 self.pkg("install -v trigger@7 C")
1809 self.pkg("uninstall -v trigger")
1810 self.pkg("list C", exit=1)
1813 self.pkg("install -v A@1 trigger@1")
1814 self.pkg("list A@1")
1816 self.pkg("install --reject trigger B@1")
1817 self.pkg("list A@2")
1819 self.pkg("install -v trigger@2")
1820 self.pkg("update -v --reject trigger B@2")
1821 self.pkg("list A@1")
1823 # self-referencing (evil) pkgs
1824 self.pkg("install -v evil@1")
1827 self.pkg("uninstall -v evil@1", exit=1)
1829 self.pkg("-R {0} -D ignore-pkg-actuators=true "
1830 "uninstall -v evil@1".format(self.get_img_path()))
1831 self.pkg("list evil", exit=1)
1836 self.pkg("install -v A@1 trigger@1")
1838 self.pkg("update --parsable=0 --reject trigger A@0.5")
1839 self.pkg("list A@2")
1977 def setUp(self):
1978 pkg5unittest.SingleDepotTestCase.setUp(self)
1979 self.pkgsend_bulk(self.rurl, self.pkgs)
1981 def test_install(self):
1982 self.image_create(self.rurl, prefix="")
1984 self.pkg("install --reject B A")
1985 self.pkg("list A C")
1986 self.pkg("uninstall '*'")
1987 self.pkg("install --reject C A")
1988 self.pkg("list A B")
1989 self.pkg("uninstall '*'")
1992 self.pkg("install B")
1993 self.pkg("install A")
1994 self.pkg("list A B")
1995 self.pkg("install --reject B C")
1996 self.pkg("list A C")
1997 self.pkg("uninstall '*'")
2000 self.pkg("install -v --reject B --reject C A", exit=1)
2003 self.pkg("install bogus")
2004 self.pkg("list bogus")
2005 self.pkg("install --reject B --reject 'pkg://contrib/*' A")
2008 self.pkg("uninstall '*'")
2009 self.pkg("install -v --reject A A", exit=1)
2010 self.pkg("install -v --reject 'idr*' --reject 'bogus*' "
2012 self.pkg("list 'idr*' 'bogus*' B", exit=1)
2013 self.pkg("list A C incorp kernel no-idrs")
2015 def test_exact_install(self):
2018 self.image_create(self.rurl, prefix="")
2021 self.pkg("exact-install --reject B A")
2022 self.pkg("list A C")
2023 self.pkg("uninstall '*'")
2026 self.pkg("install B")
2027 self.pkg("install A")
2028 self.pkg("list A B")
2029 self.pkg("exact-install --reject B A")
2030 self.pkg("list A C")
2031 self.pkg("list B", exit=1)
2032 self.pkg("uninstall '*'")
2035 self.pkg("exact-install -v --reject B --reject C A", exit=1)
2038 self.pkg("install bogus")
2039 self.pkg("list bogus")
2040 self.pkg("exact-install --reject B --reject "
2042 self.pkg("uninstall '*'")
2045 self.pkg("exact-install -v --reject A A", exit=1)
2046 self.pkg("exact-install -v --reject 'idr*' --reject 'bogus*' "
2048 self.pkg("list 'idr*' 'bogus*' B", exit=1)
2049 self.pkg("list A C incorp kernel no-idrs")
2051 def test_idr(self):
2052 self.image_create(self.rurl)
2054 self.pkg("install no-idrs")
2055 self.pkg("install -v kernel@1.0,5.11-0.1")
2056 self.pkg("list -Hv kernel@1.0,5.11-0.1 | /usr/bin/awk '{print $1}'")
2057 kernel_fmri = self.output
2059 self.pkg("update -v");
2060 self.pkg("list kernel@1.0,5.11-0.2")
2061 self.pkg("list")
2064 self.pkg("uninstall no-idrs")
2065 self.pkg("install --reject 'k*' --reject 'i*' no-idrs")
2066 self.pkg("install -v kernel@1.0,5.11-0.1")
2067 self.pkg("install -v --reject no-idrs idr1_entitlement")
2068 self.pkg("install -v idr1@1.0,5.11-0.1.1.0")
2069 self.pkg("update -v --reject idr2")
2070 self.pkg("list idr1@1.0,5.11-0.1.1.1")
2073 self.pkg("install -v --reject idr1 --reject 'idr1_*' idr2 idr2_entitlement")
2076 self.pkg("update -v --reject idr2 --reject 'idr2_*' {0}".format(kernel_fmri))
2079 self.pkg("install -v idr1@1.0,5.11-0.1.1.0 idr1_entitlement")
2080 self.pkg("list kernel@1.0,5.11-0.1.1.0")
2083 self.pkg("update -v --reject 'idr1*' '*incorp@1.0-0.2'")
2084 self.pkg("list kernel@1.0,5.11-0.2")
2086 def test_idr_removal(self):
2088 self.image_create(self.rurl)
2089 self.pkg("install no-idrs")
2090 self.pkg("install -v kernelX@1.0,5.11-0.1")
2091 self.pkg("list kernelX@1.0,5.11-0.1")
2094 self.pkg("install -v --reject no-idrs idr1_entitlement")
2095 self.pkg("install -v idrX@1.0,5.11-0.1.1.0")
2097 self.pkg("list idrX@1.0,5.11-0.1.1.0")
2098 self.pkg("list kernelX@1.0,5.11-0.1.1.0")
2101 self.pkg("uninstall -v idrX@1.0,5.11-0.1.1.0")
2102 self.pkg("list kernelX@1.0,5.11-0.1")
2105 self.pkg("install -v idrX@1.0,5.11-0.1.1.0")
2106 self.pkg("list idrX@1.0,5.11-0.1.1.0")
2107 self.pkg("list kernelX@1.0,5.11-0.1.1.0")
2108 self.pkg("install --reject idrX B")
2109 self.pkg("list kernelX@1.0,5.11-0.1")
2111 def test_update(self):
2112 self.image_create(self.rurl)
2114 self.pkg("install kernel@1.0,5.11-0.1.1.0 A@1.0,5.11-0")
2115 self.pkg("update -v --reject A")
2116 self.pkg("list A", exit=1)
2117 self.pkg("verify")
2121 self.pkg("uninstall '*'")
2122 self.pkg("install kernel@1.0,5.11-0.1.1.0")
2123 self.pkg("list kernel@1.0,5.11-0.1.1.0")
2124 self.pkg("install A@1.0,5.11-0")
2125 self.pkg("update -v --reject A '*'")
2126 self.pkg("list A", exit=1)
2127 self.pkg("list kernel@1.0,5.11-0.1.1.1")
2128 self.pkg("verify")
2172 def test_bug_4204(self):
2176 self.pkgsend_bulk(self.rurl, (self.afoo10, self.bfoo10,
2177 self.bar10))
2178 self.image_create(self.rurl)
2180 self.pkg("install foo", exit=1)
2181 self.pkg("install a/foo b/foo", exit=0)
2182 self.pkg("list")
2183 self.pkg("uninstall foo", exit=1)
2184 self.pkg("uninstall a/foo b/foo", exit=0)
2186 def test_bug_6874(self):
2190 self.pkgsend_bulk(self.rurl, (self.afoo10, self.bfoo10))
2191 self.image_create(self.rurl)
2193 self.pkg("install foo", exit=1)
2195 def test_ambiguous_pattern_install(self):
2199 self.pkgsend_bulk(self.rurl, self.foo10)
2201 self.image_create(self.rurl)
2202 self.pkg("install foo")
2204 self.pkgsend_bulk(self.rurl, self.anotherfoo11)
2205 self.pkg("refresh")
2206 self.pkg("update -v", exit=4)
2208 def test_ambiguous_pattern_depend(self):
2212 self.ambiguous_pattern_depend_helper("install")
2213 self.ambiguous_pattern_depend_helper("exact-install")
2215 def ambiguous_pattern_depend_helper(self, install_cmd):
2216 self.pkgsend_bulk(self.rurl, (self.depender10, self.foo10))
2218 self.image_create(self.rurl)
2219 self.pkg("{0} depender".format(install_cmd))
2221 self.pkgsend_bulk(self.rurl, (self.foo11, self.anotherfoo11,
2222 self.depender11))
2223 self.pkg("refresh")
2225 self.pkg("{0} depender".format(install_cmd))
2228 self.pkg("list another/foo", exit=1)
2230 def test_non_ambiguous_fragment(self):
2234 self.non_ambiguous_fragment_helper("install")
2235 self.non_ambiguous_fragment_helper("exact-install")
2237 def non_ambiguous_fragment_helper(self, install_cmd):
2238 self.pkgsend_bulk(self.rurl, self.anotherfoo11)
2239 self.image_create(self.rurl)
2242 self.pkg("{0} foo".format(install_cmd))
2245 self.pkgsend_bulk(self.rurl, self.foo11)
2246 self.pkg("refresh")
2249 self.pkg("{0} pkg:/foo".format(install_cmd))
2252 self.pkg("{0} foo".format(install_cmd), exit=1)
2253 self.pkgrepo("remove -s {0} pkg:/foo@1.1".format(self.rurl ))
2302 def test_overlapping_one_package_available(self):
2303 self.pkgsend_bulk(self.rurl, self.a_1)
2304 api_inst = self.image_create(self.rurl)
2306 self._api_install(api_inst, ["a@1", "a@1"], noexecute=True)
2307 self._api_install(api_inst, ["a@1", "a@1.0"], noexecute=True)
2308 self._api_install(api_inst, ["a@1", "pkg://test/a@1"],
2310 self._api_install(api_inst, ["a*@1", "pkg:/*a@1"],
2312 self._api_install(api_inst, ["a*@1", "a@1"], noexecute=True)
2313 self._api_install(api_inst, ["a@1", "pkg://test/a*@1"],
2316 self.pkg("install -n 'a*@2' 'a@1'", exit=1)
2318 def test_overlapping_conflicting_versions_no_wildcard_match(self):
2319 self.pkgsend_bulk(self.rurl, self.a_1 + self.a_2)
2320 api_inst = self.image_create(self.rurl)
2322 self.pkg("install -n a@1 a@2", exit=1)
2323 self.pkg("install -n a@2 pkg://test/a@1", exit=1)
2324 self.pkg("install -n 'a*@2' 'pkg:/*a@1'", exit=1)
2328 self._api_install(api_inst, ["a*@1", "a@2"])
2329 self.pkg("list a@2")
2330 self._api_uninstall(api_inst, ["a"])
2332 self._api_install(api_inst, ["a@1", "pkg://test/a*@2"])
2333 self.pkg("list a@1")
2334 self._api_uninstall(api_inst, ["a"])
2336 self.pkgsend_bulk(self.rurl, self.a_3)
2337 self._api_install(api_inst, ["a*@1", "*a@2", "a@3"])
2338 self.pkg("list a@3")
2339 self._api_uninstall(api_inst, ["a"])
2341 self._api_install(api_inst, ["a*@1", "*a@2", "a@latest"])
2342 self.pkg("list a@3")
2343 self._api_uninstall(api_inst, ["a"])
2345 self.pkgsend_bulk(self.rurl, self.a_11)
2346 self.pkg("install a@1.1 a@1.0", exit=1)
2347 self._api_install(api_inst, ["a@1", "a@1.0", "a*@1.1"])
2348 self.pkg("list a@1.0")
2349 self._api_uninstall(api_inst, ["a"])
2351 self._api_install(api_inst, ["*", "a@1.0"])
2352 self.pkg("list a@1.0")
2353 self._api_uninstall(api_inst, ["a"])
2355 def test_overlapping_multiple_packages(self):
2356 self.pkgsend_bulk(self.rurl, self.a_1 + self.a_2 + self.aa_1 +
2357 self.afoo_1 + self.bfoo_1 + self.fooa_1 + self.foob_1)
2358 api_inst = self.image_create(self.rurl)
2360 self.pkg("install '*a@1' 'a*@2'", exit=1)
2362 self._api_install(api_inst, ["a*@1", "a@2"])
2363 self.pkg("list -Hv")
2364 self.assertEqual(len(self.output.splitlines()), 3)
2365 self.assertTrue("a@2" in self.output)
2366 self._api_uninstall(api_inst, ["a", "aa", "a/foo"])
2368 self._api_install(api_inst, ["/a@1", "a*@2", "*foo*@1"])
2369 self.pkg("list -Hv")
2370 self.assertEqual(len(self.output.splitlines()), 5)
2371 self.assertTrue("a@1" in self.output)
2372 self._api_uninstall(api_inst,
2375 def test_overlapping_multiple_publishers(self):
2376 self.pkgsend_bulk(self.rurl, self.a_1 + self.pub2_a_2)
2377 api_inst = self.image_create(self.rurl)
2379 self._api_install(api_inst, ["a*@1", "pkg://pub2/a@2"],
2381 self._api_install(api_inst, ["a@1", "pkg://pub2/a*@2"],
2383 self._api_install(api_inst, ["a@1", "pkg://pub2/*@2"],
2385 self.pkg("install -n 'pkg://test/a*@1' 'pkg://pub2/*a@2'",
2387 self.pkg("install -n 'pkg://test/a@1' 'pkg://pub2/a@2'",
2389 self.pkg("install -n 'a@1' 'pkg://pub2/a@2'", exit=1)
2391 self.pkgsend_bulk(self.rurl, self.pub2_a_1)
2392 self._api_install(api_inst, ["a@1", "pkg://pub2/a@1"])
2393 self.pkg("list -Hv 'pkg://pub2/*'")
2394 self.assertEqual(len(self.output.splitlines()), 1)
2395 self.assertTrue("a@1" in self.output)
2396 self._api_uninstall(api_inst, ["a"])
2398 self._api_install(api_inst, ["a@1", "pkg://test/a@1"])
2399 self.pkg("list -Hv 'pkg://test/*'")
2400 self.assertEqual(len(self.output.splitlines()), 1)
2401 self.assertTrue("a@1" in self.output)
2402 self._api_uninstall(api_inst, ["a"])
2404 self._api_install(api_inst, ["a*@1", "pkg://pub2/*@2"])
2405 self.pkg("list -Hv 'pkg://pub2/*'")
2406 self.assertEqual(len(self.output.splitlines()), 1)
2407 self.assertTrue("a@2" in self.output)
2408 self._api_uninstall(api_inst, ["a"])
2410 self._api_install(api_inst,
2412 self.pkg("list -Hv 'pkg://test/*'")
2413 self.assertEqual(len(self.output.splitlines()), 1)
2414 self.assertTrue("a@1" in self.output)
2415 self._api_uninstall(api_inst, ["a"])
2419 self.pkg("install '*' 'pkg://pub2/*@2'")
2420 self.pkg("list -Hv 'pkg://pub2/*'")
2421 self.assertEqual(len(self.output.splitlines()), 1)
2422 self.assertTrue("a@2" in self.output)
2423 self._api_uninstall(api_inst, ["a"])
2467 def test_unanchored_circular_dependencies(self):
2472 self.unanchored_circular_dependencies_helper("install")
2473 self.unanchored_circular_dependencies_helper("exact-install")
2475 def unanchored_circular_dependencies_helper(self, install_cmd):
2477 self.pkgsend_bulk(self.rurl, (self.pkg10, self.pkg20,
2478 self.pkg30))
2480 self.image_create(self.rurl)
2481 self.pkg("{0} pkg1".format(install_cmd))
2482 self.pkg("list")
2483 self.pkg("verify -v")
2485 def test_anchored_circular_dependencies(self):
2490 self.anchored_circular_dependencies_helper("install")
2491 self.unanchored_circular_dependencies_helper("exact-install")
2493 def anchored_circular_dependencies_helper(self, install_cmd):
2495 self.pkgsend_bulk(self.rurl, (self.pkg11, self.pkg21,
2496 self.pkg31))
2498 self.image_create(self.rurl)
2499 self.pkg("{0} pkg1".format(install_cmd))
2500 self.pkg("list")
2501 self.pkg("verify -v")
2524 def test_output_two_issues(self):
2530 self.pkgsend_bulk(self.rurl,
2531 (self.incorp, self.octo10, self.octo20))
2532 self.image_create(self.rurl)
2534 self.pkg("install incorp octo@2")
2535 self.pkg("install -v octo@1", exit=1)
2539 self.assertTrue("incorp@1.0" in self.errout,
2543 self.assertFalse("octo@2.0" in self.errout,
3218 def setUp(self):
3219 pkg5unittest.SingleDepotTestCase.setUp(self)
3220 self.make_misc_files(self.misc_files1)
3221 self.make_misc_files(self.misc_files2)
3223 def __salvage_file_contains(self, sroot, fprefix, entry):
3232 self.assertEqual(found, [entry])
3234 def test_incorp_install(self):
3238 first_bronze = self.pkgsend_bulk(self.rurl, self.bronze20)[0]
3239 self.pkgsend_bulk(self.rurl, (self.incorp20, self.amber10,
3240 self.bronze10, self.amber20, self.bronze20))
3243 self.image_create(self.rurl)
3245 self.pkg("install incorp@2.0")
3247 self.pkg("install bronze@1.0", exit=1)
3249 self.pkg("install {0}".format(first_bronze))
3250 self.pkg("list -v {0}".format(first_bronze))
3251 self.pkg("install bronze@2.0")
3253 def test_content_hash_install(self):
3257 plist = self.pkgsend_bulk(self.rurl, (self.elfhash10,
3258 self.elfhash20))
3263 repo = self.get_repo(self.dc.get_repodir())
3284 self.image_create(self.rurl)
3285 self.pkg("install -v elfhash@1.0")
3287 self.pkg("contents -m elfhash | grep pkg.content-hash", exit=1)
3288 self.pkg("update -vvv elfhash")
3290 self.pkg("contents -m elfhash | grep pkg.content-hash")
3291 self.pkg("uninstall elfhash")
3308 self.pkg("install -v elfhash@1.0")
3309 self.pkg("contents -m elfhash | grep gelf:sha512t_256")
3310 self.pkg("update -vvv elfhash")
3311 self.pkg("contents -m elfhash | grep gelf:sha512t_256", exit=1)
3312 self.pkg("contents -m elfhash | grep gelf:sha3_384")
3313 self.pkg("uninstall elfhash")
3325 self.pkg("install -v elfhash@1.0")
3326 self.pkg("contents -m elfhash | grep gelf:sha512t_256")
3327 self.pkg("update -vvv elfhash")
3328 self.pkg("contents -m elfhash | grep gelf:sha512t_256")
3329 self.pkg("contents -m elfhash | grep gelf:sha3_384")
3330 self.pkg("uninstall elfhash")
3342 self.pkg("install -v elfhash@1.0")
3343 self.pkg("contents -m elfhash | grep gelf")
3344 self.pkg("update -vvv elfhash")
3345 self.pkg("contents -m elfhash | grep gelf", exit=1)
3346 self.pkg("contents -m elfhash | grep file")
3347 self.pkg("uninstall elfhash")
3359 self.pkg("install -v elfhash@1.0")
3360 self.pkg("contents -m elfhash | grep gelf")
3361 self.pkg("update -vvv elfhash")
3363 self.pkg("contents -m elfhash | grep gelf")
3364 self.pkg("contents -m elfhash | grep file")
3365 self.pkg("uninstall elfhash")
3367 def test_upgrade1(self):
3378 self.pkgsend_bulk(self.rurl, (self.incorp10, self.amber10,
3379 self.bronze10))
3393 self.pkgsend_bulk(self.rurl, (self.incorp20, self.amber20,
3394 self.bronze20))
3397 self.image_create(self.rurl)
3398 self.pkg("install incorp@1.0")
3399 self.file_exists(".SELF-ASSEMBLY-REQUIRED")
3400 self.pkg("install bronze")
3402 self.pkg("list amber@1.0 bronze@1.0")
3403 self.pkg("verify -v")
3406 self.pkg("install bronze@2.0 amber@2.0", exit=1)
3409 self.pkg("install bronze@latest amber@latest", exit=1)
3410 self.pkg("update bronze@latest amber@latest", exit=1)
3413 self.file_remove(".SELF-ASSEMBLY-REQUIRED")
3414 self.pkg("update")
3415 self.file_exists(".SELF-ASSEMBLY-REQUIRED")
3418 self.pkg("list amber@2.0 bronze@2.0")
3419 self.pkg("verify -v")
3421 self.assertTrue(not os.path.isdir(os.path.join(self.get_img_path(),
3424 self.pkg("uninstall amber bronze")
3425 self.pkg("verify -v")
3428 self.assertEqual(set(os.listdir(self.get_img_path())),
3431 def test_upgrade2(self):
3440 plist = self.pkgsend_bulk(self.rurl, (self.incorp10,
3441 self.incorp20, self.incorp30, self.iridium10,
3442 self.concorp10, self.amber10, self.amber20, self.bronze10,
3443 self.bronze20, self.bronze30, self.brass10))
3445 self.image_create(self.rurl)
3447 self.pkg("install incorp@1.0")
3449 self.pkg("install bronze@2.0", exit=1)
3451 self.pkg("install iridium@1.0", exit=1)
3454 self.pkg("install brass")
3455 self.pkg("verify brass@1.0 bronze@1.0")
3457 self.pkg("install concorp@1.0", exit=1)
3460 self.pkg("install incorp@2.0")
3461 self.pkg("uninstall incorp@2.0")
3462 self.pkg("install incorp@1.0")
3465 self.pkg("install -vvv incorp@2.0")
3468 self.pkg("update --parsable=0 -n incorp@3")
3469 self.assertEqualParsable(self.output, change_packages=[
3472 self.pkg("update --parsable=0 -n incorp")
3473 self.assertEqualParsable(self.output, change_packages=[
3478 self.pkg("update --parsable=0 -n")
3479 self.assertEqualParsable(self.output, change_packages=[
3484 def test_upgrade3(self):
3489 self.pkgsend_bulk(self.rurl, (self.silver10, self.silver20,
3490 self.silver30, self.gold10, self.gold20, self.gold30,
3491 self.golduser10, self.golduser20, self.silveruser))
3493 self.image_create(self.rurl)
3496 self.pkg("{0} --parsable=0 gold@1.0 silver@1.0".format(install_cmd))
3497 self._assertEditables(
3505 self.pkg("verify -v")
3510 self.file_append(file_path, test_str)
3513 self.file_contains(file_path, test_str)
3516 self.pkg("{0} -nvv gold@3.0 silver@2.0".format(install_cmd))
3517 self.pkg("{0} --parsable=0 gold@3.0 silver@2.0".format(install_cmd))
3518 self._assertEditables()
3519 self.pkg("verify -v")
3522 self.file_contains(file_path, test_str)
3524 self.pkg("uninstall --parsable=0 silver gold")
3525 self._assertEditables(
3536 self.pkg("{0} --parsable=0 gold@1.0".format(install_cmd))
3537 self.pkg("verify -v")
3542 self.file_append(file_path, test_str)
3544 self.pkg("{0} --parsable=0 gold@2.0".format(install_cmd))
3545 self._assertEditables(
3553 self.pkg("verify -v")
3557 self.file_contains(file_path, test_str)
3559 self.pkg("uninstall --parsable=0 gold")
3560 self._assertEditables(
3563 self.pkg("verify -v")
3567 self.pkg("{0} --parsable=0 gold@1.0 silver@1.0".format(install_cmd))
3568 self.pkg("verify -v")
3573 self.file_append(file_path, test_str)
3575 self.file_contains(file_path, test_str)
3577 self.pkg("{0} --parsable=0 gold@3.0 silver@3.0".format(install_cmd))
3578 self._assertEditables(
3586 self.pkg("verify -v")
3590 self.file_contains(file_path, test_str)
3592 self.pkg("uninstall --parsable=0 gold silver")
3597 self.pkg("{0} --parsable=0 gold@1.0 silver@1.0".format(install_cmd))
3598 self.pkg("verify -v")
3601 self.pkg("install golduser@1.0")
3604 pwdpath = os.path.join(self.get_img_path(), "etc/passwd")
3616 silly_path = os.path.join(self.get_img_path(), "etc/silly")
3620 self.pkg("{0} --parsable=0 gold@3.0 silver@2.0 golduser@2.0 "
3622 self._assertEditables()
3626 self.file_contains("etc/passwd",
3631 self.assertEqual(os.stat(silly_path).st_ino, silly_inode)
3633 def test_upgrade4(self):
3637 self.pkgsend_bulk(self.rurl, (self.iron10, self.iron20))
3638 self.image_create(self.rurl)
3640 self.pkg("install iron@1.0")
3641 self.pkg("verify -v")
3643 self.pkg("install iron@2.0")
3644 self.pkg("verify -v")
3646 def test_upgrade5(self):
3650 self.pkgsend_bulk(self.rurl, (self.dumdir10, self.dumdir20,
3651 self.dumdir30))
3652 self.image_create(self.rurl)
3654 self.pkg("install -vvv dumdir@1.0")
3655 self.pkg("verify -v")
3656 dirpath = os.path.join(self.test_root, "image0", "etc")
3659 self.pkg("update -vvv dumdir@2.0")
3660 self.pkg("verify -v")
3663 self.pkg("update -vvv dumdir@3.0")
3664 self.pkg("verify -v")
3666 def test_upgrade_liveroot(self):
3670 self.upgrade_liveroot_helper("install")
3671 self.upgrade_liveroot_helper("exact-install")
3673 def upgrade_liveroot_helper(self, install_cmd):
3674 self.pkgsend_bulk(self.rurl, (self.liveroot10, self.liveroot20))
3675 self.image_create(self.rurl)
3677 self.pkg("--debug simulate_live_root={0} {1} liveroot@1.0".format(
3678 self.get_img_path(), install_cmd))
3679 self.pkg("verify -v")
3680 self.pkg("--debug simulate_live_root={0} {1} --deny-new-be "
3681 "liveroot@2.0".format(self.get_img_path(), install_cmd),
3683 self.pkg("--debug simulate_live_root={0} uninstall "
3684 "--deny-new-be liveroot".format(self.get_img_path()), exit=5)
3686 self.file_append("etc/liveroot", "this file has been changed")
3687 self.pkg("--debug simulate_live_root={0} fix --deny-new-be "
3688 "liveroot".format(self.get_img_path()), exit=5)
3690 def test_upgrade_driver_conflicts(self):
3694 self.upgrade_driver_conflicts_helper("install")
3695 self.upgrade_driver_conflicts_helper("exact-install")
3697 def upgrade_driver_conflicts_helper(self, install_cmd):
3698 self.pkgsend_bulk(self.rurl, (self.dricon1, self.dricon2,
3699 self.dricon3))
3701 self.image_create(self.rurl)
3703 self.pkg("list -afv")
3704 self.pkg("{0} dricon@1".format(install_cmd))
3706 self.pkg("{0} dricon@2".format(install_cmd))
3707 with open(os.path.join(self.get_img_path(),
3710 self.assertTrue("# pkg(7): wigit \"pci8086,1234\"\n" in da_contents)
3711 self.assertTrue("wigit \"pci8086,1234\"\n" not in da_contents)
3712 self.assertTrue("wigit \"pci8086,4321\"\n" in da_contents)
3713 self.assertTrue("zigit \"pci8086,1234\"\n" in da_contents)
3715 self.pkg("{0} dricon@3".format(install_cmd), exit=1)
3717 def test_driver_policy_removal(self):
3723 self.driver_policy_removal_helper("install")
3724 self.driver_policy_removal_helper("exact-install")
3726 def driver_policy_removal_helper(self, install_cmd):
3727 self.pkgsend_bulk(self.rurl, (self.dripol1, self.dripol2,
3728 self.dripol3, self.dripol4, self.dripol5))
3730 self.image_create(self.rurl)
3732 self.pkg("list -afv")
3735 self.pkg("{0} dripol@1".format(install_cmd))
3739 with open(os.path.join(self.get_img_path(),
3742 self.assertTrue("frigit:*\tread_priv_set=net_rawaccess\t"
3747 self.pkg("{0} dripol@2".format(install_cmd))
3751 with open(os.path.join(self.get_img_path(),
3754 self.assertTrue("frigit:*\tread_priv_set=net_rawaccess\t"
3758 self.pkg("update dripol@3")
3759 with open(os.path.join(self.get_img_path(),
3762 self.assertTrue("frigit:*\ttpd_member=true\n"
3765 self.pkg("update dripol@5")
3766 with open(os.path.join(self.get_img_path(),
3769 self.assertTrue("frigit:node1\tread_priv_set=all"
3773 self.pkg("update dripol@4")
3774 with open(os.path.join(self.get_img_path(),
3777 self.assertTrue("frigit:node1" not in dp_contents)
3779 def test_file_preserve(self):
3784 self.pkgsend_bulk(self.rurl, (self.preserve1, self.preserve2,
3785 self.preserve3, self.renpreserve))
3786 self.image_create(self.rurl)
3790 self.pkg("{0} --parsable=0 preserve@1".format(install_cmd))
3791 self._assertEditables(
3794 self.pkg("{0} --parsable=0 preserve@2".format(install_cmd))
3795 self._assertEditables(
3798 self.file_contains("testme", "preserve1")
3799 self.pkg("verify preserve")
3801 self.pkg("update --parsable=0 preserve@1")
3802 self._assertEditables(
3805 self.file_contains("testme", "preserve1")
3806 self.pkg("verify preserve")
3808 self.pkg("uninstall --parsable=0 preserve")
3811 self.pkg("install --parsable=0 preserve@1")
3812 self._assertEditables(
3815 self.pkg("install --parsable=0 preserve@3")
3816 self._assertEditables(
3819 self.file_contains("testme", "preserve3")
3821 self.pkg("update --parsable=0 preserve@1")
3822 self._assertEditables(
3826 self.file_contains("testme", "preserve1")
3828 self.pkg("verify preserve")
3829 self.pkg("uninstall --parsable=0 preserve")
3833 self.pkg("{0} --parsable=0 preserve@1".format(install_cmd))
3834 self.file_append("testme", "junk")
3835 self.file_contains("testme", "preserve1")
3836 self.pkg("{0} --parsable=0 preserve@3".format(install_cmd))
3837 self._assertEditables()
3838 self.file_contains("testme", ["preserve1", "junk"])
3839 self.file_doesnt_exist("testme.old")
3840 self.file_doesnt_exist("testme.new")
3841 self.pkg("verify preserve")
3842 self.pkg("uninstall --parsable=0 preserve")
3846 self.pkg("{0} --parsable=0 preserve@3".format(install_cmd))
3847 self.file_append("testme", "junk")
3848 self.file_contains("testme", "preserve3")
3849 self.pkg("update --parsable=0 preserve@1")
3850 self._assertEditables(
3854 self.file_doesnt_contain("testme", ["preserve3", "junk"])
3855 self.file_doesnt_exist("testme.old")
3856 self.file_doesnt_exist("testme.new")
3857 self.file_exists("testme.update")
3858 self.file_remove("testme.update")
3859 self.pkg("verify preserve")
3860 self.pkg("uninstall --parsable=0 preserve")
3864 self.pkg("{0} --parsable=0 preserve@1".format(install_cmd))
3865 self.file_append("testme", "junk")
3867 self.pkg("{0} --parsable=0 preserve@2".format(install_cmd))
3868 self._assertEditables(
3871 self.file_contains("testme", ["preserve1", "junk"])
3872 self.file_doesnt_exist("testme.old")
3873 self.file_doesnt_exist("testme.new")
3875 self.pkg("update --parsable=0 preserve@1")
3876 self._assertEditables(
3879 self.file_contains("testme", ["preserve1", "junk"])
3880 self.file_doesnt_exist("testme.old")
3881 self.file_doesnt_exist("testme.new")
3882 self.file_doesnt_exist("testme.update")
3884 self.pkg("{0} --parsable=0 preserve@2".format(install_cmd))
3885 self._assertEditables(
3888 self.file_doesnt_exist("testme.old")
3889 self.file_doesnt_exist("testme.new")
3893 self.file_remove("testme")
3894 self.pkg("{0} --parsable=0 preserve@3".format(install_cmd))
3895 self._assertEditables(
3898 self.pkg("verify preserve")
3899 self.file_exists("testme")
3903 self.file_remove("testme")
3904 self.pkg("update --parsable=0 preserve@2")
3905 self._assertEditables(
3908 self.pkg("verify preserve")
3909 self.file_exists("testme")
3910 self.pkg("uninstall preserve@2")
3913 self.pkg("{0} --parsable=0 preserve@1".format(install_cmd))
3914 self.pkg("{0} --parsable=0 preserve@2".format(install_cmd))
3915 self.pkg("verify preserve")
3919 self.file_remove("testme")
3920 self.file_doesnt_exist("testme")
3921 self.pkg("uninstall --parsable=0 preserve")
3925 self.pkg("{0} --parsable=0 orig_pkg@1.0".format(install_cmd))
3926 foo1_path = os.path.join(self.get_img_path(), "foo1")
3927 self.assertTrue(os.path.isfile(foo1_path))
3928 bronze1_path = os.path.join(self.get_img_path(), "bronze1")
3929 self.assertTrue(os.path.isfile(bronze1_path))
3934 self.pkg("update -nvv orig_pkg")
3935 self.pkg("update --parsable=0 orig_pkg")
3936 self._assertEditables(
3940 foo2_path = os.path.join(self.get_img_path(), "foo2")
3941 self.assertTrue(not os.path.exists(foo1_path))
3942 self.assertTrue(os.path.isfile(foo2_path))
3943 self.assertTrue(os.path.isfile(bronze1_path))
3944 self.pkg("uninstall --parsable=0 \*")
3950 self.pkg("{0} --parsable=0 orig_pkg@1.0".format(install_cmd))
3953 self.pkg("update --parsable=0 orig_pkg")
3954 self._assertEditables(
3957 self.assertTrue(not os.path.exists(foo1_path))
3958 self.assertTrue(os.path.isfile(foo2_path))
3959 self.assertEqual(os.stat(foo2_path).st_size, 0)
3960 self.assertTrue(os.path.isfile(bronze1_path))
3961 self.assertEqual(os.stat(bronze1_path).st_size, 0)
3962 self.pkg("uninstall --parsable=0 \*")
3963 self._assertEditables(
3970 self.pkg("{0} --parsable=0 orig_pkg@1.0".format(install_cmd))
3973 self.pkg("update --parsable=0 orig_pkg")
3974 self._assertEditables(
3977 self.assertTrue(not os.path.exists(foo1_path))
3978 self.assertTrue(os.path.isfile(foo2_path))
3979 self.assertTrue(not os.path.exists(bronze1_path))
3980 self.pkg("uninstall --parsable=0 \*")
3983 api_inst = self.get_img_api_obj()
3990 self.pkg("{0} --parsable=0 preserve@1.0".format(install_cmd))
3991 self.file_contains("testme", "preserve1")
3992 self.pkg("uninstall --parsable=0 preserve")
3997 self.assertEqual(salvaged, [])
4001 self.pkg("{0} --parsable=0 preserve@1.0".format(install_cmd))
4002 self.file_contains("testme", "preserve1")
4003 self.file_append("testme", "junk")
4004 self.pkg("uninstall --parsable=0 preserve")
4005 self.__salvage_file_contains(sroot, "testme", "junk")
4007 def test_file_preserve_renameold(self):
4011 plist = self.pkgsend_bulk(self.rurl, (self.renameold1,
4012 self.renameold2, self.renameold3))
4013 self.image_create(self.rurl)
4017 self.pkg("{0} renold@1".format(install_cmd))
4018 self.pkg("{0} renold@2".format(install_cmd))
4019 self.file_contains("testme", "renold1")
4020 self.file_doesnt_exist("testme.old")
4021 self.file_doesnt_exist("testme.new")
4022 self.pkg("verify renold")
4023 self.pkg("uninstall renold")
4026 self.pkg("{0} renold@1".format(install_cmd))
4027 self.pkg("{0} renold@3".format(install_cmd))
4028 self.file_contains("testme", "renold3")
4029 self.file_doesnt_exist("testme.old")
4030 self.file_doesnt_exist("testme.new")
4031 self.pkg("verify renold")
4032 self.pkg("uninstall renold")
4036 self.pkg("{0} renold@1".format(install_cmd))
4037 self.file_append("testme", "junk")
4038 self.pkg("{0} --parsable=0 renold@3".format(install_cmd))
4039 self._assertEditables(
4043 self.file_contains("testme.old", "junk")
4044 self.file_doesnt_contain("testme", "junk")
4045 self.file_contains("testme", "renold3")
4046 self.dest_file_valid(plist, "renold@3.0", "testme", "testme")
4047 self.file_doesnt_exist("testme.new")
4048 self.pkg("verify renold")
4049 self.pkg("uninstall renold")
4053 self.pkg("{0} renold@1".format(install_cmd))
4054 self.file_append("testme", "junk")
4055 self.pkg("{0} --parsable=0 renold@2".format(install_cmd))
4056 self._assertEditables(
4060 self.file_contains("testme.old", "junk")
4061 self.file_doesnt_contain("testme", "junk")
4062 self.file_contains("testme", "renold1")
4063 self.file_doesnt_exist("testme.new")
4064 self.pkg("verify renold")
4065 self.pkg("uninstall renold")
4069 self.pkg("{0} renold@1".format(install_cmd))
4070 self.file_remove("testme")
4071 self.pkg("{0} --parsable=0 renold@2".format(install_cmd))
4072 self._assertEditables(
4075 self.pkg("verify renold")
4076 self.pkg("uninstall renold")
4078 def test_file_preserve_renamenew(self):
4082 plist = self.pkgsend_bulk(self.rurl, (self.renamenew1,
4083 self.renamenew2, self.renamenew3))
4084 self.image_create(self.rurl)
4088 self.pkg("{0} rennew@1".format(install_cmd))
4089 self.pkg("{0} --parsable=0 rennew@2".format(install_cmd))
4090 self._assertEditables(
4093 self.file_contains("testme", "rennew1")
4094 self.file_doesnt_exist("testme.new")
4095 self.file_doesnt_exist("testme.old")
4096 self.pkg("verify rennew")
4097 self.pkg("uninstall rennew")
4100 self.pkg("{0} rennew@1".format(install_cmd))
4101 self.pkg("{0} --parsable=0 rennew@3".format(install_cmd))
4102 self._assertEditables(
4105 self.file_contains("testme", "rennew3")
4106 self.file_doesnt_exist("testme.new")
4107 self.file_doesnt_exist("testme.old")
4108 self.pkg("verify rennew")
4109 self.pkg("uninstall rennew")
4113 self.pkg("{0} rennew@1".format(install_cmd))
4114 self.file_append("testme", "junk")
4115 self.pkg("{0} --parsable=0 rennew@3".format(install_cmd))
4116 self._assertEditables(
4119 self.file_contains("testme", "junk")
4120 self.file_doesnt_contain("testme.new", "junk")
4121 self.file_contains("testme.new", "rennew3")
4122 self.dest_file_valid(plist, "rennew@3.0", "testme",
4124 self.file_doesnt_exist("testme.old")
4125 self.pkg("verify rennew")
4126 self.pkg("uninstall rennew")
4130 self.pkg("{0} rennew@1".format(install_cmd))
4131 self.file_append("testme", "junk")
4132 self.pkg("{0} --parsable=0 rennew@2".format(install_cmd))
4133 self._assertEditables(
4136 self.file_contains("testme", "junk")
4137 self.file_doesnt_contain("testme.new", "junk")
4138 self.file_contains("testme.new", "rennew1")
4139 self.file_doesnt_exist("testme.old")
4142 self.pkg("verify rennew", exit=1)
4145 self.file_chmod("testme", 0o640)
4146 self.pkg("verify rennew")
4147 self.pkg("uninstall rennew")
4148 self.file_remove("testme.new")
4152 self.pkg("{0} rennew@1".format(install_cmd))
4153 self.file_remove("testme")
4154 self.pkg("{0} --parsable=0 rennew@2".format(install_cmd))
4155 self._assertEditables(
4158 self.file_doesnt_exist("testme.new")
4159 self.file_doesnt_exist("testme.old")
4160 self.pkg("verify rennew")
4161 self.pkg("uninstall rennew")
4163 def test_file_preserve_legacy(self):
4167 self.pkgsend_bulk(self.rurl, (self.preslegacy,
4168 self.renpreslegacy))
4169 self.image_create(self.rurl)
4172 api_inst = self.get_img_api_obj()
4180 self.file_append("testme", "unpackaged")
4181 self.pkg("{0} --parsable=0 preslegacy@1.0".format(install_cmd))
4182 self._assertEditables(
4185 self.file_contains("testme", "preserve1")
4186 self.__salvage_file_contains(sroot, "testme", "unpackaged")
4192 self.pkg("update --parsable=0 preslegacy@2.0")
4193 self._assertEditables(
4197 self.file_contains("testme.legacy", "preserve1")
4198 self.file_contains("testme", "preserve2")
4203 self.pkg("update --parsable=0 preslegacy@3.0")
4204 self._assertEditables(
4207 self.file_contains("testme.legacy", "preserve1")
4208 self.file_contains("testme", "preserve3")
4213 self.file_remove("testme")
4214 self.pkg("verify -v preslegacy")
4218 self.pkg("revert testme")
4219 self.file_contains("testme", "preserve3")
4223 self.pkg("uninstall preslegacy")
4224 self.pkg("{0} --parsable=0 preslegacy@3.0".format(install_cmd))
4225 self._assertEditables()
4226 self.file_doesnt_exist("testme")
4231 self.pkg("uninstall preslegacy")
4232 self.pkg("{0} --parsable=0 preslegacy@1.0".format(install_cmd))
4233 self._assertEditables(
4236 self.file_remove("testme")
4237 self.pkg("update --parsable=0")
4238 self._assertEditables(
4241 self.file_contains("testme", "preserve3")
4245 self.pkg("uninstall preslegacy")
4246 self.pkg("{0} --parsable=0 orig_preslegacy@1.0".format(install_cmd))
4247 self._assertEditables(
4250 self.file_exists("testme")
4251 self.pkg("update --parsable=0")
4252 self._assertEditables(
4256 self.file_contains("testme.legacy", "preserve1")
4257 self.file_contains("newme", "preserve2")
4259 def test_file_preserve_abandon(self):
4263 self.pkgsend_bulk(self.rurl, self.presabandon)
4264 self.image_create(self.rurl)
4267 api_inst = self.get_img_api_obj()
4275 self.file_append("testme", "unpackaged")
4276 self.pkg("{0} --parsable=0 presabandon@2".format(install_cmd))
4277 self._assertEditables()
4278 self.file_contains("testme", "unpackaged")
4279 self.assertTrue(not os.path.exists(os.path.join(sroot, "testme")))
4280 self.file_remove("testme")
4281 self.pkg("uninstall presabandon")
4285 self.pkg("{0} --parsable=0 presabandon@2".format(install_cmd))
4286 self._assertEditables()
4287 self.file_doesnt_exist("testme")
4288 self.pkg("uninstall presabandon")
4295 self.pkg("{0} --parsable=0 presabandon@1".format(install_cmd))
4296 self._assertEditables(
4299 self.pkg("update --parsable=0 presabandon@2")
4300 self._assertEditables()
4301 self.file_contains("testme", "preserve1")
4304 self.pkg("uninstall --parsable=0 presabandon")
4305 self._assertEditables()
4306 self.file_exists("testme")
4311 self.pkg("{0} --parsable=0 presabandon@4".format(install_cmd))
4312 self._assertEditables(
4315 self.file_contains("testme", "preserve3")
4316 self.pkg("verify presabandon")
4317 self.pkg("update --parsable=0 presabandon@3")
4318 self._assertEditables()
4319 self.file_contains("testme", "preserve3")
4320 self.pkg("verify presabandon")
4321 self.pkg("uninstall --parsable=0 presabandon")
4322 self.file_remove("testme")
4325 self.pkg("{0} --parsable=0 presabandon@1".format(install_cmd))
4326 self.pkg("{0} --parsable=0 presabandon@3".format(install_cmd))
4327 self._assertEditables()
4328 self.file_contains("testme", "preserve1")
4329 self.pkg("uninstall --parsable=0 presabandon")
4331 self.pkg("install --parsable=0 presabandon@4")
4332 self._assertEditables(
4335 self.file_contains("testme", "preserve3")
4336 self.pkg("update --parsable=0 presabandon@2")
4337 self._assertEditables()
4338 self.file_contains("testme", "preserve3")
4339 self.pkg("verify presabandon")
4340 self.pkg("uninstall --parsable=0 presabandon")
4341 self.file_remove("testme")
4345 self.pkg("{0} --parsable=0 presabandon@1".format(install_cmd))
4346 self.file_append("testme", "junk")
4347 self.pkg("{0} --parsable=0 presabandon@3".format(install_cmd))
4348 self._assertEditables()
4349 self.file_contains("testme", "preserve1")
4350 self.file_contains("testme", "junk")
4351 self.file_doesnt_exist("testme.old")
4352 self.file_doesnt_exist("testme.new")
4353 self.pkg("uninstall --parsable=0 presabandon")
4354 self.file_remove("testme")
4358 self.pkg("{0} --parsable=0 presabandon@4".format(install_cmd))
4359 self.file_append("testme", "junk")
4360 self.file_contains("testme", "preserve3")
4361 self.pkg("update --parsable=0 presabandon@2")
4362 self._assertEditables()
4363 self.file_contains("testme", "preserve3")
4364 self.file_contains("testme", "junk")
4365 self.file_doesnt_exist("testme.old")
4366 self.file_doesnt_exist("testme.new")
4367 self.file_doesnt_exist("testme.update")
4368 self.pkg("verify presabandon")
4369 self.pkg("uninstall --parsable=0 presabandon")
4370 self.file_remove("testme")
4374 self.pkg("{0} --parsable=0 presabandon@1".format(install_cmd))
4375 self.file_append("testme", "junk")
4376 self.pkg("{0} --parsable=0 presabandon@2".format(install_cmd))
4377 self._assertEditables()
4378 self.file_contains("testme", "preserve1")
4379 self.file_contains("testme", "junk")
4380 self.file_doesnt_exist("testme.old")
4381 self.file_doesnt_exist("testme.new")
4382 self.pkg("verify presabandon")
4383 self.pkg("uninstall --parsable=0 presabandon")
4384 self.file_remove("testme")
4388 self.pkg("{0} --parsable=0 presabandon@4".format(install_cmd))
4389 self.file_append("testme", "junk")
4390 self.pkg("update --parsable=0 presabandon@3")
4391 self._assertEditables()
4392 self.file_contains("testme", "preserve3")
4393 self.file_contains("testme", "junk")
4394 self.file_doesnt_exist("testme.old")
4395 self.file_doesnt_exist("testme.new")
4396 self.file_doesnt_exist("testme.update")
4397 self.pkg("verify presabandon")
4398 self.pkg("uninstall --parsable=0 presabandon")
4399 self.file_remove("testme")
4404 self.pkg("{0} --parsable=0 presabandon@1".format(install_cmd))
4405 self.file_remove("testme")
4406 self.pkg("{0} --parsable=0 presabandon@2".format(install_cmd))
4407 self._assertEditables()
4408 self.file_doesnt_exist("testme")
4409 self.pkg("uninstall --parsable=0 presabandon")
4414 self.pkg("{0} --parsable=0 presabandon@4".format(install_cmd))
4415 self.file_remove("testme")
4416 self.pkg("update --parsable=0 presabandon@3")
4417 self._assertEditables()
4421 self.file_doesnt_exist("testme")
4422 self.pkg("uninstall --parsable=0 presabandon")
4427 self.pkg("{0} --parsable=0 presabandon@1".format(install_cmd))
4428 self.pkg("{0} --parsable=0 presabandon@2".format(install_cmd))
4429 self.file_remove("testme")
4430 self.pkg("verify -v presabandon")
4434 self.pkg("revert testme")
4435 self.file_contains("testme", "preserve1")
4437 def test_file_preserve_install_only(self):
4440 self.pkgsend_bulk(self.rurl, self.presinstallonly)
4441 self.image_create(self.rurl)
4444 api_inst = self.get_img_api_obj()
4452 self.file_append("testme", "unpackaged")
4453 self.pkg("install --parsable=0 presinstallonly@2")
4454 self._assertEditables()
4455 self.file_contains("testme", "unpackaged")
4456 self.assertTrue(not os.path.exists(os.path.join(sroot, "testme")))
4458 self.pkg("uninstall presinstallonly")
4459 self.file_exists("testme")
4460 self.file_remove("testme")
4465 self.file_doesnt_exist("testme")
4466 self.pkg("install --parsable=0 presinstallonly@2")
4467 self._assertEditables(
4470 self.file_exists("testme")
4471 self.pkg("uninstall presinstallonly")
4472 self.file_remove("testme")
4476 self.pkg("install --parsable=0 presinstallonly@0")
4477 self._assertEditables()
4478 self.file_doesnt_exist("testme")
4479 self.pkg("install --parsable=0 presinstallonly@2")
4480 self._assertEditables(
4483 self.file_exists("testme")
4484 self.pkg("uninstall presinstallonly")
4485 self.file_remove("testme")
4493 self.pkg("install --parsable=0 presinstallonly@1")
4494 self._assertEditables(
4497 self.pkg("update --parsable=0 presinstallonly@2")
4498 self._assertEditables(
4501 self.file_contains("testme", "preserve1")
4504 self.pkg("uninstall --parsable=0 presinstallonly")
4505 self._assertEditables()
4506 self.file_exists("testme")
4507 self.file_remove("testme")
4512 self.pkg("install --parsable=0 presinstallonly@4")
4513 self._assertEditables(
4516 self.file_contains("testme", "preserve3")
4517 self.pkg("verify presinstallonly")
4518 self.pkg("update --parsable=0 presinstallonly@3")
4519 self._assertEditables(
4522 self.file_contains("testme", "preserve3")
4523 self.pkg("verify presinstallonly")
4524 self.pkg("uninstall --parsable=0 presinstallonly")
4525 self.file_remove("testme")
4528 self.pkg("install --parsable=0 presinstallonly@1")
4529 self.pkg("install --parsable=0 presinstallonly@3")
4530 self._assertEditables()
4531 self.file_contains("testme", "preserve1")
4532 self.pkg("uninstall --parsable=0 presinstallonly")
4533 self.file_remove("testme")
4535 self.pkg("install --parsable=0 presinstallonly@4")
4536 self._assertEditables(
4539 self.file_contains("testme", "preserve3")
4540 self.pkg("update --parsable=0 presinstallonly@2")
4541 self._assertEditables()
4542 self.file_contains("testme", "preserve3")
4543 self.pkg("verify presinstallonly")
4544 self.pkg("uninstall --parsable=0 presinstallonly")
4545 self.file_remove("testme")
4550 self.pkg("install --parsable=0 presinstallonly@1")
4551 self.file_append("testme", "junk")
4552 self.pkg("install --parsable=0 presinstallonly@3")
4553 self._assertEditables()
4554 self.file_contains("testme", "preserve1")
4555 self.file_contains("testme", "junk")
4556 self.file_doesnt_exist("testme.old")
4557 self.file_doesnt_exist("testme.new")
4558 self.pkg("uninstall --parsable=0 presinstallonly")
4559 self.file_remove("testme")
4564 self.pkg("install --parsable=0 presinstallonly@4")
4565 self.file_append("testme", "junk")
4566 self.pkg("update --parsable=0 presinstallonly@2")
4567 self._assertEditables()
4568 self.file_contains("testme", "preserve3")
4569 self.file_contains("testme", "junk")
4570 self.file_doesnt_exist("testme.old")
4571 self.file_doesnt_exist("testme.new")
4572 self.file_doesnt_exist("testme.update")
4573 self.pkg("verify presinstallonly")
4574 self.pkg("uninstall --parsable=0 presinstallonly")
4575 self.file_remove("testme")
4580 self.pkg("install --parsable=0 presinstallonly@1")
4581 self.file_append("testme", "junk")
4582 self.pkg("install --parsable=0 presinstallonly@2")
4583 self._assertEditables(
4586 self.file_contains("testme", "preserve1")
4587 self.file_contains("testme", "junk")
4588 self.file_doesnt_exist("testme.old")
4589 self.file_doesnt_exist("testme.new")
4590 self.pkg("verify presinstallonly")
4591 self.pkg("uninstall --parsable=0 presinstallonly")
4592 self.file_remove("testme")
4597 self.pkg("install --parsable=0 presinstallonly@4")
4598 self.file_append("testme", "junk")
4599 self.pkg("update --parsable=0 presinstallonly@3")
4600 self._assertEditables(
4603 self.file_contains("testme", "preserve3")
4604 self.file_contains("testme", "junk")
4605 self.file_doesnt_exist("testme.old")
4606 self.file_doesnt_exist("testme.new")
4607 self.file_doesnt_exist("testme.update")
4608 self.pkg("verify presinstallonly")
4609 self.pkg("uninstall --parsable=0 presinstallonly")
4610 self.file_remove("testme")
4615 self.pkg("install --parsable=0 presinstallonly@1")
4616 self.file_remove("testme")
4617 self.pkg("install --parsable=0 presinstallonly@2")
4618 self._assertEditables()
4619 self.file_doesnt_exist("testme")
4620 self.pkg("uninstall --parsable=0 presinstallonly")
4625 self.pkg("install --parsable=0 presinstallonly@4")
4626 self.file_remove("testme")
4627 self.pkg("update --parsable=0 presinstallonly@3")
4628 self._assertEditables()
4629 self.file_doesnt_exist("testme")
4633 self.file_doesnt_exist("testme")
4634 self.pkg("uninstall --parsable=0 presinstallonly")
4639 self.pkg("install --parsable=0 presinstallonly@1")
4640 self.pkg("install --parsable=0 presinstallonly@2")
4641 self.file_remove("testme")
4642 self.pkg("verify -v presinstallonly", exit=1)
4645 self.pkg("fix -v presinstallonly")
4646 self.file_contains("testme", "preserve1")
4650 self.file_remove("testme")
4651 self.pkg("revert testme")
4652 self.file_contains("testme", "preserve1")
4654 def test_directory_salvage(self):
4657 self.pkgsend_bulk(self.rurl, self.salvage)
4658 self.image_create(self.rurl)
4659 self.pkg("install salvage@1.0")
4660 self.file_append("var/mail/foo", "foo's mail")
4661 self.file_append("var/mail/bar", "bar's mail")
4662 self.file_append("var/mail/baz", "baz's mail")
4663 self.pkg("update salvage")
4664 self.file_exists("var/.migrate-to-shared/mail/foo")
4665 self.file_exists("var/.migrate-to-shared/mail/bar")
4666 self.file_exists("var/.migrate-to-shared/mail/baz")
4668 def test_directory_salvage_persistent(self):
4675 self.pkgsend_bulk(self.rurl, self.salvage)
4676 self.image_create(self.rurl)
4677 self.pkg("install salvage@1.0")
4678 self.file_append("var/mail/foo", "foo's mail")
4679 self.file_append("var/noodles/noodles.txt", "yum")
4680 self.pkg("update salvage@2.0")
4681 self.file_exists("var/.migrate-to-shared/mail/foo")
4682 self.file_exists("var/persistent/noodles.txt")
4683 self.file_append("var/spaghetti/spaghetti.txt", "yum")
4684 self.pkg("update")
4685 self.file_exists("var/persistent/noodles.txt")
4686 self.file_exists("var/persistent/spaghetti.txt")
4689 self.image_create(self.rurl)
4690 self.pkg("install salvage@1.0")
4691 self.file_append("var/noodles/noodles.txt", "yum")
4692 self.pkg("update salvage@3.0")
4693 self.file_exists("var/persistent/noodles.txt")
4695 def test_special_salvage(self):
4699 self.pkgsend_bulk(self.rurl, self.salvage_special)
4700 self.image_create(self.rurl, destroy=True, fs=("var",))
4702 self.pkg("install salvage-special")
4704 os.mkfifo(os.path.join(self.img_path(), "salvage", "fifo"))
4706 sock.bind(os.path.join(self.img_path(), "salvage", "socket"))
4710 self.pkg("uninstall salvage-special")
4712 def test_salvage_nested(self):
4724 self.pkgsend_bulk(self.rurl, self.salvage_nested)
4725 self.image_create(self.rurl)
4726 self.pkg("install salvage-nested@1.0")
4728 self.file_append("var/mail/foo", "foo's mail")
4730 os.path.join(self.get_img_path(),
4732 self.file_append("var/user/webui/user-pref.conf", "ook")
4733 self.file_append("var/user/webui/timf/blah.conf", "moo")
4734 self.file_append("var/user/evsuser/.ssh/config", "bar")
4737 self.file_append(
4741 self.pkg("update salvage-nested@1.1")
4742 self.file_exists("var/user/evsuser/.ssh/authorized_keys")
4744 self.pkg("update salvage-nested@2.0")
4748 self.file_doesnt_exist("var/.migrate/user/authorized_keys")
4751 self.file_doesnt_exist("var/.migrate/authorized_keys")
4752 self.file_doesnt_exist(
4754 self.file_doesnt_exist("var/.migrate/user/evsuser/config")
4755 self.file_doesnt_exist("var/.migrate/blah.conf")
4756 self.file_doesnt_exist("var/.migrate/user/blah.conf")
4757 self.file_doesnt_exist("var/.migrate/user/webui/blah.conf")
4760 self.file_contains("var/.migrate/mail/foo", "foo's mail")
4761 self.file_contains(
4764 self.file_contains(
4766 self.file_contains(
4768 self.file_contains(
4772 self.image_create(self.rurl)
4773 self.pkg("install salvage-nested@1.1")
4775 self.file_doesnt_exist("var/user/evsuser/.ssh/authorized_keys")
4776 self.file_append(
4778 self.pkg("update salvage-nested@2.0")
4779 self.file_contains(
4784 self.image_create(self.rurl)
4785 self.pkg("install salvage-nested@1.1")
4786 self.pkg("update salvage-nested@2.0")
4787 self.file_doesnt_exist(
4789 self.dir_exists("var/.migrate/user/evsuser/.ssh")
4793 self.image_create(self.rurl)
4794 self.pkg("install salvage-nested@1.1")
4796 os.path.join(self.get_img_path(),
4799 os.path.join(self.get_img_path(),
4801 self.file_append("var/user/webui/timf/user-pref.conf", "ook")
4802 self.file_append("var/user/noodles/blah.conf", "moo")
4803 self.file_append("var/user/evsuser/.ssh/config", "bar")
4804 self.pkg("update salvage-nested@3.0")
4805 self.file_contains(
4807 self.file_contains(
4809 self.file_contains(
4814 self.image_create(self.rurl)
4815 self.pkg("install salvage-nested@1.1")
4817 os.path.join(self.get_img_path(),
4820 os.path.join(self.get_img_path(),
4822 self.file_append("var/user/webui/timf/user-pref.conf", "ook")
4823 self.file_append("var/user/noodles/blah.conf", "moo")
4824 self.file_append("var/user/evsuser/.ssh/config", "bar")
4825 self.pkg("update salvage-nested@4.0")
4826 self.file_contains(
4828 self.file_contains(
4830 self.file_contains(
4834 def dest_file_valid(self, plist, pkg, src, dest):
4847 m.set_content(self.get_img_manifest(pfmri))
4856 self.validate_fsobj_attrs(a, target=dest)
4858 def test_link_preserve(self):
4862 self.pkgsend_bulk(self.rurl, (self.linkpreserve))
4863 self.image_create(self.rurl, destroy=True, fs=("var",))
4866 self.pkg("install --parsable=0 linkpreserve@1.0")
4868 abs_path = os.path.join(self.get_img_path(), cfg_path)
4870 self.file_exists(cfg_path)
4871 self.assertTrue(not os.path.islink(abs_path))
4874 self.file_append(cfg_path, "modified")
4879 self.pkg("update --parsable=0 linkpreserve@2.0")
4880 self._assertEditables(
4883 self.assertTrue(os.path.islink(abs_path))
4884 self.file_exists(new_cfg_path)
4885 self.file_contains(new_cfg_path, "modified")
4888 self.pkg("uninstall linkpreserve")
4889 self.pkg("install linkpreserve@1.0")
4890 self.file_contains(cfg_path, "preserve1")
4894 self.pkg("update --parsable=0 linkpreserve@2.0")
4895 self._assertEditables(
4898 self.file_contains(new_cfg_path, "preserve2")
4900 def test_many_hashalgs(self):
4905 self.many_hashalgs_helper("install", "sha256")
4906 self.many_hashalgs_helper("exact-install", "sha256")
4908 self.many_hashalgs_helper("install", "sha512t_256")
4909 self.many_hashalgs_helper("exact-install", "sha512t_256")
4911 def many_hashalgs_helper(self, install_cmd, hash_alg):
4912 self.pkgsend_bulk(self.rurl, self.iron10, debug_hash="sha1")
4913 self.image_create(self.rurl, destroy=True)
4914 self.pkg("install iron@1.0")
4915 self.pkg("contents -m iron")
4917 self.assertTrue(("pkg.content-hash=file:{0}".format(hash_alg) not in self.output))
4920 self.pkgsend_bulk(self.rurl, self.iron20,
4924 self.pkg("-D hash=sha1 update")
4925 self.image_create(self.rurl, destroy=True)
4930 self.pkg("install iron@2.0")
4931 self.pkg("contents -m iron")
4932 self.assertTrue("pkg.content-hash=file:{0}".format(hash_alg) in self.output)
4935 self.pkgsend_bulk(self.rurl, self.iron20,
4940 self.pkg("-D hash=sha1 update", exit=1)
4941 self.assertTrue(
4943 "'NOHASH'" in self.errout)
4948 self.pkg("-D hash={0} update".format(hash_alg))
4949 self.pkg("contents -m iron")
4951 self.output = self.output.replace(attr, "")
4952 self.assertTrue("hash" not in self.output)
4953 self.assertTrue("chash" not in self.output)
4955 def test_content_hash_ignore(self):
4964 elf1 = self.pkgsend_bulk(self.rurl, (elfpkg,))[0]
4966 repo_dir = self.dcs[1].get_repodir()
4968 repo = self.get_repo(repo_dir)
4982 self.pkgrecv("{0} -a -d {1} '*'".format(repo_dir,
4983 os.path.join(self.test_root, "x.p5p")))
4984 self.pkgrepo("verify -s {0}".format(repo_dir))
4985 self.image_create(self.rurl, destroy=True)
4986 self.pkg("install -v {0}".format(elf1))
4989 self.pkg("verify")
4999 self.pkgrecv("{0} -a -d {1} '*'".format(repo_dir,
5000 os.path.join(self.test_root, "y.p5p")))
5001 self.pkgrepo("verify -s {0}".format(repo_dir), exit=1)
5002 self.image_create(self.rurl, destroy=True)
5003 self.pkg("install -v {0}".format(elf1), exit=1)
5005 self.pkg("verify")
5156 def setUp(self):
5158 pkg5unittest.SingleDepotTestCase.setUp(self)
5160 self.only_file10 = """
5165 self.only_license10 = """
5170 self.baseuser = """
5184 self.singleuser = """
5191 self.basics0 = """
5201 self.basics1 = """
5211 self.grouptest = """
5221 self.usertest10 = """
5231 self.usertest11 = """
5241 self.ugidtest = """
5247 self.silver10 = """
5253 self.silver20 = """
5262 self.devicebase = """
5281 self.devlink10 = """
5289 self.devlink20 = """
5297 self.devalias10 = """
5303 self.devalias20 = """
5309 self.devaliasmove10 = """
5315 self.devaliasmove20 = """
5322 self.badhardlink1 = """
5328 self.badhardlink2 = """
5335 self.make_misc_files(self.misc_files)
5337 def test_basics_0_install(self):
5340 self.pkgsend_bulk(self.rurl, (self.basics0, self.basics1))
5341 self.image_create(self.rurl)
5343 self.pkg("list -a")
5344 self.pkg("list", exit=1)
5346 self.pkg("install basics")
5347 self.pkg("install basics1")
5349 self.pkg("list")
5350 self.pkg("verify")
5352 self.pkg("uninstall basics basics1")
5353 self.pkg("verify")
5355 def test_basics_0_exact_install(self):
5358 self.pkgsend_bulk(self.rurl, (self.basics0, self.basics1))
5359 self.image_create(self.rurl)
5361 self.pkg("list -a")
5362 self.pkg("list", exit=1)
5364 self.pkg("exact-install basics basics1")
5366 self.pkg("list")
5367 self.pkg("verify")
5369 self.pkg("uninstall basics basics1")
5370 self.pkg("verify")
5372 def test_grouptest_install(self):
5374 self.pkgsend_bulk(self.rurl, (self.basics0, self.basics1,
5375 self.grouptest))
5376 self.image_create(self.rurl)
5377 self.pkg("install basics")
5378 self.file_doesnt_contain("etc/group", ["lp", "staff", "Kermit"])
5379 self.pkg("install basics1")
5381 self.pkg("install grouptest")
5382 self.pkg("verify -v")
5383 self.file_contains("etc/group", ["lp", "staff", "Kermit"])
5384 self.pkg("uninstall -vvv grouptest")
5385 self.pkg("verify -v")
5386 self.file_doesnt_contain("etc/group", ["lp", "staff", "Kermit"])
5388 def test_grouptest_exact_install(self):
5390 self.pkgsend_bulk(self.rurl, (self.basics0, self.basics1,
5391 self.grouptest))
5392 self.image_create(self.rurl)
5393 self.pkg("exact-install basics basics1")
5394 self.file_doesnt_contain("etc/group", ["lp", "staff", "Kermit"])
5396 self.pkg("exact-install grouptest")
5397 self.pkg("verify")
5398 self.file_contains("etc/group", ["lp", "staff", "Kermit"])
5399 self.pkg("list basics1", exit=1)
5401 self.pkg("uninstall grouptest")
5402 self.pkg("verify")
5403 self.file_doesnt_contain("etc/group", ["lp", "staff", "Kermit"])
5405 def test_usertest_install(self):
5407 self.pkgsend_bulk(self.rurl, (self.basics0, self.basics1,
5408 self.grouptest, self.usertest10))
5409 self.image_create(self.rurl)
5410 self.pkg("install basics")
5411 self.pkg("install basics1")
5412 self.file_doesnt_contain("etc/passwd", "Kermit")
5413 self.file_doesnt_contain("etc/shadow", "Kermit")
5415 self.pkg("install usertest")
5416 self.pkg("verify")
5417 self.file_contains("etc/passwd", "Kermit")
5418 self.file_contains("etc/shadow", "Kermit")
5419 self.pkg("contents -m usertest")
5421 self.pkgsend_bulk(self.rurl, self.usertest11)
5422 self.pkg("refresh")
5423 self.pkg("install usertest")
5424 self.pkg("verify")
5425 self.pkg("contents -m usertest")
5427 self.pkg("uninstall usertest")
5428 self.pkg("verify")
5429 self.file_doesnt_contain("etc/passwd", "Kermit")
5430 self.file_doesnt_contain("etc/shadow", "Kermit")
5432 def test_usertest_exact_install(self):
5434 self.pkgsend_bulk(self.rurl, (self.basics0, self.basics1,
5435 self.grouptest, self.usertest10))
5436 self.image_create(self.rurl)
5437 self.pkg("exact-install basics basics1")
5438 self.file_doesnt_contain("etc/passwd", "Kermit")
5439 self.file_doesnt_contain("etc/shadow", "Kermit")
5441 self.pkg("exact-install usertest")
5442 self.pkg("verify")
5443 self.pkg("list basics1", exit=1)
5444 self.pkg("contents -m usertest")
5445 self.file_contains("etc/passwd", "Kermit")
5446 self.file_contains("etc/shadow", "Kermit")
5448 self.pkgsend_bulk(self.rurl, self.usertest11)
5449 self.pkg("refresh")
5450 self.pkg("exact-install usertest")
5451 self.pkg("verify")
5452 self.pkg("contents -m usertest")
5454 self.pkg("uninstall usertest")
5455 self.pkg("verify")
5456 self.file_doesnt_contain("etc/passwd", "Kermit")
5457 self.file_doesnt_contain("etc/shadow", "Kermit")
5459 def test_primordial_usergroup_install(self):
5463 self.pkgsend_bulk(self.rurl, [self.baseuser, self.singleuser])
5465 self.image_create(self.rurl)
5466 self.pkg("install system/action/user")
5467 self.pkg("verify")
5469 self.image_destroy()
5470 self.image_create(self.rurl)
5471 self.pkg("install singleuser", exit=1)
5473 def test_primordial_usergroup_exact_install(self):
5477 self.pkgsend_bulk(self.rurl, [self.basics0, self.singleuser])
5479 self.image_create(self.rurl)
5480 self.pkg("exact-install basics")
5481 self.pkg("verify")
5483 self.image_destroy()
5484 self.image_create(self.rurl)
5485 self.pkg("exact-install basics singleuser")
5487 def test_ftpuser_install(self):
5505 self.pkgsend_bulk(self.rurl, (self.basics0, notftpuser,
5507 self.image_create(self.rurl)
5509 self.pkg("install basics")
5513 self.pkg("install notftpuser")
5514 fpath = self.get_img_path() + "/etc/ftpd/ftpusers"
5516 self.assertTrue("animal\n" in f.readlines())
5517 self.pkg("verify notftpuser")
5521 self.pkg("install ftpuserexp")
5523 self.assertTrue("fozzie\n" not in f.readlines())
5524 self.pkg("verify ftpuserexp")
5528 self.pkg("install ftpuserimp")
5530 self.assertTrue("gonzo\n" not in f.readlines())
5531 self.pkg("verify ftpuserimp")
5536 self.pkg("uninstall notftpuser")
5539 self.pkg("install notftpuser")
5541 self.assertTrue("animal\n" in f.readlines())
5542 self.pkg("verify notftpuser")
5547 self.pkg("uninstall ftpuserexp")
5550 self.pkg("install ftpuserexp")
5552 self.assertTrue("fozzie\n" not in f.readlines())
5553 self.pkg("verify ftpuserexp")
5558 self.pkg("uninstall ftpuserimp")
5561 self.pkg("install ftpuserimp")
5563 self.assertTrue("gonzo\n" not in f.readlines())
5564 self.pkg("verify ftpuserimp")
5566 def test_groupverify_install(self):
5578 self.pkgsend_bulk(self.rurl, (self.basics0, simplegroups))
5579 self.image_create(self.rurl)
5581 self.pkg("install basics")
5582 self.pkg("install simplegroup")
5583 self.pkg("verify simplegroup")
5584 self.file_contains("etc/group", "muppets")
5587 gpath = self.get_img_file_path("etc/group")
5593 self.pkg("verify simplegroup")
5594 self.pkg("uninstall simplegroup")
5595 self.pkg("verify")
5596 self.file_doesnt_contain("etc/group", "muppets")
5599 self.pkg("install simplegroup simplegroup2")
5600 self.pkg("verify")
5603 self.assertTrue(gdata[-1].find("muppets2") == 0)
5604 self.pkg("uninstall simple*")
5605 self.pkg("install simplegroup2 simplegroup")
5608 self.assertTrue(gdata[-1].find("muppets2") == 0)
5610 def test_preexisting_group_install(self):
5624 self.pkgsend_bulk(self.rurl, (self.basics0, simplegroup))
5625 self.image_create(self.rurl)
5627 self.pkg("install basics")
5628 gpath = self.get_img_file_path("etc/group")
5634 self.pkg("verify")
5636 self.pkg("install simplegroup@0")
5637 self.pkg("verify simplegroup")
5639 self.pkg("install simplegroup@1")
5640 self.pkg("verify simplegroup")
5644 self.assertTrue(
5648 self.pkg("update simplegroup")
5649 self.pkg("verify simplegroup")
5651 def test_missing_ownergroup_install(self):
5671 self.pkgsend_bulk(self.rurl, (self.basics0, missing))
5672 self.image_create(self.rurl)
5673 self.pkg("install basics")
5676 self.pkg("install missing_group@1", exit=1)
5678 self.pkg("install missing_owner@1", exit=1)
5680 self.pkg("install muppetsuser@1", exit=1)
5682 self.pkg("install muppetsgroup")
5684 self.pkg("install muppetsuser@2")
5685 self.pkg("install missing_group@1")
5686 self.pkg("install missing_owner@1")
5687 self.pkg("verify")
5689 gpath = self.get_img_file_path("etc/group")
5697 self.pkg("verify muppetsgroup", 1)
5698 self.pkg("verify muppetsuser", 1)
5699 self.pkg("fix muppetsgroup", 0)
5700 self.pkg("verify muppetsgroup muppetsuser missing*")
5701 self.pkg("uninstall missing*")
5706 self.pkg("install missing_group@1", 1)
5707 self.pkg("fix muppetsgroup")
5708 self.pkg("install missing_group@1")
5709 self.pkg("install missing_owner@1")
5710 self.pkg("verify muppetsgroup muppetsuser missing*")
5712 def test_userverify_install(self):
5733 self.pkgsend_bulk(self.rurl, (self.basics0, simpleusers))
5734 self.image_create(self.rurl)
5736 self.pkg("install basics")
5737 self.pkg("install simpleuser")
5738 self.pkg("verify simpleuser")
5740 ppath = self.get_img_path() + "/etc/passwd"
5743 spath = self.get_img_path() + "/etc/shadow"
5748 self.assertTrue("\t\tERROR: " + err in self.output)
5754 self.pkg("verify simpleuser", exit=1)
5756 self.pkg("fix simpleuser")
5757 self.pkg("verify simpleuser")
5763 self.pkg("verify simpleuser", exit=1)
5765 self.pkg("fix simpleuser")
5766 self.pkg("verify simpleuser")
5773 self.pkg("verify simpleuser", exit=1)
5775 self.pkg("fix simpleuser")
5776 self.pkg("verify simpleuser")
5787 self.pkg("verify simpleuser", exit=1)
5790 self.pkg("fix simpleuser")
5791 self.pkg("verify simpleuser")
5800 self.pkg("verify simpleuser", exit=1)
5802 self.pkg("fix simpleuser")
5803 self.pkg("verify simpleuser")
5809 self.pkg("verify simpleuser", exit=1)
5811 self.pkg("fix simpleuser")
5812 self.pkg("verify simpleuser")
5818 self.pkg("verify simpleuser", exit=1)
5820 self.pkg("fix simpleuser")
5821 self.pkg("verify simpleuser")
5827 self.pkg("verify simpleuser", exit=1)
5831 self.pkg("fix simpleuser")
5832 self.pkg("verify simpleuser")
5841 self.pkg("verify simpleuser", exit=1)
5843 self.pkg("fix simpleuser")
5844 self.pkg("verify simpleuser")
5847 self.pkg("verify simpleuser")
5851 self.pkg("verify simpleuser", exit=1)
5853 self.pkg("fix simpleuser")
5854 self.pkg("verify simpleuser")
5858 self.pkg("install --reject simpleuser simpleuser2@1")
5859 self.pkg("verify simpleuser2")
5867 self.pkg("verify simpleuser2")
5871 self.pkg("update simpleuser2@2")
5872 self.pkg("verify simpleuser2")
5879 self.pkg("uninstall simpleuser2")
5880 self.pkg("install simpleuser simpleuser2")
5886 self.pkg("uninstall simpleuser simpleuser2")
5887 self.pkg("install simpleuser2 simpleuser")
5894 self.pkg("install simpleuser3@1")
5895 self.pkg("verify simpleuser3")
5904 self.pkg("verify simpleuser3", exit=1)
5910 self.pkg("verify simpleuser3")
5921 self.pkg("verify simpleuser3", exit=1)
5924 self.pkg("update simpleuser3")
5932 self.pkg("verify simpleuser3")
5934 def test_minugid(self):
5938 self.minugid_helper("install")
5939 self.minugid_helper("exact-install")
5941 def minugid_helper(self, install_cmd):
5942 self.pkgsend_bulk(self.rurl, (self.basics0, self.ugidtest))
5943 self.image_create(self.rurl)
5946 self.pkg("install basics")
5948 self.pkg("install ugidtest")
5950 self.pkg("exact-install basics ugidtest")
5951 passwd_file = open(os.path.join(self.get_img_path(),
5955 self.assertTrue(line.startswith("dummy:x:5:"))
5957 group_file = open(os.path.join(self.get_img_path(),
5961 self.assertTrue(line.startswith("dummy::5:"))
5964 def test_upgrade_with_user(self):
5969 self.upgrade_with_user_helper("install")
5970 self.upgrade_with_user_helper("exact-install")
5972 def upgrade_with_user_helper(self, install_cmd):
5973 self.pkgsend_bulk(self.rurl, (self.basics0, self.basics1,
5974 self.silver10, self.silver20, self.grouptest))
5975 self.image_create(self.rurl)
5976 self.pkg("install basics@1.0")
5977 self.pkg("{0} basics1@1.0".format(install_cmd))
5978 self.pkg("{0} silver@1.0".format(install_cmd))
5979 self.pkg("list silver@1.0")
5980 self.pkg("verify -v")
5981 self.pkg("{0} silver@2.0".format(install_cmd))
5982 self.pkg("verify -v")
5984 def test_upgrade_garbage_passwd(self):
5985 self.upgrade_garbage_passwd_helper("install")
5986 self.upgrade_garbage_passwd_helper("exact-install")
5988 def upgrade_garbage_passwd_helper(self, install_cmd):
5989 self.pkgsend_bulk(self.rurl, (self.basics0, self.singleuser))
5990 self.image_create(self.rurl)
5991 pwd_path = os.path.join(self.get_img_path(), "etc/passwd")
6001 self.pkg("install basics")
6009 self.pkg("{0} singleuser".format(install_cmd))
6011 self.pkg("{0} basics singleuser".format(install_cmd))
6014 self.assertTrue(garbage in lines)
6015 self.pkg("uninstall singleuser")
6018 self.assertTrue(garbage in lines)
6020 self.pkg("uninstall '*'")
6022 def test_user_in_grouplist(self):
6026 self.user_in_grouplist_helper("install")
6027 self.user_in_grouplist_helper("exact-install")
6029 def user_in_grouplist_helper(self, install_cmd):
6030 self.pkgsend_bulk(self.rurl, (self.basics0, self.only_user10))
6031 self.image_create(self.rurl)
6032 self.pkg("install basics@1.0")
6033 group_path = os.path.join(self.get_img_path(), "etc/group")
6041 self.pkg("install only_user@1.0")
6043 self.pkg("exact-install basics@1.0 only_user@1.0")
6045 def test_invalid_open(self):
6049 for char in self.pkg_name_valid_chars["never"]:
6051 self.pkgsend(self.rurl, "open '{0}'".format(invalid_name),
6054 for char in self.pkg_name_valid_chars["after-first"]:
6060 self.pkgsend(self.rurl, cmd, exit=1)
6064 self.pkgsend(self.rurl, cmd, exit=1)
6066 def test_valid_open(self):
6069 for char in self.pkg_name_valid_chars["always"]:
6072 self.pkgsend(self.rurl, "open '{0}'".format(valid_name))
6073 self.pkgsend(self.rurl, "close -A")
6075 for char in self.pkg_name_valid_chars["after-first"]:
6077 self.pkgsend(self.rurl, "open '{0}'".format(valid_name))
6078 self.pkgsend(self.rurl, "close -A")
6080 for char in self.pkg_name_valid_chars["at-end"]:
6082 self.pkgsend(self.rurl, "open '{0}'".format(valid_name))
6083 self.pkgsend(self.rurl, "close -A")
6085 def test_devlink(self):
6086 self.devlink_helper("install")
6087 self.devlink_helper("exact-install")
6089 def devlink_helper(self, install_cmd):
6094 self.pkgsend_bulk(self.rurl, (self.devicebase, self.devlink10,
6095 self.devlink20))
6096 self.image_create(self.rurl)
6099 dlf = open(os.path.join(self.get_img_path(),
6106 dlf = open(os.path.join(self.get_img_path(),
6114 self.assertTrue(set(actual) == set(contents))
6117 self.pkg("install devlinktest@1.0")
6118 self.pkg("verify -v")
6123 self.assertTrue(len(dllines) == 3)
6126 self.assertTrue(dllines[0].find("\t") > 0)
6129 self.pkg("{0} devlinktest@2.0".format(install_cmd))
6130 self.pkg("verify -v")
6135 self.assertTrue(len(dllines) == 4)
6141 self.pkg("uninstall devlinktest")
6142 self.pkg("verify -v")
6145 self.pkg("install devlinktest@1.0")
6155 self.pkg("{0} devlinktest@2.0".format(install_cmd))
6158 self.assertTrue(self.output.find("not found") != -1)
6159 self.assertTrue(self.output.find("name=zerg") != -1)
6163 self.assertTrue(len(dllines) == 5)
6167 self.pkg("uninstall devlinktest")
6173 self.pkg("install devlinktest@1.0")
6183 self.pkg("uninstall devlinktest")
6186 self.assertTrue(self.output.find("not found") != -1)
6187 self.assertTrue(self.output.find("name=zerg") != -1)
6191 self.assertTrue(len(dllines) == 1)
6198 self.pkg("install devlinktest@1.0")
6202 self.assertTrue(len(dllines) == 3, msg=dllines)
6209 self.pkg("{0} devlinktest@2.0".format(install_cmd))
6211 self.assertTrue(len(dllines) == 4, msg=dllines)
6214 def test_driver_aliases_upgrade(self):
6219 self.driver_aliases_upgrade_helper("install")
6220 self.driver_aliases_upgrade_helper("exact-install")
6222 def driver_aliases_upgrade_helper(self, install_cmd):
6227 self.pkgsend_bulk(self.rurl, [self.devicebase, self.devalias10,
6228 self.devalias20])
6230 self.image_create(self.rurl)
6231 self.pkg("{0} devicebase devalias@1".format(install_cmd))
6232 self.pkg("update devalias")
6233 self.pkg("verify devalias")
6235 daf = open(os.path.join(self.get_img_path(),
6240 self.assertTrue(len(dalines) == 1, msg=dalines)
6241 self.assertTrue(",1234" not in dalines[0])
6242 self.assertTrue(",4321" not in dalines[0])
6243 self.assertTrue(",5555" in dalines[0])
6245 def test_driver_aliases_move(self):
6249 self.driver_aliases_move_helper("install")
6250 self.driver_aliases_move_helper("exact-install")
6252 def driver_aliases_move_helper(self, install_cmd):
6253 self.pkgsend_bulk(self.rurl, [self.devicebase,
6254 self.devaliasmove10, self.devaliasmove20])
6256 self.image_create(self.rurl)
6257 self.pkg("{0} devicebase devaliasmove@1".format(install_cmd))
6258 self.pkg("update devaliasmove")
6259 self.assertTrue("pci8086,5555" not in self.output)
6261 def test_uninstall_without_perms(self):
6264 pkg_list = [self.foo10, self.only_attr10, self.only_depend10,
6265 self.only_directory10, self.only_file10,
6266 self.only_group10, self.only_hardlink10, self.only_legacy10,
6267 self.only_license10, self.only_link10, self.only_user10]
6271 pkg_list += [self.only_driver10]
6273 self.pkgsend_bulk(self.rurl, pkg_list + [
6274 self.devicebase + self.basics0 + self.basics1])
6276 self.image_create(self.rurl)
6285 self.pkg(cmd + ["foo"], exit=exit)
6287 self.pkg(cmd + ["devicebase"], exit=exit)
6289 self.pkg(cmd + ["basics"], exit=exit)
6291 self.pkg(cmd + ["only_file"], exit=exit)
6294 self.pkg(cmd + ["basics"], exit=exit)
6295 self.pkg(cmd + ["only_group"],
6298 self.pkg(cmd + ["only_group"],
6300 self.pkg(cmd + ["basics"], exit=exit)
6305 self.pkg(["install", "--no-refresh", pname],
6307 self.pkg(["install", pname], su_wrap=True,
6309 self.pkg(["install", "--no-refresh", pname])
6310 self.pkg(["uninstall", pname], su_wrap=True,
6312 self.pkg(["uninstall", pname])
6319 self.pkg(["install", "--no-refresh", pname])
6322 self.pkgsend_bulk(self.rurl, p)
6323 self.pkgsend_bulk(self.rurl, (self.devicebase, self.basics0,
6324 self.basics1))
6328 self.pkg(["update", "--no-refresh"], su_wrap=True, exit=1)
6330 self.pkg(["refresh"])
6331 self.pkg(["update"], su_wrap=True, exit=1)
6334 self.pkg(["refresh", "--full"], su_wrap=True, exit=1)
6335 self.pkg(["refresh", "--full"])
6336 self.pkg(["update", "--no-refresh"], su_wrap=True,
6338 self.pkg(["update"])
6340 def test_bug_3222(self):
6346 self.pkgsend_bulk(self.rurl, (self.basics0, self.only_user10,
6347 self.only_user_file10, self.only_group10,
6348 self.only_group_file10, self.grouptest, self.usertest10))
6349 self.image_create(self.rurl)
6350 fname = os.path.join(self.get_img_path(), "etc", "passwd")
6351 self.pkg("install basics")
6363 self.pkg("install {0}".format(pname))
6364 self.pkg("verify")
6368 self.pkg("uninstall {0}".format(pname))
6369 self.pkg("verify")
6371 def test_bad_hardlinks(self):
6374 self.bad_hardlinks_helper("install")
6375 self.bad_hardlinks_helper("exact-install")
6377 def bad_hardlinks_helper(self, install_cmd):
6378 self.pkgsend_bulk(self.rurl, (self.badhardlink1,
6379 self.badhardlink2))
6380 self.image_create(self.rurl)
6384 self.pkg("{0} badhardlink1".format(install_cmd), exit=1)
6389 self.pkg("{0} badhardlink2".format(install_cmd))
6390 ino1 = os.stat(os.path.join(self.get_img_path(), "foo")).st_ino
6391 ino2 = os.stat(os.path.join(self.get_img_path(), "etc/motd")).st_ino
6392 self.assertTrue(ino1 == ino2)
6394 def test_legacy(self):
6395 self.pkgsend_bulk(self.rurl,
6396 (self.csu1, self.csu1_2, self.csu2, self.csu2_2,
6397 self.csu3, self.csu3_2))
6398 self.image_create(self.rurl)
6400 self.pkg("install csu1@1 csu2@1 csu3@1")
6404 vsp = self.get_img_file_path("var/sadm/pkg")
6408 self.assertTrue(os.path.exists(pi), "pkginfo doesn't exist")
6409 self.file_contains(pi, "VERSION=11.11,REV=2009.11.11")
6410 self.assertTrue(not os.path.exists(pi2), "pkginfo.2 exists")
6411 self.assertTrue(not os.path.exists(pi3), "pkginfo.3 exists")
6419 self.pkg("update")
6420 self.file_contains(pi, "VERSION=11.11,REV=2010.11.11")
6421 self.assertTrue(not os.path.exists(pi2), "pkginfo.2 exists")
6422 self.assertTrue(not os.path.exists(pi3), "pkginfo.3 exists")
6425 self.pkg("uninstall -vvv \*")
6426 self.pkg("install csu1@1 csu2@1 csu3@1")
6429 self.pkg("update")
6430 self.file_contains(pi, "VERSION=11.11,REV=2010.11.11")
6431 self.assertTrue(not os.path.exists(pi2), "pkginfo.2 exists")
6432 self.assertTrue(not os.path.exists(pi3), "pkginfo.3 exists")
6869 def setUp(self):
6870 pkg5unittest.SingleDepotTestCase.setUp(self, image_count=2)
6871 self.pkgsend_bulk(self.rurl, (self.pkg10, self.pkg20,
6872 self.pkg11, self.pkg21, self.pkg30, self.pkg40, self.pkg50,
6873 self.pkg505, self.pkg51, self.pkg60, self.pkg61,
6874 self.bug_18653, self.pkg70, self.pkg80, self.pkg81,
6875 self.pkg90, self.pkg91, self.bug_7394_incorp, self.pkg100,
6876 self.pkg101, self.pkg102, self.pkg110, self.pkg111,
6877 self.pkg121, self.pkg122, self.pkg123, self.pkg132,
6878 self.pkg142, self.pkg_nosol, self.pkg_renames,
6879 self.pkgSUNWcs075, self.exclude_group,
6880 self.optional_group))
6882 self.leaf_pkgs = []
6883 for t in self.leaf_expansion:
6884 self.leaf_pkgs.extend(self.pkgsend_bulk(self.rurl,
6885 self.leaf_template.format(*t)))
6887 self.incorp_pkgs = []
6888 for i in self.incorps:
6889 self.incorp_pkgs.extend(self.pkgsend_bulk(self.rurl, i))
6891 def test_rename_matching(self):
6896 self.rename_matching("install")
6897 self.rename_matching("exact-install")
6899 def rename_matching(self, install_cmd):
6900 self.image_create(self.rurl)
6901 self.pkg("{0} trusted".format(install_cmd))
6902 self.pkg("info system/trusted")
6904 def test_require_dependencies(self):
6907 self.require_dependencies_helper("install")
6908 self.require_dependencies_helper("exact-install")
6910 def require_dependencies_helper(self, install_cmd):
6911 self.image_create(self.rurl)
6912 self.pkg("install pkg1@1.0")
6913 self.pkg("verify pkg1@1.0")
6914 self.pkg("{0} pkg3@1.0".format(install_cmd))
6915 self.pkg("verify pkg3@1.0 pkg1@1.1")
6917 def test_exclude_group_install(self):
6921 self.image_create(self.rurl)
6926 self.pkg("install network/rsync gold-server my-rsync", exit=1)
6928 self.pkg("install network/rsync")
6929 self.pkg("install gold-server my-rsync", exit=1)
6930 self.pkg("uninstall '*'")
6934 self.pkg("avoid network/rsync")
6935 self.pkg("install -nv gold-server my-rsync")
6939 self.pkg("install network/rsync")
6943 self.pkg("install --reject network/rsync gold-server my-rsync")
6946 self.pkg("uninstall gold-server")
6947 self.pkg("unavoid network/rsync")
6951 self.pkg("install gold-server", exit=1)
6953 def test_exclude_dependencies_install(self):
6956 self.image_create(self.rurl)
6958 self.pkg("install pkg4@1.0")
6959 self.pkg("verify pkg4@1.0")
6961 self.pkg("install pkg1@1.0")
6962 self.pkg("verify pkg1@1.0")
6964 self.pkg("install pkg1@1.1", exit=1)
6965 self.pkg("uninstall '*'")
6967 self.pkg("install pkg1@1.1")
6970 self.pkg("install pkg4@1.0", exit=1)
6971 self.pkg("uninstall '*'")
6974 self.pkg("install pkg5")
6975 self.pkg("verify pkg5@1.1 pkg1@1.0 ")
6976 self.pkg("uninstall '*'")
6979 self.pkg("install pkg2")
6980 self.pkg("install pkg5")
6981 self.pkg("verify pkg5@1.0.5 pkg1@1.0 pkg2")
6982 self.pkg("uninstall '*'")
6986 self.pkg("install pkg6@1.0")
6987 self.pkg("install pkg1@1.1")
6988 self.pkg("verify pkg1@1.1 pkg6@1.1")
6989 self.pkg("uninstall '*'")
6991 self.pkg("install pkg1@1.1 pkg4@1.0", exit=1)
6993 def test_exclude_dependencies_exact_install(self):
6996 self.image_create(self.rurl)
6998 self.pkg("install pkg4@1.0")
6999 self.pkg("verify pkg4@1.0")
7003 self.pkg("exact-install pkg1@1.1")
7004 self.pkg("uninstall '*'")
7008 self.pkg("exact-install pkg5")
7009 self.pkg("verify pkg5@1.1 pkg1@1.0 ")
7010 self.pkg("uninstall '*'")
7012 self.pkg("exact-install pkg2 pkg5")
7013 self.pkg("verify pkg5@1.0.5 pkg1@1.0 pkg2")
7014 self.pkg("uninstall '*'")
7017 self.pkg("exact-install pkg6 pkg1@1.1")
7018 self.pkg("verify pkg1@1.1 pkg6@1.1")
7019 self.pkg("uninstall '*'")
7021 self.pkg("exact-install pkg1@1.1 pkg4@1.0", exit=1)
7023 def test_optional_dependencies_install(self):
7027 self.image_create(self.rurl)
7028 self.pkg("install pkg1@1.0")
7031 self.pkg("list pkg2", exit=1)
7033 self.pkg("install pkg2@1.0")
7036 self.pkg("install pkg1")
7037 self.pkg("list pkg2@1.1")
7039 self.pkg("uninstall pkg2")
7040 self.pkg("list pkg2", exit=1)
7043 self.pkg("list pkg1@1.1")
7044 self.pkg("install pkg2@1.0", exit=1)
7046 def test_optional_dependencies_exact_install(self):
7050 self.image_create(self.rurl)
7051 self.pkg("exact-install pkg1@1.0")
7054 self.pkg("list pkg2", exit=1)
7056 self.pkg("install pkg2@1.1")
7060 self.pkg("exact-install pkg1")
7061 self.pkg("list pkg2@1.1", exit=1)
7062 self.pkg("list pkg1@1.1")
7066 self.pkg("exact-install pkg2@1.0")
7067 self.pkg("list pkg1", exit=1)
7069 def test_incorporation_dependencies_install(self):
7072 self.image_create(self.rurl)
7075 self.pkg("install -v pkgA_0@1.0 pkgA_1")
7076 self.pkg("list")
7077 self.pkg("verify pkgA_0@1.0 pkgA_1@1.0 A_incorp@1.0")
7078 self.pkg("install A_incorp@1.1")
7079 self.pkg("list pkgA_0@1.1 pkgA_1@1.1 A_incorp@1.1")
7080 self.pkg("uninstall '*'")
7082 self.pkg("install -v incorp@1.0 pkgA_0 pkgB_0")
7083 self.pkg("list")
7084 self.pkg("list incorp@1.0 pkgA_0@1.0 pkgB_0@1.0 A_incorp@1.0 B_incorp@1.0")
7086 self.pkg("install -v A_incorp@1.1", exit=1) # fixed by incorp@1.0
7089 self.pkg("update -v '*'")
7090 self.pkg("list incorp@1.2")
7091 self.pkg("list pkgA_0@1.2")
7092 self.pkg("list pkgB_0@1.2")
7093 self.pkg("list A_incorp@1.2")
7094 self.pkg("list B_incorp@1.2")
7095 self.pkg("uninstall '*'")
7098 self.pkg("install bug_7394_incorp")
7099 self.pkg("install pkg1", exit=1)
7100 self.pkg("uninstall '*'")
7102 self.pkg("install -v A_incorp@1.1 pkgA_1")
7103 self.pkg("list pkgA_1@1.1")
7104 self.pkg("list A_incorp@1.1")
7108 self.pkg("install pkgA_1@1.2", exit=1)
7112 self.pkg("install -n --parsable=0 A_incorp@1.2 pkgA_1@1.2")
7113 self.assertEqualParsable(self.output, change_packages=[
7114 [self.incorp_pkgs[2], self.incorp_pkgs[4]],
7115 [self.leaf_pkgs[9], self.leaf_pkgs[17]]])
7118 self.pkg("install A_incorp@1.2")
7119 self.pkg("list pkgA_1@1.2")
7120 self.pkg("list A_incorp@1.2")
7123 self.pkg("install incorp@1.2")
7124 self.pkg("install A_incorp@1.3", exit=1)
7125 self.pkg("install incorp@1.3")
7126 self.pkg("list pkgA_1@1.3")
7127 self.pkg("list A_incorp@1.3")
7129 def test_incorporation_dependencies_exact_install(self):
7132 self.image_create(self.rurl)
7135 self.pkg("exact-install -v pkgA_0@1.0 pkgA_1")
7136 self.pkg("list")
7137 self.pkg("verify pkgA_0@1.0 pkgA_1@1.0 A_incorp@1.0")
7141 self.pkg("exact-install pkgA_0@1.1")
7142 self.pkg("list pkgA_0@1.1 A_incorp@1.1")
7143 self.pkg("uninstall '*'")
7146 self.pkg("exact-install -v incorp@1.0 pkgA_0 pkgB_0")
7147 self.pkg("list incorp@1.0 pkgA_0@1.0 pkgB_0@1.0 A_incorp@1.0 B_incorp@1.0")
7149 self.pkg("exact-install -v incorp@1.0 A_incorp@1.1", exit=1) # fixed by incorp@1.0
7153 self.pkg("exact-install -v A_incorp@1.1")
7154 self.pkg("list A_incorp@1.1")
7155 self.pkg("uninstall '*'")
7158 self.pkg("exact-install pkg1 bug_7394_incorp", exit=1)
7160 self.pkg("exact-install -v A_incorp@1.1 pkgA_1")
7161 self.pkg("list pkgA_1@1.1")
7162 self.pkg("list A_incorp@1.1")
7164 def test_conditional_dependencies_install(self):
7166 self.image_create(self.rurl)
7167 self.pkg("install pkg7@1.0")
7168 self.pkg("verify")
7169 self.pkg("list pkg6@1.1", exit=1) # should not be here
7170 self.pkg("install -v pkg2@1.0") # older version...
7171 self.pkg("verify")
7172 self.pkg("list pkg6@1.1", exit=1)
7173 self.pkg("install -v pkg2@1.1") # this triggers conditional dependency
7174 self.pkg("verify")
7175 self.pkg("list pkg6@1.1 pkg2@1.1 pkg7@1.0") # everyone is present
7176 self.pkg("uninstall '*'")
7178 self.pkg("install pkg2@1.1") # install trigger
7179 self.pkg("verify")
7180 self.pkg("install pkg7@1.0") # install pkg
7181 self.pkg("list pkg6@1.1 pkg2@1.1 pkg7@1.0") # all here again
7182 self.pkg("verify")
7183 self.pkg("uninstall '*'")
7186 self.pkg("install osnet-incorporation@1.0 sun-solaris "
7190 self.pkg("uninstall sun-solaris-510", exit=1)
7193 self.pkg("uninstall perl-510 sun-solaris-510")
7194 self.pkg("install perl-510")
7196 self.pkg("update --reject perl-510 --reject sun-solaris-510")
7197 self.pkg("uninstall '*'")
7202 self.pkg("install -v entire osnet-incorporation@1.1 "
7208 self.pkg("uninstall -v entire")
7210 def test_conditional_dependencies_exact_install(self):
7213 self.image_create(self.rurl)
7216 self.pkg("exact-install -v pkg7@1.0 pkg2@1.1")
7217 self.pkg("verify")
7218 self.pkg("list pkg6@1.1 pkg2@1.1 pkg7@1.0")
7219 self.pkg("uninstall '*'")
7223 self.pkg("install pkg2@1.1")
7224 self.pkg("verify")
7225 self.pkg("exact-install pkg7@1.0")
7226 self.pkg("list pkg7@1.0")
7227 self.pkg("list pkg2@1.1", exit=1)
7228 self.pkg("list pkg6@1.1", exit=1)
7229 self.pkg("verify")
7230 self.pkg("uninstall '*'")
7232 def test_require_any_dependencies_install(self):
7234 self.image_create(self.rurl)
7238 self.pkg("install -vvv pkg-nosol-A pkg-nosol-E",
7242 self.pkg("install pkg8@1.0") # install pkg
7243 self.pkg("verify")
7244 self.pkg("list pkg8@1.0 pkg9@1.0 pkg2@1.1", exit=3)
7245 self.pkg("uninstall '*'")
7249 self.pkg("install pkg:/pkg2@1.1")
7250 self.pkg("install pkg_need_rename")
7251 self.pkg("install pkg8@1.0")
7252 self.pkg("verify")
7253 self.pkg("list pkg8@1.0 pkg2@1.1")
7254 self.pkg("uninstall '*'")
7258 self.pkg("install pkg8@1.0 pkg9@1.0") # install pkg
7259 self.pkg("verify")
7260 self.pkg("list pkg8@1.0 pkg9@1.0")
7261 self.pkg("list pkg2@1.1", exit=1)
7262 self.pkg("install pkg8 pkg9") # will fail w/o pkg9 on list
7263 self.pkg("verify")
7264 self.pkg("list pkg8@1.1 pkg9@1.1")
7265 self.pkg("uninstall '*'")
7268 self.pkg("install pkg8@1.0 pkg9@1.0") # install pkg
7269 self.pkg("update")
7270 self.pkg("list pkg8@1.1 pkg9@1.1")
7271 self.pkg("uninstall '*'")
7274 self.pkg("install pkg8@1.0 pkg9@1.0") # install pkg
7275 self.pkg("verify")
7276 self.pkg("list pkg8@1.0 pkg9@1.0")
7277 self.pkg("uninstall pkg9@1.0")
7278 self.pkg("list pkg2@1.1")
7279 self.pkg("verify")
7281 def test_require_any_dependencies_exact_install(self):
7283 self.image_create(self.rurl)
7287 self.pkg("exact-install -v pkg-nosol-A pkg-nosol-E",
7291 self.pkg("exact-install pkg8@1.0")
7292 self.pkg("verify")
7293 self.pkg("list pkg8@1.0 pkg9@1.0 pkg2@1.1", exit=3)
7294 self.pkg("uninstall '*'")
7298 self.pkg("exact-install pkg:/pkg2@1.1 pkg_need_rename "
7300 self.pkg("verify")
7301 self.pkg("list pkg8@1.0 pkg2@1.1")
7302 self.pkg("uninstall '*'")
7306 self.pkg("exact-install pkg8@1.0 pkg9@1.0") # install pkg
7307 self.pkg("verify")
7308 self.pkg("list pkg8@1.0 pkg9@1.0")
7309 self.pkg("list pkg2@1.1", exit=1)
7310 self.pkg("exact-install pkg8 pkg9")
7311 self.pkg("verify")
7312 self.pkg("list pkg8@1.1 pkg9@1.1")
7313 self.pkg("list pkg2@1.1", exit=1)
7314 self.pkg("uninstall '*'")
7316 def test_origin_dependencies(self):
7319 self.origin_dependencies_helper("install")
7320 self.origin_dependencies_helper("exact-install")
7322 def origin_dependencies_helper(self, install_cmd):
7323 self.set_image(0)
7324 self.image_create(self.rurl)
7325 self.set_image(1)
7326 self.image_create(self.rurl)
7327 self.set_image(0)
7329 self.pkg("{0} pkg10@1.0".format(install_cmd))
7330 self.pkg("{0} pkg10".format(install_cmd))
7331 self.pkg("list pkg10@1.1")
7332 self.pkg("{0} pkg10".format(install_cmd))
7333 self.pkg("list pkg10@1.2")
7334 self.pkg("uninstall '*'")
7336 self.pkg("install pkg10@1.0")
7337 self.pkg("update")
7338 self.pkg("list pkg10@1.1")
7339 self.pkg("update")
7340 self.pkg("list pkg10@1.2")
7341 self.pkg("uninstall '*'")
7344 self.pkg("{0} pkg10@1.2".format(install_cmd))
7345 self.pkg("uninstall '*'")
7347 self.pkg("{0} pkg10@1.0".format(install_cmd))
7348 self.pkg("{0} pkg10@1.2".format(install_cmd), exit=1)
7349 self.pkg("{0} pkg10@1.1".format(install_cmd))
7350 self.pkg("{0} pkg10@1.2".format(install_cmd))
7351 self.pkg("uninstall '*'")
7354 self.set_image(1)
7355 self.pkg("{0} SUNWcs@0.5.11-0.75".format(install_cmd))
7356 self.set_image(0)
7357 live_root = self.img_path(1)
7358 self.pkg("-D simulate_live_root={0} {1} pkg11@1.0".format(
7360 self.pkg("-D simulate_live_root={0} {1} pkg11@1.1".format(
7362 self.pkg("uninstall '*'")
7364 def test_parent_dependencies(self):
7365 self.parent_dependencies_helper("install")
7366 self.parent_dependencies_helper("exact-install")
7368 def parent_dependencies_helper(self, install_cmd):
7369 self.set_image(0)
7370 self.image_create(self.rurl)
7371 self.set_image(1)
7372 self.image_create(self.rurl)
7375 self.pkg("attach-linked -p system:img1 {0}".format(self.img_path(0)))
7379 self.pkg("{0} pkg12@1.2".format(install_cmd), exit=EXIT_OOPS)
7380 self.pkg("{0} pkg13@1.2".format(install_cmd), exit=EXIT_OOPS)
7381 self.pkg("{0} pkg14@1.2".format(install_cmd), exit=EXIT_OOPS)
7384 self.set_image(0)
7385 self.pkg("install pkg12@1.1")
7386 self.set_image(1)
7390 self.pkg("{0} pkg12@1.2".format(install_cmd), exit=EXIT_OOPS)
7391 self.pkg("{0} pkg13@1.2".format(install_cmd), exit=EXIT_OOPS)
7392 self.pkg("{0} pkg14@1.2".format(install_cmd), exit=EXIT_OOPS)
7395 self.set_image(0)
7396 self.pkg("{0} pkg12@1.3".format(install_cmd))
7397 self.set_image(1)
7401 self.pkg("{0} pkg12@1.2".format(install_cmd), exit=EXIT_OOPS)
7402 self.pkg("{0} pkg13@1.2".format(install_cmd), exit=EXIT_OOPS)
7403 self.pkg("{0} pkg14@1.2".format(install_cmd), exit=EXIT_OOPS)
7406 self.set_image(0)
7407 self.pkg("update pkg12@1.2")
7408 self.set_image(1)
7411 self.pkg("{0} pkg14@1.2".format(install_cmd), exit=EXIT_OOPS)
7414 self.pkg("{0} pkg12@1.2".format(install_cmd))
7415 self.pkg("verify")
7416 self.pkg("uninstall pkg12@1.2")
7417 self.pkg("{0} pkg13@1.2".format(install_cmd))
7418 self.pkg("verify")
7419 self.pkg("uninstall pkg13@1.2")
7422 self.set_image(0)
7424 self.pkg("install pkg13@1.2")
7426 self.pkg("exact-install pkg12@1.2 pkg13@1.2")
7427 self.set_image(1)
7431 self.pkg("{0} pkg14@1.2".format(install_cmd))
7432 self.pkg("verify")
7433 self.pkg("uninstall pkg14@1.2")
7435 def test_optional_nosolution(self):
7440 self.image_create(self.rurl)
7441 self.pkg("install desktop-incorporation")
7442 self.pkg("install -n multi-user-desktop@latest libotr@latest "
7444 self.assertFalse("No solution" in self.errout)
7448 self.assertFalse("pkg://test/consolidation/desktop/desktop-incorporation" in self.errout)
7450 self.assertTrue("pkg://test/communication/im/libotr" in self.errout)
7451 self.assertTrue("pkg://test/group/feature/multi-user-desktop" in self.errout)
7453 self.assertTrue("optional" in self.errout)
7526 def setUp(self):
7539 pkg5unittest.ManyDepotTestCase.setUp(self, ["test1", "test2",
7542 self.rurl1 = self.dcs[1].get_repo_url()
7543 self.durl1 = self.dcs[1].get_depot_url()
7544 self.pkgsend_bulk(self.rurl1, (self.foo10, self.moo10,
7545 self.quux10, self.optional10, self.upgrade_p10,
7546 self.upgrade_np11, self.incorp_p10, self.incorp_p11,
7547 self.incorp_np10, self.incorp_np11, self.baz10,
7548 self.corge10))
7550 self.rurl2 = self.dcs[2].get_repo_url()
7551 self.durl2 = self.dcs[2].get_depot_url()
7552 self.pkgsend_bulk(self.rurl2, (self.foo10, self.bar10,
7553 self.upgrade_p11, self.upgrade_np10, self.corge10))
7555 self.rurl3 = self.dcs[3].get_repo_url()
7557 self.rurl4 = self.dcs[4].get_repo_url()
7558 self.pkgsend_bulk(self.rurl4, self.upgrade_np11)
7560 self.rurl5 = self.dcs[5].get_repo_url()
7561 self.pkgsend_bulk(self.rurl5, self.corge10)
7563 self.rurl6 = self.dcs[6].get_repo_url()
7564 self.rurl7 = self.dcs[7].get_repo_url()
7567 d1dir = self.dcs[1].get_repodir()
7568 d2dir = self.dcs[7].get_repodir()
7569 self.copy_repository(d1dir, d2dir, { "test1": "test3" })
7570 self.dcs[7].get_repo(auto_create=True).rebuild()
7573 self.image_create(self.rurl1, prefix="test1")
7576 self.pkg("set-publisher -O " + self.rurl2 + " test2")
7578 def test_01_basics(self):
7579 self.pkg("list -a")
7582 self.pkg("install moo")
7584 self.pkg("list")
7585 self.pkg("uninstall moo")
7588 self.pkg("install bar")
7590 self.pkg("list")
7592 self.pkg("uninstall bar")
7597 self.pkg("install foo")
7599 self.pkg("list pkg://test1/foo")
7601 self.pkg("uninstall foo")
7603 def test_02_basics(self):
7605 self.pkg("install pkg://test1/foo")
7606 self.pkg("list foo")
7607 self.pkg("list pkg://test1/foo")
7608 self.pkg("uninstall foo")
7610 def test_03_basics(self):
7612 self.pkg("install pkg://test2/foo")
7613 self.pkg("list foo")
7614 self.pkg("list pkg://test2/foo")
7615 self.pkg("uninstall foo")
7617 def test_04_upgrade_preferred_to_non_preferred(self):
7621 self.pkg("list -a upgrade-p")
7622 self.pkg("install upgrade-p@1.0")
7623 self.pkg("install upgrade-p@1.1", exit=1)
7624 self.pkg("install pkg://test2/upgrade-p@1.1")
7625 self.pkg("uninstall upgrade-p")
7627 def test_05_upgrade_non_preferred_to_preferred(self):
7631 self.pkg("list -a upgrade-np")
7632 self.pkg("install upgrade-np@1.0")
7633 self.pkg("install upgrade-np@1.1", exit=1)
7634 self.pkg("install pkg://test1/upgrade-np@1.1")
7635 self.pkg("uninstall upgrade-np")
7637 def test_06_upgrade_preferred_to_non_preferred_incorporated(self):
7643 self.pkg("list -a upgrade-p incorp-p")
7644 self.pkg("install incorp-p@1.0")
7645 self.pkg("install upgrade-p")
7646 self.pkg("install incorp-p@1.1", exit=1)
7647 self.pkg("install incorp-p@1.1 pkg://test2/upgrade-p@1.1")
7648 self.pkg("list upgrade-p@1.1")
7649 self.pkg("uninstall '*'")
7651 def test_07_upgrade_non_preferred_to_preferred_incorporated(self):
7656 self.pkg("list", exit=1)
7657 self.pkg("list -a upgrade-np incorp-np")
7658 self.pkg("install incorp-np@1.0")
7659 self.pkg("install upgrade-np", exit=1)
7660 self.pkg("uninstall '*'")
7662 def test_08_install_repository_access(self):
7668 self.pkg("set-publisher --no-refresh -O http://test.invalid7 "
7672 self.pkg("list", exit=1)
7676 self.pkg("install moo")
7677 self.pkg("uninstall moo")
7682 self.pkg("install --no-refresh moo")
7684 self.pkg("uninstall moo")
7687 self.pkg("set-publisher -O {0} test2".format(self.rurl2))
7691 self.pkg("install upgrade-np@1.0")
7694 self.pkg("set-publisher --no-refresh -O http://test.invalid7 "
7699 self.pkg("set-publisher -O {0} test2".format(self.rurl4))
7704 self.pkg("update --no-refresh")
7707 self.pkg("uninstall upgrade-np")
7708 self.pkg("set-publisher --no-refresh -O {0} test1".format(self.rurl1))
7709 self.pkg("set-publisher -O {0} test2".format(self.rurl2))
7711 def test_09_uninstall_from_wrong_publisher(self):
7714 self.pkg("install foo")
7715 self.pkg("uninstall pkg://test2/foo", exit=1)
7718 self.pkg("uninstall pkg://test1/foo")
7720 def test_10_install_after_publisher_removal(self):
7725 self.pkg("install quux@1.0")
7726 self.pkg("set-publisher -P test2")
7727 self.pkg("unset-publisher test1")
7728 self.pkg("list -avf")
7733 self.pkg("install quux@1.0", exit=4)
7737 self.pkg("update", exit=4)
7743 self.pkg("set-publisher -O {0} test1".format(self.rurl6))
7744 self.pkg("install quux@1.0", exit=4)
7745 self.pkg("info quux@1.0")
7746 self.pkg("unset-publisher test1")
7753 self.pkg("set-publisher -O {0} test3".format(self.rurl7))
7754 self.pkg("set-publisher -O {0} test1".format(self.rurl6))
7755 self.pkg("info -r pkg://test3/quux@1.0")
7756 self.pkg("install quux@1.0", exit=4)
7757 self.pkg("unset-publisher test1")
7758 self.pkg("unset-publisher test3")
7760 self.pkg("set-publisher -O {0} test1".format(self.rurl1))
7761 self.pkg("info -r pkg://test1/quux@1.0")
7762 self.pkg("unset-publisher test1")
7770 self.pkg("set-publisher -O {0} test3".format(self.rurl7))
7771 self.pkg("install quux@1.0", exit=4)
7772 self.pkg("unset-publisher test3")
7776 self.pkg("set-publisher -O {0} -P test1".format(self.rurl1))
7779 self.pkg("uninstall quux")
7781 def test_11_uninstall_after_preferred_publisher_change(self):
7784 self.pkg("install foo@1.0")
7785 self.pkg("set-publisher -P test2")
7786 self.pkg("uninstall foo")
7789 self.pkg("set-publisher -P test1")
7791 def test_12_uninstall_after_publisher_removal(self):
7796 self.pkg("install foo@1.0")
7797 self.pkg("set-publisher -P test2")
7798 self.pkg("unset-publisher test1")
7802 self.pkg("uninstall -nv foo")
7808 self.pkg("set-publisher -O {0} test1".format(self.rurl6))
7809 self.pkg("uninstall -nv foo")
7810 self.pkg("unset-publisher test1")
7819 self.pkg("set-publisher -O {0} test3".format(self.rurl7))
7820 self.pkg("set-publisher -O {0} test1".format(self.rurl6))
7821 self.pkg("uninstall -nv foo")
7822 self.pkg("unset-publisher test1")
7823 self.pkg("unset-publisher test3")
7829 self.pkg("set-publisher -O {0} test3".format(self.rurl7))
7830 self.pkg("uninstall -nv foo")
7831 self.pkg("unset-publisher test3")
7834 self.pkg("uninstall -v foo")
7838 self.pkg("set-publisher -O {0} -P test1".format(self.rurl1))
7840 def test_13_non_preferred_multimatch(self):
7844 self.pkg("set-publisher -P -O {0} test3".format(self.rurl3))
7847 self.pkg("set-publisher --search-before=test2 test1")
7848 self.pkg("publisher")
7852 self.pkg("list -a")
7853 self.pkg("install pkg://test1/baz")
7854 self.pkg("list")
7855 self.pkg("info baz | grep test1")
7856 self.pkg("info corge | grep test1")
7857 self.pkg("uninstall baz corge")
7863 self.pkg("install pkg://test1/baz pkg://test2/corge")
7864 self.pkg("info baz | grep test1")
7865 self.pkg("info corge | grep test2")
7866 self.pkg("uninstall baz corge")
7869 self.pkg("set-publisher -P test1")
7870 self.pkg("unset-publisher test3")
7872 def test_14_nonsticky_publisher(self):
7877 self.pkg("list -a")
7879 self.pkg("install pkg://test2/upgrade-np@1.0")
7882 self.pkg("install upgrade-np@1.1", exit=1) # not right repo
7884 self.pkg("set-publisher --non-sticky test2")
7885 self.pkg("install upgrade-np@1.1") # should work now
7887 self.pkg("set-publisher --sticky test2")
7888 self.pkg("uninstall upgrade-np")
7890 self.pkg("install upgrade-p")
7891 self.pkg("set-publisher -P test2")
7892 self.pkg("install upgrade-p@1.1", exit=1) #orig pub is sticky
7893 self.pkg("set-publisher --non-sticky test1") #not anymore
7894 self.pkg("install upgrade-p@1.1")
7895 self.pkg("set-publisher -P --sticky test1") # restore
7896 self.pkg("uninstall '*'")
7899 self.pkg("install upgrade-p")
7900 self.pkg("install upgrade-p@1.1", exit=1)
7901 self.pkg("set-publisher --non-sticky test1")
7902 self.pkg("install upgrade-p@1.1") # find match later on
7903 self.pkg("set-publisher --sticky test1")
7904 self.pkg("uninstall '*'")
7906 def test_15_nonsticky_update(self):
7911 self.pkg("install pkg://test2/upgrade-np@1.0")
7912 self.pkg("update", exit=4)
7913 self.pkg("list upgrade-np@1.0")
7914 self.pkg("set-publisher --non-sticky test2")
7915 self.pkg("publisher")
7916 self.pkg("list -a upgrade-np")
7917 self.pkg("update '*@*'")
7918 self.pkg("list upgrade-np@1.1")
7919 self.pkg("set-publisher --sticky test2")
7920 self.pkg("uninstall '*'")
7922 def test_16_disabled_nonsticky(self):
7929 self.pkg("list -a")
7931 self.pkg("install pkg://test2/upgrade-np@1.0")
7934 self.pkg("install upgrade-np@1.1", exit=1) # not right repo
7936 self.pkg("set-publisher --disable test2")
7937 self.pkg("install upgrade-np@1.1")
7938 self.pkg("publisher")
7939 self.pkg("set-publisher --enable test2")
7940 self.pkg("publisher")
7941 self.pkg("publisher | egrep sticky", exit=1 )
7943 def test_17_dependency_is_from_deleted_publisher(self):
7947 self.pkg("set-publisher -O {0} test4".format(self.rurl5))
7948 self.pkg("install pkg://test4/corge")
7949 self.pkg("set-publisher --disable test2")
7950 self.pkg("set-publisher --disable test4")
7951 self.pkg("list -af")
7952 self.pkg("publisher")
7955 self.pkg("install baz@1.0")
7957 def test_18_upgrade_across_publishers(self):
7963 self.image_create(self.rurl1, prefix="test1", destroy=True)
7966 self.pkg("set-publisher -O " + self.rurl2 + " test2")
7969 self.pkg("install pkg://test1/upgrade-p@1.0")
7973 self.pkg("set-publisher -P test2")
7974 self.pkg("update -v", exit=4)
7979 self.pkg("set-publisher -P --non-sticky test1")
7980 self.pkg("update -v", exit=4)
7984 self.pkg("set-publisher --non-sticky test2")
7985 self.pkg("publisher")
7986 self.pkg("list -af upgrade-p")
7987 self.pkg("update -nvvv")
7992 self.pkg("set-publisher --search-after=test1 foo")
7993 self.pkg("update -v", exit=4)
7994 self.pkg("unset-publisher foo")
7998 self.pkg("set-publisher -P test2")
7999 self.pkg("update -n")
8003 self.pkg("update upgrade-p")
8004 self.pkg("info pkg://test2/upgrade-p@1.1")
8007 self.pkg("update pkg://test1/upgrade-p@1.0")
8008 self.pkg("install upgrade-p")
8009 self.pkg("info pkg://test2/upgrade-p@1.1")
8011 def test_19_refresh_failure(self):
8016 self.image_create(self.rurl1, prefix="test1")
8018 self.pkg("set-publisher --no-refresh -O http://test.invalid7 "
8022 self.pkg("install -n moo", exit=1)
8052 def setUp(self):
8053 pkg5unittest.SingleDepotTestCaseCorruptImage.setUp(self)
8054 self.make_misc_files(self.misc_files)
8056 def pkg(self, command, exit=0, comment="", use_img_root=True):
8057 pkg5unittest.SingleDepotTestCaseCorruptImage.pkg(self, command,
8058 exit=exit, comment=comment, prefix=self.PREFIX.format(self.dir),
8070 def test_empty_var_pkg(self):
8073 self.pkgsend_bulk(self.rurl, self.foo11)
8074 self.image_create(self.rurl)
8076 self.dir = self.corrupt_image_create(self.rurl,
8080 self.pkg("install foo@1.1")
8082 def test_var_pkg_missing_publisher(self):
8086 self.pkgsend_bulk(self.rurl, self.foo11)
8087 self.image_create(self.rurl)
8089 self.dir = self.corrupt_image_create(self.rurl,
8093 self.pkg("install foo@1.1")
8095 def test_var_pkg_missing_cfg_cache(self):
8098 self.pkgsend_bulk(self.rurl, self.foo11)
8099 self.image_create(self.rurl)
8101 self.dir = self.corrupt_image_create(self.rurl,
8104 self.pkg("-D simulate_live_root={0} install foo@1.1".format(
8105 self.backup_img_path()), use_img_root=False)
8107 def test_var_pkg_missing_index(self):
8110 self.pkgsend_bulk(self.rurl, self.foo11)
8111 self.image_create(self.rurl)
8113 self.dir = self.corrupt_image_create(self.rurl, set(
8116 self.pkg("install foo@1.1")
8118 def test_var_pkg_missing_publisher_empty(self):
8123 self.pkgsend_bulk(self.rurl, self.foo11)
8124 self.image_create(self.rurl)
8126 self.dir = self.corrupt_image_create(self.rurl,
8131 self.pkg("install --no-refresh foo@1.1", exit=1)
8132 self.pkg("install foo@1.1")
8135 self):
8142 self.pkgsend_bulk(self.rurl, self.foo11)
8143 self.image_create(self.rurl)
8145 self.dir = self.corrupt_image_create(self.rurl,
8148 self.pkg("install --no-refresh foo@1.1", exit=1)
8149 self.pkg("refresh")
8150 self.pkg("install foo@1.1")
8153 def test_var_pkg_left_alone(self):
8158 self.pkgsend_bulk(self.rurl, self.foo11)
8159 self.image_create(self.rurl)
8161 self.dir = self.corrupt_image_create(self.rurl, set(), ["var/pkg"])
8163 self.pkg("install foo@1.1")
8170 def test_empty_ospkg(self):
8174 self.pkgsend_bulk(self.rurl, self.foo11)
8175 self.image_create(self.rurl)
8177 self.dir = self.corrupt_image_create(self.rurl,
8181 self.pkg("install foo@1.1")
8183 def test_ospkg_missing_publisher(self):
8187 self.pkgsend_bulk(self.rurl, self.foo11)
8188 self.image_create(self.rurl)
8190 self.dir = self.corrupt_image_create(self.rurl,
8194 self.pkg("install foo@1.1")
8196 def test_ospkg_missing_cfg_cache(self):
8200 self.pkgsend_bulk(self.rurl, self.foo11)
8201 self.image_create(self.rurl)
8203 self.dir = self.corrupt_image_create(self.rurl,
8206 self.pkg("-D simulate_live_root={0} install foo@1.1".format(
8207 self.backup_img_path()), use_img_root=False)
8209 def test_ospkg_missing_index(self):
8213 self.pkgsend_bulk(self.rurl, self.foo11)
8214 self.image_create(self.rurl)
8216 self.dir = self.corrupt_image_create(self.rurl, set(["index_absent"]),
8219 self.pkg("install foo@1.1")
8221 def test_ospkg_missing_publisher_empty(self):
8226 self.pkgsend_bulk(self.rurl, self.foo11)
8227 self.image_create(self.rurl)
8229 self.dir = self.corrupt_image_create(self.rurl,
8233 self.pkg("install --no-refresh foo@1.1", exit=1)
8235 def test_ospkg_missing_publisher_empty_hit_then_refreshed_then_hit(self):
8242 self.pkgsend_bulk(self.rurl, self.foo11)
8243 self.image_create(self.rurl)
8245 self.dir = self.corrupt_image_create(self.rurl,
8249 self.pkg("install --no-refresh foo@1.1", exit=1)
8250 self.pkg("refresh")
8251 self.pkg("install foo@1.1")
8253 def test_ospkg_left_alone(self):
8258 self.pkgsend_bulk(self.rurl, self.foo11)
8259 self.image_create(self.rurl)
8261 self.dir = self.corrupt_image_create(self.rurl, set(),
8264 self.pkg("install foo@1.1")
8271 def test_basic_install(self):
8320 self.pkgsend_bulk(self.rurl, (foo1, foo2, fbar, qbar, qux1,
8323 self.image_create(self.rurl)
8326 self.pkg("install foo@1")
8327 self.pkg("list foo@1")
8330 self.pkg("install foo")
8331 self.pkg("list foo", exit=1)
8335 self.pkg("install foo@2", exit=4)
8336 self.pkg("list foo", exit=1)
8340 self.pkg("install fbar", exit=1)
8345 self.pkg("install qbar")
8346 self.pkg("list qbar")
8347 self.pkg("list foo@1")
8348 self.pkg("list qux | grep -- i-r")
8349 self.pkg("uninstall '*'") #clean up for next test
8354 self.pkg("install qux@1")
8355 self.pkg("install qux") # upgrades qux
8356 self.pkg("list foo@1")
8357 self.pkg("list qux", exit=1)
8358 self.pkg("uninstall '*'") #clean up for next test
8363 self.pkg("install foo@1 fred@1")
8364 self.pkg("install foo@2", exit=1)
8367 self.pkgsend_bulk(self.rurl, fred2)
8368 self.pkg("refresh")
8369 self.pkg("install foo@2")
8370 self.pkg("uninstall '*'") #clean up for next test
8372 self.pkg("install qux@1")
8373 self.pkg("install fred@2")
8374 self.pkg("list foo@1", exit=1) # should not be installed
8375 self.pkg("install qux") #update
8376 self.pkg("list foo@1")
8377 self.pkgrepo("remove -s {0} fred@2".format(self.rurl))
8379 def test_basic_exact_install(self):
8428 self.pkgsend_bulk(self.rurl, (foo1, foo2, fbar, qbar, qux1,
8431 self.image_create(self.rurl)
8434 self.pkg("exact-install foo@1")
8435 self.pkg("list foo@1")
8439 self.pkg("exact-install foo")
8440 self.pkg("list foo", exit=1)
8444 self.pkg("exact-install foo@2", exit=4)
8445 self.pkg("list foo", exit=1)
8449 self.pkg("exact-install fbar", exit=1)
8455 self.pkg("exact-install qbar")
8456 self.pkg("list qbar")
8457 self.pkg("list foo@1")
8458 self.pkg("list qux | grep -- i-r")
8459 self.pkg("uninstall '*'") #clean up for next test
8464 self.pkg("exact-install qux@1")
8465 self.pkg("exact-install qux") # upgrades qux
8466 self.pkg("list foo@1")
8467 self.pkg("list qux", exit=1)
8468 self.pkg("uninstall '*'") #clean up for next test
8473 self.pkg("exact-install foo@1 fred@1")
8474 self.pkg("exact-install foo@2 fred@1", exit=1)
8478 self.pkg("exact-install foo@2")
8481 self.pkgsend_bulk(self.rurl, fred2)
8482 self.pkg("refresh")
8483 self.pkg("exact-install foo@2 fred")
8484 self.pkg("uninstall '*'") #clean up for next test
8485 self.pkgrepo("remove -s {0} fred@2".format(self.rurl))
8487 def test_basic_7a(self):
8514 self.pkgsend_bulk(self.rurl, t7ap1_1)
8515 self.image_create(self.rurl)
8517 self.pkg("install t7ap1")
8519 self.pkgsend_bulk(self.rurl, (t7ap1_2, t7ap2_1, t7ap3_1))
8521 self.pkg("refresh")
8522 self.pkg("update")
8523 self.pkg("list -af")
8524 self.pkg("list t7ap2 | grep -- i-r")
8525 self.pkg("list t7ap3")
8527 def test_basic_7b(self):
8562 self.pkgsend_bulk(self.rurl, (t7bp1_1, t7bp2_1))
8563 self.image_create(self.rurl)
8565 self.pkg("install t7bp1")
8567 self.pkgsend_bulk(self.rurl, (t7bp1_2, t7bp2_2, t7bp3_1))
8569 self.pkg("refresh")
8570 self.pkg("update")
8571 self.pkg("list t7bp2 | grep -- i-r")
8572 self.pkg("list t7bp3")
8574 def test_basic_7c(self):
8603 self.pkgsend_bulk(self.rurl, (t7cp1_1, t7cp2_1))
8604 self.image_create(self.rurl)
8606 self.pkg("install t7cp1")
8608 self.pkgsend_bulk(self.rurl, (t7cp2_2, t7cp3_1))
8610 self.pkg("refresh")
8611 self.pkg("update")
8613 self.pkg("list t7cp2 | grep -- i-r")
8614 self.pkg("list t7cp3")
8616 def test_basic_6a(self):
8639 self.pkgsend_bulk(self.rurl, t6ap1_1)
8640 self.image_create(self.rurl)
8642 self.pkg("install t6ap1")
8644 self.pkgsend_bulk(self.rurl, (t6ap1_2, t6ap2_1))
8646 self.pkg("refresh")
8647 self.pkg("update", exit=4) # does nothing
8648 self.pkg("list t6ap1")
8650 def test_basic_6b(self):
8678 self.pkgsend_bulk(self.rurl, (t6ap1_1, t6ap2_1))
8679 self.image_create(self.rurl)
8681 self.pkg("install t6ap1")
8682 self.pkg("list")
8684 self.pkgsend_bulk(self.rurl, (t6ap1_2, t6ap2_2))
8686 self.pkg("refresh")
8687 self.pkg("update")
8688 self.pkg("list t6ap1@2 t6ap2@1")
8690 def test_basic_8a(self):
8711 self.pkgsend_bulk(self.rurl, (t8ap1_1, t8ap2_1))
8712 self.image_create(self.rurl)
8714 self.pkg("install t8ap2")
8716 self.pkgsend_bulk(self.rurl, t8ap1_2)
8718 self.pkg("refresh")
8719 self.pkg("update", exit=4) # does nothing
8720 self.pkg("list t8ap2@1")
8722 def test_basic_13a(self):
8750 self.pkgsend_bulk(self.rurl, (t13ap1_1, t13ap2_1))
8751 self.image_create(self.rurl)
8753 self.pkg("install t13ap1")
8755 self.pkgsend_bulk(self.rurl, (t13ap1_2, t13ap2_2))
8757 self.pkg("refresh")
8758 self.pkg("update")
8759 self.pkg("list", exit=1)
8761 def test_basic_11(self):
8765 self.basic_11_helper("install")
8766 self.basic_11_helper("exact-install")
8768 def basic_11_helper(self, install_cmd):
8780 self.pkgsend_bulk(self.rurl, (t11p1, t11p2))
8781 self.image_create(self.rurl)
8783 self.pkg("{0} netbeans".format(install_cmd))
8784 self.pkg("list pkg:/developer/netbeans")
8785 self.pkg("list pkg:/netbeans", exit=1)
8787 def test_basic_11a(self):
8792 self.basic_11a_helper("install")
8793 self.basic_11a_helper("exact-install")
8795 def basic_11a_helper(self, install_cmd):
8813 self.pkgsend_bulk(self.rurl, (t11p1, t11p2, t11p3))
8814 self.image_create(self.rurl)
8816 self.pkg("{0} netbonze".format(install_cmd), exit=1)
8818 def test_basic_11b(self):
8823 self.basic_11b_helper("install")
8824 self.basic_11b_helper("exact-install")
8826 def basic_11b_helper(self, install_cmd):
8850 self.pkgsend_bulk(self.rurl, (t11p1, t11p2, t11p3, t11p4))
8851 self.image_create(self.rurl)
8853 self.pkg("{0} netbooze".format(install_cmd))
8854 self.pkg("list pkg:/developer/netbooze")
8855 self.pkg("list pkg:/netbooze", exit=1)
8858 def test_basic_12(self):
8878 self.pkgsend_bulk(self.rurl, t12p1_1)
8879 self.image_create(self.rurl)
8881 self.pkg("install netbeenz")
8883 self.pkgsend_bulk(self.rurl, (t12p1_2, t12p2_1))
8885 self.pkg("refresh")
8886 self.pkg("update -v")
8887 self.pkg("list pkg:/developer/netbeenz | grep -- i--")
8888 self.pkg("list pkg:/netbeenz", exit=1)
8890 def test_remove_renamed(self):
8917 self.pkgsend_bulk(self.rurl, p1_1)
8918 self.image_create(self.rurl)
8920 self.pkg("install remrenA")
8922 self.pkgsend_bulk(self.rurl, (p1_2, p2_1, p3_1))
8924 self.pkg("refresh")
8925 self.pkg("update")
8926 self.pkg("list remrenA", exit=1)
8930 self.pkg("uninstall remrenB")
8932 self.pkg("install remrenA@1 remrenC")
8933 self.pkg("update")
8934 self.pkg("list remrenA")
8936 def test_chained_renames(self):
8981 self.pkgsend_bulk(self.rurl, (A1, A2, B2, C2, X, Y, Z))
8983 self.image_create(self.rurl)
8985 self.pkg("install chained_A@1 chained_X chained_Z")
8987 self.pkg("list {0}".format(p))
8988 self.pkg("update")
8992 self.pkg("list {0}".format(p))
8994 self.pkg("uninstall chained_X")
8997 self.pkg("list {0}".format(p))
9001 self.pkg("list {0}".format(p), exit=1)
9003 def test_unobsoleted(self):
9008 self.unobsoleted_helper("install")
9009 self.unobsoleted_helper("exact-install")
9011 def unobsoleted_helper(self, install_cmd):
9045 self.pkgsend_bulk(self.rurl, (pA_1, pA_2, pA_3, pB_1, pB_2,
9047 self.image_create(self.rurl)
9053 self.pkg("install reintroA@1")
9054 self.pkg("refresh")
9055 self.pkg("update")
9056 self.pkg("list reintroA@3")
9057 self.pkg("uninstall reintroA")
9061 self.pkg("{0} reintroA@1".format(install_cmd))
9062 self.pkg("{0} reintroA@3".format(install_cmd))
9063 self.pkg("list reintroA@3")
9064 self.pkg("uninstall reintroA")
9068 self.pkg("{0} reintroA@3".format(install_cmd))
9069 self.pkg("list reintroA@3")
9070 self.pkg("uninstall reintroA")
9074 self.pkg("{0} reintroA@1".format(install_cmd))
9075 self.pkg("{0} reintroA@2".format(install_cmd))
9076 self.pkg("{0} reintroA@3".format(install_cmd))
9077 self.pkg("list reintroA@3")
9078 self.pkg("uninstall reintroA")
9084 self.pkg("install reintroB@1")
9085 self.pkg("refresh")
9086 self.pkg("update")
9087 self.pkg("list reintroB@3")
9088 self.pkg("list reintroA@3")
9089 self.pkg("uninstall reintroB reintroA")
9093 self.pkg("{0} reintroB@1".format(install_cmd))
9094 self.pkg("{0} reintroB@3".format(install_cmd))
9095 self.pkg("list reintroB@3")
9096 self.pkg("list reintroA@3")
9097 self.pkg("uninstall reintroB reintroA")
9101 self.pkg("{0} reintroB@3".format(install_cmd))
9102 self.pkg("list reintroB@3")
9103 self.pkg("list reintroA@3")
9104 self.pkg("uninstall reintroB reintroA")
9108 self.pkg("{0} reintroB@1".format(install_cmd))
9109 self.pkg("{0} reintroB@2".format(install_cmd))
9110 self.pkg("{0} reintroB@3".format(install_cmd))
9111 self.pkg("list reintroB@3")
9112 self.pkg("list reintroA@3")
9113 self.pkg("uninstall reintroB reintroA")
9115 def test_incorp_1(self):
9118 self.incorp_1_helper("install")
9119 self.incorp_1_helper("exact-install")
9121 def incorp_1_helper(self, install_cmd):
9134 self.pkgsend_bulk(self.rurl, (p1_1, p2_1))
9135 self.image_create(self.rurl)
9138 self.pkg("install inc1p1")
9139 self.pkg("install inc1p2", exit=4)
9141 self.pkg("list inc1p2", exit=1)
9143 self.pkg("exact-install inc1p1")
9145 def test_incorp_2(self):
9172 self.pkgsend_bulk(self.rurl, (p1_1, p2_1))
9173 self.image_create(self.rurl)
9175 self.pkg("install inc2p1 inc2p2")
9177 self.pkgsend_bulk(self.rurl, (p1_2, p2_2))
9179 self.pkg("refresh")
9180 self.pkg("list -afv")
9181 self.pkg("update -v")
9182 self.pkg("list inc2p2", exit=1)
9226 def test_15713570(self):
9231 self.pkgsend_bulk(self.rurl, self.bug_15713570)
9232 self.image_create(self.rurl)
9234 self.pkg("install -v entire@1.0 oldcompiler")
9235 self.pkg("list")
9236 self.pkg("verify")
9237 self.pkg("update -v entire", exit=4)
9238 self.pkg("list")
9239 self.pkg("verify")
9240 self.pkg("update -v entire@2", exit=1)
9242 self.assertTrue("oldcompiler" in self.errout and
9243 "oldperl" in self.errout,
9263 def setUp(self):
9264 pkg5unittest.ManyDepotTestCase.setUp(self, ["test1", "test2"])
9265 self.rurl1 = self.dcs[1].get_repo_url()
9266 self.rurl2 = self.dcs[2].get_repo_url()
9268 def test_01(self):
9273 self.helper_01("install")
9274 self.helper_01("exact-install")
9276 def helper_01(self, install_cmd):
9277 self.pkgsend_bulk(self.rurl1, self.obs)
9278 self.pkgsend_bulk(self.rurl2, self.nonobs)
9280 self.image_create(self.rurl1, prefix="test1")
9281 self.pkg("set-publisher -O " + self.rurl2 + " test2")
9282 self.pkg("list -a")
9284 self.pkg("{0} stem".format(install_cmd), exit=4) # noting to do since it's obs
9287 self.pkg("list", exit=1)
9289 def test_02(self):
9297 self.helper_02("install")
9298 self.helper_02("exact-install")
9300 def helper_02(self, install_cmd):
9307 self.pkgsend_bulk(self.rurl1, (self.obs, lobs))
9308 self.pkgsend_bulk(self.rurl2, (self.nonobs, lobs))
9310 self.image_create(self.rurl1, prefix="test1")
9311 self.pkg("set-publisher -O " + self.rurl2 + " test2")
9313 self.pkg("{0} stem".format(install_cmd), exit=1)
9341 def setUp(self):
9342 pkg5unittest.ManyDepotTestCase.setUp(self, ["test1", "test2"])
9343 self.rurl1 = self.dcs[1].get_repo_url()
9344 self.rurl2 = self.dcs[2].get_repo_url()
9346 def test_1_incorp_latest_older(self):
9351 self.image_create(self.rurl1)
9352 self.pkgsend_bulk(self.rurl1, (self.incorporates,
9353 self.incorporated, self.incorporated_latest))
9357 self.pkg("install userland-incorporation vim-incorporation")
9361 self.pkg("install vim@7.4")
9363 def test_2_incorp_multi_pub(self):
9369 self.image_create(self.rurl1)
9370 self.pkgsend_bulk(self.rurl1, (self.incorporates,
9371 self.incorporated))
9372 self.pkgsend_bulk(self.rurl2, self.incorporated_latest)
9375 self.pkg("install userland-incorporation")
9378 self.pkg("set-publisher -p {0}".format(self.rurl2))
9383 self.pkg("install //test1/vim")
9448 def setUp(self):
9449 pkg5unittest.SingleDepotTestCase.setUp(self, publisher="bobcat")
9450 self.make_misc_files(self.misc_files)
9453 n_copyright = os.path.join(self.ro_data_root,
9455 self.make_misc_files({"88591enc.copyright": n_copyright})
9458 utf_copyright = os.path.join(self.ro_data_root,
9460 self.make_misc_files({"utf8enc.copyright": utf_copyright})
9463 u_copyright = os.path.join(self.ro_data_root,
9465 self.make_misc_files({"unsupported.copyright": u_copyright})
9467 self.plist = self.pkgsend_bulk(self.rurl, (self.licensed10,
9468 self.licensed12, self.licensed13, self.baz10,
9469 self.nonascii10, self.utf8enc10, self.unsupported10))
9472 def test_01_install_update(self):
9476 self.image_create(self.rurl, prefix="bobcat")
9480 self.pkg("install --parsable=0 licensed@1.0")
9481 self.assertEqualParsable(self.output,
9482 add_packages=[self.plist[3], self.plist[0]], licenses=[
9483 [self.plist[3], [],
9484 [self.plist[3], "copyright.baz", "copyright.baz",
9486 [self.plist[0], [],
9487 [self.plist[0], "copyright.licensed",
9490 self.pkg("list")
9491 self.pkg("info licensed@1.0 baz@1.0")
9494 self.pkg("install -n --licenses licensed@1.2 | "
9499 self.pkg("install -n licensed@1.2 | grep 'copyright.licensed'")
9503 self.pkg("install --parsable=0 licensed@1.2")
9504 self.assertEqualParsable(self.output,
9505 change_packages=[[self.plist[0], self.plist[1]]], licenses=[
9506 [self.plist[1],
9508 [self.plist[1], "license.licensed",
9510 [self.plist[1],
9511 [self.plist[0], "copyright.licensed",
9513 [self.plist[1], "copyright.licensed",
9518 self.pkg("update -v", exit=6)
9521 self.pkg("update --parsable=0", exit=6)
9525 self.pkg("update -n | grep 'copyright.licensed", exit=1)
9528 self.pkg("update -n --licenses | "
9533 self.pkg("update --parsable=0 --accept")
9534 self.assertEqualParsable(self.output,
9535 change_packages=[[self.plist[1], self.plist[2]]], licenses=[
9536 [self.plist[2],
9537 [self.plist[1], "license.licensed",
9539 [self.plist[2], "license.licensed",
9541 self.pkg("info licensed@1.3")
9543 def test_02_bug_7127117(self):
9546 self.image_create(self.rurl, prefix="bobcat")
9548 self.pkg("install --parsable=0 nonascii@1.0")
9549 self.pkg("install --parsable=0 utf8enc@1.0")
9550 self.pkg("install --parsable=0 unsupported@1.0")
9601 def setUp(self):
9602 pkg5unittest.SingleDepotTestCase.setUp(self)
9603 self.make_misc_files(self.misc_files)
9605 plist = self.pkgsend_bulk(self.rurl, (self.dir10, self.dir11,
9606 self.filesub10, self.filesub11, self.hardlink10))
9608 self.plist = {}
9611 self.plist[pfmri.pkg_name] = pfmri
9623 def test_00_directory(self):
9627 self.image_create(self.rurl)
9631 dest_dir = os.path.join(self.get_img_path(), dest_dir_name)
9634 self.__write_empty_file(dest_dir + ".src")
9636 self.pkg("install {0}".format(dest_dir_name), exit=1)
9638 def test_01_file(self):
9642 self.image_create(self.rurl)
9645 self.pkg("install dir")
9646 src = os.path.join(self.get_img_path(), "dir")
9647 os.mkdir(os.path.join(self.get_img_path(), "export"))
9651 self.pkg("install filesub@1.0", exit=1)
9653 def test_02_hardlink(self):
9657 self.image_create(self.rurl)
9660 self.pkg("install hardlink", exit=1)
9662 def __populate_repo(self, unsupp_content=None):
9665 sfmri = self.pkgsend_bulk(self.rurl, self.unsupp10)[0]
9672 repo = self.get_repo(self.dcs[1].get_repodir())
9697 def test_03_unsupported(self):
9703 self.pkgsend_bulk(self.rurl, self.foo10)
9712 self.__populate_repo(newact)
9713 self.image_create(self.rurl)
9714 self.pkg("install foo@1.0")
9715 self.pkg("install unsupported@1.0", exit=1)
9716 self.pkg("uninstall foo")
9717 self.pkg("install foo@1.0 unsupported@1.0", exit=1)
9721 self.__populate_repo(newact)
9722 self.pkg("refresh --full")
9723 self.pkg("install foo@1.0")
9724 self.pkg("install unsupported@1.0", exit=1)
9725 self.pkg("uninstall foo")
9729 self.__populate_repo()
9730 self.pkg("refresh --full")
9731 self.pkg("install foo@1.0 unsupported@1.0")
9732 self.pkg("uninstall foo unsupported")
9734 def test_04_loop(self):
9740 self.image_create(self.rurl)
9741 self.pkg("install dir@1.0 filesub@1.0")
9755 fpath = self.get_img_file_path("dir/file")
9760 self.pkg("verify", exit=1)
9764 self.pkg("update filesub")
9765 self.pkg("verify")
9769 self.pkg("uninstall filesub")
9770 fpath = self.get_img_file_path("dir")
9775 self.pkg("verify", exit=1)
9779 self.pkg("update", exit=1)
10465 def setUp(self):
10466 pkg5unittest.SingleDepotTestCase.setUp(self)
10467 self.make_misc_files(self.misc_files)
10468 self.make_misc_files(self.userdb_files)
10469 self.make_misc_files(self.driverdb_files)
10472 for objname in dir(self.__class__):
10473 obj = getattr(self, objname)
10495 self.plist = self.pkgsend_bulk(self.rurl, pkgs)
10498 def test_conflictgroupid_install(self):
10502 self.image_create(self.rurl)
10504 self.pkg("install userdb")
10505 self.pkg("install conflictgroup1")
10506 with open(os.path.join(self.img_path(), "etc/group")) as f:
10510 self.assertTrue("200" in line)
10512 with open(os.path.join(self.img_path(), "etc/passwd")) as f:
10516 self.assertTrue("200" in line)
10518 self.pkg("install -v --reject conflictgroup1 conflictgroup2")
10520 self.pkg("list conflictgroup1", exit=1)
10521 self.pkg("list conflictgroup2")
10522 with open(os.path.join(self.img_path(), "etc/passwd")) as f:
10526 self.assertTrue("201" in line)
10528 with open(os.path.join(self.img_path(), "etc/group")) as f:
10532 self.assertTrue("201" in line)
10534 self.pkg("verify")
10536 def test_multiple_files_install(self):
10540 self.image_create(self.rurl)
10543 self.pkg("install dupfiles", exit=1)
10547 self.pkg("install dupfilesp1 dupfilesp2@0", exit=1)
10551 self.pkg("install dupfilesp1")
10552 self.pkg("install dupfilesp2@0", exit=1)
10556 self.pkg("-D broken-conflicting-action-handling=1 install dupfilesp2@0")
10557 self.pkg("install implicitdirs2")
10558 self.pkg("uninstall implicitdirs2")
10562 self.pkg("install dupfilesp2 dupfilesp3")
10563 self.pkg("verify", exit=1)
10567 self.pkg("uninstall dupfilesp3")
10568 self.pkg("verify")
10572 self.pkg("uninstall dupfilesp2")
10573 self.pkg("-D broken-conflicting-action-handling=1 install dupfilesp2@0")
10574 self.pkg("update")
10575 self.pkg("verify")
10581 self.pkg("uninstall dupfilesp2")
10582 self.pkg("-D broken-conflicting-action-handling=1 install dupfilesp2@0")
10583 self.pkg("install dupfilesp2 dupfilesp4", exit=1)
10587 self.pkg("uninstall '*'")
10588 self.pkg("-D broken-conflicting-action-handling=1 install "
10593 self.pkg("verify", exit=1)
10594 out1, err1 = self.output, self.errout
10595 for i, l in enumerate(self.plist):
10599 self.plist[index], self.plist[index + 1], self.plist[index + 3])
10600 self.assertTrue(expected in err1, err1)
10601 self.assertTrue("Hash" not in out1)
10602 self.pkg("uninstall dupfilesp3")
10605 self.pkg("verify", exit=1)
10606 out2, err2 = self.output, self.errout
10608 self.plist[index], self.plist[index + 1])
10609 self.assertTrue(expected in err2)
10610 self.assertTrue("Hash" not in out2)
10614 self.pkg("uninstall '*'")
10615 self.pkg("-D broken-conflicting-action-handling=1 install "
10617 self.pkg("uninstall dupfilesp3 dupfilesp2")
10618 self.pkg("verify")
10621 self.pkg("uninstall '*'")
10622 self.pkg("-D broken-conflicting-action-handling=1 install "
10624 self.pkg("uninstall dupfilesp2 dupotherfilesp2")
10625 self.pkg("verify")
10628 self.pkg("install overlaid@0")
10629 self.pkg("-D broken-conflicting-action-handling=1 install "
10633 self.file_contains("etc/pam.conf", "file2")
10634 self.pkg("uninstall invalid-overlayer")
10635 self.file_contains("etc/pam.conf", "file2")
10638 self.pkg("uninstall '*'")
10639 self.pkg("install implicitdirs3 implicitdirs4")
10640 self.pkg("uninstall implicitdirs3 implicitdirs4")
10642 if os.path.isdir(os.path.join(self.get_img_path(), "usr/bin")):
10643 self.assertTrue(False, "Directory 'usr/bin' should not exist")
10645 if os.path.isdir(os.path.join(self.get_img_path(), "usr")):
10646 self.assertTrue(False, "Directory 'usr' should not exist")
10649 self.pkg("install -nv identicalfiles", exit=1)
10652 self.pkg("publisher")
10653 self.pkg("-D broken-conflicting-action-handling=1 install "
10656 self.pkg("update")
10661 self.dc.start()
10662 self.pkgsend_bulk(self.durl, (self.pkgremote_pkg1,
10663 self.pkgremote_pkg2))
10664 self.image_create(self.durl)
10665 self.pkg("install pkg1")
10666 self.pkg("-D broken-conflicting-action-handling=1 install pkg2")
10667 self.pkg("verify pkg2")
10668 self.dc.stop()
10669 self.pkg("uninstall pkg2", exit=1)
10670 self.pkg("verify pkg2")
10672 def test_overlay_files_install(self):
10680 self.image_create(self.rurl)
10685 self.pkg("install boring")
10689 self.pkg("install invalid-overlaid")
10690 self.pkg("install overlayer", exit=1)
10691 self.pkg("uninstall invalid-overlaid")
10695 self.pkg("install overlaid@0")
10696 self.file_contains("etc/pam.conf", "file1")
10697 self.pkg("install invalid-overlayer", exit=1)
10701 self.pkg("install mismatch-overlayer", exit=1)
10705 self.pkg("contents -m overlaid")
10706 self.pkg("contents -mr overlayer")
10707 self.pkg("install --parsable=0 overlayer")
10708 self._assertEditables(
10711 self.file_contains("etc/pam.conf", "file2")
10715 self.pkg("install multi-overlayer", exit=1)
10719 self.pkg("verify overlaid overlayer")
10724 self.file_append("etc/pam.conf", "zigit")
10725 self.pkg("verify overlaid overlayer")
10730 self.pkg("uninstall --parsable=0 overlayer")
10731 self._assertEditables()
10732 self.file_contains("etc/pam.conf", ["zigit", "file2"])
10736 self.pkg("uninstall --parsable=0 overlaid")
10737 self._assertEditables(
10740 self.file_doesnt_exist("etc/pam.conf")
10744 self.pkg("install --parsable=0 overlaid@0 overlayer")
10745 self._assertEditables(
10748 self.file_contains("etc/pam.conf", "file2")
10752 self.file_append("etc/pam.conf", "zigit")
10753 self.pkg("uninstall --parsable=0 overlaid")
10754 self._assertEditables()
10755 self.file_contains("etc/pam.conf", ["file2", "zigit"])
10759 self.pkg("install --parsable=0 overlaid@0")
10760 self._assertEditables()
10761 self.file_contains("etc/pam.conf", ["file2", "zigit"])
10762 self.pkg("uninstall --parsable=0 overlaid overlayer")
10763 self._assertEditables(
10770 self.pkg("install -nvv overlaid@0 unpreserved-overlayer")
10771 self.pkg("install --parsable=0 overlaid@0 unpreserved-overlayer")
10772 self._assertEditables(
10775 self.file_contains("etc/pam.conf", "unpreserved")
10779 self.pkg("verify overlaid unpreserved-overlayer")
10783 self.file_append("etc/pam.conf", "zigit")
10784 self.pkg("verify overlaid")
10788 self.pkg("verify unpreserved-overlayer", exit=1)
10791 self.pkg("fix unpreserved-overlayer")
10792 self.file_contains("etc/pam.conf", "unpreserved")
10793 self.file_doesnt_contain("etc/pam.conf", "zigit")
10796 self.file_append("etc/pam.conf", "zigit")
10797 self.pkg("revert /etc/pam.conf")
10798 self.file_contains("etc/pam.conf", "unpreserved")
10799 self.file_doesnt_contain("etc/pam.conf", "zigit")
10800 self.pkg("uninstall --parsable=0 unpreserved-overlayer")
10801 self._assertEditables()
10804 self.file_contains("etc/pam.conf", "unpreserved")
10805 self.pkg("revert /etc/pam.conf")
10806 self.file_contains("etc/pam.conf", "file1")
10811 self.pkg("install --parsable=0 unpreserved-overlayer")
10812 self._assertEditables(
10815 self.file_contains("etc/pam.conf", "unpreserved")
10816 self.pkg("install --parsable=0 overlaid@1")
10817 self._assertEditables()
10818 self.file_contains("etc/pam.conf", "unpreserved")
10819 self.pkg("uninstall --parsable=0 overlaid")
10820 self._assertEditables()
10824 self.pkg("install --parsable=0 overlaid@2")
10825 self._assertEditables()
10826 self.file_contains("etc/pam.conf", "unpreserved")
10831 self.pkg("install --parsable=0 overlaid@3")
10832 self._assertEditables()
10833 self.file_contains("etc/pam.conf", "unpreserved")
10841 api_inst = self.get_img_api_obj()
10847 self.pkg("uninstall --parsable=0 overlaid-renamed "
10849 self._assertEditables(
10856 self.assertEqualDiff(salvaged, [])
10863 self.pkg("install --parsable=0 overlaid-renamed@3 "
10865 self._assertEditables(
10868 self.pkg("install -nvv overlaid-renamed@4.1")
10869 self.pkg("install --parsable=0 overlaid-renamed@4.1")
10870 self._assertEditables(
10874 self.file_contains("etc/pam.conf", "unpreserved")
10875 self.file_contains("etc/pam/pam.conf", "unpreserved")
10876 self.file_contains("etc/pam/pam.conf.new", "file4")
10880 self.pkg("uninstall --parsable=0 overlaid-renamed "
10882 self._assertEditables(
10889 self.assertEqualDiff(salvaged, [])
10897 self.pkg("install --parsable=0 overlayer")
10898 self._assertEditables(
10901 self.file_contains("etc/pam.conf", "file2")
10902 self.file_append("etc/pam.conf", "zigit")
10903 self.pkg("install --parsable=0 overlaid@1")
10904 self._assertEditables()
10905 self.file_contains("etc/pam.conf", "zigit")
10906 self.pkg("uninstall --parsable=0 overlaid")
10907 self._assertEditables()
10911 self.pkg("install --parsable=0 overlaid@2")
10912 self._assertEditables()
10913 self.file_contains("etc/pam.conf", "zigit")
10918 self.pkg("install --parsable=0 overlaid@3")
10919 self._assertEditables()
10920 self.file_contains("etc/pam.conf", "zigit")
10928 api_inst = self.get_img_api_obj()
10934 self.pkg("uninstall --parsable=0 overlaid-renamed overlayer")
10935 self._assertEditables(
10942 self.assertEqualDiff(salvaged, ["etc"])
10950 self.pkg("install --parsable=0 overlaid-renamed@3 overlayer")
10951 self._assertEditables(
10954 self.file_append("etc/pam.conf", "zigit")
10955 self.pkg("install --parsable=0 overlaid-renamed@4.0")
10956 self._assertEditables(
10960 self.file_contains("etc/pam.conf", "zigit")
10961 self.file_contains("etc/pam/pam.conf", "zigit")
10962 self.file_contains("etc/pam/pam.conf.new", "file4")
10963 self.pkg("uninstall --parsable=0 overlaid-renamed overlayer")
10964 self._assertEditables(
10973 self.pkg("install --parsable=0 overlaid-renamed@3 overlayer")
10974 self._assertEditables(
10977 self.file_append("etc/pam.conf", "zigit")
10978 self.pkg("install --parsable=0 overlaid-renamed@4.1")
10979 self._assertEditables(
10983 self.file_contains("etc/pam.conf", "zigit")
10984 self.file_contains("etc/pam/pam.conf", "zigit")
10985 self.file_contains("etc/pam/pam.conf.new", "file4")
10990 self.pkg("update --parsable=0 overlaid-renamed@3")
10991 self._assertEditables(
10994 self.file_contains("etc/pam.conf", "zigit")
10997 self.pkg("install --parsable=0 overlaid-renamed@4.1")
10998 self._assertEditables(
11007 self.pkg("uninstall --parsable=0 overlaid-renamed overlayer")
11008 self._assertEditables(
11019 self.assertEqualDiff(salvaged[0], "pam")
11020 self.assertTrue(salvaged[1].startswith("pam-"),
11022 self.assertTrue(salvaged[2].startswith("pam.conf"),
11028 self.pkg("install --parsable=0 overlaid@0 overlayer-move@0")
11029 self._assertEditables(
11032 self.file_append("etc/pam.conf", "zigit")
11033 self.pkg("install --parsable=0 overlaid@3")
11034 self._assertEditables()
11035 self.file_contains("etc/pam.conf", "zigit")
11036 self.pkg("install --parsable=0 overlaid-renamed@4.1 "
11038 self._assertEditables(
11041 self.file_contains("etc/pam/pam.conf", "zigit")
11047 self.pkg("update --parsable=0 overlaid-renamed@3 "
11049 self._assertEditables(
11053 self.file_contains("etc/pam.conf", "file2")
11054 self.pkg("uninstall --parsable=0 overlaid-renamed overlayer-move")
11055 self._assertEditables(
11062 self.pkg("install --parsable=0 overlaid@2 overlayer-update@0")
11063 self._assertEditables(
11066 self.file_contains("etc/pam.conf", "file1")
11068 self.pkg("install --parsable=0 overlayer-update@1")
11069 self._assertEditables(
11072 self.file_contains("etc/pam.conf", "file2")
11073 self.file_append("etc/pam.conf", "zigit")
11075 self.pkg("install --parsable=0 overlayer-update@2")
11076 self._assertEditables(
11080 self.file_doesnt_contain("etc/pam.conf", "zigit")
11081 self.file_contains("etc/pam.conf.old", "zigit")
11082 self.file_append("etc/pam.conf", "zagat")
11084 self.pkg("install --parsable=0 overlayer-update@3")
11085 self._assertEditables(
11088 self.file_contains("etc/pam.conf", "zagat")
11089 self.file_contains("etc/pam.conf.new", "file4")
11091 def test_different_types_install(self):
11095 self.image_create(self.rurl)
11098 self.pkg("install duppath-filelink", exit=1)
11101 self.pkg("install dupfilesp1 duplink", exit=1)
11104 self.pkg("install dupfilesp1")
11105 self.pkg("install duplink", exit=1)
11109 self.pkg("uninstall '*'")
11110 self.pkg("-D broken-conflicting-action-handling=1 install dupfilesp1 duplink")
11111 self.pkg("verify", exit=1)
11112 self.pkg("uninstall dupfilesp1")
11113 self.pkg("verify")
11114 self.pkg("-D broken-conflicting-action-handling=1 install dupfilesp1")
11115 self.pkg("uninstall duplink")
11116 self.pkg("verify")
11119 self.pkg("uninstall '*'")
11120 self.pkg("install implicitdirs", exit=1)
11123 self.pkg("install implicitdirs2")
11127 self.pkg("uninstall '*'")
11128 self.pkg("install implicitdirs4")
11129 self.pkg("-D broken-conflicting-action-handling=1 install "
11131 self.pkg("uninstall implicitdirs7")
11134 os.mkdir("{0}/usr/bin".format(self.img_path()))
11135 shutil.copy("{0}/tmp/file1".format(self.test_root),
11136 "{0}/usr/bin/something".format(self.img_path()))
11137 owner = portable.get_user_by_name("root", self.img_path(), True)
11138 group = portable.get_group_by_name("bin", self.img_path(), True)
11139 os.chown("{0}/usr/bin/something".format(self.img_path()), owner, group)
11140 os.chmod("{0}/usr/bin/something".format(self.img_path()), 0o755)
11141 self.pkg("verify")
11145 self.pkg("uninstall '*'")
11146 self.pkg("-D broken-conflicting-action-handling=1 install "
11157 thepath = "{0}/dir/pathname".format(self.img_path())
11164 self.pkg("verify", exit=1)
11166 matches = re.findall(verify_type_re, self.output)
11170 self.assertTrue(len(matches) == 2)
11172 self.assertTrue(matches[1][0] == whatis)
11173 self.assertTrue(whatis == tmap[fmt])
11176 self.assertTrue(set([matches[0][1], matches[1][1]]) == shouldbe)
11181 self.pkg("uninstall duplink")
11183 self.pkg("uninstall dupdir")
11184 self.pkg("verify", exit=1)
11185 matches = re.findall(verify_type_re, self.output)
11186 self.assertTrue(len(matches) == 1)
11188 self.assertTrue(nfmt == fmt)
11195 self.pkg("uninstall '*'")
11196 self.pkg("-D broken-conflicting-action-handling=1 install "
11199 self.pkg("verify", exit=1)
11200 matches = re.findall(verify_type_re, self.output)
11201 self.assertTrue(len(matches) == 2)
11203 self.assertTrue(matches[1][0] == whatis)
11204 self.assertTrue(whatis == tmap[fmt])
11207 self.assertTrue(set([matches[0][1], matches[1][1]]) == shouldbe)
11209 self.pkg("uninstall dupdir")
11211 self.pkg("uninstall duplink")
11213 self.pkg("uninstall dupfilesp1")
11214 self.pkg("verify", exit=1)
11215 matches = re.findall(verify_type_re, self.output)
11216 self.assertTrue(len(matches) == 2)
11218 self.assertTrue(nfmt == fmt)
11223 self.pkg("uninstall '*'")
11224 self.pkg("-D broken-conflicting-action-handling=1 install "
11226 self.pkg("install dupmultitypes")
11227 self.pkg("verify")
11232 self.pkg("uninstall '*'")
11233 self.pkg("install dupmultitypes3@0")
11234 self.pkg("update")
11236 def test_conflicting_attrs_fs_install(self):
11241 self.image_create(self.rurl)
11244 self.pkg("install duppath-nonidenticallinks", exit=1)
11247 self.pkg("install duppath-nonidenticaldirs", exit=1)
11250 self.pkg("install duppath-almostidenticaldirs")
11254 self.pkg("install implicitdirs2 implicitdirs3")
11255 self.pkg("verify")
11257 self.pkg("uninstall '*'")
11261 self.pkg("-D broken-conflicting-action-handling=1 install "
11263 self.pkg("uninstall implicitdirs5")
11264 self.pkg("verify")
11266 self.pkg("uninstall '*'")
11270 self.pkg("-D broken-conflicting-action-handling=1 install "
11272 self.pkg("uninstall implicitdirs5 implicitdirs6")
11273 self.pkg("verify")
11275 self.pkg("uninstall '*'")
11280 self.pkg("install implicitdirs4 implicitdirs5 implicitdirs6",
11282 self.assertTrue("implicitdirs4" not in self.errout)
11286 self.pkg("install duppath-nonidenticallinksp1 "
11291 self.pkg("install duppath-nonidenticallinksp1")
11292 self.pkg("install duppath-nonidenticallinksp2@0", exit=1)
11294 self.pkg("uninstall '*'")
11297 self.pkg("-D broken-conflicting-action-handling=1 install "
11299 self.pkg("verify", exit=1)
11300 self.pkg("install duppath-nonidenticallinksp2")
11301 self.pkg("verify")
11308 self.pkg("uninstall '*'")
11309 self.pkg("-D broken-conflicting-action-handling=1 install "
11311 self.pkg("uninstall dupdirp5")
11312 self.pkg("verify", exit=1)
11314 self.pkg("-D broken-conflicting-action-handling=1 install "
11318 self.pkg("install dupdirp7")
11320 self.pkg("uninstall dupdirp7")
11324 self.pkg("uninstall dupdirp2")
11325 self.pkg("uninstall dupdirp5 dupdirp6")
11326 self.pkg("verify")
11330 self.pkg("-D broken-conflicting-action-handling=1 install "
11332 self.pkg("uninstall dupdirp2 dupdirp5 dupdirp6")
11333 self.pkg("verify")
11336 self.pkg("-D broken-conflicting-action-handling=1 install "
11338 self.pkg("update dupdirp2@2")
11341 self.pkg("uninstall dupdirp2 dupdirp5 dupdirp6")
11342 self.pkg("-D broken-conflicting-action-handling=1 install "
11344 self.pkg("update dupdirp2@2")
11345 self.pkg("verify")
11350 self.pkg("uninstall '*'")
11351 self.pkg("install dupdirp1 dupdirp8@1")
11352 self.pkg("update", exit=1)
11356 self.pkg("uninstall '*'")
11357 self.pkg("-D broken-conflicting-action-handling=1 install "
11359 link = os.readlink("{0}/dir/pathname".format(self.img_path()))
11361 self.pkg("uninstall duppath-nonidenticallinksp2")
11363 self.pkg("uninstall duppath-nonidenticallinksp1")
11364 self.pkg("verify")
11368 self.pkg("uninstall '*'")
11369 self.pkg("-D broken-conflicting-action-handling=1 install "
11371 link = os.readlink("{0}/dir/pathname".format(self.img_path()))
11373 self.pkg("uninstall duppath-nonidenticallinksp1")
11375 self.pkg("uninstall duppath-nonidenticallinksp2")
11376 self.pkg("verify")
11380 self.pkg("uninstall '*'")
11381 self.pkg("install dupdirp1 dupdirp2@1 dupdirp3 dupdirp4", exit=1)
11384 self.pkg("install {0}".format(pkgs), exit=1)
11390 self.pkg("-D broken-conflicting-action-handling=1 install "
11392 self.pkg("uninstall dupdirp11")
11396 self.pkg("-D broken-conflicting-action-handling=1 install "
11398 self.pkg("uninstall dupdirp12")
11400 def test_conflicting_attrs_fs_varcets(self):
11406 self.image_create(self.rurl)
11411 self.pkg("{0} dupfilesv1 dupfilesv2".format(install_cmd))
11412 self.dir_exists("dir/pathname")
11417 self.pkg("uninstall '*'")
11418 self.pkg("{0} dupfilesv1 dupfilesv3".format(install_cmd))
11420 self.dir_exists("dir/pathname", mode=0o777)
11422 self.dir_exists("dir/pathname", mode=0o755)
11427 self.pkg("uninstall '*'")
11428 self.pkg("{0} dupfilesv5 dupfilesv6".format(install_cmd))
11429 path = os.path.join(self.get_img_path(), "dir/pathname")
11434 self.assertTrue(False, "File dir/pathname does not exist")
11437 self.assertEqual(f.read().rstrip(), "tmp/file2")
11442 self.pkg("uninstall '*'")
11443 self.pkg("{0} dupfilesf1 dupfilesf2".format(install_cmd))
11444 self.dir_exists("dir/pathname")
11448 self.pkg("uninstall '*'")
11449 self.pkg("{0} dupfilesf1 dupfilesf3".format(install_cmd))
11450 self.dir_exists("dir/pathname")
11454 self.pkg("uninstall '*'")
11455 self.pkg("{0} dupfilesf2 dupfilesf3".format(install_cmd))
11456 self.dir_exists("dir/pathname")
11458 def test_conflicting_uninstall_publisher(self):
11463 self.conflicting_uninstall_publisher_helper("install")
11464 self.conflicting_uninstall_publisher_helper("exact-install")
11466 def conflicting_uninstall_publisher_helper(self, install_cmd):
11467 self.image_create(self.rurl)
11469 self.pkg("set-publisher -P ignored")
11474 self.pkg("-D broken-conflicting-action-handling=1 {0} "
11476 self.pkg("unset-publisher test")
11477 self.pkg("uninstall dupdirp2")
11478 self.pkg("verify")
11480 def test_change_varcet(self):
11487 self.image_create(self.rurl, variants={"variant.arch": "i386"})
11491 self.pkg("install dupfilesv4")
11492 self.pkg("change-variant arch=sparc", exit=1)
11496 self.pkg("change-facet devel=false")
11497 self.pkg("install dupfilesf4")
11498 self.pkg("change-facet devel=true", exit=1)
11500 def test_change_variant_removes_package(self):
11505 self.image_create(self.rurl, variants={"variant.foo": "one"})
11506 self.pkg("install tripledupfileb")
11507 self.pkg("-D broken-conflicting-action-handling=1 install "
11509 self.pkg("-D broken-conflicting-action-handling=1 install "
11511 self.pkg("change-variant -vvv variant.foo=two")
11512 self.pkg("change-variant -vvv variant.foo=one", exit=1)
11514 def test_multiple_users_install(self):
11521 self.image_create(self.rurl)
11523 self.pkg("install userdb")
11526 self.pkg("install dupuser", exit=1)
11530 self.pkg("install dupuserp1 dupuserp2@0", exit=1)
11534 self.pkg("install dupuserp1")
11535 self.pkg("install dupuserp2@0", exit=1)
11539 self.pkg("-D broken-conflicting-action-handling=1 install "
11541 self.pkg("verify", exit=1)
11542 self.pkg("install otheruser")
11543 self.file_contains("etc/passwd", "fozzie")
11544 self.file_contains("etc/shadow", "fozzie")
11545 self.pkg("uninstall otheruser")
11546 self.file_doesnt_contain("etc/passwd", "fozzie")
11547 self.file_doesnt_contain("etc/shadow", "fozzie")
11548 self.pkg("verify", exit=1)
11552 self.pkg("install dupuserp2 dupuserp3")
11553 self.file_contains("etc/passwd", "kermit")
11554 self.file_contains("etc/shadow", "kermit")
11555 self.pkg("verify", exit=1)
11559 self.pkg("uninstall dupuserp3")
11560 self.file_contains("etc/passwd", "kermit")
11561 self.file_contains("etc/shadow", "kermit")
11562 self.pkg("verify")
11566 self.pkg("uninstall dupuserp2")
11567 self.file_contains("etc/passwd", "kermit")
11568 self.file_contains("etc/shadow", "kermit")
11569 self.pkg("-D broken-conflicting-action-handling=1 install "
11571 self.pkg("update")
11572 self.pkg("verify")
11573 self.file_contains("etc/passwd", "kermit")
11574 self.file_contains("etc/shadow", "kermit")
11579 self.pkg("uninstall dupuserp2")
11580 self.file_contains("etc/passwd", "kermit")
11581 self.file_contains("etc/shadow", "kermit")
11582 self.pkg("-D broken-conflicting-action-handling=1 install "
11584 self.pkg("install dupuserp2 dupuserp4", exit=1)
11588 self.image_destroy()
11589 self.image_create(self.rurl)
11590 self.pkg("install userdb")
11591 self.pkg("-D broken-conflicting-action-handling=1 install "
11593 self.pkg("verify", exit=1)
11594 self.file_contains("etc/passwd", "kermit")
11595 self.file_contains("etc/shadow", "kermit")
11596 out1 = self.output
11597 self.pkg("uninstall dupuserp3")
11598 self.file_contains("etc/passwd", "kermit")
11599 self.file_contains("etc/shadow", "kermit")
11600 self.pkg("verify", exit=1)
11601 out2 = self.output
11603 self.assertTrue(out2 in out1)
11607 self.image_destroy()
11608 self.image_create(self.rurl)
11609 self.pkg("install userdb")
11610 self.pkg("-D broken-conflicting-action-handling=1 install "
11612 self.file_contains("etc/passwd", "kermit")
11613 self.file_contains("etc/shadow", "kermit")
11614 self.pkg("uninstall dupuserp3 dupuserp2")
11615 self.file_contains("etc/passwd", "kermit")
11616 self.file_contains("etc/shadow", "kermit")
11617 self.pkg("verify")
11622 self.pkg("-D broken-conflicting-action-handling=1 install "
11624 self.pkg("update othergroup")
11626 def test_multiple_drivers(self):
11630 self.multiple_drivers_helper("install")
11631 self.multiple_drivers_helper("exact-install")
11633 def multiple_drivers_helper(self, install_cmd):
11634 self.image_create(self.rurl)
11636 self.pkg("{0} driverdb".format(install_cmd))
11638 self.pkg("{0} dupdriver".format(install_cmd), exit=1)
11640 def test_multiple_depend(self):
11644 self.multiple_depend_helper("install")
11645 self.multiple_depend_helper("exact-install")
11647 def multiple_depend_helper(self, install_cmd):
11648 self.image_create(self.rurl)
11651 self.pkg("{0} dupdepend1".format(install_cmd))
11655 self.pkg("{0} dupdepend2".format(install_cmd))
11658 self.pkg("{0} dupdepend3".format(install_cmd))
11662 self.pkg("{0} dupdepend4".format(install_cmd))
11664 def test_varianted_types(self):
11668 self.varianted_types_helper("install")
11669 self.varianted_types_helper("exact-install")
11671 def varianted_types_helper(self, install_cmd):
11672 self.pkg_image_create(repourl=self.rurl,
11674 self.pkg("{0} vpath".format(install_cmd))
11761 def setUp(self):
11762 pkg5unittest.SingleDepotTestCase.setUp(self)
11763 self.pkgsend_bulk(self.rurl, self.pkgs)
11765 def test_01_install(self):
11766 self.image_create(self.rurl, prefix="")
11770 self.pkg("install -v group incorp A@1.0-0.1.1.0", exit=1)
11771 self.pkg("install -v group incorp")
11772 self.pkg("verify")
11773 self.pkg("list -H")
11778 output = self.reduceSpaces(self.output)
11779 expected = self.reduceSpaces(expected)
11780 self.assertEqualDiff(expected, output)
11781 self.pkg("uninstall -v group incorp A")
11782 self.pkg("list -H", exit=1)
11787 self.pkg("exact-install -v group incorp A@1.0-0.1.1.0", exit=1)
11788 self.pkg("exact-install -v group incorp")
11789 self.pkg("verify")
11790 self.pkg("list -H")
11791 output = self.reduceSpaces(self.output)
11792 self.assertEqualDiff(expected, output)
11795 self.pkg("exact-install -v idr")
11796 self.pkg("list -H")
11799 output = self.reduceSpaces(self.output)
11800 expected = self.reduceSpaces(expected)
11801 self.assertEqualDiff(expected, output)
11803 self.pkg("install -v group")
11804 self.pkg("verify")
11805 self.pkg("list -H")
11810 output = self.reduceSpaces(self.output)
11811 expected = self.reduceSpaces(expected)
11812 self.assertEqualDiff(expected, output)
11814 self.pkg("uninstall -v group idr A")
11815 self.pkg("list -H", exit=1)
11817 self.pkg("install -v idr")
11818 self.pkg("list -H")
11821 output = self.reduceSpaces(self.output)
11822 expected = self.reduceSpaces(expected)
11823 self.assertEqualDiff(expected, output)
11825 self.pkg("install -v group")
11826 self.pkg("verify")
11827 self.pkg("list -H")
11832 output = self.reduceSpaces(self.output)
11833 expected = self.reduceSpaces(expected)
11834 self.assertEqualDiff(expected, output)
11835 self.pkg("uninstall '*'")
11836 self.pkg("list -H", exit=1)
11838 self.pkgsend_bulk(self.rurl, self.pkgs2)
11839 self.pkg("install -v group incorp")
11840 self.pkg("verify")
11841 self.pkg("list -H")
11847 output = self.reduceSpaces(self.output)
11848 expected = self.reduceSpaces(expected)
11849 self.assertEqualDiff(expected, output)
11851 self.pkgsend_bulk(self.rurl, self.pkgs3)
11853 self.pkg("update")
11854 self.pkg("verify")
11855 self.pkg("list -H")
11861 output = self.reduceSpaces(self.output)
11862 expected = self.reduceSpaces(expected)
11863 self.assertEqualDiff(expected, output)
11864 self.pkg("uninstall '*'")
11866 self.pkgsend_bulk(self.rurl, self.pkgs4)
11868 self.pkg("install C1")
11869 self.pkg("verify")
11870 self.pkg("list -H")
11875 output = self.reduceSpaces(self.output)
11876 expected = self.reduceSpaces(expected)
11877 self.assertEqualDiff(expected, output)
11878 self.pkg("uninstall '*'")
11880 self.pkg("install C1 C2")
11881 self.pkg("verify")
11882 self.pkg("list -H")
11887 output = self.reduceSpaces(self.output)
11888 expected = self.reduceSpaces(expected)
11889 self.assertEqualDiff(expected, output)
11892 self.pkgsend_bulk(self.rurl, self.pkgs5)
11893 self.pkg("install -v Hiera1@1.0", exit=1)
11895 def test_02_updateReject(self):
11896 self.image_create(self.rurl, prefix="")
11897 self.pkgsend_bulk(self.rurl, self.pkgs2)
11898 self.pkgsend_bulk(self.rurl, self.pkgs3)
11899 self.pkg("install -v --reject idr group incorp")
11900 self.pkg("verify")
11901 self.pkg("list -H")
11906 output = self.reduceSpaces(self.output)
11907 expected = self.reduceSpaces(expected)
11908 self.assertEqualDiff(expected, output)
11910 self.pkg("exact-install -v --reject idr group")
11911 self.pkg("verify")
11912 self.pkg("list -H")
11916 output = self.reduceSpaces(self.output)
11917 expected = self.reduceSpaces(expected)
11918 self.assertEqualDiff(expected, output)
11921 self.pkg("update -v --reject group A@1.0-0.1.1.0", exit=1)
11923 self.pkg("install idr@1.0-0.1.1.0")
11925 self.pkg("update -v --reject group A@1.0-0.1.1.0")
11926 self.pkg("verify")
11927 self.pkg("list -H")
11931 output = self.reduceSpaces(self.output)
11932 expected = self.reduceSpaces(expected)
11933 self.assertEqualDiff(expected, output)
11936 self.pkg("update -v --reject idr", exit=1)
11937 self.pkg("update")
11938 self.pkg("verify")
11939 self.pkg("list -H")
11943 output = self.reduceSpaces(self.output)
11944 expected = self.reduceSpaces(expected)
11945 self.assertEqualDiff(expected, output)
11999 def setUp(self):
12000 pkg5unittest.ManyDepotTestCase.setUp(self, ["solaris", "nightly"])
12001 self.rurl = self.dcs[1].get_repo_url()
12002 self.rurl2 = self.dcs[2].get_repo_url()
12004 self.__pkgs = self.pkgsend_bulk(self.rurl, self.pkgs)
12005 self.__nightly_pkgs = self.pkgsend_bulk(self.rurl2, self.nightly_pkgs)
12007 def test_downgrade_update(self):
12013 self.image_create(self.rurl, prefix="")
12014 self.pkg("install --parsable=0 entire terminfo-core")
12015 self.assertEqualParsable(self.output,
12016 add_packages=[self.__pkgs[1], self.__pkgs[2],
12017 self.__pkgs[0], self.__pkgs[3]]
12020 self.pkg("set-publisher --non-sticky solaris")
12021 self.pkg("change-facet "
12023 self.pkg("set-publisher -P -p {0}".format(self.rurl2))
12024 self.pkg("publisher")
12025 self.pkg("facet")
12026 self.pkg("list -afv")
12031 self.pkg("update --parsable=0 -n osnet-incorporation")
12032 self.assertEqualParsable(self.output,
12034 [self.__pkgs[2], self.__nightly_pkgs[0]],
12035 [self.__pkgs[3], self.__nightly_pkgs[2]]
12042 self.pkg("update --parsable=0 -n")
12043 self.assertEqualParsable(self.output,
12045 [self.__pkgs[1], self.__nightly_pkgs[1]],
12046 [self.__pkgs[2], self.__nightly_pkgs[0]],
12047 [self.__pkgs[3], self.__nightly_pkgs[2]]
12136 def setUp(self):
12137 pkg5unittest.ManyDepotTestCase.setUp(self, ["test1", "test2"])
12138 self.rurl = self.dcs[1].get_repo_url()
12139 self.rurl2 = self.dcs[2].get_repo_url()
12141 self.pkgsend_bulk(self.rurl, self.pkgs)
12142 self.pkgsend_bulk(self.rurl2, self.pub2_pkgs)
12144 def test_incorp_downgrade(self):
12149 self.image_create(self.rurl, prefix="")
12150 self.pkg("install A incorp@1")
12151 self.pkg("list A@2.0 incorp@1.0")
12154 self.pkg("update incorp@2")
12155 self.pkg("list A@1.0 incorp@2.0")
12158 self.pkg("update incorp@1")
12159 self.pkg("update -v")
12160 self.pkg("list A@1.0 incorp@2.0")
12163 self.pkg("uninstall incorp")
12164 self.pkg("update A@2")
12165 self.pkg("install parent_incorp@1 child_incorp@2")
12166 self.pkg("list A@2.0 child_incorp@2 parent_incorp@1")
12169 self.pkg("update -v parent_incorp@2")
12170 self.pkg("list A@1 child_incorp@1 parent_incorp@2")
12173 self.pkg("uninstall parent_incorp")
12174 self.pkg("update child_incorp@2")
12175 self.pkg("list A@2 child_incorp@2")
12178 self.pkg("update -v child_incorp@1")
12179 self.pkg("list A@1 child_incorp@1")
12182 def test_incorp_downgrade_installhold(self):
12187 self.image_create(self.rurl, prefix="")
12188 self.pkg("install ihold_incorp@2 B")
12189 self.pkg("list ihold_incorp@2 B@2")
12191 self.pkg("update -v ihold_incorp@1", exit=1)
12194 self.pkg("install --reject B C@2")
12195 self.pkg("list ihold_incorp@2 C@2")
12198 self.pkg("update -v ihold_incorp@1")
12199 self.pkg("list ihold_incorp@1 C@1")
12201 def test_incorp_downgrade_pubswitch(self):
12206 self.image_create(self.rurl, prefix="")
12207 self.pkg("set-publisher --non-sticky test1")
12208 self.pkg("set-publisher --non-sticky -p {0}".format(self.rurl2))
12209 self.pkg("list -af")
12210 self.pkg("install p_incorp@1 D@2")
12211 self.pkg("list p_incorp@1 D@2")
12213 self.pkg("update p_incorp@2", exit=1)