Browse Source

Merge pull request #87 from gfuchedzhy/hyde

---

if path of the resource processed by jinja2 contains non-ascii characters or if some template references some resource which contains non-ascii characters in its path hyde fails to generate site throwing jinjaUnicodeDecodeError.

So I replaced all regular strings I found in hyde sources with unicode ones. Now it generates site in described conditions correctly. All existing regression tests passed ok. So I think it is safe to include this changes into hyde.

Note that if you pull this request and some other requests introducing some new plugins youll have to look through their sources and replace str(...) occurences with unicode(...).

**update:**
Youll also have to remove .hyde_deps after applying this patch.
main
Lakshmi Vyasarajan 13 years ago
parent
commit
cc72aecf67
16 changed files with 59 additions and 59 deletions
  1. +2
    -2
      hyde/ext/plugins/jpegoptim.py
  2. +2
    -2
      hyde/ext/plugins/less.py
  3. +2
    -2
      hyde/ext/plugins/optipng.py
  4. +2
    -2
      hyde/ext/plugins/stylus.py
  5. +1
    -1
      hyde/ext/plugins/tagger.py
  6. +2
    -2
      hyde/ext/plugins/uglify.py
  7. +6
    -6
      hyde/ext/publishers/dvcs.py
  8. +3
    -3
      hyde/ext/templates/jinja.py
  9. +11
    -11
      hyde/fs.py
  10. +1
    -1
      hyde/layout.py
  11. +2
    -2
      hyde/model.py
  12. +1
    -1
      hyde/plugin.py
  13. +9
    -9
      hyde/site.py
  14. +4
    -4
      hyde/tests/test_fs.py
  15. +10
    -10
      hyde/tests/test_initialize.py
  16. +1
    -1
      hyde/tests/test_layout.py

+ 2
- 2
hyde/ext/plugins/jpegoptim.py View File

@@ -51,7 +51,7 @@ class JPEGOptimPlugin(CLTransformer):
target = File(self.site.config.deploy_root_path.child( target = File(self.site.config.deploy_root_path.child(
resource.relative_deploy_path)) resource.relative_deploy_path))
jpegoptim = self.app jpegoptim = self.app
args = [str(jpegoptim)]
args = [unicode(jpegoptim)]
args.extend(self.process_args(supported)) args.extend(self.process_args(supported))
args.extend(["-q", str(target)])
args.extend(["-q", unicode(target)])
self.call_app(args) self.call_app(args)

+ 2
- 2
hyde/ext/plugins/less.py View File

@@ -84,9 +84,9 @@ class LessCSSPlugin(CLTransformer):
less = self.app less = self.app
source = File.make_temp(text) source = File.make_temp(text)
target = File.make_temp('') target = File.make_temp('')
args = [str(less)]
args = [unicode(less)]
args.extend(self.process_args(supported)) args.extend(self.process_args(supported))
args.extend([str(source), str(target)])
args.extend([unicode(source), unicode(target)])
try: try:
self.call_app(args) self.call_app(args)
except subprocess.CalledProcessError: except subprocess.CalledProcessError:


+ 2
- 2
hyde/ext/plugins/optipng.py View File

@@ -64,7 +64,7 @@ class OptiPNGPlugin(CLTransformer):
target = File(self.site.config.deploy_root_path.child( target = File(self.site.config.deploy_root_path.child(
resource.relative_deploy_path)) resource.relative_deploy_path))
optipng = self.app optipng = self.app
args = [str(optipng)]
args = [unicode(optipng)]
args.extend(self.process_args(supported)) args.extend(self.process_args(supported))
args.extend([str(target)])
args.extend([unicode(target)])
self.call_app(args) self.call_app(args)

+ 2
- 2
hyde/ext/plugins/stylus.py View File

@@ -104,9 +104,9 @@ class StylusPlugin(CLTransformer):
target = source target = source
supported = [("compress", "c"), ("include", "I")] supported = [("compress", "c"), ("include", "I")]


args = [str(stylus)]
args = [unicode(stylus)]
args.extend(self.process_args(supported)) args.extend(self.process_args(supported))
args.append(str(source))
args.append(unicode(source))
try: try:
self.call_app(args) self.call_app(args)
except subprocess.CalledProcessError, e: except subprocess.CalledProcessError, e:


+ 1
- 1
hyde/ext/plugins/tagger.py View File

