예제 #1
0
파일: test_urls.py 프로젝트: jmjeong/hyde
class TestCleanUrls:

    def setup_class(self):
        settings.GENERATE_ABSOLUTE_FS_URLS = False
        settings.GENERATE_CLEAN_URLS = True
        settings.APPEND_SLASH = False # See Also: TestCleanUrlsAppendSlash
        settings.LISTING_PAGE_NAMES = ['listing']
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()
        settings.site = self.site.content_node

    def test_homepage(self):
        """Regardless of whether APPEND_SLASH is true, the homepage's url
        cannot be blank"""
        assert self.site.content_node.listing_url == "/"

    def test_regular_page(self):
        """Tests a non-listing page"""
        page = self.site.content_node.children[1].children[2].pages[0]
        assert page.name == "introducing-hyde.html"
        assert page.url == "/blog/2009/introducing-hyde"

    def test_auto_listing_page(self):
        """Tests listing pages whose filenames match the name of their
        enclosing folders."""
        blog = self.site.content_node.children[1]
        assert blog.name == "blog"
        assert blog.listing_url == "/blog"

    def test_lpn_listing_page(self):
        """Tests listing pages whose names are in the LISTING_PAGE_NAMES
        setting"""
        page = self.site.content_node.children[1].children[0].listing_page
        assert page.name == "listing.html"
        assert page.url == "/blog/2007"
예제 #2
0
파일: test_urls.py 프로젝트: jmjeong/hyde
class TestNormalUrls:
    """This is to make sure that the clean url generator hasn't interfered with
    regular urls"""

    def setup_class(self):
        settings.GENERATE_ABSOLUTE_FS_URLS = False
        settings.GENERATE_CLEAN_URLS = False
        settings.LISTING_PAGE_NAMES = ['listing']
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()
        settings.site = self.site.content_node

    def test_homepage(self):
        assert self.site.content_node.listing_url == "/index.html"

    def test_regular_page(self):
        """Tests a non-listing page"""
        page = self.site.content_node.children[1].children[2].pages[0]
        assert page.name == "introducing-hyde.html"
        assert page.url == "/blog/2009/introducing-hyde.html"

    def test_auto_listing_page(self):
        """Tests listing pages whose filenames match the name of their
        enclosing folders."""
        blog = self.site.content_node.children[1]
        assert blog.name == "blog"
        assert blog.listing_url == "/blog/blog.html"

    def test_lpn_listing_page(self):
        """Tests listing pages whose names are in the LISTING_PAGE_NAMES
        setting"""
        print self.site.content_node.children[1].children[0]
        page = self.site.content_node.children[1].children[0].listing_page
        assert page.name == "listing.html"
        assert page.url == "/blog/2007/listing.html"
예제 #3
0
파일: clyde.py 프로젝트: Psycojoker/hyde
class BaseHandler(tornado.web.RequestHandler):

    def init_site(self, site, force=False):
        if not site in self.settings['sites']:
            raise Exception("Site [%s] is not configured." % (site, ))

        self.site_path = FileSystemEntity(
                            self.settings['sites'][site]["path"]).humblepath
        if not hasattr(settings, 'siteinfo'):
            setup_env(self.site_path)
            setattr(settings, 'siteinfo', {})

        if not site in settings.siteinfo or force:
            self.siteinfo = SiteInfo(settings, self.site_path)
            self.siteinfo.refresh()
            settings.siteinfo[site] = self.siteinfo
        else:
            self.siteinfo = settings.siteinfo[site]

    def get(self, site):
        self.init_site(site)
        self.doget(site)

    def doget(self, site): abstract

    def post(self, site):
        self.init_site(site)
        self.dopost(site)

    def dopost(self, site): abstract
예제 #4
0
 def setup_class(self):
     settings.GENERATE_ABSOLUTE_FS_URLS = False
     settings.GENERATE_CLEAN_URLS = False
     settings.LISTING_PAGE_NAMES = ['listing']
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
     settings.site = self.site.content_node
예제 #5
0
class BaseHandler(tornado.web.RequestHandler):
    def init_site(self, site, force=False):
        if not site in self.settings['sites']:
            raise Exception("Site [%s] is not configured." % (site, ))

        self.site_path = FileSystemEntity(
            self.settings['sites'][site]["path"]).humblepath
        if not hasattr(settings, 'siteinfo'):
            setup_env(self.site_path)
            setattr(settings, 'siteinfo', {})

        if not site in settings.siteinfo or force:
            self.siteinfo = SiteInfo(settings, self.site_path)
            self.siteinfo.refresh()
            settings.siteinfo[site] = self.siteinfo
        else:
            self.siteinfo = settings.siteinfo[site]

    def get(self, site):
        self.init_site(site)
        self.doget(site)

    def doget(self, site):
        abstract

    def post(self, site):
        self.init_site(site)
        self.dopost(site)

    def dopost(self, site):
        abstract
