Exemplo n.º 1
0
    def test_previewCheck23(self):
        """If the document is modified externally, then build on save will be
        automatically enabled. Calling scheduledocumentprocessing will not
        trigger a rebuild.
        """
        self._doBasicSphinxConfig()
        core.config()['Sphinx']['BuildOnSave'] = False
        core.config().flush()
        self.codeText = """****
head
****

"""
        self.masterText = """.. toctree::

   code.rst"""
        codeDoc = self.createFile('code.rst', self.testText)
        masterDoc = self.createFile('index.rst', self.testText)
        self._assertHtmlReady(lambda: core.workspace().setCurrentDocument(codeDoc), timeout=10000)
        # Modify this file externally.
        with open("code.rst", 'a') as f:
            f.write(".. mytag::")
        self._assertHtmlReady(lambda: core.workspace().setCurrentDocument(masterDoc), timeout=10000)
        core.workspace().setCurrentDocument(codeDoc)

        # Modify this file internally, then wait for the typing timer to expire.
        qp = core.workspace().currentDocument().qutepart
        self.assertEmits(lambda: qp.appendPlainText('xxx'),
                         self._dock()._typingTimer.timeout, timeoutMs=1000)
        # The typing timer invokes _scheduleDocumentProcessing. Make sure
        # it completes by waiting until all events are processed.
        base._processPendingEvents()
        # Make sure the file wasn't saved.
        self.assertTrue(qp.document().isModified())
Exemplo n.º 2
0
    def test_previewCheck23(self):
        """If the document is modified externally, then build on save will be
        automatically enabled. Calling scheduledocumentprocessing will not
        trigger a rebuild.
        """
        self._doBasicSphinxConfig()
        core.config()['Sphinx']['BuildOnSave'] = False
        core.config().flush()
        self.codeText = """****
head
****

"""
        self.masterText = """.. toctree::

   code.rst"""
        codeDoc = self.createFile('code.rst', self.testText)
        masterDoc = self.createFile('index.rst', self.testText)
        self._assertHtmlReady(lambda: core.workspace().setCurrentDocument(codeDoc), timeout=10000)
        # Modify this file externally.
        with open("code.rst", 'a') as f:
            f.write(".. mytag::")
        self._assertHtmlReady(lambda: core.workspace().setCurrentDocument(masterDoc), timeout=10000)
        core.workspace().setCurrentDocument(codeDoc)

        # Modify this file internally, then wait for the typing timer to expire.
        qp = core.workspace().currentDocument().qutepart
        self.assertEmits(lambda: qp.appendPlainText('xxx'),
                         self._dock()._typingTimer.timeout, timeoutMs=1000)
        # The typing timer invokes _scheduleDocumentProcessing. Make sure
        # it completes by waiting until all events are processed.
        base._processPendingEvents()
        # Make sure the file wasn't saved.
        self.assertTrue(qp.document().isModified())
Exemplo n.º 3
0
 def test_logWindowSplitter3a(self):
     """Feature 1,2,3. A combination of the above test cases.
     """
     document1 = self.createFile('file1.rst', '.. file1::')
     document2 = self.createFile('file2.rst', '')
     document3 = self.createFile('file3.rst', '.. file3::')
     self._assertHtmlReady(lambda: None)
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document1))
     base._processPendingEvents()
     # Change splitter setting of document 1.
     newSplitterSize = [125, 124]
     self._widget().splitter.setSizes(newSplitterSize)
     self._widget().splitter.splitterMoved.emit(newSplitterSize[0], 1)
     # Assert log window and preview window are visible and are of almost
     # equal size.
     self.assertNotIn(0, self._widget().splitter.sizes())
     self.assertAlmostEqual(self._widget().splitter.sizes()[0],
                            self._widget().splitter.sizes()[1],
                            delta=10)
     # Switch to an error-free document, assert log window hidden.
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document2))
     self.assertFalse(self._widget().splitter.sizes()[1])
     # Switch to file3 which will cause build error, check splitter size.
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document3))
     self.assertNotIn(0, self._widget().splitter.sizes())
     self.assertAlmostEqual(self._widget().splitter.sizes()[0],
                            self._widget().splitter.sizes()[1],
                            delta=10)
Exemplo n.º 4
0
    def test_tab_completes(self):
        self.qpart.text = 'aaaaa\naaaaaXXXXX\n'

        base._processPendingEvents(self.app)

        self.qpart.cursorPosition = (2, 0)
        QTest.keyClicks(self.qpart, "aaa")
        QTest.keyClick(self.qpart, Qt.Key_Tab)
        self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaa')
        QTest.keyClick(self.qpart, Qt.Key_Tab)
        self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaaXXXXX')