@@ -55,7 +55,7 @@ def get_tagger_sort_method(site):
return walker return walker


def walk_resources_tagged_with(node, tag): def walk_resources_tagged_with(node, tag):
tags = set(str(tag).split('+'))
tags = set(unicode(tag).split('+'))
walker = get_tagger_sort_method(node.site) walker = get_tagger_sort_method(node.site)
for resource in walker(): for resource in walker():
try: try:


+ 2
- 2
hyde/ext/plugins/uglify.py View File

@@ -62,9 +62,9 @@ class UglifyPlugin(CLTransformer):
uglify = self.app uglify = self.app
source = File.make_temp(text) source = File.make_temp(text)
target = File.make_temp('') target = File.make_temp('')
args = [str(uglify)]
args = [unicode(uglify)]
args.extend(self.process_args(supported)) args.extend(self.process_args(supported))
args.extend(["-o", str(target), str(source)])
args.extend(["-o", unicode(target), unicode(source)])


self.call_app(args) self.call_app(args)
out = target.read_all() out = target.read_all()

+ 6
- 6
hyde/ext/publishers/dvcs.py View File

@@ -59,7 +59,7 @@ class Git(DVCS):


def add(self, path="."): def add(self, path="."):
cmd = Popen('git add "%s"' % path, cmd = Popen('git add "%s"' % path,
cwd=str(self.path), stdout=PIPE, shell=True)
cwd=unicode(self.path), stdout=PIPE, shell=True)
cmdresult = cmd.communicate()[0] cmdresult = cmd.communicate()[0]
if cmd.returncode: if cmd.returncode:
raise Exception(cmdresult) raise Exception(cmdresult)
@@ -67,7 +67,7 @@ class Git(DVCS):
def pull(self): def pull(self):
self.switch(self.branch) self.switch(self.branch)
cmd = Popen("git pull origin %s" % self.branch, cmd = Popen("git pull origin %s" % self.branch,
cwd=str(self.path),
cwd=unicode(self.path),
stdout=PIPE, stdout=PIPE,
shell=True) shell=True)
cmdresult = cmd.communicate()[0] cmdresult = cmd.communicate()[0]
@@ -76,7 +76,7 @@ class Git(DVCS):


def push(self): def push(self):
cmd = Popen("git push origin %s" % self.branch, cmd = Popen("git push origin %s" % self.branch,
cwd=str(self.path), stdout=PIPE,
cwd=unicode(self.path), stdout=PIPE,
shell=True) shell=True)
cmdresult = cmd.communicate()[0] cmdresult = cmd.communicate()[0]
if cmd.returncode: if cmd.returncode:
@@ -85,7 +85,7 @@ class Git(DVCS):


def commit(self, message): def commit(self, message):
cmd = Popen('git commit -a -m"%s"' % message, cmd = Popen('git commit -a -m"%s"' % message,
cwd=str(self.path), stdout=PIPE, shell=True)
cwd=unicode(self.path), stdout=PIPE, shell=True)
cmdresult = cmd.communicate()[0] cmdresult = cmd.communicate()[0]
if cmd.returncode: if cmd.returncode:
raise Exception(cmdresult) raise Exception(cmdresult)
@@ -93,14 +93,14 @@ class Git(DVCS):
def switch(self, branch): def switch(self, branch):
self.branch = branch self.branch = branch
cmd = Popen('git checkout %s' % branch, cmd = Popen('git checkout %s' % branch,
cwd=str(self.path), stdout=PIPE, shell=True)
cwd=unicode(self.path), stdout=PIPE, shell=True)
cmdresult = cmd.communicate()[0] cmdresult = cmd.communicate()[0]
if cmd.returncode: if cmd.returncode:
raise Exception(cmdresult) raise Exception(cmdresult)


def merge(self, branch): def merge(self, branch):
cmd = Popen('git merge %s' % branch, cmd = Popen('git merge %s' % branch,
cwd=str(self.path), stdout=PIPE, shell=True)
cwd=unicode(self.path), stdout=PIPE, shell=True)
cmdresult = cmd.communicate()[0] cmdresult = cmd.communicate()[0]
if cmd.returncode: if cmd.returncode:
raise Exception(cmdresult) raise Exception(cmdresult)

+ 3
- 3
hyde/ext/templates/jinja.py View File

