Browse Source

Leave eggs when finding the instance path

pull/302/head
Armin Ronacher 13 years ago
parent
commit
fb1a6730cf
  1. 6
      flask/app.py
  2. 17
      tests/flask_tests.py

6
flask/app.py

@ -568,8 +568,12 @@ class Flask(_PackageBoundObject):
package_path = self.root_path
if hasattr(root_mod, '__path__'):
package_path = os.path.dirname(package_path)
site_parent, site_folder = os.path.split(package_path)
# leave the egg wrapper folder or the actual .egg on the filesystem
if os.path.basename(package_path).endswith('.egg'):
package_path = os.path.dirname(package_path)
site_parent, site_folder = os.path.split(package_path)
py_prefix = os.path.abspath(sys.prefix)
if package_path.startswith(py_prefix):
base_dir = py_prefix

17
tests/flask_tests.py

@ -1077,6 +1077,23 @@ class InstanceTestCase(unittest.TestCase):
finally:
sys.modules['myapp'] = None
def test_egg_installed_paths(self):
import types
expected_prefix = os.path.abspath(sys.prefix)
package_path = os.path.join(expected_prefix, 'lib', 'python2.5',
'site-packages', 'MyApp.egg', 'myapp')
mod = types.ModuleType('myapp')
mod.__path__ = [package_path]
mod.__file__ = os.path.join(package_path, '__init__.py')
sys.modules['myapp'] = mod
try:
mod.app = flask.Flask(mod.__name__)
self.assertEqual(mod.app.instance_path,
os.path.join(expected_prefix, 'share',
'myapp-instance'))
finally:
sys.modules['myapp'] = None
class JSONTestCase(unittest.TestCase):

Loading…
Cancel
Save