ff1c0b58dd
This adds what I think needs to be done to support categories for flags but we will see if that works. It also forces the scripts to use python2 since they blow up under python3 which is becoming the default python on many linux systems. Small fix to app_test as well so it conforms to the new Flag interface.
123 lines
2.9 KiB
Python
Executable File
123 lines
2.9 KiB
Python
Executable File
#!/usr/bin/env python2
|
|
from __future__ import print_function
|
|
|
|
import argparse
|
|
import os
|
|
import sys
|
|
import tempfile
|
|
|
|
from subprocess import check_call, check_output
|
|
|
|
|
|
PACKAGE_NAME = os.environ.get(
|
|
'CLI_PACKAGE_NAME', 'github.com/urfave/cli'
|
|
)
|
|
|
|
|
|
def main(sysargs=sys.argv[:]):
|
|
targets = {
|
|
'vet': _vet,
|
|
'test': _test,
|
|
'gfmrun': _gfmrun,
|
|
'toc': _toc,
|
|
'gen': _gen,
|
|
}
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
'target', nargs='?', choices=tuple(targets.keys()), default='test'
|
|
)
|
|
args = parser.parse_args(sysargs[1:])
|
|
|
|
targets[args.target]()
|
|
return 0
|
|
|
|
|
|
def _test():
|
|
if check_output('go version'.split()).split()[2] < 'go1.2':
|
|
_run('go test -v .')
|
|
return
|
|
|
|
coverprofiles = []
|
|
for subpackage in ['', 'altsrc']:
|
|
coverprofile = 'cli.coverprofile'
|
|
if subpackage != '':
|
|
coverprofile = '{}.coverprofile'.format(subpackage)
|
|
|
|
coverprofiles.append(coverprofile)
|
|
|
|
_run('go test -v'.split() + [
|
|
'-coverprofile={}'.format(coverprofile),
|
|
('{}/{}'.format(PACKAGE_NAME, subpackage)).rstrip('/')
|
|
])
|
|
|
|
combined_name = _combine_coverprofiles(coverprofiles)
|
|
_run('go tool cover -func={}'.format(combined_name))
|
|
os.remove(combined_name)
|
|
|
|
|
|
def _gfmrun():
|
|
go_version = check_output('go version'.split()).split()[2]
|
|
if go_version < 'go1.3':
|
|
print('runtests: skip on {}'.format(go_version), file=sys.stderr)
|
|
return
|
|
_run(['gfmrun', '-c', str(_gfmrun_count()), '-s', 'README.md'])
|
|
|
|
|
|
def _vet():
|
|
_run('go vet ./...')
|
|
|
|
|
|
def _toc():
|
|
_run('node_modules/.bin/markdown-toc -i README.md')
|
|
_run('git diff --exit-code')
|
|
|
|
|
|
def _gen():
|
|
go_version = check_output('go version'.split()).split()[2]
|
|
if go_version < 'go1.5':
|
|
print('runtests: skip on {}'.format(go_version), file=sys.stderr)
|
|
return
|
|
|
|
_run('go generate ./...')
|
|
_run('git diff --exit-code')
|
|
|
|
|
|
def _run(command):
|
|
if hasattr(command, 'split'):
|
|
command = command.split()
|
|
print('runtests: {}'.format(' '.join(command)), file=sys.stderr)
|
|
check_call(command)
|
|
|
|
|
|
def _gfmrun_count():
|
|
with open('README.md') as infile:
|
|
lines = infile.read().splitlines()
|
|
return len(filter(_is_go_runnable, lines))
|
|
|
|
|
|
def _is_go_runnable(line):
|
|
return line.startswith('package main')
|
|
|
|
|
|
def _combine_coverprofiles(coverprofiles):
|
|
combined = tempfile.NamedTemporaryFile(
|
|
suffix='.coverprofile', delete=False
|
|
)
|
|
combined.write('mode: set\n')
|
|
|
|
for coverprofile in coverprofiles:
|
|
with open(coverprofile, 'r') as infile:
|
|
for line in infile.readlines():
|
|
if not line.startswith('mode: '):
|
|
combined.write(line)
|
|
|
|
combined.flush()
|
|
name = combined.name
|
|
combined.close()
|
|
return name
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|