@@ -551,11 +551,11 @@ class HydeLoader(FileSystemLoader):
config = site.config if hasattr(site, 'config') else None config = site.config if hasattr(site, 'config') else None
if config: if config:
super(HydeLoader, self).__init__([ super(HydeLoader, self).__init__([
str(config.content_root_path),
str(config.layout_root_path),
unicode(config.content_root_path),
unicode(config.layout_root_path),
]) ])
else: else:
super(HydeLoader, self).__init__(str(sitepath))
super(HydeLoader, self).__init__(unicode(sitepath))


self.site = site self.site = site
self.preprocessor = preprocessor self.preprocessor = preprocessor


+ 11
- 11
hyde/fs.py View File

@@ -36,7 +36,7 @@ class FS(object):
self.path = path self.path = path
else: else:
self.path = os.path.expandvars(os.path.expanduser( self.path = os.path.expandvars(os.path.expanduser(
str(path).strip().rstrip(os.sep)))
unicode(path).strip().rstrip(os.sep)))


def __str__(self): def __str__(self):
return self.path return self.path
@@ -45,10 +45,10 @@ class FS(object):
return self.path return self.path


def __eq__(self, other): def __eq__(self, other):
return str(self) == str(other)
return unicode(self) == unicode(other)


def __ne__(self, other): def __ne__(self, other):
return str(self) != str(other)
return unicode(self) != unicode(other)


@property @property
def fully_expanded_path(self): def fully_expanded_path(self):
@@ -144,7 +144,7 @@ class FS(object):
""" """
Returns a File or Folder object that would represent the given path. Returns a File or Folder object that would represent the given path.
""" """
target = str(path)
target = unicode(path)
return Folder(target) if os.path.isdir(target) else File(target) return Folder(target) if os.path.isdir(target) else File(target)


def __get_destination__(self, destination): def __get_destination__(self, destination):
@@ -152,7 +152,7 @@ class FS(object):
Returns a File or Folder object that would represent this entity Returns a File or Folder object that would represent this entity
if it were copied or moved to `destination`. if it were copied or moved to `destination`.
""" """
if isinstance(destination, File) or os.path.isfile(str(destination)):
if isinstance(destination, File) or os.path.isfile(unicode(destination)):
return destination return destination
else: else:
return FS.file_or_folder(Folder(destination).child(self.name)) return FS.file_or_folder(Folder(destination).child(self.name))
@@ -251,7 +251,7 @@ class File(FS):
determine age. determine age.


""" """
return self.last_modified < File(str(another_file)).last_modified
return self.last_modified < File(unicode(another_file)).last_modified


@staticmethod @staticmethod
def make_temp(text): def make_temp(text):
@@ -290,7 +290,7 @@ class File(FS):
""" """
target = self.__get_destination__(destination) target = self.__get_destination__(destination)
logger.info("Copying %s to %s" % (self, target)) logger.info("Copying %s to %s" % (self, target))
shutil.copy(self.path, str(destination))
shutil.copy(self.path, unicode(destination))
return target return target


def delete(self): def delete(self):
@@ -539,7 +539,7 @@ class Folder(FS):
""" """
target = self.__get_destination__(destination) target = self.__get_destination__(destination)
logger.info("Copying %s to %s" % (self, target)) logger.info("Copying %s to %s" % (self, target))
shutil.copytree(self.path, str(target))
shutil.copytree(self.path, unicode(target))
return target return target


def move_to(self, destination): def move_to(self, destination):
@@ -549,7 +549,7 @@ class Folder(FS):
""" """
target = self.__get_destination__(destination) target = self.__get_destination__(destination)
logger.info("Move %s to %s" % (self, target)) logger.info("Move %s to %s" % (self, target))
shutil.move(self.path, str(target))
shutil.move(self.path, unicode(target))
return target return target


def rename_to(self, destination_name): def rename_to(self, destination_name):
@@ -559,7 +559,7 @@ class Folder(FS):
""" """
target = self.parent.child_folder(destination_name) target = self.parent.child_folder(destination_name)
logger.info("Rename %s to %s" % (self, target)) logger.info("Rename %s to %s" % (self, target))
shutil.move(self.path, str(target))
shutil.move(self.path, unicode(target))
return target return target


def _create_target_tree(self, target): def _create_target_tree(self, target):
@@ -588,7 +588,7 @@ class Folder(FS):
target = Folder(destination) target = Folder(destination)
target.make() target.make()
self._create_target_tree(target) self._create_target_tree(target)
dir_util.copy_tree(self.path, str(target))
dir_util.copy_tree(self.path, unicode(target))
return target return target


