def test_project_mixedcase(self): r"""create project name with mixed case""" parser = pyjig.init_parser() cwd = os.getcwdu() try: os.chdir(self.tmpd) proj = pyjig.Pyjig(parser.parse_args(['--app', 'MyApp'])) self.assertEqual(proj.ptype, 'app') self.assertEqual(proj.project_slug, 'MyApp') proj.create_project(no_input=True) # Directories exist? self.assertTrue(os.path.isdir('MyApp')) # Perform static analysis os.chdir('MyApp') subprocess.check_call(['make']) finally: os.chdir(cwd)
def test_app_project(self): r"""create application project""" parser = pyjig.init_parser() cwd = os.getcwdu() try: os.chdir(self.tmpd) proj = pyjig.Pyjig(parser.parse_args(['--app', 'myapp'])) self.assertEqual(proj.ptype, 'app') self.assertEqual(proj.project_slug, 'myapp') proj.create_project(no_input=True) # Directories exist? self.assertTrue(os.path.isdir('myapp')) self.assertTrue(os.path.isdir('myapp/docs')) self.assertTrue(os.path.isdir('myapp/src')) self.assertTrue(os.path.isdir('myapp/tests')) # Files exist? self.assertTrue(os.path.isfile('myapp/.gitignore')) self.assertTrue(os.path.isfile('myapp/Makefile')) self.assertTrue(os.path.isfile('myapp/id.txt')) self.assertTrue(os.path.isfile('myapp/pylint.rc')) self.assertTrue(os.path.isfile('myapp/setup.cfg')) self.assertTrue(os.path.isfile('myapp/tests/__init__.py')) # Verify 'id.txt' is for pkg extra = ast.literal_eval(open('myapp/id.txt').read()) self.assertEqual(extra['project_type'], 'app') # Perform static analysis & rebuild docs (empty project) os.chdir('myapp') subprocess.check_call(['make']) subprocess.check_call(['make', 'docs']) finally: os.chdir(cwd)
def test_add_project_sourcefiles(self): r"""test adding source files to existing project.""" parser = pyjig.init_parser() cwd = os.getcwdu() try: os.chdir(self.tmpd) # Create project proj = pyjig.Pyjig(parser.parse_args(['--app', 'myapp'])) proj.create_project(no_input=True) # Add three(3) source files to project os.chdir('myapp') proj = pyjig.Pyjig(parser.parse_args(['s1.py', 's2.py', 's3.py'])) proj.add_project_sourcefile(no_input=True) apps = os.listdir('src') docs = os.listdir('docs') tsts = os.listdir('tests') for src in ('s1', 's2', 's3'): self.assertIn(src + '.py', apps) self.assertIn(src + '.rst', docs) self.assertIn('test' + src + '.py', tsts) txt = open('docs/%s.rst' % src).read() self.assertIn('.. automodule:: %s' % src, txt) # Perform static analysis subprocess.check_call(['make']) subprocess.check_call(['make', 'docs']) finally: os.chdir(cwd)
def test_add_project_extension(self): r"""test adding extension file to existing project.""" # pylint: disable=too-many-locals parser = pyjig.init_parser() cwd = os.getcwdu() try: os.chdir(self.tmpd) # Create project proj = pyjig.Pyjig(parser.parse_args(['--pkg', 'mypkg'])) proj.create_project(no_input=True) # Add three(3) extension files to project os.chdir('mypkg') proj = pyjig.Pyjig(parser.parse_args(['--ext', 'e1'])) proj.add_project_extension(no_input=True) apps = os.listdir('src') docs = os.listdir('docs') tsts = os.listdir('tests') self.assertIn('e1_module.cpp', apps) self.assertIn('e1.rst', docs) self.assertIn('teste1.py', tsts) txt = open('docs/e1.rst').read() self.assertIn('.. automodule:: e1', txt) # Build extension setup = open('setup.py').readlines() import_added = False with open('setup.py', 'wt') as fout: for line in setup: fout.write(line) if not import_added and re.match('^from setuptools ', line): fout.write("from setuptools import Extension\n") import_added = True if re.search('package_dir', line): fout.write("ext_modules=[Extension('mypkg.e1',\n" "sources=['src/e1_module.cpp'])],\n") subprocess.check_call(['make', 'build']) builtdir = '' for dname in os.listdir('build'): if dname.startswith('lib.'): builtdir = os.path.join('build', dname, 'mypkg') builtdir = builtdir.replace('\\', '/') break # Perform static analysis pylint = open('pylint.rc').readlines() with open('pylint.rc', 'wt') as fout: for line in pylint: ma = re.match(r'^extension-pkg-whitelist=(.+)$', line) if ma: ext = ma.group(1).split(',') ext = ','.join(ext.append('e1')) fout.write("extension-pkg-whitelist=%s\n", ext) continue ma = re.match(r'^init-hook', line) if ma: fout.write("init-hook='import os,sys; " "sys.path.insert(0, " "os.path.abspath(\"%s\"))'\n" % builtdir) continue fout.write(line) subprocess.check_call(['make', 'tests']) subprocess.check_call(['make', 'docs']) finally: os.chdir(cwd)