[MRG + 1] Add __main__ (#159)
* Renames camelot.cli to camelot.__main__ Closes #154 * Keep __main__ and cli separate * Monkey patch click HelpFormatterpull/2/head
parent
60c1270745
commit
61963aabb6
|
|
@ -2,10 +2,20 @@
|
|||
|
||||
import logging
|
||||
|
||||
from click import HelpFormatter
|
||||
|
||||
from .__version__ import __version__
|
||||
from .io import read_pdf
|
||||
|
||||
|
||||
def _write_usage(self, prog, args='', prefix='Usage: '):
|
||||
return self._write_usage('camelot', args, prefix=prefix)
|
||||
|
||||
|
||||
# monkey patch click.HelpFormatter
|
||||
HelpFormatter._write_usage = HelpFormatter.write_usage
|
||||
HelpFormatter.write_usage = _write_usage
|
||||
|
||||
# set up logging
|
||||
logger = logging.getLogger('camelot')
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
|
||||
__all__ = ('main',)
|
||||
|
||||
|
||||
def main():
|
||||
from camelot.cli import cli
|
||||
|
||||
cli()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -1,93 +1,93 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
|
||||
from click.testing import CliRunner
|
||||
|
||||
from camelot.cli import cli
|
||||
from camelot.utils import TemporaryDirectory
|
||||
|
||||
|
||||
testdir = os.path.dirname(os.path.abspath(__file__))
|
||||
testdir = os.path.join(testdir, 'files')
|
||||
|
||||
|
||||
def test_cli_lattice():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'foo.pdf')
|
||||
outfile = os.path.join(tempdir, 'foo.csv')
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
||||
'lattice', infile])
|
||||
assert result.exit_code == 0
|
||||
assert result.output == 'Found 1 tables\n'
|
||||
|
||||
result = runner.invoke(cli, ['--format', 'csv',
|
||||
'lattice', infile])
|
||||
output_error = 'Error: Please specify output file path using --output'
|
||||
assert output_error in result.output
|
||||
|
||||
result = runner.invoke(cli, ['--output', outfile,
|
||||
'lattice', infile])
|
||||
format_error = 'Please specify output file format using --format'
|
||||
assert format_error in result.output
|
||||
|
||||
|
||||
def test_cli_stream():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'budget.pdf')
|
||||
outfile = os.path.join(tempdir, 'budget.csv')
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
assert result.output == 'Found 1 tables\n'
|
||||
|
||||
result = runner.invoke(cli, ['--format', 'csv', 'stream', infile])
|
||||
output_error = 'Error: Please specify output file path using --output'
|
||||
assert output_error in result.output
|
||||
|
||||
result = runner.invoke(cli, ['--output', outfile, 'stream', infile])
|
||||
format_error = 'Please specify output file format using --format'
|
||||
assert format_error in result.output
|
||||
|
||||
|
||||
def test_cli_output_format():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'health.pdf')
|
||||
outfile = os.path.join(tempdir, 'health.{}')
|
||||
runner = CliRunner()
|
||||
|
||||
# json
|
||||
result = runner.invoke(cli, ['--format', 'json', '--output', outfile.format('json'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
# excel
|
||||
result = runner.invoke(cli, ['--format', 'excel', '--output', outfile.format('xlsx'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
# html
|
||||
result = runner.invoke(cli, ['--format', 'html', '--output', outfile.format('html'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
# zip
|
||||
result = runner.invoke(cli, ['--zip', '--format', 'csv', '--output', outfile.format('csv'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
def test_cli_quiet_flag():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'blank.pdf')
|
||||
outfile = os.path.join(tempdir, 'blank.csv')
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
||||
'stream', infile])
|
||||
assert 'No tables found on page-1' in result.output
|
||||
|
||||
result = runner.invoke(cli, ['--quiet', '--format', 'csv',
|
||||
'--output', outfile, 'stream', infile])
|
||||
assert 'No tables found on page-1' not in result.output
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import os
|
||||
|
||||
from click.testing import CliRunner
|
||||
|
||||
from camelot.cli import cli
|
||||
from camelot.utils import TemporaryDirectory
|
||||
|
||||
|
||||
testdir = os.path.dirname(os.path.abspath(__file__))
|
||||
testdir = os.path.join(testdir, 'files')
|
||||
|
||||
|
||||
def test_cli_lattice():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'foo.pdf')
|
||||
outfile = os.path.join(tempdir, 'foo.csv')
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
||||
'lattice', infile])
|
||||
assert result.exit_code == 0
|
||||
assert result.output == 'Found 1 tables\n'
|
||||
|
||||
result = runner.invoke(cli, ['--format', 'csv',
|
||||
'lattice', infile])
|
||||
output_error = 'Error: Please specify output file path using --output'
|
||||
assert output_error in result.output
|
||||
|
||||
result = runner.invoke(cli, ['--output', outfile,
|
||||
'lattice', infile])
|
||||
format_error = 'Please specify output file format using --format'
|
||||
assert format_error in result.output
|
||||
|
||||
|
||||
def test_cli_stream():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'budget.pdf')
|
||||
outfile = os.path.join(tempdir, 'budget.csv')
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
assert result.output == 'Found 1 tables\n'
|
||||
|
||||
result = runner.invoke(cli, ['--format', 'csv', 'stream', infile])
|
||||
output_error = 'Error: Please specify output file path using --output'
|
||||
assert output_error in result.output
|
||||
|
||||
result = runner.invoke(cli, ['--output', outfile, 'stream', infile])
|
||||
format_error = 'Please specify output file format using --format'
|
||||
assert format_error in result.output
|
||||
|
||||
|
||||
def test_cli_output_format():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'health.pdf')
|
||||
outfile = os.path.join(tempdir, 'health.{}')
|
||||
runner = CliRunner()
|
||||
|
||||
# json
|
||||
result = runner.invoke(cli, ['--format', 'json', '--output', outfile.format('json'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
# excel
|
||||
result = runner.invoke(cli, ['--format', 'excel', '--output', outfile.format('xlsx'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
# html
|
||||
result = runner.invoke(cli, ['--format', 'html', '--output', outfile.format('html'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
# zip
|
||||
result = runner.invoke(cli, ['--zip', '--format', 'csv', '--output', outfile.format('csv'),
|
||||
'stream', infile])
|
||||
assert result.exit_code == 0
|
||||
|
||||
def test_cli_quiet_flag():
|
||||
with TemporaryDirectory() as tempdir:
|
||||
infile = os.path.join(testdir, 'blank.pdf')
|
||||
outfile = os.path.join(tempdir, 'blank.csv')
|
||||
runner = CliRunner()
|
||||
|
||||
result = runner.invoke(cli, ['--format', 'csv', '--output', outfile,
|
||||
'stream', infile])
|
||||
assert 'No tables found on page-1' in result.output
|
||||
|
||||
result = runner.invoke(cli, ['--quiet', '--format', 'csv',
|
||||
'--output', outfile, 'stream', infile])
|
||||
assert 'No tables found on page-1' not in result.output
|
||||
|
|
|
|||
Loading…
Reference in New Issue