#!/usr/bin/python # Copyright (C) 2011 Lars Wirzenius # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. from distutils.core import setup, Extension from distutils.cmd import Command from distutils.command.build import build from distutils.command.clean import clean import glob import os import shutil import subprocess import cmdtestlib try: import markdown except ImportError: markdown_version = None else: if (hasattr(markdown, 'extensions') and hasattr(markdown.extensions, 'Extension')): markdown_version = True else: markdown_version = False class GenerateManpage(build): def run(self): build.run(self) print 'building manpages' cmds = ['cmdtest'] if markdown_version: cmds.append('yarn') for x in cmds: with open('%s.1' % x, 'w') as f: subprocess.check_call(['python', x, '--generate-manpage=%s.1.in' % x, '--output=%s.1' % x], stdout=f) class CleanMore(clean): def run(self): clean.run(self) for x in ['.coverage', 'cmdtest.1'] + glob.glob('*.pyc'): if os.path.exists(x): os.remove(x) class Check(Command): user_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): if markdown_version: subprocess.check_call( ['python', '-m', 'CoverageTestRunner', '--ignore-missing-from', 'without-tests']) os.remove('.coverage') subprocess.check_call(['./cmdtest', 'echo-tests']) subprocess.check_call(['./cmdtest', 'sort-tests']) try: subprocess.check_call(['./cmdtest', 'fail-tests']) except subprocess.CalledProcessError: pass else: raise Exception('fail-tests did not fail, which is a surprise') if markdown_version: subprocess.check_call(['./cmdtest', 'yarn.tests']) setup(name='cmdtest', version=cmdtestlib.__version__, description='blackbox testing of Unix command line tools', author='Lars Wirzenius', author_email='liw@liw.fi', url='http://liw.fi/cmdtest/', scripts=['cmdtest', 'yarn'], py_modules=['cmdtestlib'], packages=['yarnlib'], data_files=[('share/man/man1', glob.glob('*.1'))], cmdclass={ 'build': GenerateManpage, 'check': Check, 'clean': CleanMore, }, )