예제 #6
0
class TestNormalUrls:
    """This is to make sure that the clean url generator hasn't interfered with
    regular urls"""
    def setup_class(self):
        settings.GENERATE_ABSOLUTE_FS_URLS = False
        settings.GENERATE_CLEAN_URLS = False
        settings.LISTING_PAGE_NAMES = ['listing']
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()
        settings.site = self.site.content_node

    def test_homepage(self):
        assert self.site.content_node.listing_url == "/index.html"

    def test_regular_page(self):
        """Tests a non-listing page"""
        page = self.site.content_node.children[1].children[2].pages[0]
        assert page.name == "introducing-hyde.html"
        assert page.url == "/blog/2009/introducing-hyde.html"

    def test_auto_listing_page(self):
        """Tests listing pages whose filenames match the name of their
        enclosing folders."""
        blog = self.site.content_node.children[1]
        assert blog.name == "blog"
        assert blog.listing_url == "/blog/blog.html"

    def test_lpn_listing_page(self):
        """Tests listing pages whose names are in the LISTING_PAGE_NAMES
        setting"""
        print self.site.content_node.children[1].children[0]
        page = self.site.content_node.children[1].children[0].listing_page
        assert page.name == "listing.html"
        assert page.url == "/blog/2007/listing.html"
예제 #7
0
class TestCleanUrls:
    def setup_class(self):
        settings.GENERATE_ABSOLUTE_FS_URLS = False
        settings.GENERATE_CLEAN_URLS = True
        settings.APPEND_SLASH = False  # See Also: TestCleanUrlsAppendSlash
        settings.LISTING_PAGE_NAMES = ['listing']
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()
        settings.site = self.site.content_node

    def test_homepage(self):
        """Regardless of whether APPEND_SLASH is true, the homepage's url
        cannot be blank"""
        assert self.site.content_node.listing_url == "/"

    def test_regular_page(self):
        """Tests a non-listing page"""
        page = self.site.content_node.children[1].children[2].pages[0]
        assert page.name == "introducing-hyde.html"
        assert page.url == "/blog/2009/introducing-hyde"

    def test_auto_listing_page(self):
        """Tests listing pages whose filenames match the name of their
        enclosing folders."""
        blog = self.site.content_node.children[1]
        assert blog.name == "blog"
        assert blog.listing_url == "/blog"

    def test_lpn_listing_page(self):
        """Tests listing pages whose names are in the LISTING_PAGE_NAMES
        setting"""
        page = self.site.content_node.children[1].children[0].listing_page
        assert page.name == "listing.html"
        assert page.url == "/blog/2007"
예제 #8
0
 def setup_class(self):
     settings.GENERATE_ABSOLUTE_FS_URLS = False
     settings.GENERATE_CLEAN_URLS = True
     settings.APPEND_SLASH = False  # See Also: TestCleanUrlsAppendSlash
     settings.LISTING_PAGE_NAMES = ['listing']
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
     settings.site = self.site.content_node
예제 #9
0
 def test_recent_posts(self):
     site = SiteInfo(settings, TEST_SITE.path)
     site.refresh()        
     self.generator = Generator(TEST_SITE.path)
     self.generator.build_siteinfo()
     self.generator.pre_process(site)
     actual_resource = site.find_resource(File(site.content_folder.child('recent_posts.html')))
     self.generator.process(actual_resource)
     expected_text = File(
             TEST_ROOT.child("recent_posts_dest.html")).read_all()
     actual_text = actual_resource.temp_file.read_all()
     assert expected_text == actual_text
예제 #10
0
 def test_recent_posts(self):
     site = SiteInfo(settings, TEST_SITE.path)
     site.refresh()
     self.generator = Generator(TEST_SITE.path)
     self.generator.build_siteinfo()
     self.generator.pre_process(site)
     actual_resource = site.find_resource(
         File(site.content_folder.child('recent_posts.html')))
     self.generator.process(actual_resource)
     expected_text = File(
         TEST_ROOT.child("recent_posts_dest.html")).read_all()
     actual_text = actual_resource.temp_file.read_all()
     if ORIGINAL_PRE_PROCESSORS:
         settings.SITE_PRE_PROCESSORS = ORIGINAL_PRE_PROCESSORS
     assert_html_equals(expected_text, actual_text)