def get_walker(self, pattern=None): def get_walker(self, pattern=None):


+ 1
- 1
hyde/layout.py View File

@@ -38,6 +38,6 @@ class Layout(object):
Finds the layout folder from the given root folder. Finds the layout folder from the given root folder.
If it does not exist, return None If it does not exist, return None
""" """
layouts_folder = Folder(str(root)).child_folder(LAYOUTS)
layouts_folder = Folder(unicode(root)).child_folder(LAYOUTS)
layout_folder = layouts_folder.child_folder(layout_name) layout_folder = layouts_folder.child_folder(layout_name)
return layout_folder if layout_folder.exists else None return layout_folder if layout_folder.exists else None

+ 2
- 2
hyde/model.py View File

@@ -45,7 +45,7 @@ class Expando(object):
Sets the expando attribute after Sets the expando attribute after
transforming the value. transforming the value.
""" """
setattr(self, str(key).encode('utf-8'), self.transform(value))
setattr(self, unicode(key).encode('utf-8'), self.transform(value))




def transform(self, primitive): def transform(self, primitive):
@@ -62,7 +62,7 @@ class Expando(object):
return primitive return primitive


def __repr__(self): def __repr__(self):
return str(self.to_dict())
return unicode(self.to_dict())


def to_dict(self): def to_dict(self):
""" """


+ 1
- 1
hyde/plugin.py View File

@@ -311,7 +311,7 @@ class CLTransformer(Plugin):
try: try:
self.logger.debug( self.logger.debug(
"Calling executable [%s] with arguments %s" % "Calling executable [%s] with arguments %s" %
(args[0], str(args[1:])))
(args[0], unicode(args[1:])))
subprocess.check_call(args) subprocess.check_call(args)
except subprocess.CalledProcessError, error: except subprocess.CalledProcessError, error:
self.logger.error(traceback.format_exc()) self.logger.error(traceback.format_exc())


+ 9
- 9
hyde/site.py View File

@@ -17,7 +17,7 @@ from hyde.util import getLoggerWithNullHandler
def path_normalized(f): def path_normalized(f):
@wraps(f) @wraps(f)
def wrapper(self, path): def wrapper(self, path):
return f(self, str(path).replace('/', os.sep))
return f(self, unicode(path).replace('/', os.sep))
return wrapper return wrapper


logger = getLoggerWithNullHandler('hyde.engine') logger = getLoggerWithNullHandler('hyde.engine')
@@ -120,7 +120,7 @@ class Node(Processable):
self.root = self self.root = self
self.module = None self.module = None
self.site = None self.site = None
self.source_folder = Folder(str(source_folder))
self.source_folder = Folder(unicode(source_folder))
self.parent = parent self.parent = parent
if parent: if parent:
self.root = self.parent.root self.root = self.parent.root
@@ -228,7 +228,7 @@ class RootNode(Node):
""" """
if Folder(path) == self.source_folder: if Folder(path) == self.source_folder:
return self return self
return self.node_map.get(str(Folder(path)), None)
return self.node_map.get(unicode(Folder(path)), None)


@path_normalized @path_normalized
def node_from_relative_path(self, relative_path): def node_from_relative_path(self, relative_path):
@@ -237,7 +237,7 @@ class RootNode(Node):
If no match is found it returns None. If no match is found it returns None.
""" """
return self.node_from_path( return self.node_from_path(
self.source_folder.child(str(relative_path)))
self.source_folder.child(unicode(relative_path)))


@path_normalized @path_normalized
def resource_from_path(self, path): def resource_from_path(self, path):
@@ -245,7 +245,7 @@ class RootNode(Node):
Gets the resource that maps to the given path. Gets the resource that maps to the given path.
If no match is found it returns None. If no match is found it returns None.
""" """
return self.resource_map.get(str(File(path)), None)
return self.resource_map.get(unicode(File(path)), None)


@path_normalized @path_normalized
def resource_from_relative_path(self, relative_path): def resource_from_relative_path(self, relative_path):
@@ -254,14 +254,14 @@ class RootNode(Node):
If no match is found it returns None. If no match is found it returns None.
""" """
return self.resource_from_path( return self.resource_from_path(
self.source_folder.child(str(relative_path)))
self.source_folder.child(relative_path))


