def test_call_sh_files(self): """Test calling preup.sh / postup.sh scripts.""" def structs(): """Mockups for called scripts.""" server = MockUCSHttpServer('server') struct_r = U.UCSRepoPool(major=MAJOR, minor=MINOR, part=PART, patchlevel=PATCH, arch=ARCH) preup_r = struct_r.path('preup.sh') postup_r = struct_r.path('postup.sh') struct_c = U.UCSRepoPool(major=MAJOR, minor=MINOR, part='%s/component' % (PART, ), patch='c', arch=ARCH) preup_c = struct_c.path('preup.sh') postup_c = struct_c.path('postup.sh') yield (server, struct_r, 'preup', preup_r, 'r_pre') yield (server, struct_r, 'postup', postup_r, 'r_post') yield (server, struct_c, 'preup', preup_c, 'c_pre') yield (server, struct_c, 'postup', postup_c, 'c_post') tmp = NamedTemporaryFile() gen = self.u.call_sh_files(structs(), tmp.name, 'arg') # The Updater only yields the intent, the content is only available after the next step self.assertEqual(('update', 'pre'), gen.next()) # download self.assertEqual([], MockPopen.mock_get()) self.assertEqual(('preup', 'pre'), gen.next()) # pre self.assertEqual([], MockPopen.mock_get()) self.assertEqual(('preup', 'main'), gen.next()) self.assertEqual(('pre', 'arg', 'c_pre'), MockPopen.mock_get()[0][1:]) self.assertEqual(('preup', 'post'), gen.next()) self.assertEqual(('arg', 'r_pre'), MockPopen.mock_get()[0][1:]) self.assertEqual(('update', 'main'), gen.next()) # update self.assertEqual(('post', 'arg', 'c_pre'), MockPopen.mock_get()[0][1:]) self.assertEqual(('postup', 'pre'), gen.next()) # post self.assertEqual([], MockPopen.mock_get()) self.assertEqual(('postup', 'main'), gen.next()) self.assertEqual(('pre', 'arg', 'c_post'), MockPopen.mock_get()[0][1:]) self.assertEqual(('postup', 'post'), gen.next()) self.assertEqual(('arg', 'r_post'), MockPopen.mock_get()[0][1:]) self.assertEqual(('update', 'post'), gen.next()) self.assertEqual(('post', 'arg', 'c_post'), MockPopen.mock_get()[0][1:]) self.assertRaises(StopIteration, gen.next) # done self.assertEqual([], MockPopen.mock_get())
def test_run_dist_upgrade(self): """Test running dist-upgrade.""" _rc, _stdout, _stderr = self.u.run_dist_upgrade() cmds = MockPopen.mock_get() cmd = cmds[0] if isinstance(cmd, (list, tuple)): cmd = ' '.join(cmd) self.assertTrue('DEBIAN_FRONTEND=noninteractive' in cmd) self.assertTrue(' dist-upgrade' in cmd)
def test_mirror_repositories(self): """Test mirror structure and apt-mirror called.""" self.mock_file.mock_whitelist.add('/var/log/univention') self.m.mirror_repositories() self.assertTrue( os.path.isdir(os.path.join(self.base_dir, 'repo', 'var'))) self.assertTrue( os.path.isdir(os.path.join(self.base_dir, 'repo', 'skel'))) self.assertTrue( os.path.isdir(os.path.join(self.base_dir, 'repo', 'mirror'))) self.assertTrue( os.path.islink( os.path.join(self.base_dir, 'repo', 'mirror', 'univention-repository'))) cmds = MockPopen.mock_get() cmd = cmds[0] if isinstance(cmd, (list, tuple)): cmd = cmd[0] self.assertTrue('apt-mirror' in cmd)