예제 #11
0
    def init_site(self, site, force=False):
        if not site in self.settings['sites']:
            raise Exception("Site [%s] is not configured." % (site, ))

        self.site_path = FileSystemEntity(
            self.settings['sites'][site]["path"]).humblepath
        if not hasattr(settings, 'siteinfo'):
            setup_env(self.site_path)
            setattr(settings, 'siteinfo', {})

        if not site in settings.siteinfo or force:
            self.siteinfo = SiteInfo(settings, self.site_path)
            self.siteinfo.refresh()
            settings.siteinfo[site] = self.siteinfo
        else:
            self.siteinfo = settings.siteinfo[site]
예제 #12
0
파일: test_urls.py 프로젝트: jmjeong/hyde
 def setup_class(self):
     settings.GENERATE_ABSOLUTE_FS_URLS = False
     settings.GENERATE_CLEAN_URLS = False
     settings.LISTING_PAGE_NAMES = ['listing']
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
     settings.site = self.site.content_node
예제 #13
0
파일: test_urls.py 프로젝트: jmjeong/hyde
 def setup_class(self):
     settings.GENERATE_ABSOLUTE_FS_URLS = False
     settings.GENERATE_CLEAN_URLS = True
     settings.APPEND_SLASH = False # See Also: TestCleanUrlsAppendSlash
     settings.LISTING_PAGE_NAMES = ['listing']
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
     settings.site = self.site.content_node
예제 #14
0
 def test_render_direct(self):
     render_folder = TEST_SITE.child_folder('content/render');
     render_folder.make()
     template_folder = TEST_SITE.child_folder('layout');
     template_folder.make()
     File(TEST_ROOT.child("render_tag/template.html")
         ).copy_to(template_folder.child('render.html'))
     source = File(TEST_ROOT.child("render_tag/source.html")).copy_to(render_folder)
     site = SiteInfo(settings, TEST_SITE.path)
     site.refresh()
     self.generator = Generator(TEST_SITE.path)
     self.generator.build_siteinfo()
     self.generator.pre_process(site)
     actual_resource = site.find_resource(source)
     self.generator.process(actual_resource)
     expected_text = File(TEST_ROOT.child("render_tag/dest.html")).read_all()
     actual_text = actual_resource.temp_file.read_all()
     if ORIGINAL_PRE_PROCESSORS:
         settings.SITE_PRE_PROCESSORS = ORIGINAL_PRE_PROCESSORS
     assert_html_equals(expected_text, actual_text)
예제 #15
0
 def test_render_direct(self):
     render_folder = TEST_SITE.child_folder('content/render')
     render_folder.make()
     template_folder = TEST_SITE.child_folder('layout')
     template_folder.make()
     File(TEST_ROOT.child("render_tag/template.html")).copy_to(
         template_folder.child('render.html'))
     source = File(
         TEST_ROOT.child("render_tag/source.html")).copy_to(render_folder)
     site = SiteInfo(settings, TEST_SITE.path)
     site.refresh()
     self.generator = Generator(TEST_SITE.path)
     self.generator.build_siteinfo()
     self.generator.pre_process(site)
     actual_resource = site.find_resource(source)
     self.generator.process(actual_resource)
     expected_text = File(
         TEST_ROOT.child("render_tag/dest.html")).read_all()
     actual_text = actual_resource.temp_file.read_all()
     if ORIGINAL_PRE_PROCESSORS:
         settings.SITE_PRE_PROCESSORS = ORIGINAL_PRE_PROCESSORS
     assert_html_equals(expected_text, actual_text)
예제 #16
0
class MonitorTests(object): 
    def clean_queue(self):
        while not self.queue.empty():
            try:
                self.queue.get()
                self.queue.task_done()
            except Empty:
                break
    
    def setup_class(cls):
        cls.site = None
        cls.queue = Queue()

    def teardown_class(cls):
        if cls.site:
            cls.site.dont_monitor()    
            
    def setup_method(self, method):
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()
        self.exception_queue = Queue()
        self.clean_queue()
        assert self.queue.empty()
예제 #17
0
class MonitorTests(object):
    def clean_queue(self):
        while not self.queue.empty():
            try:
                self.queue.get()
                self.queue.task_done()
            except Empty:
                break

    def setup_class(cls):
        cls.site = None
        cls.queue = Queue()

    def teardown_class(cls):
        if cls.site:
            cls.site.dont_monitor()

    def setup_method(self, method):
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()
        self.exception_queue = Queue()
        self.clean_queue()
        assert self.queue.empty()