def resource_deploy_path_changed(self, resource): def resource_deploy_path_changed(self, resource):
""" """
Handles the case where the relative deploy path of a Handles the case where the relative deploy path of a
resource has changed. resource has changed.
""" """
self.resource_deploy_map[str(resource.relative_deploy_path)] = resource
self.resource_deploy_map[unicode(resource.relative_deploy_path)] = resource


@path_normalized @path_normalized
def resource_from_relative_deploy_path(self, relative_deploy_path): def resource_from_relative_deploy_path(self, relative_deploy_path):
@@ -302,7 +302,7 @@ class RootNode(Node):
node = parent if parent else self node = parent if parent else self
for h_folder in hierarchy: for h_folder in hierarchy:
node = node.add_child_node(h_folder) node = node.add_child_node(h_folder)
self.node_map[str(h_folder)] = node
self.node_map[unicode(h_folder)] = node
logger.debug("Added node [%s] to [%s]" % ( logger.debug("Added node [%s] to [%s]" % (
node.relative_path, self.source_folder)) node.relative_path, self.source_folder))


@@ -332,7 +332,7 @@ class RootNode(Node):
node = self.add_node(afile.parent) node = self.add_node(afile.parent)


resource = node.add_child_resource(afile) resource = node.add_child_resource(afile)
self.resource_map[str(afile)] = resource
self.resource_map[unicode(afile)] = resource
logger.debug("Added resource [%s] to [%s]" % logger.debug("Added resource [%s] to [%s]" %
(resource.relative_path, self.source_folder)) (resource.relative_path, self.source_folder))
return resource return resource


+ 4
- 4
hyde/tests/test_fs.py View File

@@ -15,7 +15,7 @@ from nose.tools import raises, with_setup, nottest
def test_representation(): def test_representation():
f = FS(__file__) f = FS(__file__)
assert f.path == __file__ assert f.path == __file__
assert str(f) == __file__
assert unicode(f) == __file__
assert repr(f) == __file__ assert repr(f) == __file__


def test_name(): def test_name():
@@ -81,7 +81,7 @@ def test_parent():
f = File(__file__) f = File(__file__)
p = f.parent p = f.parent
assert hasattr(p, 'child_folder') assert hasattr(p, 'child_folder')
assert str(p) == os.path.dirname(__file__)
assert unicode(p) == os.path.dirname(__file__)


def test_child(): def test_child():
p = File(__file__).parent p = File(__file__).parent
@@ -92,7 +92,7 @@ def test_child_folder():
p = File(__file__).parent p = File(__file__).parent
c = p.child_folder('data') c = p.child_folder('data')
assert hasattr(c, 'child_folder') assert hasattr(c, 'child_folder')
assert str(c) == os.path.join(os.path.dirname(__file__), 'data')
assert unicode(c) == os.path.join(os.path.dirname(__file__), 'data')


def test_exists(): def test_exists():
p = FS(__file__) p = FS(__file__)
@@ -113,7 +113,7 @@ def test_create_folder():
assert not c.exists assert not c.exists
c.make() c.make()
assert c.exists assert c.exists
shutil.rmtree(str(c))
shutil.rmtree(unicode(c))
assert not c.exists assert not c.exists


def test_remove_folder(): def test_remove_folder():


+ 10
- 10
hyde/tests/test_initialize.py View File

