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())
Ejemplo n.º 2
0
 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)