예제 #1
0
    def test_download_http_nocancel(self):
        '''download_url(), HTTP, no cancelling'''

        self.stop_capture()

        ui = sandbox.TestUI()

        # temporary file
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://localhost:8427/stuff')
        httpd.stop()
        self.assertEqual(open(fname).read(), self.big_file_contents)
        os.unlink(fname)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, [
            'http://localhost:8427/stuff',
            len(self.big_file_contents),
            len(self.big_file_contents)
        ])

        # specified file name
        dest = os.path.join(OSLib.inst.workdir, 'destfile')
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://localhost:8427/stuff', dest)
        httpd.stop()
        self.assertEqual(fname, dest)
        self.assertEqual(open(dest).read(), self.big_file_contents)
        os.unlink(dest)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, [
            'http://localhost:8427/stuff',
            len(self.big_file_contents),
            len(self.big_file_contents)
        ])

        # nonexisting file
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://localhost:8427/nonexisting')
        httpd.stop()
        self.assertEqual(fname, None)

        # one error message about download failure
        self.assert_(ui.pop_error())
        self.assertRaises(IndexError, ui.pop_error)

        # nonexisting server
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://i.do.not.exist:8080/nonexisting')
        httpd.stop()
        self.assertEqual(fname, None)

        # one error message about download failure
        self.assert_(ui.pop_error())
        self.assertRaises(IndexError, ui.pop_error)
예제 #2
0
    def test_download_http_nocancel(self):
        '''download_url(), HTTP, no cancelling'''

        self.stop_capture()

        ui = sandbox.TestUI()

        # temporary file
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://localhost:8427/stuff')
        httpd.stop()
        self.assertEqual(open(fname).read(), self.big_file_contents)
        os.unlink(fname)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, ['http://localhost:8427/stuff',
            len(self.big_file_contents), len(self.big_file_contents)])

        # specified file name
        dest = os.path.join(OSLib.inst.workdir, 'destfile')
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://localhost:8427/stuff', dest)
        httpd.stop()
        self.assertEqual(fname, dest)
        self.assertEqual(open(dest).read(), self.big_file_contents)
        os.unlink(dest)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, ['http://localhost:8427/stuff',
            len(self.big_file_contents), len(self.big_file_contents)])

        # nonexisting file
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://localhost:8427/nonexisting')
        httpd.stop()
        self.assertEqual(fname, None)

        # one error message about download failure
        self.assert_(ui.pop_error())
        self.assertRaises(IndexError, ui.pop_error)

        # nonexisting server
        httpd.start(8427, OSLib.inst.workdir)
        (fname, h) = ui.download_url('http://i.do.not.exist:8080/nonexisting')
        httpd.stop()
        self.assertEqual(fname, None)

        # one error message about download failure
        self.assert_(ui.pop_error())
        self.assertRaises(IndexError, ui.pop_error)
예제 #3
0
    def test_download_local_nocancel(self):
        '''download_url(), local file://, no cancelling'''

        ui = sandbox.TestUI()

        # temporary file
        (fname, h) = ui.download_url('file://' + self.big_file)
        self.assertEqual(open(fname).read(), self.big_file_contents)
        os.unlink(fname)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, [
            'file://' + self.big_file,
            len(self.big_file_contents),
            len(self.big_file_contents)
        ])

        # specified file name
        dest = os.path.join(OSLib.inst.workdir, 'destfile')
        (fname, h) = ui.download_url('file://' + self.big_file, dest)
        self.assertEqual(fname, dest)
        self.assertEqual(open(dest).read(), self.big_file_contents)
        os.unlink(dest)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, [
            'file://' + self.big_file,
            len(self.big_file_contents),
            len(self.big_file_contents)
        ])

        # nonexisting file
        (fname, h) = ui.download_url('file://junk/nonexisting')
        self.assertEqual(fname, None)

        # one error message about download failure
        self.assert_(ui.pop_error())
        self.assertRaises(IndexError, ui.pop_error)
예제 #4
0
    def test_download_local_nocancel(self):
        '''download_url(), local file://, no cancelling'''

        ui = sandbox.TestUI()

        # temporary file
        (fname, h) = ui.download_url('file://' + self.big_file)
        self.assertEqual(open(fname).read(), self.big_file_contents)
        os.unlink(fname)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, ['file://' + self.big_file,
            len(self.big_file_contents), len(self.big_file_contents)])

        # specified file name
        dest = os.path.join(OSLib.inst.workdir, 'destfile')
        (fname, h) = ui.download_url('file://' + self.big_file, dest)
        self.assertEqual(fname, dest)
        self.assertEqual(open(dest).read(), self.big_file_contents)
        os.unlink(dest)

        self.assertRaises(IndexError, ui.pop_error)

        # we got progress reports
        self.assertEqual(ui.cur_progress, ['file://' + self.big_file,
            len(self.big_file_contents), len(self.big_file_contents)])

        # nonexisting file
        (fname, h) = ui.download_url('file://junk/nonexisting')
        self.assertEqual(fname, None)

        # one error message about download failure
        self.assert_(ui.pop_error())
        self.assertRaises(IndexError, ui.pop_error)
