Example #1
0
def new_page_from_text(text, format='wiki'):
    from zim.notebook import Path, Page
    from zim.newfs.mock import MockFile, MockFolder
    file = MockFile('/mock/test/page.txt')
    folder = MockFile('/mock/test/page/')
    page = Page(Path('Test'), False, file, folder)
    page.set_parsetree(new_parsetree_from_text(text, format))
    return page
Example #2
0
def new_page():
	from zim.notebook import Path, Page
	from zim.newfs.mock import MockFile, MockFolder
	file = MockFile('/mock/test/page.txt')
	folder = MockFile('/mock/test/page/')
	page = Page(Path('roundtrip'), False, file, folder)
	page.set_parsetree(new_parsetree())
	return page
Example #3
0
    def testPageSource(self):
        from zim.newfs.mock import MockFile, MockFolder

        file = MockFile('/mock/test/page.txt')
        folder = MockFile('/mock/test/page/')
        page = Page(Path('Foo'), False, file, folder)

        self.assertFalse(page.readonly)
        self.assertFalse(page.hascontent)
        self.assertIsNone(page.ctime)
        self.assertIsNone(page.mtime)
        self.assertIsNone(page.get_parsetree())

        page1 = Page(Path('Foo'), False, file, folder)
        self.assertTrue(page.isequal(page1))

        tree = ParseTree().fromstring('''\
<zim-tree>
<link href='foo:bar'>foo:bar</link>
<link href='bar'>bar</link>
<tag name='baz'>@baz</tag>
</zim-tree>
''')
        page.set_parsetree(tree)
        page._store()

        self.assertTrue(file.exists())
        self.assertTrue(page.hascontent)
        self.assertIsInstance(page.ctime, float)
        self.assertIsInstance(page.mtime, float)

        lines = file.readlines()
        self.assertEqual(lines[0], 'Content-Type: text/x-zim-wiki\n')
        self.assertEqual(lines[1][:11], 'Wiki-Format')
        self.assertEqual(lines[2][:13], 'Creation-Date')

        self.assertEqual(page.get_parsetree(), tree)

        self.assertTrue(page.isequal(page1))
        self.assertTrue(page1.hascontent)
        self.assertIsInstance(page1.ctime, float)
        self.assertIsInstance(page1.mtime, float)
        self.assertIsNotNone(page1.get_parsetree())

        file.write('foo 123')
        page.set_parsetree(tree)

        self.assertRaises(zim.newfs.FileChangedError, page._store)

        ### Custom header should be preserved
        file.writelines(lines[0:3] + ['X-Custom-Header: MyTest'] + lines[3:])
        page = Page(Path('Foo'), False, file, folder)
        tree = page.get_parsetree()
        page.set_parsetree(tree)
        page._store()
        lines = file.readlines()
        self.assertEqual(lines[0], 'Content-Type: text/x-zim-wiki\n')
        self.assertEqual(lines[3], 'X-Custom-Header: MyTest\n')
Example #4
0
    def testShouldAutochangeHeading(self):
        from zim.newfs.mock import MockFile, MockFolder
        file = MockFile('/mock/test/page.txt')
        folder = MockFile('/mock/test/page/')
        page = Page(Path('Foo'), False, file, folder)

        tree = ParseTree().fromstring('<zim-tree></zim-tree>')
        tree.set_heading("Foo")
        page.set_parsetree(tree)
        self.assertTrue(page.heading_matches_pagename())
        tree.set_heading("Bar")
        page.set_parsetree(tree)
        self.assertFalse(page.heading_matches_pagename())
Example #5
0
	def testExistingFile(self):
		from zim.newfs.mock import MockFile

		file = ConfigFile(MockFile('/<mock>/foo.conf'))
		self.assertEqual(file.basename, 'foo.conf')

		other = ConfigFile(file.file)
		self.assertTrue(other == file)

		self.assertEqual(file.read(), '')
		self.assertEqual(file.readlines(), [])
		self.assertRaises(FileNotFoundError, file.read, fail=True)
		self.assertRaises(FileNotFoundError, file.readlines, fail=True)

		file.touch()
		self.assertEqual(file.read(), '')
		self.assertEqual(file.readlines(), [])
		self.assertEqual(file.read(fail=True), '')
		self.assertEqual(file.readlines(fail=True), [])

		file.write('foo!\n')
		self.assertEqual(file.read(), 'foo!\n')
		self.assertEqual(file.readlines(), ['foo!\n'])

		file.remove()
		self.assertEqual(file.read(), '')
		self.assertEqual(file.readlines(), [])
		self.assertRaises(FileNotFoundError, file.read, fail=True)
		self.assertRaises(FileNotFoundError, file.readlines, fail=True)
