cubicweb/devtools/test/unittest_devctl.py
changeset 11456 077f32a7a4c3
parent 11455 d686c4e8cdb2
child 11912 c9e6df20e5a4
--- a/cubicweb/devtools/test/unittest_devctl.py	Thu May 19 14:57:41 2016 +0200
+++ b/cubicweb/devtools/test/unittest_devctl.py	Wed Jul 06 17:46:39 2016 +0200
@@ -22,7 +22,7 @@
 import sys
 import tempfile
 import shutil
-from subprocess import Popen, PIPE, STDOUT
+from subprocess import Popen, PIPE, STDOUT, check_output
 from unittest import TestCase
 
 
@@ -94,6 +94,35 @@
         finally:
             shutil.rmtree(tmpdir, ignore_errors=True)
 
+    def test_newcube_install(self):
+        """Ensure a new cube can be installed"""
+        tmpdir = tempfile.mkdtemp(prefix="temp-cwctl-newcube-install")
+        try:
+            newcube(tmpdir, 'foo')
+            projectdir = osp.join(tmpdir, 'cubicweb-foo')
+            env = os.environ.copy()
+            env['HOME'] = tmpdir
+            cmd = [sys.executable, 'setup.py', 'install', '--user']
+            proc = Popen(cmd, stdout=PIPE, stderr=STDOUT,
+                         cwd=projectdir, env=env)
+            retcode = proc.wait()
+            stdout = to_unicode(proc.stdout.read())
+            self.assertEqual(retcode, 0, stdout)
+            targetdir = check_output([sys.executable, '-m', 'site', '--user-site'],
+                                     env=env, cwd=projectdir).strip()
+            target_egg = 'cubicweb_foo-0.1.0-py{0}.egg'.format(sys.version[:3]).encode()
+            self.assertTrue(osp.isdir(osp.join(targetdir, target_egg)),
+                            'target directory content: %s' % os.listdir(targetdir))
+            pkgdir = osp.join(targetdir, target_egg, b'cubicweb_foo')
+            self.assertTrue(osp.isdir(pkgdir),
+                            os.listdir(osp.join(targetdir, target_egg)))
+            pkgcontent = [f for f in os.listdir(pkgdir) if f.endswith(b'.py')]
+            self.assertItemsEqual(pkgcontent,
+                                  [b'schema.py', b'entities.py', b'hooks.py', b'__init__.py',
+                                   b'__pkginfo__.py', b'views.py'])
+        finally:
+            shutil.rmtree(tmpdir, ignore_errors=True)
+
 
 if __name__ == '__main__':
     from unittest import main