2016-03-28 21:23:18 +00:00
|
|
|
"""Test for the CLI
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
2016-03-30 20:31:21 +00:00
|
|
|
|
2016-03-28 21:23:18 +00:00
|
|
|
import os
|
2023-08-14 23:03:36 +00:00
|
|
|
import shutil
|
|
|
|
import tempfile
|
|
|
|
|
2023-08-09 22:18:02 +00:00
|
|
|
import pytest
|
|
|
|
from scripttest import TestFileEnvironment as TFE
|
2023-08-14 23:03:36 +00:00
|
|
|
|
2016-07-17 09:17:43 +00:00
|
|
|
import escpos
|
2016-03-28 21:23:18 +00:00
|
|
|
|
2023-08-09 22:18:02 +00:00
|
|
|
TEST_DIR = tempfile.mkdtemp() + "/cli-test"
|
2016-03-28 21:23:18 +00:00
|
|
|
|
2021-10-30 16:15:22 +00:00
|
|
|
DEVFILE_NAME = "testfile"
|
2016-03-28 21:23:18 +00:00
|
|
|
|
|
|
|
DEVFILE = os.path.join(TEST_DIR, DEVFILE_NAME)
|
2021-10-30 16:15:22 +00:00
|
|
|
CONFIGFILE = "testconfig.yaml"
|
2023-08-09 22:18:02 +00:00
|
|
|
CONFIG_YAML = f"""
|
2016-03-28 21:23:18 +00:00
|
|
|
---
|
|
|
|
|
|
|
|
printer:
|
|
|
|
type: file
|
2023-08-09 22:18:02 +00:00
|
|
|
devfile: {DEVFILE}
|
|
|
|
"""
|
2016-03-28 21:23:18 +00:00
|
|
|
|
2016-04-02 13:29:51 +00:00
|
|
|
|
2017-01-29 23:10:14 +00:00
|
|
|
class TestCLI:
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Contains setups, teardowns, and tests for CLI"""
|
2016-03-28 21:23:18 +00:00
|
|
|
|
2016-08-30 15:47:09 +00:00
|
|
|
@classmethod
|
|
|
|
def setup_class(cls):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Create a config file to read from"""
|
|
|
|
with open(CONFIGFILE, "w") as config:
|
2016-03-28 21:23:18 +00:00
|
|
|
config.write(CONFIG_YAML)
|
|
|
|
|
2016-08-30 15:47:09 +00:00
|
|
|
@classmethod
|
|
|
|
def teardown_class(cls):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Remove config file"""
|
2016-03-28 21:23:18 +00:00
|
|
|
os.remove(CONFIGFILE)
|
2023-08-09 22:18:02 +00:00
|
|
|
shutil.rmtree(TEST_DIR)
|
2016-03-28 21:23:18 +00:00
|
|
|
|
2023-07-21 21:03:46 +00:00
|
|
|
def setup_method(self):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Create a file to print to and set up env"""
|
2016-08-30 15:47:09 +00:00
|
|
|
self.env = None
|
|
|
|
self.default_args = None
|
|
|
|
|
2023-08-09 22:18:02 +00:00
|
|
|
self.env = TFE(
|
2016-03-28 21:23:18 +00:00
|
|
|
base_path=TEST_DIR,
|
|
|
|
cwd=os.getcwd(),
|
|
|
|
)
|
|
|
|
|
|
|
|
self.default_args = (
|
2021-10-30 16:15:22 +00:00
|
|
|
"python-escpos",
|
|
|
|
"-c",
|
2016-03-28 21:23:18 +00:00
|
|
|
CONFIGFILE,
|
|
|
|
)
|
|
|
|
|
2021-10-30 16:15:22 +00:00
|
|
|
fhandle = open(DEVFILE, "a")
|
2016-03-28 21:23:18 +00:00
|
|
|
try:
|
|
|
|
os.utime(DEVFILE, None)
|
|
|
|
finally:
|
|
|
|
fhandle.close()
|
|
|
|
|
2023-07-21 21:03:46 +00:00
|
|
|
def teardown_method(self):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Destroy printer file and env"""
|
2016-03-28 21:23:18 +00:00
|
|
|
os.remove(DEVFILE)
|
2016-03-28 21:57:06 +00:00
|
|
|
self.env.clear()
|
2016-03-28 21:23:18 +00:00
|
|
|
|
|
|
|
def test_cli_help(self):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Test getting help from cli"""
|
|
|
|
result = self.env.run("python-escpos", "-h")
|
2016-03-28 21:23:18 +00:00
|
|
|
assert not result.stderr
|
2021-10-30 16:15:22 +00:00
|
|
|
assert "usage" in result.stdout
|
2016-03-28 21:23:18 +00:00
|
|
|
|
2016-07-17 09:17:43 +00:00
|
|
|
def test_cli_version(self):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Test the version string"""
|
|
|
|
result = self.env.run("python-escpos", "version")
|
2016-07-17 09:17:43 +00:00
|
|
|
assert not result.stderr
|
2023-08-09 22:18:02 +00:00
|
|
|
assert escpos.__version__ == result.stdout.strip()
|
2016-07-17 09:17:43 +00:00
|
|
|
|
2023-10-05 12:15:19 +00:00
|
|
|
def test_cli_version_extended(self):
|
|
|
|
"""Test the extended version information"""
|
|
|
|
result = self.env.run("python-escpos", "version_extended")
|
|
|
|
assert not result.stderr
|
|
|
|
assert escpos.__version__ in result.stdout
|
|
|
|
# test that additional information on e.g. Serial is printed
|
|
|
|
assert "Serial" in result.stdout
|
|
|
|
|
2016-03-28 21:23:18 +00:00
|
|
|
def test_cli_text(self):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Make sure text returns what we sent it"""
|
|
|
|
test_text = "this is some text"
|
2016-03-28 21:23:18 +00:00
|
|
|
result = self.env.run(
|
2021-10-30 16:15:22 +00:00
|
|
|
*(
|
|
|
|
self.default_args
|
|
|
|
+ (
|
|
|
|
"text",
|
|
|
|
"--txt",
|
|
|
|
test_text,
|
|
|
|
)
|
|
|
|
)
|
2016-03-28 21:23:18 +00:00
|
|
|
)
|
|
|
|
assert not result.stderr
|
|
|
|
assert DEVFILE_NAME in result.files_updated.keys()
|
2023-12-05 23:25:36 +00:00
|
|
|
assert (
|
|
|
|
result.files_updated[DEVFILE_NAME].bytes == "\x1bt\x00" + test_text + "\n"
|
|
|
|
)
|
2016-03-28 21:23:18 +00:00
|
|
|
|
2023-08-09 22:18:02 +00:00
|
|
|
def test_cli_text_invalid_args(self):
|
2021-10-30 16:15:22 +00:00
|
|
|
"""Test a failure to send valid arguments"""
|
2016-03-28 21:23:18 +00:00
|
|
|
result = self.env.run(
|
2021-10-30 16:15:22 +00:00
|
|
|
*(self.default_args + ("text", "--invalid-param", "some data")),
|
2016-03-28 21:23:18 +00:00
|
|
|
expect_error=True,
|
2023-08-09 22:18:02 +00:00
|
|
|
expect_stderr=True,
|
2016-03-28 21:23:18 +00:00
|
|
|
)
|
2023-08-09 22:18:02 +00:00
|
|
|
assert result.returncode == 2
|
2021-10-30 16:15:22 +00:00
|
|
|
assert "error:" in result.stderr
|
2016-03-28 21:23:18 +00:00
|
|
|
assert not result.files_updated
|