@@ -36,56 +36,56 @@ def delete_test_site_at_user():
def test_ensure_exception_when_site_yaml_exists(): def test_ensure_exception_when_site_yaml_exists():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
File(TEST_SITE.child('site.yaml')).write("Hey") File(TEST_SITE.child('site.yaml')).write("Hey")
e.run(e.parse(['-s', str(TEST_SITE), 'create']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create']))


@raises(HydeException) @raises(HydeException)
@with_setup(create_test_site, delete_test_site) @with_setup(create_test_site, delete_test_site)
def test_ensure_exception_when_content_folder_exists(): def test_ensure_exception_when_content_folder_exists():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
TEST_SITE.child_folder('content').make() TEST_SITE.child_folder('content').make()
e.run(e.parse(['-s', str(TEST_SITE), 'create']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create']))


@raises(HydeException) @raises(HydeException)
@with_setup(create_test_site, delete_test_site) @with_setup(create_test_site, delete_test_site)
def test_ensure_exception_when_layout_folder_exists(): def test_ensure_exception_when_layout_folder_exists():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
TEST_SITE.child_folder('layout').make() TEST_SITE.child_folder('layout').make()
e.run(e.parse(['-s', str(TEST_SITE), 'create']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create']))


@with_setup(create_test_site, delete_test_site) @with_setup(create_test_site, delete_test_site)
def test_ensure_no_exception_when_empty_site_exists(): def test_ensure_no_exception_when_empty_site_exists():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
e.run(e.parse(['-s', str(TEST_SITE), 'create']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create']))
verify_site_contents(TEST_SITE, Layout.find_layout()) verify_site_contents(TEST_SITE, Layout.find_layout())


@with_setup(create_test_site, delete_test_site) @with_setup(create_test_site, delete_test_site)
def test_ensure_no_exception_when_forced(): def test_ensure_no_exception_when_forced():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
TEST_SITE.child_folder('layout').make() TEST_SITE.child_folder('layout').make()
e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create', '-f']))
verify_site_contents(TEST_SITE, Layout.find_layout()) verify_site_contents(TEST_SITE, Layout.find_layout())
TEST_SITE.delete() TEST_SITE.delete()
TEST_SITE.child_folder('content').make() TEST_SITE.child_folder('content').make()
e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create', '-f']))
verify_site_contents(TEST_SITE, Layout.find_layout()) verify_site_contents(TEST_SITE, Layout.find_layout())
TEST_SITE.delete() TEST_SITE.delete()
TEST_SITE.make() TEST_SITE.make()
File(TEST_SITE.child('site.yaml')).write("Hey") File(TEST_SITE.child('site.yaml')).write("Hey")
e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create', '-f']))
verify_site_contents(TEST_SITE, Layout.find_layout()) verify_site_contents(TEST_SITE, Layout.find_layout())


@with_setup(create_test_site, delete_test_site) @with_setup(create_test_site, delete_test_site)
def test_ensure_no_exception_when_sitepath_does_not_exist(): def test_ensure_no_exception_when_sitepath_does_not_exist():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
TEST_SITE.delete() TEST_SITE.delete()
e.run(e.parse(['-s', str(TEST_SITE), 'create', '-f']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create', '-f']))
verify_site_contents(TEST_SITE, Layout.find_layout()) verify_site_contents(TEST_SITE, Layout.find_layout())


@with_setup(create_test_site_at_user, delete_test_site_at_user) @with_setup(create_test_site_at_user, delete_test_site_at_user)
def test_ensure_can_create_site_at_user(): def test_ensure_can_create_site_at_user():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
TEST_SITE_AT_USER.delete() TEST_SITE_AT_USER.delete()
e.run(e.parse(['-s', str(TEST_SITE_AT_USER), 'create', '-f']))
e.run(e.parse(['-s', unicode(TEST_SITE_AT_USER), 'create', '-f']))
verify_site_contents(TEST_SITE_AT_USER, Layout.find_layout()) verify_site_contents(TEST_SITE_AT_USER, Layout.find_layout())


@nottest @nottest
@@ -107,5 +107,5 @@ def verify_site_contents(site, layout):
@with_setup(create_test_site, delete_test_site) @with_setup(create_test_site, delete_test_site)
def test_ensure_exception_when_layout_is_invalid(): def test_ensure_exception_when_layout_is_invalid():
e = Engine(raise_exceptions=True) e = Engine(raise_exceptions=True)
e.run(e.parse(['-s', str(TEST_SITE), 'create', '-l', 'junk']))
e.run(e.parse(['-s', unicode(TEST_SITE), 'create', '-l', 'junk']))



+ 1
- 1
hyde/tests/test_layout.py View File

@@ -31,7 +31,7 @@ def test_find_layout_from_env_var():
f = Layout.find_layout() f = Layout.find_layout()
LAYOUT_ROOT.make() LAYOUT_ROOT.make()
f.copy_to(LAYOUT_ROOT) f.copy_to(LAYOUT_ROOT)
os.environ[HYDE_DATA] = str(DATA_ROOT)
os.environ[HYDE_DATA] = unicode(DATA_ROOT)
f = Layout.find_layout() f = Layout.find_layout()
assert f.parent == LAYOUT_ROOT assert f.parent == LAYOUT_ROOT
assert f.name == 'basic' assert f.name == 'basic'


Loading…
Cancel
Save