From 866eafb4eb1648483877125e838af79cd6c156e5 Mon Sep 17 00:00:00 2001 From: jaseg Date: Tue, 21 Feb 2023 23:18:56 +0100 Subject: Add cli test infrastructure --- gerbonara/cli.py | 1 + gerbonara/tests/test_cli.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 gerbonara/tests/test_cli.py (limited to 'gerbonara') diff --git a/gerbonara/cli.py b/gerbonara/cli.py index d24088e..845e44a 100644 --- a/gerbonara/cli.py +++ b/gerbonara/cli.py @@ -299,6 +299,7 @@ def transform(transform, units, output_format, inpath, outpath, @cli.command() +@click.option('--version', is_flag=True, callback=print_version, expose_value=False, is_eager=True) @click.option('--command-line-units', type=Unit(), help='''Units for values given in --transform. Default: millimeter''') @click.option('--warnings', 'format_warnings', type=click.Choice(['default', 'ignore', 'once']), default='default', diff --git a/gerbonara/tests/test_cli.py b/gerbonara/tests/test_cli.py new file mode 100644 index 0000000..b42a216 --- /dev/null +++ b/gerbonara/tests/test_cli.py @@ -0,0 +1,42 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# +# Copyright 2023 Jan Sebastian Götte +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +from pathlib import Path + +import pytest +from click.testing import CliRunner + +from .utils import * +from ..cli import render, rewrite, transform, merge, bounding_box, layers, meta + +class TestRender: + def invoke(self, *args): + runner = CliRunner() + res = runner.invoke(render, list(map(str, args))) + print(res.output) + assert res.exit_code == 0 + return res.output + + def test_basic(self): + assert self.invoke('--version').startswith('Version ') + + @pytest.mark.parametrize('reference', ['example_flash_obround.gbr'], indirect=True) + def test_warnings(self, reference): + with pytest.warns(UserWarning): + self.invoke(reference, '--warnings=once') + -- cgit