Skip to content

Commit

Permalink
xfail test for 3.8 vtk error
Browse files Browse the repository at this point in the history
  • Loading branch information
inkhey committed Nov 5, 2019
1 parent af54b8b commit 088125c
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 18 deletions.
31 changes: 21 additions & 10 deletions preview_generator/preview/builder/cad__vtk.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,26 @@
import typing
import uuid

from vtk import vtkActor
from vtk import vtkNamedColors
from vtk import vtkPNGWriter
from vtk import vtkPolyDataMapper
from vtk import vtkRenderer
from vtk import vtkRenderWindow
from vtk import vtkSTLReader
from vtk import vtkVersion
from vtk import vtkWindowToImageFilter

from preview_generator.exception import BuilderDependencyNotFound
from preview_generator.preview.builder.image__pillow import ImagePreviewBuilderPillow # nopep8
from preview_generator.preview.generic_preview import PreviewBuilder
from preview_generator.utils import ImgDims

# HACK - G.M - 2019-11-05 - Hack to allow load of module without vtk installed
vtk_installed = True
try:
from vtk import vtkActor
from vtk import vtkNamedColors
from vtk import vtkPNGWriter
from vtk import vtkPolyDataMapper
from vtk import vtkRenderer
from vtk import vtkRenderWindow
from vtk import vtkSTLReader
from vtk import vtkVersion
from vtk import vtkWindowToImageFilter
except ImportError:
vtk_installed = False


class ImagePreviewBuilderVtk(PreviewBuilder):
@classmethod
Expand All @@ -35,6 +41,11 @@ def get_supported_mimetypes(cls) -> typing.List[str]:
"application/x-navistyle",
]

@classmethod
def check_dependencies(cls) -> None:
if not vtk_installed:
raise BuilderDependencyNotFound("this builder requires vtk to be available")

@classmethod
def dependencies_versions(cls) -> typing.Optional[str]:
vtk_version = vtkVersion()
Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ force_grid_wrap = 0
use_parentheses = true
skip_glob = .eggs*,.venv
known_standard_library = hashlib, logging, mimetype, typing, os, sys, abc, io, json, datetime, subprocess, tempfile
known_third_party =PIL,PyPDF2,magic,pdf2image,pyexifinfo,pytest,scribus,vtk,wand,xvfbwrapper
known_third_party =PIL,PyPDF2,magic,pdf2image,pyexifinfo,pytest,scribus,wand,xvfbwrapper
known_first_party = preview_generator
[flake8]
max-line-length = 100
Expand Down
6 changes: 5 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
"xvfbwrapper",
"pathlib",
"pdf2image",
"vtk",
]
tests_require = ["pytest"]

Expand All @@ -52,6 +51,11 @@
if py_version <= (3, 4):
install_requires.append("typing")

# TODO - G.M - 2019-11-05 - restore vtk as normal requirement, vtk is not compatible
# with current version of vtk see https://gitlab.kitware.com/vtk/vtk/issues/17670,
if py_version <= (3, 8):
install_requires.append("vtk")

setup(
name="preview_generator",
version=infos.__version__,
Expand Down
25 changes: 19 additions & 6 deletions tests/input/stl/test_stl_vtk.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import os
import shutil
import sys
import typing

from PIL import Image
import pytest

from preview_generator.preview.builder.cad__vtk import ImagePreviewBuilderVtk
from preview_generator.utils import ImgDims
Expand All @@ -20,25 +22,36 @@ def setup_function(function: typing.Callable) -> None:
shutil.rmtree(CACHE_DIR, ignore_errors=True)


@pytest.mark.xfail(sys.version_info[:2] == (3, 8), reason="vtk support for python 3.8 broken")
def test_to_jpeg() -> None:
os.makedirs(CACHE_DIR)
builder = ImagePreviewBuilderVtk()
assert builder.has_jpeg_preview() is True
size=ImgDims(height=256, width=512)
preview_name='stl_whale_test_vtk'
builder.build_jpeg_preview(file_path=IMAGE_FILE_PATH, size=size, page_id=0, cache_path=CACHE_DIR, preview_name=preview_name)
path_to_file = os.path.join(CACHE_DIR, '{}.jpg'.format(preview_name))
size = ImgDims(height=256, width=512)
preview_name = "stl_whale_test_vtk"
builder.build_jpeg_preview(
file_path=IMAGE_FILE_PATH,
size=size,
page_id=0,
cache_path=CACHE_DIR,
preview_name=preview_name,
)
path_to_file = os.path.join(CACHE_DIR, "{}.jpg".format(preview_name))
assert os.path.exists(path_to_file) is True
assert os.path.getsize(path_to_file) > 0

with Image.open(path_to_file) as jpeg:
assert jpeg.height == 256
assert jpeg.width == 256


@pytest.mark.xfail(sys.version_info[:2] == (3, 8), reason="vtk support for python 3.8 broken")
def test_get_nb_page() -> None:
os.makedirs(CACHE_DIR)
builder = ImagePreviewBuilderVtk()
preview_name='stl_whale_test_vtk'
nb_page = builder.get_page_number(file_path=IMAGE_FILE_PATH, cache_path=CACHE_DIR, preview_name=preview_name)
preview_name = "stl_whale_test_vtk"
nb_page = builder.get_page_number(
file_path=IMAGE_FILE_PATH, cache_path=CACHE_DIR, preview_name=preview_name
)
# FIXME must add parameter force=True/False in the API
assert nb_page == 1

0 comments on commit 088125c

Please sign in to comment.