Fix text argument

This commit is contained in:
Davis Goglin 2016-03-28 14:23:18 -07:00
parent f504d2dc15
commit 76f300ea18
4 changed files with 103 additions and 3 deletions

View File

@ -141,8 +141,8 @@ ESCPOS_COMMANDS = [
}, },
'arguments': [ 'arguments': [
{ {
'option_strings': ('--text',), 'option_strings': ('--txt',),
'help': 'Text to print as a qr code', 'help': 'Plain text to print',
'required': True, 'required': True,
} }
], ],

View File

@ -78,6 +78,6 @@ setup(
setup_requires=[ setup_requires=[
'setuptools_scm', 'setuptools_scm',
], ],
tests_require=['tox', 'nose'], tests_require=['tox', 'nose', 'scripttest'],
cmdclass={'test': Tox}, cmdclass={'test': Tox},
) )

99
test/test_cli.py Normal file
View File

@ -0,0 +1,99 @@
"""Test for the CLI
"""
import os
import sys
from scripttest import TestFileEnvironment
from nose.tools import assert_equals
TEST_DIR = os.path.abspath('test/test-cli-output')
DEVFILE_NAME = 'testfile'
DEVFILE = os.path.join(TEST_DIR, DEVFILE_NAME)
CONFIGFILE = 'testconfig.yaml'
CONFIG_YAML = '''
---
printer:
type: file
devfile: {testfile}
'''.format(
testfile=DEVFILE,
)
class TestCLI:
@classmethod
def setup_class(cls):
""" Create a config file to read from """
with open(CONFIGFILE, 'w') as config:
config.write(CONFIG_YAML)
@classmethod
def teardown_class(cls):
""" Remove config file """
os.remove(CONFIGFILE)
def setup(self):
""" Create a file to print to and set up env"""
self.env = TestFileEnvironment(
base_path=TEST_DIR,
cwd=os.getcwd(),
)
self.default_args = (
sys.executable,
'-mescpos.cli',
'-c',
CONFIGFILE,
)
fhandle = open(DEVFILE, 'a')
try:
os.utime(DEVFILE, None)
finally:
fhandle.close()
def teardown(self):
""" Destroy printer file """
os.remove(DEVFILE)
def test_cli_help(self):
""" Test getting help from cli """
result = self.env.run(sys.executable, '-mescpos.cli', '-h')
assert not result.stderr
assert 'usage' in result.stdout
def test_cli_text(self):
""" Make sure text returns what we sent it """
test_text = 'this is some text'
result = self.env.run(
*(self.default_args + (
'text',
'--txt',
test_text,
))
)
assert not result.stderr
assert DEVFILE_NAME in result.files_updated.keys()
assert_equals(
result.files_updated[DEVFILE_NAME].bytes,
test_text
)
def test_cli_text_inavlid_args(self):
""" Test a failure to send valid arguments """
result = self.env.run(
*(self.default_args + (
'text',
'--invalid-param',
'some data'
)),
expect_error=True,
expect_stderr=True
)
assert_equals(result.returncode, 2)
assert 'error:' in result.stderr
assert not result.files_updated

View File

@ -4,4 +4,5 @@ envlist = py27, py34, py35
[testenv] [testenv]
deps = nose deps = nose
coverage coverage
scripttest
commands = nosetests --with-coverage --cover-erase --cover-branches commands = nosetests --with-coverage --cover-erase --cover-branches