예제 #5
0
    def test_set_handler_enable_error(self):
        '''set_handler_enable() on errors'''

        open(os.path.join(OSLib.inst.handler_dir, 'h.py'),
             'w').write('import jockey.handlers' + sandbox.h_nochangemod)

        sys.argv = ['ui-test']
        ui = sandbox.TestUI()
        self.stop_capture()

        for h_id in ui.backend().available():
            self.assert_(
                jockey.ui.bool(ui.backend().handler_info(h_id)['enabled']))
            if 'can_change' in ui.backend().handler_info(h_id):
                no_change_h = h_id
            else:
                change_h = h_id
        assert no_change_h
        assert change_h

        # change an unchangeable handler
        # note: don't set a confirmation response, it shouldn't ask here
        self.assertEqual(ui.set_handler_enable(no_change_h, 'enable', True),
                         False)
        self.assertEqual(ui.pop_error()[1], 'I must live')
        self.assertRaises(IndexError, ui.pop_error)
        self.assertEqual(ui.set_handler_enable(no_change_h, 'disable', True),
                         False)
        self.assertEqual(ui.pop_error()[1], 'I must live')
        self.assertRaises(IndexError, ui.pop_error)
        self.assertEqual(ui.set_handler_enable(no_change_h, 'toggle', True),
                         False)
        self.assertEqual(ui.pop_error()[1], 'I must live')
        self.assertRaises(IndexError, ui.pop_error)

        # invalid operation
        self.assertRaises(ValueError, ui.set_handler_enable, no_change_h,
                          'foo', True)

        # package install failure
        ui.backend().handlers['kmod:mint'].package = 'pretzel'
        self.assertEqual(
            jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            False)
        OSLib.inst.pending_install_remove_exception = 'OMGbroken'
        self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable', False),
                         False)
        self.assertEqual(
            jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            False)
        # one error message about install failure
        (etitle, etext) = ui.pop_error()
        self.assert_('OMGbroken' in etext, '%s: %s' % (etitle, etext))
        self.assertRaises(IndexError, ui.pop_error)

        # install it now
        self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable', False),
                         True)
        self.assertEqual(
            jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            True)

        # package removal failure
        OSLib.inst.pending_install_remove_exception = 'OMGZombie'
        self.assertEqual(ui.set_handler_enable('kmod:mint', 'disable', False),
                         False)
        self.assertEqual(
            jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            True)
        # one error message about removal failure
        (etitle, etext) = ui.pop_error()
        self.assert_('OMGZombie' in etext, '%s: %s' % (etitle, etext))
        self.assertRaises(IndexError, ui.pop_error)
예제 #6
0
    def test_set_handler_enable_error(self):
        '''set_handler_enable() on errors'''

        open (os.path.join(OSLib.inst.handler_dir, 'h.py'), 'w').write(
            'import jockey.handlers' + sandbox.h_nochangemod)

        sys.argv = ['ui-test']
        ui = sandbox.TestUI()
        self.stop_capture()

        for h_id in ui.backend().available():
            self.assert_(jockey.ui.bool(ui.backend().handler_info(h_id)['enabled']))
            if 'can_change' in ui.backend().handler_info(h_id):
                no_change_h = h_id
            else:
                change_h = h_id
        assert no_change_h
        assert change_h

        # change an unchangeable handler
        # note: don't set a confirmation response, it shouldn't ask here
        self.assertEqual(ui.set_handler_enable(no_change_h, 'enable', True), False)
        self.assertEqual(ui.pop_error()[1], 'I must live')
        self.assertRaises(IndexError, ui.pop_error)
        self.assertEqual(ui.set_handler_enable(no_change_h, 'disable', True), False)
        self.assertEqual(ui.pop_error()[1], 'I must live')
        self.assertRaises(IndexError, ui.pop_error)
        self.assertEqual(ui.set_handler_enable(no_change_h, 'toggle', True), False)
        self.assertEqual(ui.pop_error()[1], 'I must live')
        self.assertRaises(IndexError, ui.pop_error)

        # invalid operation
        self.assertRaises(ValueError, ui.set_handler_enable, no_change_h, 'foo', True)

        # package install failure
        ui.backend().handlers['kmod:mint'].package = 'pretzel'
        self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            False)
        OSLib.inst.pending_install_remove_exception = 'OMGbroken'
        self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable',
            False), False)
        self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            False)
        # one error message about install failure
        (etitle, etext) = ui.pop_error()
        self.assert_('OMGbroken' in etext, '%s: %s' % (etitle, etext))
        self.assertRaises(IndexError, ui.pop_error)

        # install it now
        self.assertEqual(ui.set_handler_enable('kmod:mint', 'enable',
            False), True)
        self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            True)

        # package removal failure
        OSLib.inst.pending_install_remove_exception = 'OMGZombie'
        self.assertEqual(ui.set_handler_enable('kmod:mint', 'disable',
            False), False)
        self.assertEqual(jockey.ui.bool(ui.backend().handler_info('kmod:mint')['enabled']),
            True)
        # one error message about removal failure
        (etitle, etext) = ui.pop_error()
        self.assert_('OMGZombie' in etext, '%s: %s' % (etitle, etext))
        self.assertRaises(IndexError, ui.pop_error)