예제 #18
0
파일: clyde.py 프로젝트: hznoob/hyde
    def init_site(self, site, force=False):
        if not site in self.settings["sites"]:
            raise Exception("Site [%s] is not configured." % (site,))

        self.site_path = FileSystemEntity(self.settings["sites"][site]["path"]).humblepath
        if not hasattr(settings, "siteinfo"):
            setup_env(self.site_path)
            setattr(settings, "siteinfo", {})

        if not site in settings.siteinfo or force:
            self.siteinfo = SiteInfo(settings, self.site_path)
            self.siteinfo.refresh()
            settings.siteinfo[site] = self.siteinfo
        else:
            self.siteinfo = settings.siteinfo[site]
예제 #19
0
    def test_filters(self):
        site = SiteInfo(settings, TEST_SITE.path)
        for name in [".banjo", ".hidden", "junk.abc~"]:
            f = File(site.content_folder.child(name))
            self.files.append(f)
            f.write("junk")
        
        git = site.content_folder.child_folder(".git")
        git_child = git.child_folder("child")
        git_child_pack = File(git_child.child("pack"))
        git.make()
        git_child.make()
        git_index = File(git.child("index"))
        git_index.write("junk")
        git_child_pack.write("junk")
            
        original_exclude = settings.FILTER['exclude']
        original_include = settings.FILTER['include']
        settings.FILTER = {}
        site = SiteInfo(settings, TEST_SITE.path)
        site.refresh()
        
        for f in self.files:
            assert site.find_resource(f)
            
        assert site.find_node(git)
        assert site.find_resource(git_index)
        assert site.find_node(git_child)
        assert site.find_resource(git_child_pack)

        settings.FILTER = { 
            'include': (),
            'exclude': (".*","*~")
        }
        
        site = SiteInfo(settings, TEST_SITE.path)        
        site.refresh()
        
        for f in self.files:
            assert not site.find_resource(f)
            
        assert not site.find_node(git)
        assert not site.find_resource(git_index)  
        assert not site.find_node(git_child)
        assert not site.find_resource(git_child_pack)  
            
        settings.FILTER = { 
            'include': (".banjo",),
            'exclude': (".*","*~")
        }

        site = SiteInfo(settings, TEST_SITE.path)        
        site.refresh()

        for f in self.files:
            if f.name == ".banjo":
                assert site.find_resource(f)
            else:
                assert not site.find_resource(f)    
                
        assert not site.find_node(git)
        assert not site.find_resource(git_index)        
            
        settings.FILTER['exclude']  = original_exclude
        settings.FILTER['include']  = original_include
        
        self.files.append(git)
