Exemplo n.º 1
0
    def preview(self):
        toplevel = Tkinter.Toplevel()
        toplevel.title('Preview Changes')

        def description(change):
            return change.get_description()
        frame = Tkinter.Frame(toplevel)
        description_list = DescriptionList(
            frame, 'Changes', description, indexwidth=30,
            callback=uihelpers.highlight_diffs)
        for change in self.changes.changes:
            description_list.add_entry(change)

        def ok(event=None):
            toplevel.destroy()
            self.commit()
        def cancel(event=None):
            toplevel.destroy()
        ok_button = Tkinter.Button(toplevel, text='Perform',
                                   command=ok, width=15)
        cancel_button = Tkinter.Button(toplevel, text='Cancel',
                                       command=cancel, width=15)
        frame.grid(row=0, columnspan=2)
        ok_button.grid(row=1, column=0)
        cancel_button.grid(row=1, column=1)
        #toplevel.bind('<Return>', lambda event: ok())
        toplevel.bind('<Escape>', lambda event: cancel())
        toplevel.bind('<Control-g>', lambda event: cancel())
Exemplo n.º 2
0
    def __init__(self, project, resource):
        self.project = project
        self.resource = resource
        self.running_thread = threading.Thread(target=self.run)
        self.running_thread.setDaemon(True)
        self.process = None
        self.is_stopped = False
        self.toplevel = Tkinter.Toplevel()
        self.toplevel.title('Running Unit Tests in <%s>' % resource.path)
        label = Tkinter.Label(self.toplevel,
                              text='Running Unit Tests in <%s>' % resource.path)
        label.grid(row=0)
        progress_frame = Tkinter.Frame(self.toplevel)
        self.progress = ProgressBar(progress_frame)
        progress_frame.grid(row=1)

        self.result = GUITestResult(self)
        self.failures = {}
        def description(test_name):
            return self.failures[test_name]
        self.description_list = DescriptionList(
            self.toplevel, 'Failures', description, indexwidth=30, height=10)
        self.ok_button = Tkinter.Button(self.toplevel, text='Stop',
                                        command=self._ok)
        self.ok_button.grid(row=4)
        self.toplevel.bind('<Control-g>', self._ok)
        self.toplevel.bind('<Escape>', self._ok)
        self.toplevel.protocol('WM_DELETE_WINDOW', self._ok)
Exemplo n.º 3
0
class GUITestRunner(object):

    def __init__(self, project, resource):
        self.project = project
        self.resource = resource
        self.running_thread = threading.Thread(target=self.run)
        self.running_thread.setDaemon(True)
        self.process = None
        self.is_stopped = False
        self.toplevel = Tkinter.Toplevel()
        self.toplevel.title('Running Unit Tests in <%s>' % resource.path)
        label = Tkinter.Label(self.toplevel,
                              text='Running Unit Tests in <%s>' % resource.path)
        label.grid(row=0)
        progress_frame = Tkinter.Frame(self.toplevel)
        self.progress = ProgressBar(progress_frame)
        progress_frame.grid(row=1)

        self.result = GUITestResult(self)
        self.failures = {}
        def description(test_name):
            return self.failures[test_name]
        self.description_list = DescriptionList(
            self.toplevel, 'Failures', description, indexwidth=30, height=10)
        self.ok_button = Tkinter.Button(self.toplevel, text='Stop',
                                        command=self._ok)
        self.ok_button.grid(row=4)
        self.toplevel.bind('<Control-g>', self._ok)
        self.toplevel.bind('<Escape>', self._ok)
        self.toplevel.protocol('WM_DELETE_WINDOW', self._ok)

    def add_failure(self, test_name, error):
        self.failures[test_name] = error
        self.description_list.add_entry(test_name)

    def _ok(self, event=None):
        if self.result._is_finished():
            self.toplevel.destroy()
        elif self.process is not None:
            self.is_stopped = True
            self.process.kill_process()
            self.toplevel.destroy()

    def start(self):
        self.running_thread.start()

    def run(self):
        rpc_port = None
        for i in range(8000, 8100):
            try:
                server = SimpleXMLRPCServer(('localhost', i), logRequests=False)
                rpc_port = i
                break
            except socket.error, e:
                pass
        try:
            server.register_instance(self.result)
            run_test_py = rope.base.project.get_no_project().get_resource(
                inspect.getsourcefile(ropeide.runtest))
            self.process = self.project.get_pycore().run_module(
                run_test_py, args=[str(rpc_port), self.resource.real_path])
            while not self.result._is_finished() and not self.is_stopped:
                server.handle_request()
        finally:
            server.server_close()
            self.ok_button['text'] = 'OK'