Example #6
0
def createIndexPage(notebook, path, section=None):
    # TODO make more flexible - use pages iter itself instead of section of notebook
    if section is None:
        section = Path(':')
        title = notebook.name
    else:
        title = section.name

    builder = ParseTreeBuilder()

    def add_namespace(path):
        pagelist = notebook.pages.list_pages(path)
        builder.start(BULLETLIST)
        for page in pagelist:
            builder.start(LISTITEM)
            builder.append(LINK, {
                'type': 'page',
                'href': page.name
            }, page.basename)
            builder.end(LISTITEM)
            if page.haschildren:
                add_namespace(page)  # recurs
        builder.end(BULLETLIST)

    builder.start(FORMATTEDTEXT)
    builder.append(HEADING, {'level': 1}, 'Index of %s\n' % title)
    add_namespace(section)
    builder.end(FORMATTEDTEXT)

    tree = builder.get_parsetree()
    #~ print "!!!", tree.tostring()

    indexpage = Page(path, False, MockFile('/index'), None)
    indexpage.set_parsetree(tree)
    return indexpage
Example #7
0
    def testRenamePageDialogWithHeadingChanges(self):
        '''Test RenamePageDialog's heading auto-change option depending on
		whether we have a changed heading or not.
		'''
        from zim.newfs.mock import MockFile, MockFolder
        file = MockFile('/mock/test/page.txt')
        folder = MockFile('/mock/test/page/')
        page = Page(Path("Test:foo:bar"), False, file, folder)

        tree = ParseTree().fromstring('<zim-tree></zim-tree>')
        tree.set_heading("bar")
        page.set_parsetree(tree)

        self.ui.page = page
        self.ui.notebook.get_page = lambda path: self.ui.page
        dialog = zim.gui.RenamePageDialog(self.ui, path=Path("Test:foo:bar"))
        self.assertTrue(dialog.form['head'])
        tree.set_heading("different")
        dialog = zim.gui.RenamePageDialog(self.ui, path=Path("Test:foo:bar"))
        self.assertFalse(dialog.form['head'])
Example #8
0
    def testPageSource(self):
        from zim.newfs.mock import MockFile, MockFolder

        file = MockFile('/mock/test/page.txt')
        folder = MockFile('/mock/test/page/')
        page = Page(Path('Foo'), False, file, folder)

        self.assertFalse(page.readonly)
        self.assertFalse(page.hascontent)
        self.assertIsNone(page.ctime)
        self.assertIsNone(page.mtime)
        self.assertIsNone(page.get_parsetree())

        page1 = Page(Path('Foo'), False, file, folder)
        self.assertTrue(page.isequal(page1))

        tree = ParseTree().fromstring('''\
<zim-tree>
<link href='foo:bar'>foo:bar</link>
<link href='bar'>bar</link>
<tag name='baz'>@baz</tag>
</zim-tree>
''')
        page.set_parsetree(tree)
        page._store()

        self.assertTrue(file.exists())
        self.assertTrue(page.hascontent)
        self.assertIsInstance(page.ctime, float)
        self.assertIsInstance(page.mtime, float)

        self.assertEqual(page.get_parsetree(), tree)

        self.assertTrue(page.isequal(page1))
        self.assertTrue(page1.hascontent)
        self.assertIsInstance(page1.ctime, float)
        self.assertIsInstance(page1.mtime, float)
        self.assertIsNotNone(page1.get_parsetree())

        file.write('foo 123')
        page.set_parsetree(tree)

        self.assertRaises(zim.newfs.FileChangedError, page._store)
Example #9
0
 def generator(self, name):
     from zim.newfs.mock import MockFile, MockFolder
     file = MockFile('/mock/test/page.txt')
     folder = MockFile('/mock/test/page/')
     return Page(Path(name), False, file, folder)
def mock_file(lines):
    file = MockFile('/<mock>/test')
    file.writelines(lines)
    return file