예제 #20
0
class TestSiteInfo:

    def setup_method(self, method):
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()

    def assert_node_complete(self, node, folder):
        assert node.folder.path == folder.path
        test_case = self
        class Visitor(object):

            def visit_folder(self, folder):
                if not folder.allow(**test_case.site.settings.FILTER):
                    return
                child = node.find_child(folder)
                assert child
                test_case.assert_node_complete(child, folder)

            def visit_file(self, a_file):
                if not a_file.allow(**test_case.site.settings.FILTER):
                    return
                assert node.find_resource(a_file)

        folder.list(Visitor())

    def test_population(self):
        assert self.site.name == "Your Site"
        self.assert_node_complete(self.site.content_node,
                                    TEST_SITE.child_folder("content"))
        self.assert_node_complete(self.site.media_node,
                                    TEST_SITE.child_folder("media"))
        self.assert_node_complete(self.site.layout_node,
                                    TEST_SITE.child_folder("layout"))

    def test_type(self):
        def assert_node_type(node_dir, type):
           node = self.site.find_child(Folder(node_dir))
           assert node
           assert Folder(node_dir).same_as(node.folder)
           for child in node.walk():
               assert child.type == type
        assert_node_type(settings.CONTENT_DIR, "content")
        assert_node_type(settings.MEDIA_DIR, "media")
        assert_node_type(settings.LAYOUT_DIR, "layout")


    def test_attributes(self):
        for node in self.site.walk():
           self.assert_node_attributes(node)
           for resource in node.resources:
               self.assert_resource_attributes(resource)

    def assert_node_attributes(self, node):
        fragment = self.get_node_fragment(node)
        if node.type == "content":
            fragment = node.folder.get_fragment(self.site.content_folder)
        elif node.type == "media":
            fragment = node.folder.get_fragment(self.site.folder)
        if node.type in ("content", "media"):
            fragment = ("/" + fragment.strip("/")).rstrip("/")
            assert fragment == node.url
            assert settings.SITE_WWW_URL + fragment == node.full_url
        else:
            assert not node.url
            assert not node.full_url

        if node.type == "content":
            for ancestor in node.ancestors:
                assert(
                    ancestor.folder.is_ancestor_of(node.folder) or
                    ancestor.folder.same_as(node.folder))

        assert node.source_folder == node.folder
        if not node == self.site and node.type not in ("content", "media"):
            assert not node.target_folder
            assert not node.temp_folder
        else:
            assert node.target_folder.same_as(Folder(
                            os.path.join(settings.DEPLOY_DIR,
                                fragment.lstrip("/"))))
            assert node.temp_folder.same_as(Folder(
                            os.path.join(settings.TMP_DIR,
                                fragment.lstrip("/"))))

    def assert_resource_attributes(self, resource):
        node = resource.node
        fragment = self.get_node_fragment(node)
        assert resource.name == resource.file.name
        assert resource.file.size == os.path.getsize(resource.file.path)
        if resource.node.type in ("content", "media"):
            assert (resource.url ==
                        url.join(node.url, resource.file.name))
            assert (resource.full_url ==
                        url.join(node.full_url, resource.file.name))
            assert resource.target_file.same_as(
                    File(node.target_folder.child(
                            resource.file.name)))
            assert resource.temp_file.same_as(
                    File(node.temp_folder.child(resource.file.name)))
        else:
            assert not resource.url
            assert not resource.full_url
        if resource.node.type == "content":
            self.assert_page_attributes(resource)

    def assert_page_attributes(self, page):
        if page.page_name in (
                "about", "blog", "listing", "2008", "2009", "index"):
            assert page.listing
            assert page.node.listing_page
            assert page.node.listing_page == page

            assert not page.display_in_list
        else:
            assert not page.listing
            if page.file.kind == "html":
                assert page.display_in_list
        assert page.module == page.node.module

        assert page.source_file.parent.same_as(page.node.folder)
        assert page.source_file.name == page.file.name

    def get_node_fragment(self, node):
        fragment = ''
        if node.type == "content":
            fragment = node.folder.get_fragment(self.site.content_folder)
        elif node.type == "media":
            fragment = node.folder.get_fragment(self.site.folder)
        return fragment
예제 #21
0
 def setup_method(self, method):
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
     self.exception_queue = Queue()
     self.clean_queue()
     assert self.queue.empty()