Exemplo n.º 5
0
    def test_down_selects_second(self):
        self.qpart.text = 'aaaa\nbbbb\ncccX\ndddd\ncccY'

        base._processPendingEvents(self.app)

        QTest.keyClicks(self.qpart, "ccc")

        QTest.keyClick(self.qpart, Qt.Key_Down)
        QTest.keyClick(self.qpart, Qt.Key_Down)
        QTest.keyClick(self.qpart, Qt.Key_Enter)
        QTest.keyClick(self.qpart, Qt.Key_Enter)
        self.assertEqual(self.qpart.text, 'cccY\naaaa\nbbbb\ncccX\ndddd\ncccY')
Exemplo n.º 6
0
    def test_manual(self):
        self._window.show()

        self.qpart.text = 'aaaaa\naaaaaXXXXX\n'

        base._processPendingEvents(self.app)

        self.qpart.cursorPosition = (2, 0)
        QTest.keyClicks(self.qpart, "a")

        QTest.keyPress(self.qpart, Qt.Key_Space, Qt.ControlModifier, 100)

        QTest.keyClicks(self.qpart, "a")
        QTest.keyClick(self.qpart, Qt.Key_Tab)
        self.assertEqual(self.qpart.text, 'aaaaa\naaaaaXXXXX\naaaaa')
Exemplo n.º 7
0
    def test_too_long_list(self):
        self._window.show()

        self.qpart.text = '\n'.join(['asdf' + str(i) \
                                        for i in range(100)]) + '\n'
        base._processPendingEvents(self.app)
        self.qpart.cursorPosition = (100, 0)
        QTest.keyClicks(self.qpart, "asdf")
        self.assertIsNotNone(self.qpart._completer._widget)

        self.qpart.text = '\n'.join(['asdf' + str(i) \
                                        for i in range(1000)]) + '\n'
        base._processPendingEvents(self.app)
        self.qpart.cursorPosition = (1000, 0)
        QTest.keyClicks(self.qpart, "asdf")
        self.assertIsNone(self.qpart._completer._widget)

        QTest.keyPress(self.qpart, Qt.Key_Space, Qt.ControlModifier, 100)
        self.assertIsNotNone(self.qpart._completer._widget)
Exemplo n.º 8
0
 def test_logWindowSplitter3(self):
     """Feature 3. Error free document will not affect other documents'
     splitter size.
     """
     document1 = self.createFile('file1.rst', '.. file1::')
     document2 = self.createFile('file2.rst', '')
     document3 = self.createFile('file3.rst', '.. file3::')
     self._assertHtmlReady(lambda: None)
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document1))
     base._processPendingEvents()
     defaultSplitterSize = self._widget().splitter.sizes()
     self.assertTrue(defaultSplitterSize[1])
     # Switch to document 2. Log window is hidden now.
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document2))
     self.assertFalse(self._widget().splitter.sizes()[1])
     # Switch to document 3. Log window should be restore to original size.
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document3))
     self.assertTrue(self._widget().splitter.sizes()[0])
     self.assertEqual(self._widget().splitter.sizes(), defaultSplitterSize)
Exemplo n.º 9
0
 def test_logWindowSplitter4(self):
     """User actively hide log window, Enki should be able to remember this.
     """
     document1 = self.createFile('file1.rst', '.. file1::')
     document2 = self.createFile('file2.rst', '')
     document3 = self.createFile('file3.rst', '.. file3::')
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document1))
     base._processPendingEvents()
     # User manually change error state splitter size such that log window
     # is hidden.
     self._widget().splitter.setSizes([1, 0])
     self._widget().splitter.splitterMoved.emit(1, 1)
     # Switch to document 2. Log window is hidden now.
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document2))
     base._processPendingEvents()
     self.assertFalse(self._widget().splitter.sizes()[1])
     # Switch to document 3. Log window should keep hidden.
     self._assertHtmlReady(
         lambda: core.workspace().setCurrentDocument(document3))
     base._processPendingEvents()
     self.assertFalse(self._widget().splitter.sizes()[1])
Exemplo n.º 10
0
 def setUp(self):
     super(Completion, self).setUp()
     self.qpart.text = 'completableWord\n'
     self.qpart.cursorPosition = (1, 0)
     base._processPendingEvents(self.app)
Exemplo n.º 11
0
 def _wait_highlighting_finished(self):
     base._processPendingEvents(self.app)
Exemplo n.º 12
0
 def setUp(self):
     super(Completion, self).setUp()
     self.qpart.text = 'completableWord\n'
     self.qpart.cursorPosition = (1, 0)
     base._processPendingEvents(self.app)
Exemplo n.º 13
0
 def _wait_highlighting_finished(self):
     base._processPendingEvents(self.app)