From e73b5771785c8e43872cef6cf661466a20603be4 Mon Sep 17 00:00:00 2001 From: jaseg Date: Tue, 21 Jun 2022 13:55:31 +0200 Subject: add pytest tests --- gerbolyze/tests/resources/svg_feature_test.svg | 918 +++++++++++++++++++++++++ gerbolyze/tests/resources/test_gerber_8seg.zip | Bin 0 -> 258478 bytes gerbolyze/tests/test_integration.py | 65 ++ 3 files changed, 983 insertions(+) create mode 100644 gerbolyze/tests/resources/svg_feature_test.svg create mode 100644 gerbolyze/tests/resources/test_gerber_8seg.zip create mode 100644 gerbolyze/tests/test_integration.py diff --git a/gerbolyze/tests/resources/svg_feature_test.svg b/gerbolyze/tests/resources/svg_feature_test.svg new file mode 100644 index 0000000..475dbc2 --- /dev/null +++ b/gerbolyze/tests/resources/svg_feature_test.svg @@ -0,0 +1,918 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple path + + corner path + + curved path + + group; +endcaps and joins + + + + + + plain fill + + fill and stroke + + closed path + + predefined shapes + + + + + open clip + + + + + + + closed clip + + filled clip + nested clip + + + + + + fonts + + A + A + + transforms + + + + + + + + pattern + + occlusion + + + + + + + + + diff --git a/gerbolyze/tests/resources/test_gerber_8seg.zip b/gerbolyze/tests/resources/test_gerber_8seg.zip new file mode 100644 index 0000000..81a1354 Binary files /dev/null and b/gerbolyze/tests/resources/test_gerber_8seg.zip differ diff --git a/gerbolyze/tests/test_integration.py b/gerbolyze/tests/test_integration.py new file mode 100644 index 0000000..c930b87 --- /dev/null +++ b/gerbolyze/tests/test_integration.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +# +# Copyright 2022 Jan 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. +# + +import sys +import subprocess +import tempfile +from pathlib import Path + +import pytest + + +REFERENCE_GERBERS = ['test_gerber_8seg.zip'] +REFERENCE_SVGS = ['svg_feature_test.svg'] + +reference_path = lambda reference: Path(__file__).parent / 'resources' / str(reference) + + +def run_command(*args): + try: + proc = subprocess.run(args, check=True, capture_output=True) + except subprocess.CalledProcessError as e: + print(e.stdout.decode()) + print(e.stderr.decode(), file=sys.stderr) + raise + +def test_template_round_trip(): + with tempfile.NamedTemporaryFile(suffix='.svg') as out_svg,\ + tempfile.TemporaryDirectory() as out_dir: + run_command('python', '-m', 'gerbolyze', 'empty-template', '--force', out_svg.name) + run_command('python', '-m', 'gerbolyze', 'convert', out_svg.name, out_dir) + +def test_zip_write(): + with tempfile.NamedTemporaryFile(suffix='.svg') as out_svg,\ + tempfile.NamedTemporaryFile(suffix='.zip') as out_zip: + run_command('python', '-m', 'gerbolyze', 'empty-template', '--force', out_svg.name) + run_command('python', '-m', 'gerbolyze', 'convert', out_svg.name, out_zip.name) + +@pytest.mark.parametrize('reference', REFERENCE_SVGS) +def test_complex_conversion(reference): + infile = reference_path(reference) + with tempfile.NamedTemporaryFile(suffix='.zip') as out_zip: + run_command('python', '-m', 'gerbolyze', 'convert', infile, out_zip.name) + run_command('python', '-m', 'gerbolyze', 'convert', '--pattern-complete-tiles-only', '--use-apertures-for-patterns', infile, out_zip.name) + +@pytest.mark.parametrize('reference', REFERENCE_GERBERS) +def test_template(reference): + with tempfile.NamedTemporaryFile(suffix='.zip') as out_svg: + infile = reference_path(reference) + run_command('python', '-m', 'gerbolyze', 'template', '--top', '--force', infile, out_svg.name) + run_command('python', '-m', 'gerbolyze', 'template', '--bottom', '--force', '--vector', infile, out_svg.name) + -- cgit