예제 #22
0
 def setup_method(self, method):
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
예제 #23
0
class TestSiteInfo:

    def setup_method(self, method):
        self.site = SiteInfo(settings, TEST_SITE.path)
        self.site.refresh()
        
    def assert_node_complete(self, node, folder):
        assert node.folder.path == folder.path
        test_case = self
        class Visitor(object):
            def visit_folder(self, folder):
                child = node.find_child(folder)
                assert child
                test_case.assert_node_complete(child, folder)
                
            def visit_file(self, a_file):
                assert node.find_resource(a_file)
        folder.list(Visitor())

    def test_population(self):
        assert self.site.name == "Your Site"
        self.assert_node_complete(self.site.content_node,
                                    TEST_SITE.child_folder("content"))
        self.assert_node_complete(self.site.media_node,
                                    TEST_SITE.child_folder("media"))
        self.assert_node_complete(self.site.layout_node, 
                                    TEST_SITE.child_folder("layout"))
        
    def test_type(self):
        def assert_node_type(node_dir, type):
           node = self.site.find_child(Folder(node_dir))
           assert node
           assert Folder(node_dir).same_as(node.folder)
           for child in node.walk():
               assert child.type == type
        assert_node_type(settings.CONTENT_DIR, "content")
        assert_node_type(settings.MEDIA_DIR, "media")
        assert_node_type(settings.LAYOUT_DIR, "layout")
            
        
    def test_attributes(self):
        for node in self.site.walk():
           self.assert_node_attributes(node)
           for resource in node.resources:
               self.assert_resource_attributes(resource)
                           
    def assert_node_attributes(self, node):
        fragment = self.get_node_fragment(node)
        if node.type == "content":
            fragment = node.folder.get_fragment(self.site.content_folder)
        elif node.type == "media":
            fragment = node.folder.get_fragment(self.site.folder)
        if node.type in ("content", "media"):
            fragment = ("/" + fragment.strip("/")).rstrip("/")
            assert fragment == node.url
            assert settings.SITE_WWW_URL + fragment == node.full_url
        else:    
            assert not node.url
            assert not node.full_url

        if node.type == "content":    
            for ancestor in node.ancestors:
                assert( 
                    ancestor.folder.is_ancestor_of(node.folder) or 
                    ancestor.folder.same_as(node.folder))
                
        assert node.source_folder == node.folder
        if not node == self.site and node.type not in ("content", "media"):
            assert not node.target_folder
            assert not node.temp_folder
        else:
            assert node.target_folder.same_as(Folder(
                            os.path.join(settings.DEPLOY_DIR,
                                fragment.lstrip("/"))))
            assert node.temp_folder.same_as(Folder(
                            os.path.join(settings.TMP_DIR, 
                                fragment.lstrip("/"))))
                       
    def assert_resource_attributes(self, resource):
        node = resource.node
        fragment = self.get_node_fragment(node)
        assert resource.name == resource.file.name
        if resource.node.type in ("content", "media"):
            assert (resource.url ==  
                        url.join(node.url, resource.file.name))
            assert (resource.full_url ==  
                        url.join(node.full_url, resource.file.name))
            assert resource.target_file.same_as(
                    File(node.target_folder.child(
                            resource.file.name)))
            assert resource.temp_file.same_as(
                    File(node.temp_folder.child(resource.file.name)))
        else:
            assert not resource.url
            assert not resource.full_url
        if resource.node.type == "content":
            self.assert_page_attributes(resource)
            
    def assert_page_attributes(self, page):
        if page.page_name in (
                "about", "blog", "2008", "2009", "index"):
            assert page.listing
            assert page.node.listing_page
            assert page.node.listing_page == page
            
            assert not page.display_in_list
        else:
            assert not page.listing
            if page.file.kind == "html":
                assert page.display_in_list
        assert page.module == page.node.module        
        
        assert page.source_file.parent.same_as(page.node.folder)
        assert page.source_file.name == page.file.name
        
    def get_node_fragment(self, node):
        fragment = ''
        if node.type == "content":
            fragment = node.folder.get_fragment(self.site.content_folder)
        elif node.type == "media":
            fragment = node.folder.get_fragment(self.site.folder)
        return fragment
예제 #24
0
 def setup_method(self, method):
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
예제 #25
0
 def setup_method(self, method):
     self.site = SiteInfo(settings, TEST_SITE.path)
     self.site.refresh()
     self.exception_queue = Queue()
     self.clean_queue()
     assert self.queue.empty()
예제 #26
0
    def test_filters(self):
        site = SiteInfo(settings, TEST_SITE.path)
        for name in [".banjo", ".hidden", "junk.abc~"]:
            f = File(site.content_folder.child(name))
            self.files.append(f)
            f.write("junk")

        git = site.content_folder.child_folder(".git")
        git_child = git.child_folder("child")
        git_child_pack = File(git_child.child("pack"))
        git.make()
        git_child.make()
        git_index = File(git.child("index"))
        git_index.write("junk")
        git_child_pack.write("junk")

        original_exclude = settings.FILTER['exclude']
        original_include = settings.FILTER['include']
        settings.FILTER = {}
        site = SiteInfo(settings, TEST_SITE.path)
        site.refresh()

        for f in self.files:
            assert site.find_resource(f)

        assert site.find_node(git)
        assert site.find_resource(git_index)
        assert site.find_node(git_child)
        assert site.find_resource(git_child_pack)

        settings.FILTER = {
            'include': (),
            'exclude': (".*","*~")
        }

        site = SiteInfo(settings, TEST_SITE.path)
        site.refresh()

        for f in self.files:
            assert not site.find_resource(f)

        assert not site.find_node(git)
        assert not site.find_resource(git_index)
        assert not site.find_node(git_child)
        assert not site.find_resource(git_child_pack)

        settings.FILTER = {
            'include': (".banjo",),
            'exclude': (".*","*~")
        }

        site = SiteInfo(settings, TEST_SITE.path)
        site.refresh()

        for f in self.files:
            if f.name == ".banjo":
                assert site.find_resource(f)
            else:
                assert not site.find_resource(f)

        assert not site.find_node(git)
        assert not site.find_resource(git_index)

        settings.FILTER['exclude']  = original_exclude
        settings.FILTER['include']  = original_include

        self.files.append(git)