Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fail Check, and if ignore it and install, segfault when slice any object #4141

Closed
sl1pkn07 opened this issue Apr 28, 2020 · 26 comments
Closed

Comments

@sl1pkn07
Copy link

sl1pkn07 commented Apr 28, 2020

Version

version_2.2.0.191.gdb49a4516

Operating system type + version

Archlinux

3D printer brand / version + firmware version (if known)

not aplicable

Behavior

  • Describe the problem
    make check fail (ctest -V)
test 4
    Start 4: fff_print_tests

4: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/fff_print/fff_print_tests
4: Test timeout computed to be: 10000000
4: Testing Scenario: init_print functionality
4:     Given: A default config
4:      When: init_print is called with a single mesh.
4:      Then: One mesh/printobject is in the resulting Print object.
4:     Given: A default config
4:      When: init_print is called with a single mesh.
4:      Then: print.process() doesn't crash.
4: fff_print_tests: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/src/libslic3r/GCode/ToolOrdering.cpp:403: void Slic3r::ToolOrdering::fill_wipe_tower_partitions(const Slic3r::PrintConfig&, coordf_t, coordf_t): Assertion `! m_layer_tools.empty() && m_layer_tools.front().has_wipe_tower' failed.
4: 
4: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4: fff_print_tests is a Catch v2.9.2 host application.
4: Run with -? for options
4: 
4: -------------------------------------------------------------------------------
4: Scenario: init_print functionality
4:       Given: A default config
4:        When: init_print is called with a single mesh.
4:        Then: print.process() doesn't crash.
4: -------------------------------------------------------------------------------
4: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/fff_print/test_data.cpp:310
4: ...............................................................................
4: 
4: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/fff_print/test_data.cpp:310: FAILED:
4: due to a fatal error condition:
4:   SIGABRT - Abort (abnormal termination) signal
4: 
4: ===============================================================================
4: test cases: 1 | 1 failed
4: assertions: 2 | 1 passed | 1 failed
4: 
4/5 Test #4: fff_print_tests ..................Child aborted***Exception:   0.67 sec
  • Steps needed to reproduce the problem
    • If this is a command-line slicing issue, include the options used
  cmake ../PrusaSlicer \
      -DCMAKE_BUILD_TYPE=none \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_INSTALL_LIBDIR=lib \
      -DSLIC3R_FHS=ON \
      -DSLIC3R_PCH=OFF \
      -DSLIC3R_WX_STABLE=ON \
      -DSLIC3R_GTK=3 \
      -DSLIC3R_STATIC=OFF \
      -DOpenGL_GL_PREFERENCE=GLVND
  • Expected Results

Check OK

  • Actual Results
    segfault

if ignore the test, and install it. when slice any objet (any, no matter what)
Prusa slicer gets Segfault

prusa-slicer: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/src/libslic3r/GCode/ToolOrdering.cpp:403: void Slic3r::ToolOrdering::fill_wipe_tower_partitions(const Slic3r::PrintConfig&, coordf_t, coordf_t): La declaración `! m_layer_tools.empty() && m_layer_tools.front().has_wipe_tower' no se cumple.
Abortado (`core' generado)

wxwidgets 3.0.4 over GTK3 3.24.18
cmake 3.17.1
gcc 9.3.0

version_2.2.0.0.gd5bcddeed works ok. seems regression

@sl1pkn07
Copy link
Author

same with 2.3.0.alpha0.134

also test 5 fail

test 5
    Start 5: sla_print_tests

5: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/sla_print/sla_print_tests
5: Test timeout computed to be: 10000000
5: Testing Pillar pairhash should be unique
5: Passed in 0.003116 [seconds]
5: 
5: Testing Support point generator should be deterministic if seeded
5: Passed in 0.197815 [seconds]
5: 
5: Testing Flat pad geometry is valid
5: Passed in 0.004813 [seconds]
5: 
5: Testing WingedPadGeometryIsValid
5: Passed in 0.006941 [seconds]
5: 
5: Testing FlatPadAroundObjectIsValid
5: Passed in 0.079693 [seconds]
5: 
5: Testing WingedPadAroundObjectIsValid
5: Passed in 0.08585 [seconds]
5: 
5: Testing ElevatedSupportGeometryIsValid
5: Passed in 1.56501 [seconds]
5: 
5: Testing FloorSupportGeometryIsValid
5: Passed in 1.02906 [seconds]
5: 
5: Testing ElevatedSupportsDoNotPierceModel
5: 
5: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5: sla_print_tests is a Catch v2.9.2 host application.
5: Run with -? for options
5: 
5: -------------------------------------------------------------------------------
5: ElevatedSupportsDoNotPierceModel
5: -------------------------------------------------------------------------------
5: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/sla_print/sla_print_tests.cpp:140
5: ...............................................................................
5: 
5: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/sla_print/sla_test_utils.cpp:46: FAILED:
5:   REQUIRE( notouch )
5: with expansion:
5:   false
5: 
5: Testing FloorSupportsDoNotPierceModel
5: Passed in 3.83622 [seconds]
5: 
5: Testing InitializedRasterShouldBeNONEmpty
5: Passed in 0.000882 [seconds]
5: 
5: Testing MirroringShouldBeCorrect
5: Passed in 0.003873 [seconds]
5: 
5: Testing RasterizedPolygonAreaShouldMatch
5: Passed in 0.091671 [seconds]
5: 
5: Testing Triangle mesh conversions should be correct
5: Passed in 3.2e-05 [seconds]
5: 
5: Testing Raycaster - find intersections of a line and cylinder
5: Passed in 1.6e-05 [seconds]
5: 
5: Testing Raycaster with loaded drillholes
5: Passed in 4.58136 [seconds]
5: 
5: ===============================================================================
5: test cases:    16 |    15 passed | 1 failed
5: assertions: 10824 | 10823 passed | 1 failed
5: 
5/5 Test #5: sla_print_tests ..................***Failed   20.20 sec

@sl1pkn07
Copy link
Author

any notice of this?

greetings

@sl1pkn07
Copy link
Author

@sl1pkn07
Copy link
Author

Works with clang (10.0.0) but explode with GCC (10.1.0)

also this STL explode with

prusa-slicer: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/src/admesh/shared.cpp:217: bool stl_validate(const stl_file *, const indexed_triangle_set &): La declaración `its.vertices.empty() || its.indices.size() == stl->stats.number_of_facets' no se cumple.
Abortado (`core' generado)

(sorry, not works with LC_ALL=C)

dial_indicator_holder-mod.zip
(please rename to .stl)

greertings

@StefanHamminga
Copy link

Same here on Arch Linux, test 5 fails:

5: Testing ElevatedSupportsDoNotPierceModel
5: 
5: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5: sla_print_tests is a Catch v2.9.2 host application.
5: Run with -? for options
5: 
5: -------------------------------------------------------------------------------
5: ElevatedSupportsDoNotPierceModel
5: -------------------------------------------------------------------------------
5: ../tests/sla_print/sla_print_tests.cpp:142
5: ...............................................................................
5: 
5: ../tests/sla_print/sla_test_utils.cpp:46: FAILED:
5:   REQUIRE( notouch )
5: with expansion:
5:   false

System CFLAGS (seem to be ignored):

CFLAGS=-march=haswell -mtune=skylake -O3 --param=ssp-buffer-size=32 -fdevirtualize-speculatively -fno-signed-zeros -fno-trapping-math -fassociative-math  -pipe -fno-plt -fdiagnostics-color=always -fstack-protector-strong -D_FORTIFY_SOURCE=2
CXXFLAGS=-march=haswell -mtune=skylake -O3 --param=ssp-buffer-size=32 -fdevirtualize-speculatively -fno-signed-zeros -fno-trapping-math -fassociative-math  -pipe -fno-plt -fdiagnostics-color=always -fstack-protector-strong -D_FORTIFY_SOURCE=2
CPPFLAGS=-fstack-protector-strong -D_FORTIFY_SOURCE=2
LDFLAGS=-fstack-protector-strong -D_FORTIFY_SOURCE=2 -march=haswell -mtune=skylake -O3 --param=ssp-buffer-size=32 -fdevirtualize-speculatively -fno-signed-zeros -fno-trapping-math -fassociative-math  -Wl,--sort-common,--as-needed,-z,relro -Wl,--check-sections -Wl,--gc-sections

CMake output for the build:

==> Updated version: prusa-slicer-git 2.3.0.alpha0.r336.g143e3a6a3-1
==> Starting build()...
-- The C compiler identification is GNU 10.2.0
-- The CXX compiler identification is GNU 10.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No build type selected, default to Release
-- SLIC3R_ASAN: OFF
-- SLIC3R_BUILD_SANDBOXES: OFF
-- SLIC3R_BUILD_TESTS: ON
-- SLIC3R_FHS: ON
-- SLIC3R_GTK: 3
-- SLIC3R_GUI: ON
-- SLIC3R_MSVC_COMPILE_PARALLEL: ON
-- SLIC3R_MSVC_PDB: ON
-- SLIC3R_PCH: OFF
-- SLIC3R_PERL_XS: OFF
-- SLIC3R_PROFILE: OFF
-- SLIC3R_STATIC: OFF
-- SLIC3R_WX_STABLE: ON
-- SLIC3R_STATIC: OFF
-- CMAKE_PREFIX_PATH: (default)
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.7.3") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (DBUS) does
  not match the name of the calling package (DBus).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/modules/FindDBus.cmake:59 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:169 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found DBUS: /usr/include/dbus-1.0;/usr/lib/dbus-1.0/include  
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found suitable version "1.72.0", minimum required is "1.64.0") found components: system filesystem thread log locale regex chrono atomic date_time 
-- Boost::boost exists
-- Found TBB: /usr/include (found version "2020.3")  
--   TBB_FOUND               = TRUE
--   TBB_INCLUDE_DIRS        = /usr/include
--   TBB_DEFINITIONS         = 
--   TBB_LIBRARIES           = /usr/lib/libtbb.so
--   TBB_DEFINITIONS_DEBUG   = TBB_USE_DEBUG=1
--   TBB_LIBRARIES_DEBUG     = 
--   TBB_DEFINITIONS_RELEASE = 
--   TBB_LIBRARIES_RELEASE   = /usr/lib/libtbb.so
-- Found CURL: /usr/lib/libcurl.so (found version "7.72.0") 
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11") 
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "3.3") 
-- Found EXPAT: /usr/lib/libexpat.so (found version "2.2.9") 
-- Found PNG: /usr/lib/libpng.so (found version "1.6.37") 
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindOpenGL.cmake:305 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  FindOpenGL found both a legacy GL library:

    OPENGL_gl_LIBRARY: /usr/lib/libGL.so

  and GLVND libraries for OpenGL and GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/libGLX.so

  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
  compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
  CMakeLists.txt:396 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found OpenGL: /usr/lib/libOpenGL.so   
-- Found GLEW: /usr/include (found version "2.2.0") 
-- Found NLopt in '/usr/lib'.
-- Using NLopt include directory '/usr/include'.
-- Using NLopt library '/usr/lib/libnlopt.so'.
-- Found OpenVDB: /usr/include (found suitable version "7.1.0", minimum required is "5.0") found components: openvdb 
-- OpenVDB ABI Version: 7
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found version "1.72.0") found components: iostreams system 
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Success
-- Performing Test LLVM_HAS_ATOMICS
-- Performing Test LLVM_HAS_ATOMICS - Success
-- OpenVDB libraries: /usr/lib/libopenvdb.so
-- Miniz NOT found in system, using bundled version...
-- Using qhull from system.
-- IGL NOT found, using bundled version...
-- __cplusplus is 201402
--   --> Do not link with Boost.Thread
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found suitable version "1.72.0", minimum required is "1.48")  
-- Boost include dirs: /usr/include
-- Boost libraries:    
-- Found wxWidgets: -pthread;;;-lwx_baseu-3.0;-lwx_gtk3u_core-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_gl-3.0 (found suitable version "3.0.5", minimum required is "3.0") 
-- wx-config path: /usr/bin/wx-config
-- wx libs: -pthread;;;-lwx_baseu-3.0;-lwx_gtk3u_core-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_gl-3.0;/usr/lib/libpng.so;/usr/lib/libz.so;/usr/lib/libexpat.so;/usr/lib/librt.so
-- Configuring done
-- Generating done
-- Build files have been written to: /storage/tmp/makepkg/build/prusa-slicer-git/src/PrusaSlicer/build

The build warnings generated:
warnings.txt

@StefanHamminga
Copy link

Update: For me the above mentioned work-around of switching to Clang doesn't work, the result is exactly the same.

CMake output:

-- The C compiler identification is Clang 10.0.1
-- The CXX compiler identification is Clang 10.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No build type selected, default to Release
-- SLIC3R_ASAN: OFF
-- SLIC3R_BUILD_SANDBOXES: OFF
-- SLIC3R_BUILD_TESTS: ON
-- SLIC3R_FHS: ON
-- SLIC3R_GTK: 3
-- SLIC3R_GUI: ON
-- SLIC3R_MSVC_COMPILE_PARALLEL: ON
-- SLIC3R_MSVC_PDB: ON
-- SLIC3R_PCH: OFF
-- SLIC3R_PERL_XS: OFF
-- SLIC3R_PROFILE: OFF
-- SLIC3R_STATIC: OFF
-- SLIC3R_WX_STABLE: ON
-- SLIC3R_STATIC: OFF
-- CMAKE_PREFIX_PATH: (default)
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.7.3") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
  The package name passed to `find_package_handle_standard_args` (DBUS) does
  not match the name of the calling package (DBus).  This can lead to
  problems in calling code that expects `find_package` result variables
  (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  cmake/modules/FindDBus.cmake:59 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:169 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found DBUS: /usr/include/dbus-1.0;/usr/lib/dbus-1.0/include  
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found suitable version "1.72.0", minimum required is "1.64.0") found components: system filesystem thread log locale regex chrono atomic date_time 
-- Boost::boost exists
-- Found TBB: /usr/include (found version "2020.3")  
--   TBB_FOUND               = TRUE
--   TBB_INCLUDE_DIRS        = /usr/include
--   TBB_DEFINITIONS         = 
--   TBB_LIBRARIES           = /usr/lib/libtbb.so
--   TBB_DEFINITIONS_DEBUG   = TBB_USE_DEBUG=1
--   TBB_LIBRARIES_DEBUG     = 
--   TBB_DEFINITIONS_RELEASE = 
--   TBB_LIBRARIES_RELEASE   = /usr/lib/libtbb.so
-- Found CURL: /usr/lib/libcurl.so (found version "7.72.0") 
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11") 
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "3.3") 
-- Found EXPAT: /usr/lib/libexpat.so (found version "2.2.9") 
-- Found PNG: /usr/lib/libpng.so (found version "1.6.37") 
CMake Warning (dev) at /usr/share/cmake-3.18/Modules/FindOpenGL.cmake:305 (message):
  Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when
  available.  Run "cmake --help-policy CMP0072" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  FindOpenGL found both a legacy GL library:

    OPENGL_gl_LIBRARY: /usr/lib/libGL.so

  and GLVND libraries for OpenGL and GLX:

    OPENGL_opengl_LIBRARY: /usr/lib/libOpenGL.so
    OPENGL_glx_LIBRARY: /usr/lib/libGLX.so

  OpenGL_GL_PREFERENCE has not been set to "GLVND" or "LEGACY", so for
  compatibility with CMake 3.10 and below the legacy GL library will be used.
Call Stack (most recent call first):
  CMakeLists.txt:396 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found OpenGL: /usr/lib/libOpenGL.so   
-- Found GLEW: /usr/include (found version "2.2.0") 
-- Found NLopt in '/usr/lib'.
-- Using NLopt include directory '/usr/include'.
-- Using NLopt library '/usr/lib/libnlopt.so'.
-- Found OpenVDB: /usr/include (found suitable version "7.1.0", minimum required is "5.0") found components: openvdb 
-- OpenVDB ABI Version: 7
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found version "1.72.0") found components: iostreams system 
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Success
-- Performing Test LLVM_HAS_ATOMICS
-- Performing Test LLVM_HAS_ATOMICS - Success
-- OpenVDB libraries: /usr/lib/libopenvdb.so
-- Miniz NOT found in system, using bundled version...
-- Using qhull from system.
-- IGL NOT found, using bundled version...
-- __cplusplus is 201402
--   --> Do not link with Boost.Thread
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found suitable version "1.72.0", minimum required is "1.48")  
-- Boost include dirs: /usr/include
-- Boost libraries:    
-- Found wxWidgets: -pthread;;;-lwx_baseu-3.0;-lwx_gtk3u_core-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_gl-3.0 (found suitable version "3.0.5", minimum required is "3.0") 
-- wx-config path: /usr/bin/wx-config
-- wx libs: -pthread;;;-lwx_baseu-3.0;-lwx_gtk3u_core-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_gl-3.0;/usr/lib/libpng.so;/usr/lib/libz.so;/usr/lib/libexpat.so;/usr/lib/librt.so
-- Configuring done
-- Generating done
-- Build files have been written to: /storage/tmp/makepkg/build/prusa-slicer-git/src/PrusaSlicer/build

@sl1pkn07
Copy link
Author

sl1pkn07 commented Aug 29, 2020

little hack for DBus check

diff --git a/cmake/modules/FindDBus.cmake b/cmake/modules/FindDBus.cmake
index 1d0f29dd7..d54d4e516 100644
--- a/cmake/modules/FindDBus.cmake
+++ b/cmake/modules/FindDBus.cmake
@@ -56,4 +56,4 @@ FIND_PATH(DBUS_ARCH_INCLUDE_DIR
 SET(DBUS_INCLUDE_DIRS ${DBUS_INCLUDE_DIR} ${DBUS_ARCH_INCLUDE_DIR})
 
 INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(DBUS REQUIRED_VARS DBUS_INCLUDE_DIRS DBUS_LIBRARIES)
\ No newline at end of file
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(DBus REQUIRED_VARS DBUS_INCLUDE_DIRS DBUS_LIBRARIES)
\ No newline at end of file
  cd build
  cmake ../PrusaSlicer \
      -DCMAKE_BUILD_TYPE=none \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_INSTALL_LIBDIR=lib \
      -DSLIC3R_FHS=ON \
      -DSLIC3R_PCH=OFF \
      -DSLIC3R_WX_STABLE=ON \
      -DSLIC3R_GTK=3 \
      -DSLIC3R_STATIC=OFF \
      -DOpenGL_GL_PREFERENCE=GLVND \
      -DBUILD_TESTING=ON \
      -DCMAKE_CXX_COMPILER=clang++ \
      -DCMAKE_C_COMPILER=clang
-- The C compiler identification is Clang 10.0.1
-- The CXX compiler identification is Clang 10.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SLIC3R_ASAN: OFF
-- SLIC3R_BUILD_SANDBOXES: OFF
-- SLIC3R_BUILD_TESTS: ON
-- SLIC3R_FHS: ON
-- SLIC3R_GTK: 3
-- SLIC3R_GUI: ON
-- SLIC3R_MSVC_COMPILE_PARALLEL: ON
-- SLIC3R_MSVC_PDB: ON
-- SLIC3R_PCH: OFF
-- SLIC3R_PERL_XS: OFF
-- SLIC3R_PROFILE: OFF
-- SLIC3R_STATIC: OFF
-- SLIC3R_WX_STABLE: ON
-- SLIC3R_STATIC: OFF
-- CMAKE_PREFIX_PATH: (default)
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.7.3") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Found DBus: /usr/include/dbus-1.0;/usr/lib/dbus-1.0/include  
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found suitable version "1.72.0", minimum required is "1.64.0") found components: system filesystem thread log locale regex chrono atomic date_time 
-- Boost::boost exists
-- Found TBB: /usr/include (found version "2020.3")  
--   TBB_FOUND               = TRUE
--   TBB_INCLUDE_DIRS        = /usr/include
--   TBB_DEFINITIONS         = 
--   TBB_LIBRARIES           = /usr/lib/libtbb.so
--   TBB_DEFINITIONS_DEBUG   = TBB_USE_DEBUG=1
--   TBB_LIBRARIES_DEBUG     = 
--   TBB_DEFINITIONS_RELEASE = 
--   TBB_LIBRARIES_RELEASE   = /usr/lib/libtbb.so
-- Found CURL: /usr/lib/libcurl.so (found version "7.72.0") 
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11") 
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "3.3") 
-- Found EXPAT: /usr/lib/libexpat.so (found version "2.2.9") 
-- Found PNG: /usr/lib/libpng.so (found version "1.6.37") 
-- Found OpenGL: /usr/lib/libOpenGL.so   
-- Found GLEW: /usr/include (found version "2.2.0") 
-- Found NLopt in '/usr/lib'.
-- Using NLopt include directory '/usr/include'.
-- Using NLopt library '/usr/lib/libnlopt.so'.
-- Found OpenVDB: /usr/include (found suitable version "7.1.0", minimum required is "5.0") found components: openvdb 
-- OpenVDB ABI Version: 7
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found version "1.72.0") found components: iostreams system 
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Success
-- Performing Test LLVM_HAS_ATOMICS
-- Performing Test LLVM_HAS_ATOMICS - Success
-- OpenVDB libraries: /usr/lib/libopenvdb.so
-- Miniz NOT found in system, using bundled version...
-- Using qhull from system.
-- [libigl] Looking for Eigen3
-- IGL found, using system version...
-- __cplusplus is 201402
--   --> Do not link with Boost.Thread
-- Found Boost: /usr/lib64/cmake/Boost-1.72.0/BoostConfig.cmake (found suitable version "1.72.0", minimum required is "1.48")  
-- Boost include dirs: /usr/include
-- Boost libraries:    
-- Found wxWidgets: -pthread;;;-lwx_baseu-3.0;-lwx_gtk3u_core-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_gl-3.0 (found suitable version "3.0.5", minimum required is "3.0") 
-- wx-config path: /usr/bin/wx-config
-- wx libs: -pthread;;;-lwx_baseu-3.0;-lwx_gtk3u_core-3.0;-lwx_gtk3u_adv-3.0;-lwx_gtk3u_html-3.0;-lwx_gtk3u_gl-3.0;/usr/lib/libpng.so;/usr/lib/libz.so;/usr/lib/libexpat.so;/usr/lib/librt.so
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/makepkg/sl1-prusa-slicer-git/src/build

builds and check without problem

pkgbuild

pkgname=sl1-prusa-slicer-git
pkgver=version_2.3.0.alpha0.336.g143e3a6a3
pkgrel=1
pkgdesc='G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.). (GIT Version)'
arch=('x86_64')
url='https://github.com/prusa3d/PrusaSlicer'
license=('AGPL3')
depends=('boost-libs'
         'cgal'
         'curl'
         'glew'
         'intel-tbb'
         'nlopt'
         'wxgtk3'
         'qhull'
         )
makedepends=('cmake'
             'boost'
             'cereal'
             'eigen'
             'gtest'
             'libigl'
             'clang'
             )
source=('git+https://github.com/prusa3d/PrusaSlicer.git'
        'prusa-slicer.desktop'
        )
sha256sums=('SKIP'
            '26b66701cb2512f0d524add44689e2478c0b875f73103034e74544a9574782c5'
            )
conflicts=('prusa-slicer')
provides=('prusa-slicer')

pkgver() {
  cd PrusaSlicer
  echo "$(git describe --long --tags | tr - .)"
}

prepare() {
 mkdir -p build

 sed 's|DBUS REQUIRED_VARS|DBus REQUIRED_VARS|g' -i PrusaSlicer/cmake/modules/FindDBus.cmake
}

build() {
  cd build
  cmake ../PrusaSlicer \
      -DCMAKE_BUILD_TYPE=none \
      -DCMAKE_INSTALL_PREFIX=/usr \
      -DCMAKE_INSTALL_LIBDIR=lib \
      -DSLIC3R_FHS=ON \
      -DSLIC3R_PCH=OFF \
      -DSLIC3R_WX_STABLE=ON \
      -DSLIC3R_GTK=3 \
      -DSLIC3R_STATIC=OFF \
      -DOpenGL_GL_PREFERENCE=GLVND \
      -DBUILD_TESTING=ON \
      -DCMAKE_CXX_COMPILER=clang++ \
      -DCMAKE_C_COMPILER=clang

  make
}

check() {
  cd build
  ctest -V
}

package () {
    make -C build DESTDIR="${pkgdir}" install

    # Desktop file
    install -Dm644 "${srcdir}/prusa-slicer.desktop" "${pkgdir}/usr/share/applications/prusa-slicer.desktop"

    install -Dm644 "${pkgdir}/usr/share/PrusaSlicer/icons/PrusaSlicer_192px.png" "${pkgdir}/usr/share/pixmaps/prusa-slicer.png"
}

git describe --long --tags : version_2.3.0.alpha0.336.g143e3a6a3

@StefanHamminga
Copy link

StefanHamminga commented Aug 29, 2020

I just did another build, replacing all CXXFLAGS with just "-O2" and it passes the tests now. Without above dbus patch btw.

@sl1pkn07 Could you post your CXXFLAGS (and similar)?

@sl1pkn07
Copy link
Author

#-- Compiler and Linker Flags
CPPFLAGS="-D_FORTIFY_SOURCE=2"
#CFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt"
CFLAGS="-march=native -O2 -pipe -fno-plt"
#CXXFLAGS="-march=x86-64 -mtune=generic -O2 -pipe -fno-plt"
CXXFLAGS="-march=native -O2 -pipe -fno-plt"
LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now"
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
MAKEFLAGS="-j40"
#-- Debugging flags
DEBUG_CFLAGS="-g -fvar-tracking-assignments"
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"

@StefanHamminga
Copy link

And that works now? Or did it fail the test with those? In case it failed it seems the overlap is in extended instruction use (native / haswell) and disabling the PLT.

@sl1pkn07
Copy link
Author

works. but only if is builded with clang

@StefanHamminga
Copy link

Can you check with gcc? Unsetting LDFLAGS and CPPFLAGS, setting CFLAGS and CXXFLAGS to "-O2"? That worked for me.

@sl1pkn07
Copy link
Author

nope. fails with gcc (10.20) for me

@StefanHamminga
Copy link

Turns out, last time it built and tested ok, but segfaults on running:

0x00005555562ec0e3 in ?? ()
#0  0x00005555562ec0e3 in ?? ()
#1  0x00005555562c1d03 in ?? ()
#2  0x0000555555eeb313 in ?? ()
#3  0x0000555555eebc35 in ?? ()
#4  0x0000555555eee141 in ?? ()
#5  0x0000555555f1864d in ?? ()
#6  0x0000555555cc2ae7 in ?? ()
#7  0x0000555555cc3842 in ?? ()
#8  0x00007ffff6dbb4c1 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#9  0x00007ffff6dbb84b in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#10 0x00007ffff6dbb8e1 in wxEvtHandler::TryHereOnly(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#11 0x00007ffff6dbb994 in wxEvtHandler::ProcessEventLocally(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#12 0x00007ffff6dbba32 in wxEvtHandler::ProcessEvent(wxEvent&) () from /usr/lib/libwx_baseu-3.0.so.0
#13 0x00007ffff6c33cf9 in wxAppConsoleBase::ProcessIdle() () from /usr/lib/libwx_baseu-3.0.so.0
#14 0x00007ffff6889ad5 in wxAppBase::ProcessIdle() () from /usr/lib/libwx_gtk3u_core-3.0.so.0
#15 0x00007ffff67b7306 in wxApp::DoIdle() () from /usr/lib/libwx_gtk3u_core-3.0.so.0
#16 0x00007ffff67b7424 in ?? () from /usr/lib/libwx_gtk3u_core-3.0.so.0
#17 0x00007ffff2853340 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#18 0x00007ffff28a11d9 in ?? () from /usr/lib/libglib-2.0.so.0
#19 0x00007ffff2851c03 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#20 0x00007ffff2d754af in gtk_dialog_run () from /usr/lib/libgtk-3.so.0
#21 0x00007ffff685d21e in wxMessageDialog::ShowModal() () from /usr/lib/libwx_gtk3u_core-3.0.so.0
#22 0x0000555555cb9047 in ?? ()
#23 0x0000555555cb91ee in ?? ()
#24 0x0000555555cc1555 in ?? ()
#25 0x0000555555cc1ec6 in ?? ()
#26 0x00007ffff6cc5822 in wxEntry(int&, wchar_t**) () from /usr/lib/libwx_baseu-3.0.so.0
#27 0x0000555555764f36 in ?? ()
#28 0x00005555557501f5 in ?? ()
#29 0x00007ffff5ec5152 in __libc_start_main () from /usr/lib/libc.so.6
#30 0x000055555575de0e in ?? ()

@rtyr
Copy link
Collaborator

rtyr commented Feb 16, 2021

Is this issue still valid? Can we close it?

@sl1pkn07
Copy link
Author

let me check

@sl1pkn07
Copy link
Author

failed in 3 checks

test 2
    Start 2: libslic3r_tests

2: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/libslic3r/libslic3r_tests
2: Test timeout computed to be: 10000000
2: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/libslic3r/libslic3r_tests: symbol lookup error: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/libslic3r/libslic3r_tests: undefined symbol: _ZN3tbb10interface78internal15task_arena_base24internal_max_concurrencyEPKNS0_10task_arenaE
2/5 Test #2: libslic3r_tests ..................***Failed    0.02 sec
test 3
    Start 3: slic3rutils_tests

3: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/slic3rutils/slic3rutils_tests " exclude:[NotWorking]"
3: Test timeout computed to be: 10000000
3: Filters: exclude:[NotWorking]
3: No test cases matched 'exclude:[NotWorking]'
3: ===============================================================================
3: No tests ran
3: 
3/5 Test #3: slic3rutils_tests ................   Passed    0.03 sec
test 4
    Start 4: fff_print_tests

4: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/fff_print/fff_print_tests
4: Test timeout computed to be: 10000000
4: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/fff_print/fff_print_tests: symbol lookup error: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/fff_print/fff_print_tests: undefined symbol: _ZN3tbb10interface78internal15task_arena_base24internal_max_concurrencyEPKNS0_10task_arenaE
4/5 Test #4: fff_print_tests ..................***Failed    0.01 sec
test 5
    Start 5: sla_print_tests

5: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/sla_print/sla_print_tests
5: Test timeout computed to be: 10000000
5: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/sla_print/sla_print_tests: symbol lookup error: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/sla_print/sla_print_tests: undefined symbol: _ZN3tbb10interface78internal15task_arena_base24internal_max_concurrencyEPKNS0_10task_arenaE
5/5 Test #5: sla_print_tests ..................***Failed    0.01 sec

40% tests passed, 3 tests failed out of 5

Total Test time (real) =   0.27 sec

The following tests FAILED:
          2 - libslic3r_tests (Failed)
          4 - fff_print_tests (Failed)
          5 - sla_print_tests (Failed)
Errors while running CTest

i need more test

@sl1pkn07
Copy link
Author

sl1pkn07 commented Mar 22, 2021

hi, i found the poblem of my latest report.

EDITED: my fault. my error above is fixed

tested again (commit 1c2d264) with

LD_LIBRARY_PATH=/usr/lib ctest -V

and now fail with:

2: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/libslic3r/libslic3r_tests
2: Test timeout computed to be: 10000000
2: Testing sort_remove_duplicates
2: Passed in 1e-05 [seconds]
2: 
2: Testing string_printf
2: Empty format with empty data should return empty string
2: String output length should be the same as input
2: String format should be interpreted as with sprintf
2: String format should survive large input data
2: Passed in 7.6e-05 [seconds]
2: 
2: Testing Scenario: Reading 3mf file
2:     Given: umlauts in the path of the file
2:      When: 3mf model is read
2:      Then: load should succeed
2: Passed in 0.007112 [seconds]
2: 
2: Testing Scenario: Export+Import geometry to/from 3mf file cycle
2:     Given: world vertices coordinates before save
2:      When: model is saved+loaded to/from 3mf file
2:      Then: world vertices coordinates after load match
2: Passed in 0.038296 [seconds]
2: 
2: Testing Building a tree over a box, ray caster and closest query
2: Passed in 0.000291 [seconds]
2: 
2: Testing Scenario: Constant offset
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: plus 1mm, miter 2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: minus 1mm, miter 2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: plus 1mm, miter 1.5x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: minus 1mm, miter 1.5x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: plus 1mm, miter 1.2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: minus 1mm, miter 1.2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: plus 1mm, miter 2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: minus 1mm, miter 2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: plus 1mm, miter 1.5x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: minus 1mm, miter 1.5x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: plus 1mm, miter 1.2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: minus 1mm, miter 1.2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.5x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.5x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.5x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.5x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm right angle triangle
2: Slic3r::offset()
2: Outer offset 1mm, miter 2x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::offset()
2: Outer offset 1mm, miter 1.5x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::offset()
2: Outer offset 1mm, miter 1.2x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::variable_offset_outer()
2: Outer offset 1mm, miter 2x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::variable_offset_outer()
2: Outer offset 1mm, miter 1.5x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::variable_offset_outer()
2: Outer offset 1mm, miter 1.2x
2:      Then: Area matches
2: Passed in 0.004015 [seconds]
2: 
2: Testing Scenario: Various Clipper operations - xs/t/11_clipper.t
2:     Given: square_with_hole
2:      When: offset
2:      Then: offset matches
2:     Given: square_with_hole
2:      When: offset_ex
2:      Then: offset matches
2:     Given: square_with_hole
2:      When: offset2_ex
2:      Then: offset matches
2:     Given: square_with_hole 2
2:      When: offset2_ex
2:      Then: offset matches
2:     Given: square and hole
2:      When: diff_ex
2:      Then: hole is created
2:     Given: polyline
2:      When: intersection_pl
2:      Then: correct number of result lines
2:     Given: polyline
2:      When: intersection_pl
2:      Then: result lines have correct length
2:     Given: polyline
2:      When: diff_pl
2:      Then: correct number of result lines
2:     Given: polyline
2:      When: diff_pl
2:      Then: the left result line has correct length
2:     Given: polyline
2:      When: diff_pl
2:      Then: the right result line has correct length
2:     Given: polyline
2:      When: diff_pl
2:      Then: the central result line has correct length
2:     Given: Clipper bug #96 / Slic3r issue #2028
2:      Then: intersection_pl - result is not empty
2:     Given: Clipper bug #122
2:      Then: intersection_pl - result is not empty
2:     Given: Clipper bug #126
2:      Then: intersection_pl - result is not empty
2:     Given: Clipper bug #126
2:      Then: intersection_pl - result has same length as subject polyline
2: Passed in 0.001267 [seconds]
2: 
2: Testing Scenario: Various Clipper operations - t/clipper.t
2:     Given: square with hole
2:      When: intersection_ex with another square
2:      Then: intersection area matches (hole is preserved)
2:     Given: square with hole 2
2:      When: union_ex with another square
2:      Then: union of two ccw and one cw is a contour with no holes
2:     Given: square with hole 2
2:      When: diff_ex with another square
2:      Then: difference of a cw from two ccw is a contour with one hole
2:     Given: yet another square
2:      When: no-op diff_pl
2:      Then: returns the right number of polylines
2:     Given: yet another square
2:      When: no-op diff_pl
2:      Then: returns the unmodified input polyline
2: Passed in 0.000348 [seconds]
2: 
2: Testing Traversing Clipper PolyTree
2: Traverse into Polygons WITHOUT spatial ordering
2: Traverse into ExPolygons WITHOUT spatial ordering
2: Traverse into Polygons WITH spatial ordering
2: Traverse into ExPolygons WITH spatial ordering
2: Passed in 0.000226 [seconds]
2: 
2: Testing Scenario: Generic config validation performs as expected.
2:     Given: A config generated from default options
2:      When: perimeter_extrusion_width is set to 250%, a valid value
2:      Then: The config is read as valid.
2:     Given: A config generated from default options
2:      When: perimeter_extrusion_width is set to -10, an invalid value
2:      Then: Validate returns error
2:     Given: A config generated from default options
2:      When: perimeters is set to -10, an invalid value
2:      Then: Validate returns error
2: Passed in 0.004122 [seconds]
2: 
2: Testing Scenario: Config accessor functions perform as expected.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a boolean value
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a string value representing a 0 or 1
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a string value representing something other than 0 or 1
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a string value representing something other than 0 or 1
2:       And: Value is unchanged.
2:     Given: A config generated from default options
2:      When: A boolean option is set to an int value
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: A numeric option is set from serialized string
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: An floating-point option is set through the integer interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A floating-point option is set through the double interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: An integer-based option is set through the double interface
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: A numeric option is set to a non-numeric value.
2:      Then: A BadOptionTypeException exception is thown.
2:     Given: A config generated from default options
2:      When: A numeric option is set to a non-numeric value.
2:      Then: The value does not change.
2:     Given: A config generated from default options
2:      When: A string option is set through the string interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A string option is set through the integer interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A string option is set through the double interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A float or percent is set as a percent through the string interface.
2:      Then: Value and percent flag are 100/true
2:     Given: A config generated from default options
2:      When: A float or percent is set as a float through the string interface.
2:      Then: Value and percent flag are 100/false
2:     Given: A config generated from default options
2:      When: A float or percent is set as a float through the int interface.
2:      Then: Value and percent flag are 100/false
2:     Given: A config generated from default options
2:      When: A float or percent is set as a float through the double interface.
2:      Then: Value and percent flag are 100.5/false
2:     Given: A config generated from default options
2:      When: An invalid option is requested during set.
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: An invalid option is requested during get.
2:      Then: A UnknownOptionException exception is thrown.
2:     Given: A config generated from default options
2:      When: An invalid option is requested during opt.
2:      Then: A UnknownOptionException exception is thrown.
2:     Given: A config generated from default options
2:      When: getX called on an unset option.
2:      Then: The default is returned.
2:     Given: A config generated from default options
2:      When: getFloat called on an option that has been set.
2:      Then: The set value is returned.
2: Passed in 0.008695 [seconds]
2: 
2: Testing Scenario: Config ini load/save interface
2:      When: new_from_ini is called
2:      Then: Config object contains ini file options.
2: Passed in 0.000121 [seconds]
2: 
2: Testing Scenario: Elephant foot compensation
2:     Given: Contour with hole
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Tiny contour
2:      When: Compensated
2:      Then: Tiny contour is not compensated
2:     Given: Large box
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Thin ring (GH issue #2085)
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Rectangle with a narrow part sticking out
2:      When: Partially compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Rectangle with a narrow part sticking out
2:      When: Fully compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Box with hole close to wall (GH issue #2998)
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Spirograph wheel
2:      When: Partially compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Spirograph wheel
2:      When: Fully compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Spirograph wheel
2:      When: Brutally compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Vase with fins
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2: Passed in 0.100268 [seconds]
2: 
2: Testing Polygon::contains works properly
2: Passed in 8e-06 [seconds]
2: 
2: Testing Scenario: Intersections of line segments
2:     Given: Integer coordinates
2:      Then: The intersection is valid
2:     Given: Scaled coordinates
2:      Then: There is still an intersection
2: Passed in 3.7e-05 [seconds]
2: 
2: Testing Creating a polyline generates the obvious lines
2: Passed in 8e-06 [seconds]
2: 
2: Testing Splitting a Polygon generates a polyline correctly
2: Passed in 7e-06 [seconds]
2: 
2: Testing Bounding boxes are scaled appropriately
2: Passed in 7e-06 [seconds]
2: 
2: Testing Offseting a line generates a polygon correctly
2: Passed in 1.8e-05 [seconds]
2: 
2: Testing Scenario: Circle Fit, TaubinFit with Newton's method
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the entire array
2:      Then: A center point of -6,0 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the first four points
2:      Then: A center point of -6,0 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the middle four points
2:      Then: A center point of -6,0 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the entire array
2:      Then: A center point of 3,9 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the first four points
2:      Then: A center point of 3,9 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the middle four points
2:      Then: A center point of 3,9 is returned.
2:     Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the entire array
2:      Then: A center point of scaled 3,9 is returned.
2:     Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the first four points
2:      Then: A center point of scaled 3,9 is returned.
2:     Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the middle four points
2:      Then: A center point of scaled 3,9 is returned.
2: Passed in 0.000258 [seconds]
2: 
2: Testing Scenario: Path chaining
2:     Given: A path
2:      Then: Chained with no diagonals (thus 26 units long)
2:     Given: Gyroid infill end points
2:      Then: Chained taking the shortest path
2:     Given: Loop pieces
2:      Then: Connected without a gap
2: Passed in 0.003751 [seconds]
2: 
2: Testing Scenario: Line distances
2:     Given: A line
2:      Then: Points on the line segment have 0 distance
2:     Given: A line
2:      Then: Points off the line have the appropriate distance
2: Passed in 5.8e-05 [seconds]
2: 
2: Testing Scenario: Polygon convex/concave detection
2:     Given: A Square with dimension 100
2:      Then: It has 4 convex points counterclockwise
2:     Given: A Square with dimension 100
2:      Then: It has 4 concave points clockwise
2:     Given: A Square with an extra colinearvertex
2:      Then: It has 4 convex points counterclockwise
2:     Given: A Square with an extra collinear vertex in different order
2:      Then: It has 4 convex points counterclockwise
2:     Given: A triangle
2:      Then: it has three convex vertices
2:     Given: A triangle with an extra collinear point
2:      Then: it has three convex vertices
2:     Given: A polygon with concave vertices with angles of specifically 4/3pi
2:      Then: the correct number of points are detected
2: Passed in 0.000219 [seconds]
2: 
2: Testing Triangle Simplification does not result in less than 3 points
2: Passed in 2.1e-05 [seconds]
2: 
2: Testing Scenario: Ported from xs/t/14_geometry.t
2:     Given: square
2: convex hull returns the correct number of points
2: arrange returns expected number of positions
2: directions_parallel
2: Passed in 6.1e-05 [seconds]
2: 
2: Testing Scenario: Placeholder parser scripting
2: nested config options (legacy syntax)
2: array reference
2: whitespaces and newlines are maintained
2: math: 2*3
2: math: 2*3/6
2: math: 2*3/12
2: math: 2.*3/12
2: math: 10 % 2.5
2: math: 11 % 2.5
2: math: 2*(3-12)
2: math: 2*foo*(3-12)
2: math: 2*bar*(3-12)
2: math: 2.5*bar*(3-12)
2: math: min(12, 14)
2: math: max(12, 14)
2: math: min(13.4, -1238.1)
2: math: max(13.4, -1238.1)
2: math: int(13.4)
2: math: int(-13.4)
2: perimeter_extrusion_width
2: first_layer_extrusion_width
2: support_material_xy_spacing
2: external_perimeter_speed
2: infill_overlap
2: first_layer_speed
2: boolean expression parser: 12 == 12
2: boolean expression parser: 12 != 12
2: boolean expression parser: regex matches
2: boolean expression parser: regex does not match
2: boolean expression parser: accessing variables, equal
2: boolean expression parser: accessing variables, not equal
2: boolean expression parser: (12 == 12) and (13 != 14)
2: boolean expression parser: (12 == 12) && (13 != 14)
2: boolean expression parser: (12 == 12) or (13 == 14)
2: boolean expression parser: (12 == 12) || (13 == 14)
2: boolean expression parser: (12 == 12) and not (13 == 14)
2: boolean expression parser: ternary true
2: boolean expression parser: ternary false
2: boolean expression parser: ternary false 2
2: boolean expression parser: ternary true 2
2: boolean expression parser: lower than - false
2: boolean expression parser: lower than - true
2: boolean expression parser: greater than - true
2: boolean expression parser: greater than - false
2: boolean expression parser: lower than or equal- false
2: boolean expression parser: lower than or equal - true
2: boolean expression parser: greater than or equal - true
2: boolean expression parser: greater than or equal - false
2: boolean expression parser: lower than or equal (same values) - true
2: boolean expression parser: greater than or equal (same values) - true
2: complex expression
2: complex expression2
2: complex expression3
2: Passed in 0.0306 [seconds]
2: 
2: Testing Scenario: Remove collinear points from Polygon
2:     Given: Polygon with collinear points
2:      When: collinear points are removed
2:      Then: Leading collinear points are removed
2:     Given: Polygon with collinear points
2:      When: collinear points are removed
2:      Then: Trailing collinear points are removed
2:     Given: Polygon with collinear points
2:      When: collinear points are removed
2:      Then: Number of remaining points is correct
2: Passed in 0.000403 [seconds]
2: 
2: Testing Scenario: Iterators
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ it is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ it is not equal to end
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ it) is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ it) is equal to end
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ (++ it)) is equal to begin
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ (++ it)) is not equal to end
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- it is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- it is equal to end
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- it) is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- it) is not equal to end
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- (-- it)) is equal to begin
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- (-- it)) is not equal to end
2:     Given: Polygon with three points
2:      When: Deleting 1st point
2:      Then: Size is 2
2:     Given: Polygon with three points
2:      When: Deleting 1st point
2:      Then: p.begin().remove() == it_2nd
2:     Given: Polygon with three points
2:      When: Deleting 1st point
2:      Then: it_2nd == new begin()
2:     Given: Polygon with three points
2:      When: Deleting 2nd point
2:      Then: Size is 2
2:     Given: Polygon with three points
2:      When: Deleting 2nd point
2:      Then: it_2nd.remove() == it_3rd
2:     Given: Polygon with three points
2:      When: Deleting 2nd point
2:      Then: it_1st == new begin()
2:     Given: Polygon with three points
2:      When: Deleting two points
2:      Then: Size is 1
2:     Given: Polygon with three points
2:      When: Deleting two points
2:      Then: p.begin().next() == p.begin()
2:     Given: Polygon with three points
2:      When: Deleting two points
2:      Then: p.begin().prev() == p.begin()
2:     Given: Polygon with three points
2:      When: Deleting all points
2:      Then: Size is 0
2:     Given: Polygon with three points
2:      When: Deleting all points
2:      Then: ! p.begin().valid()
2:     Given: Polygon with three points
2:      When: Deleting all points
2:      Then: last iterator not valid
2:     Given: Polygon with three points
2:      When: Inserting a point at the beginning
2:      Then: Polygon content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point at the 2nd position
2:      Then: Polygon content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: Initial capacity is 3
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: After removal of the 1st point the capacity is still 3
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: After removal of the 1st point the content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: After insertion at head position the polygon content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: and the capacity is still 3
2: Passed in 0.001384 [seconds]
2: 
2: Testing Scenario: Remove degenerate points from MutablePolygon
2:     Given: Polygon with duplicate points
2:      When: Duplicate points are removed
2:      Then: Polygon content is ok
2: Passed in 3e-05 [seconds]
2: 
2: Testing Scenario: smooth_outward
2:     Given: Convex polygon
2:      When: smooth_outward
2:      Then: Polygon is unmodified
2:     Given: Sharp tiny concave polygon (hole)
2:      When: smooth_outward
2:      Then: Hole is closed
2:     Given: Two polygons
2:      When: smooth_outward
2:      Then: CCW contour unmodified, CW contour removed.
2: Passed in 0.00011 [seconds]
2: 
2: Testing Scenario: Reading an STL file
2:     Given: umlauts in the path of a binary STL file, Czech characters in the file name
2:      When: STL file is read
2:      Then: load should succeed
2:     Given: in ASCII format
2:      When: line endings LF
2:      Then: load should succeed
2:     Given: in ASCII format
2:      When: line endings CRLF
2:      Then: load should succeed
2:     Given: in ASCII format
2:      When: nonstandard STL file (text after ending tags, invalid normals, for example infinities)
2:      Then: load should succeed
2: Passed in 0.010486 [seconds]
2: 
2: Testing CGAL and TriangleMesh conversions
2: Passed in 1.90005 [seconds]
2: 
2: Testing Empty raster should result in empty polygons
2: libslic3r_tests: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/src/libslic3r/SLA/AGGRaster.hpp:151: Slic3r::sla::AGGRaster<PixelRenderer, Renderer, Rasterizer, Scanline>::AGGRaster(const Slic3r::sla::RasterBase::Resolution&, const Slic3r::sla::RasterBase::PixelDim&, const Slic3r::sla::RasterBase::Trafo&, const TColor&, const TColor&, GammaFn&&) [with GammaFn = agg::gamma_power; PixelRenderer = agg::pixfmt_alpha_blend_gray<agg::blender_gray<agg::gray8T<agg::linear> >, agg::row_accessor<unsigned char> >; Renderer = agg::renderer_scanline_aa_solid; Rasterizer = agg::rasterizer_scanline_aa<>; Scanline = agg::scanline_p8; Slic3r::sla::AGGRaster<PixelRenderer, Renderer, Rasterizer, Scanline>::TColor = agg::gray8T<agg::linear>]: Assertion `pd.w_mm != 0 && pd.h_mm != 0' failed.
2: 
2: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2: libslic3r_tests is a Catch v2.13.3 host application.
2: Run with -? for options
2: 
2: -------------------------------------------------------------------------------
2: Empty raster should result in empty polygons
2: -------------------------------------------------------------------------------
2: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/libslic3r/test_marchingsquares.cpp:140
2: ...............................................................................
2: 
2: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/libslic3r/test_marchingsquares.cpp:140: FAILED:
2: due to a fatal error condition:
2:   SIGABRT - Abort (abnormal termination) signal
2: 
2: ===============================================================================
2: test cases:  33 |  32 passed | 1 failed
2: assertions: 350 | 349 passed | 1 failed
2: 
2/5 Test #2: libslic3r_tests ..................Subprocess aborted***Exception:   2.31 sec
5: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/sla_print/sla_print_tests
5: Test timeout computed to be: 10000000
5: Testing Pillar pairhash should be unique
5: Passed in 0.003393 [seconds]
5: 
5: Testing Support point generator should be deterministic if seeded
5: Passed in 0.183629 [seconds]
5: 
5: Testing Flat pad geometry is valid
5: Passed in 0.004474 [seconds]
5: 
5: Testing WingedPadGeometryIsValid
5: Passed in 0.006989 [seconds]
5: 
5: Testing FlatPadAroundObjectIsValid
5: Passed in 0.074247 [seconds]
5: 
5: Testing WingedPadAroundObjectIsValid
5: Passed in 0.084494 [seconds]
5: 
5: Testing ElevatedSupportGeometryIsValid
5: Passed in 6.32604 [seconds]
5: 
5: Testing FloorSupportGeometryIsValid
5: Passed in 5.5236 [seconds]
5: 
5: Testing ElevatedSupportsDoNotPierceModel
5: [2021-03-22 19:34:58.735011] [0x00007f4216bfa640] [error]   Pinhead width is negative!
5: Passed in 25.0894 [seconds]
5: 
5: Testing FloorSupportsDoNotPierceModel
5: [2021-03-22 19:35:16.742796] [0x00007f42147f1640] [error]   Pinhead width is negative!
5: Passed in 15.163 [seconds]
5: 
5: Testing InitializedRasterShouldBeNONEmpty
5: Passed in 0.000898 [seconds]
5: 
5: Testing MirroringShouldBeCorrect
5: Passed in 0.003693 [seconds]
5: 
5: Testing RasterizedPolygonAreaShouldMatch
5: Passed in 0.091751 [seconds]
5: 
5: Testing Triangle mesh conversions should be correct
5: Passed in 2.8e-05 [seconds]
5: 
5: Testing halfcone test
5: Passed in 0.000706 [seconds]
5: 
5: Testing Test concurrency
5: Passed in 5.2e-05 [seconds]
5: 
5: Testing Overhanging point should be supported
5: Passed in 0.002199 [seconds]
5: 
5: Testing Overhanging horizontal surface should be supported
5: Passed in 0.000801 [seconds]
5: 
5: Testing Overhanging edge should be supported
5: Passed in 0.001881 [seconds]
5: 
5: Testing Hollowed cube should be supported from the inside
5: Passed in 1.64427 [seconds]
5: 
5: Testing Two parallel plates should be supported
5: Passed in 0.006415 [seconds]
5: 
5: Testing Raycaster - find intersections of a line and cylinder
5: Passed in 2.2e-05 [seconds]
5: 
5: ===============================================================================
5: All tests passed (13831 assertions in 22 test cases)
5: 
5/5 Test #5: sla_print_tests ..................   Passed   54.27 sec

60% tests passed, 2 tests failed out of 5

Total Test time (real) =  62.29 sec

The following tests FAILED:
          2 - libslic3r_tests (Subprocess aborted)
          3 - slic3rutils_tests (Not Run)
Errors while running CTest

greetings

@sl1pkn07
Copy link
Author

more test failed 9f4e9da

2: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/libslic3r/libslic3r_tests
2: Test timeout computed to be: 10000000
2: Testing sort_remove_duplicates
2: Passed in 1e-05 [seconds]
2: 
2: Testing string_printf
2: Empty format with empty data should return empty string
2: String output length should be the same as input
2: String format should be interpreted as with sprintf
2: String format should survive large input data
2: Passed in 7.4e-05 [seconds]
2: 
2: Testing Scenario: Reading 3mf file
2:     Given: umlauts in the path of the file
2:      When: 3mf model is read
2:      Then: load should succeed
2: Passed in 0.007839 [seconds]
2: 
2: Testing Scenario: Export+Import geometry to/from 3mf file cycle
2:     Given: world vertices coordinates before save
2:      When: model is saved+loaded to/from 3mf file
2:      Then: world vertices coordinates after load match
2: Passed in 0.037776 [seconds]
2: 
2: Testing Building a tree over a box, ray caster and closest query
2: Passed in 0.000304 [seconds]
2: 
2: Testing Scenario: Constant offset
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: plus 1mm, miter 2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: minus 1mm, miter 2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: plus 1mm, miter 1.5x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: minus 1mm, miter 1.5x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: plus 1mm, miter 1.2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::offset()
2: minus 1mm, miter 1.2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: plus 1mm, miter 2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: minus 1mm, miter 2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: plus 1mm, miter 1.5x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: minus 1mm, miter 1.5x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: plus 1mm, miter 1.2x
2:      Then: Area is 22^2mm2
2:     Given: 20mm box
2:      When: Slic3r::variable_offset_outer/inner
2: minus 1mm, miter 1.2x
2:      Then: Area is 18^2mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.5x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.5x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::offset()
2: miter 1.2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.5x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.5x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.2x
2:      When: plus 1mm
2:      Then: Area is 22^2-8^2 mm2
2:     Given: 20mm box with 10mm hole
2: Slic3r::variable_offset_outer()
2: miter 1.2x
2:      When: minus 1mm
2:      Then: Area is 18^2-12^2 mm2
2:     Given: 20mm right angle triangle
2: Slic3r::offset()
2: Outer offset 1mm, miter 2x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::offset()
2: Outer offset 1mm, miter 1.5x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::offset()
2: Outer offset 1mm, miter 1.2x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::variable_offset_outer()
2: Outer offset 1mm, miter 2x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::variable_offset_outer()
2: Outer offset 1mm, miter 1.5x
2:      Then: Area matches
2:     Given: 20mm right angle triangle
2: Slic3r::variable_offset_outer()
2: Outer offset 1mm, miter 1.2x
2:      Then: Area matches
2: Passed in 0.005815 [seconds]
2: 
2: Testing Scenario: Various Clipper operations - xs/t/11_clipper.t
2:     Given: square_with_hole
2:      When: offset
2:      Then: offset matches
2:     Given: square_with_hole
2:      When: offset_ex
2:      Then: offset matches
2:     Given: square_with_hole
2:      When: offset2_ex
2:      Then: offset matches
2:     Given: square_with_hole 2
2:      When: offset2_ex
2:      Then: offset matches
2:     Given: square and hole
2:      When: diff_ex
2:      Then: hole is created
2:     Given: polyline
2:      When: intersection_pl
2:      Then: correct number of result lines
2:     Given: polyline
2:      When: intersection_pl
2:      Then: result lines have correct length
2:     Given: polyline
2:      When: diff_pl
2:      Then: correct number of result lines
2:     Given: polyline
2:      When: diff_pl
2:      Then: the left result line has correct length
2:     Given: polyline
2:      When: diff_pl
2:      Then: the right result line has correct length
2:     Given: polyline
2:      When: diff_pl
2:      Then: the central result line has correct length
2:     Given: Clipper bug #96 / Slic3r issue #2028
2:      Then: intersection_pl - result is not empty
2:     Given: Clipper bug #122
2:      Then: intersection_pl - result is not empty
2:     Given: Clipper bug #126
2:      Then: intersection_pl - result is not empty
2:     Given: Clipper bug #126
2:      Then: intersection_pl - result has same length as subject polyline
2: Passed in 0.00155 [seconds]
2: 
2: Testing Scenario: Various Clipper operations - t/clipper.t
2:     Given: square with hole
2:      When: intersection_ex with another square
2:      Then: intersection area matches (hole is preserved)
2:     Given: square with hole 2
2:      When: union_ex with another square
2:      Then: union of two ccw and one cw is a contour with no holes
2:     Given: square with hole 2
2:      When: diff_ex with another square
2:      Then: difference of a cw from two ccw is a contour with one hole
2:     Given: yet another square
2:      When: no-op diff_pl
2:      Then: returns the right number of polylines
2:     Given: yet another square
2:      When: no-op diff_pl
2:      Then: returns the unmodified input polyline
2: Passed in 0.000397 [seconds]
2: 
2: Testing Traversing Clipper PolyTree
2: Traverse into Polygons WITHOUT spatial ordering
2: Traverse into ExPolygons WITHOUT spatial ordering
2: Traverse into Polygons WITH spatial ordering
2: Traverse into ExPolygons WITH spatial ordering
2: Passed in 0.000267 [seconds]
2: 
2: Testing Scenario: Generic config validation performs as expected.
2:     Given: A config generated from default options
2:      When: perimeter_extrusion_width is set to 250%, a valid value
2:      Then: The config is read as valid.
2:     Given: A config generated from default options
2:      When: perimeter_extrusion_width is set to -10, an invalid value
2:      Then: Validate returns error
2:     Given: A config generated from default options
2:      When: perimeters is set to -10, an invalid value
2:      Then: Validate returns error
2: Passed in 0.004084 [seconds]
2: 
2: Testing Scenario: Config accessor functions perform as expected.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a boolean value
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a string value representing a 0 or 1
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a string value representing something other than 0 or 1
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: A boolean option is set to a string value representing something other than 0 or 1
2:       And: Value is unchanged.
2:     Given: A config generated from default options
2:      When: A boolean option is set to an int value
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: A numeric option is set from serialized string
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: An floating-point option is set through the integer interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A floating-point option is set through the double interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: An integer-based option is set through the double interface
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: A numeric option is set to a non-numeric value.
2:      Then: A BadOptionTypeException exception is thown.
2:     Given: A config generated from default options
2:      When: A numeric option is set to a non-numeric value.
2:      Then: The value does not change.
2:     Given: A config generated from default options
2:      When: A string option is set through the string interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A string option is set through the integer interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A string option is set through the double interface
2:      Then: The underlying value is set correctly.
2:     Given: A config generated from default options
2:      When: A float or percent is set as a percent through the string interface.
2:      Then: Value and percent flag are 100/true
2:     Given: A config generated from default options
2:      When: A float or percent is set as a float through the string interface.
2:      Then: Value and percent flag are 100/false
2:     Given: A config generated from default options
2:      When: A float or percent is set as a float through the int interface.
2:      Then: Value and percent flag are 100/false
2:     Given: A config generated from default options
2:      When: A float or percent is set as a float through the double interface.
2:      Then: Value and percent flag are 100.5/false
2:     Given: A config generated from default options
2:      When: An invalid option is requested during set.
2:      Then: A BadOptionTypeException exception is thrown.
2:     Given: A config generated from default options
2:      When: An invalid option is requested during get.
2:      Then: A UnknownOptionException exception is thrown.
2:     Given: A config generated from default options
2:      When: An invalid option is requested during opt.
2:      Then: A UnknownOptionException exception is thrown.
2:     Given: A config generated from default options
2:      When: getX called on an unset option.
2:      Then: The default is returned.
2:     Given: A config generated from default options
2:      When: getFloat called on an option that has been set.
2:      Then: The set value is returned.
2: Passed in 0.008936 [seconds]
2: 
2: Testing Scenario: Config ini load/save interface
2:      When: new_from_ini is called
2:      Then: Config object contains ini file options.
2: Passed in 0.000126 [seconds]
2: 
2: Testing Scenario: Elephant foot compensation
2:     Given: Contour with hole
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Tiny contour
2:      When: Compensated
2:      Then: Tiny contour is not compensated
2:     Given: Large box
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Thin ring (GH issue #2085)
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Rectangle with a narrow part sticking out
2:      When: Partially compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Rectangle with a narrow part sticking out
2:      When: Fully compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Box with hole close to wall (GH issue #2998)
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Spirograph wheel
2:      When: Partially compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Spirograph wheel
2:      When: Fully compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Spirograph wheel
2:      When: Brutally compensated
2:      Then: area of the compensated polygon is smaller
2:     Given: Vase with fins
2:      When: Compensated
2:      Then: area of the compensated polygon is smaller
2: Passed in 0.120886 [seconds]
2: 
2: Testing Polygon::contains works properly
2: Passed in 8e-06 [seconds]
2: 
2: Testing Scenario: Intersections of line segments
2:     Given: Integer coordinates
2:      Then: The intersection is valid
2:     Given: Scaled coordinates
2:      Then: There is still an intersection
2: Passed in 3.8e-05 [seconds]
2: 
2: Testing Creating a polyline generates the obvious lines
2: Passed in 8e-06 [seconds]
2: 
2: Testing Splitting a Polygon generates a polyline correctly
2: Passed in 7e-06 [seconds]
2: 
2: Testing Bounding boxes are scaled appropriately
2: Passed in 7e-06 [seconds]
2: 
2: Testing Offseting a line generates a polygon correctly
2: Passed in 1.9e-05 [seconds]
2: 
2: Testing Scenario: Circle Fit, TaubinFit with Newton's method
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the entire array
2:      Then: A center point of -6,0 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the first four points
2:      Then: A center point of -6,0 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the middle four points
2:      Then: A center point of -6,0 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the entire array
2:      Then: A center point of 3,9 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the first four points
2:      Then: A center point of 3,9 is returned.
2:     Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the middle four points
2:      Then: A center point of 3,9 is returned.
2:     Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the entire array
2:      Then: A center point of scaled 3,9 is returned.
2:     Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the first four points
2:      Then: A center point of scaled 3,9 is returned.
2:     Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
2:      When: Circle fit is called on the middle four points
2:      Then: A center point of scaled 3,9 is returned.
2: Passed in 0.000257 [seconds]
2: 
2: Testing Scenario: Path chaining
2:     Given: A path
2:      Then: Chained with no diagonals (thus 26 units long)
2:     Given: Gyroid infill end points
2:      Then: Chained taking the shortest path
2:     Given: Loop pieces
2:      Then: Connected without a gap
2: Passed in 0.00334 [seconds]
2: 
2: Testing Scenario: Line distances
2:     Given: A line
2:      Then: Points on the line segment have 0 distance
2:     Given: A line
2:      Then: Points off the line have the appropriate distance
2: Passed in 5.7e-05 [seconds]
2: 
2: Testing Scenario: Polygon convex/concave detection
2:     Given: A Square with dimension 100
2:      Then: It has 4 convex points counterclockwise
2:     Given: A Square with dimension 100
2:      Then: It has 4 concave points clockwise
2:     Given: A Square with an extra colinearvertex
2:      Then: It has 4 convex points counterclockwise
2:     Given: A Square with an extra collinear vertex in different order
2:      Then: It has 4 convex points counterclockwise
2:     Given: A triangle
2:      Then: it has three convex vertices
2:     Given: A triangle with an extra collinear point
2:      Then: it has three convex vertices
2:     Given: A polygon with concave vertices with angles of specifically 4/3pi
2:      Then: the correct number of points are detected
2: Passed in 0.000225 [seconds]
2: 
2: Testing Triangle Simplification does not result in less than 3 points
2: Passed in 1.9e-05 [seconds]
2: 
2: Testing Scenario: Ported from xs/t/14_geometry.t
2:     Given: square
2: convex hull returns the correct number of points
2: arrange returns expected number of positions
2: directions_parallel
2: Passed in 6.3e-05 [seconds]
2: 
2: Testing Scenario: Placeholder parser scripting
2: nested config options (legacy syntax)
2: array reference
2: whitespaces and newlines are maintained
2: math: 2*3
2: math: 2*3/6
2: math: 2*3/12
2: math: 2.*3/12
2: math: 10 % 2.5
2: math: 11 % 2.5
2: math: 2*(3-12)
2: math: 2*foo*(3-12)
2: math: 2*bar*(3-12)
2: math: 2.5*bar*(3-12)
2: math: min(12, 14)
2: math: max(12, 14)
2: math: min(13.4, -1238.1)
2: math: max(13.4, -1238.1)
2: math: int(13.4)
2: math: int(-13.4)
2: perimeter_extrusion_width
2: first_layer_extrusion_width
2: support_material_xy_spacing
2: external_perimeter_speed
2: infill_overlap
2: first_layer_speed
2: boolean expression parser: 12 == 12
2: boolean expression parser: 12 != 12
2: boolean expression parser: regex matches
2: boolean expression parser: regex does not match
2: boolean expression parser: accessing variables, equal
2: boolean expression parser: accessing variables, not equal
2: boolean expression parser: (12 == 12) and (13 != 14)
2: boolean expression parser: (12 == 12) && (13 != 14)
2: boolean expression parser: (12 == 12) or (13 == 14)
2: boolean expression parser: (12 == 12) || (13 == 14)
2: boolean expression parser: (12 == 12) and not (13 == 14)
2: boolean expression parser: ternary true
2: boolean expression parser: ternary false
2: boolean expression parser: ternary false 2
2: boolean expression parser: ternary true 2
2: boolean expression parser: lower than - false
2: boolean expression parser: lower than - true
2: boolean expression parser: greater than - true
2: boolean expression parser: greater than - false
2: boolean expression parser: lower than or equal- false
2: boolean expression parser: lower than or equal - true
2: boolean expression parser: greater than or equal - true
2: boolean expression parser: greater than or equal - false
2: boolean expression parser: lower than or equal (same values) - true
2: boolean expression parser: greater than or equal (same values) - true
2: complex expression
2: complex expression2
2: complex expression3
2: Passed in 0.031634 [seconds]
2: 
2: Testing Scenario: Remove collinear points from Polygon
2:     Given: Polygon with collinear points
2:      When: collinear points are removed
2:      Then: Leading collinear points are removed
2:     Given: Polygon with collinear points
2:      When: collinear points are removed
2:      Then: Trailing collinear points are removed
2:     Given: Polygon with collinear points
2:      When: collinear points are removed
2:      Then: Number of remaining points is correct
2: Passed in 0.000182 [seconds]
2: 
2: Testing Scenario: Iterators
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ it is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ it is not equal to end
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ it) is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ it) is equal to end
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ (++ it)) is equal to begin
2:     Given: Polygon with three points
2:      When: Iterating upwards
2:      Then: ++ (++ (++ it)) is not equal to end
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- it is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- it is equal to end
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- it) is not equal to begin
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- it) is not equal to end
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- (-- it)) is equal to begin
2:     Given: Polygon with three points
2:      When: Iterating downwards
2:      Then: -- (-- (-- it)) is not equal to end
2:     Given: Polygon with three points
2:      When: Deleting 1st point
2:      Then: Size is 2
2:     Given: Polygon with three points
2:      When: Deleting 1st point
2:      Then: p.begin().remove() == it_2nd
2:     Given: Polygon with three points
2:      When: Deleting 1st point
2:      Then: it_2nd == new begin()
2:     Given: Polygon with three points
2:      When: Deleting 2nd point
2:      Then: Size is 2
2:     Given: Polygon with three points
2:      When: Deleting 2nd point
2:      Then: it_2nd.remove() == it_3rd
2:     Given: Polygon with three points
2:      When: Deleting 2nd point
2:      Then: it_1st == new begin()
2:     Given: Polygon with three points
2:      When: Deleting two points
2:      Then: Size is 1
2:     Given: Polygon with three points
2:      When: Deleting two points
2:      Then: p.begin().next() == p.begin()
2:     Given: Polygon with three points
2:      When: Deleting two points
2:      Then: p.begin().prev() == p.begin()
2:     Given: Polygon with three points
2:      When: Deleting all points
2:      Then: Size is 0
2:     Given: Polygon with three points
2:      When: Deleting all points
2:      Then: ! p.begin().valid()
2:     Given: Polygon with three points
2:      When: Deleting all points
2:      Then: last iterator not valid
2:     Given: Polygon with three points
2:      When: Inserting a point at the beginning
2:      Then: Polygon content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point at the 2nd position
2:      Then: Polygon content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: Initial capacity is 3
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: After removal of the 1st point the capacity is still 3
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: After removal of the 1st point the content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: After insertion at head position the polygon content is ok
2:     Given: Polygon with three points
2:      When: Inserting a point after a point was removed
2:      Then: and the capacity is still 3
2: Passed in 0.001371 [seconds]
2: 
2: Testing Scenario: Remove degenerate points from MutablePolygon
2:     Given: Polygon with duplicate points
2:      When: Duplicate points are removed
2:      Then: Polygon content is ok
2: Passed in 3.1e-05 [seconds]
2: 
2: Testing Scenario: smooth_outward
2:     Given: Convex polygon
2:      When: smooth_outward
2:      Then: Polygon is unmodified
2:     Given: Sharp tiny concave polygon (hole)
2:      When: smooth_outward
2:      Then: Hole is closed
2:     Given: Two polygons
2:      When: smooth_outward
2:      Then: CCW contour unmodified, CW contour removed.
2: Passed in 0.000115 [seconds]
2: 
2: Testing Scenario: Reading an STL file
2:     Given: umlauts in the path of a binary STL file, Czech characters in the file name
2:      When: STL file is read
2:      Then: load should succeed
2:     Given: in ASCII format
2:      When: line endings LF
2:      Then: load should succeed
2:     Given: in ASCII format
2:      When: line endings CRLF
2:      Then: load should succeed
2:     Given: in ASCII format
2:      When: nonstandard STL file (text after ending tags, invalid normals, for example infinities)
2:      Then: load should succeed
2: Passed in 0.010854 [seconds]
2: 
2: Testing CGAL and TriangleMesh conversions
2: Passed in 1.94906 [seconds]
2: 
2: Testing Empty raster should result in empty polygons
2: libslic3r_tests: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/src/libslic3r/SLA/AGGRaster.hpp:145: Slic3r::sla::AGGRaster<PixelRenderer, Renderer, Rasterizer, Scanline>::AGGRaster(const Slic3r::sla::RasterBase::Resolution&, const Slic3r::sla::RasterBase::PixelDim&, const Slic3r::sla::RasterBase::Trafo&, const TColor&, const TColor&, GammaFn&&) [with GammaFn = agg::gamma_power; PixelRenderer = agg::pixfmt_alpha_blend_gray<agg::blender_gray<agg::gray8T<agg::linear> >, agg::row_accessor<unsigned char> >; Renderer = agg::renderer_scanline_aa_solid; Rasterizer = agg::rasterizer_scanline_aa<>; Scanline = agg::scanline_p8; Slic3r::sla::AGGRaster<PixelRenderer, Renderer, Rasterizer, Scanline>::TColor = agg::gray8T<agg::linear>]: Assertion `pd.w_mm != 0 && pd.h_mm != 0' failed.
2: 
2: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2: libslic3r_tests is a Catch v2.13.3 host application.
2: Run with -? for options
2: 
2: -------------------------------------------------------------------------------
2: Empty raster should result in empty polygons
2: -------------------------------------------------------------------------------
2: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/libslic3r/test_marchingsquares.cpp:140
2: ...............................................................................
2: 
2: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/libslic3r/test_marchingsquares.cpp:140: FAILED:
2: due to a fatal error condition:
2:   SIGABRT - Abort (abnormal termination) signal
2: 
2: ===============================================================================
2: test cases:  33 |  32 passed | 1 failed
2: assertions: 350 | 349 passed | 1 failed
2: 
2/5 Test #2: libslic3r_tests ..................Subprocess aborted***Exception:   2.51 sec

test 4
    Start 4: fff_print_tests

4: Test command: /tmp/makepkg/sl1-prusa-slicer-git/src/build/tests/fff_print/fff_print_tests
4: Test timeout computed to be: 10000000
4: Testing Scenario: init_print functionality
4:     Given: A default config
4:      When: init_print is called with a single mesh.
4:      Then: One mesh/printobject is in the resulting Print object.
4:     Given: A default config
4:      When: init_print is called with a single mesh.
4:      Then: print.process() doesn't crash.
4:     Given: A default config
4:      When: init_print is called with a single mesh.
4:      Then: Export gcode functions outputs text.
4: Passed in 0.258613 [seconds]
4: 
4: Testing Scenario: ExtrusionEntityCollection: Polygon flattening
4:     Given: A Extrusion Entity Collection with a child that has one child that is marked as no-sort
4:      When: The EEC is flattened with default options (preserve_order=false)
4:      Then: The output EEC contains no Extrusion Entity Collections
4:     Given: A Extrusion Entity Collection with a child that has one child that is marked as no-sort
4:      When: The EEC is flattened with preservation (preserve_order=true)
4:      Then: The output EECs contains one EEC.
4:     Given: A Extrusion Entity Collection with a child that has one child that is marked as no-sort
4:      When: The EEC is flattened with preservation (preserve_order=true)
4:       And: The ordered EEC contains the same order of elements than the original
4: Passed in 0.00066 [seconds]
4: 
4: Testing Fill: Pattern Path Length
4: Square
4: Diamond with endpoints on grid
4: Square with hole
4: Regression: Missing infill segments in some rare circumstances
4: Rotated Square
4: Solid surface fill
4: Solid surface fill
4: Passed in 0.036329 [seconds]
4: 
4: Testing Scenario: Extrusion width specifics
4:     Given: A config with a skirt, brim, some fill density, 3 perimeters, and 1 bottom solid layer and a 20mm cube mesh
4:      When: first layer width set to 2mm
4:      Then:  First layer width applies to everything on first layer.
4:     Given: A config with a skirt, brim, some fill density, 3 perimeters, and 1 bottom solid layer and a 20mm cube mesh
4:      When: first layer width set to 2mm
4:      Then:  First layer width does not apply to upper layer.
4: Passed in 0.396563 [seconds]
4: 
4: Testing Scenario:  Bridge flow specifics.
4:     Given: A default config with no cooling and a fixed bridge speed, flow ratio and an overhang mesh.
4:      When: bridge_flow_ratio is set to 1.0
4:      Then: Output flow is as expected.
4:     Given: A default config with no cooling and a fixed bridge speed, flow ratio and an overhang mesh.
4:      When: bridge_flow_ratio is set to 0.5
4:      Then: Output flow is as expected.
4:     Given: A default config with no cooling and a fixed bridge speed, flow ratio and an overhang mesh.
4:      When: bridge_flow_ratio is set to 2.0
4:      Then: Output flow is as expected.
4:     Given: A default config with no cooling and a fixed bridge speed, flow ratio, fixed extrusion width of 0.4mm and an overhang mesh.
4:      When: bridge_flow_ratio is set to 1.0
4:      Then: Output flow is as expected.
4:     Given: A default config with no cooling and a fixed bridge speed, flow ratio, fixed extrusion width of 0.4mm and an overhang mesh.
4:      When: bridge_flow_ratio is set to 0.5
4:      Then: Output flow is as expected.
4:     Given: A default config with no cooling and a fixed bridge speed, flow ratio, fixed extrusion width of 0.4mm and an overhang mesh.
4:      When: bridge_flow_ratio is set to 2.0
4:      Then: Output flow is as expected.
4: Passed in 0.000196 [seconds]
4: 
4: Testing Scenario: Flow: Flow math for non-bridges
4:     Given: Nozzle Diameter of 0.4, a desired width of 1mm and layer height of 0.5
4:      Then: External perimeter flow has spacing fixed to 1.125 * nozzle_diameter
4:     Given: Nozzle Diameter of 0.4, a desired width of 1mm and layer height of 0.5
4:      Then: Internal perimeter flow has spacing fixed to 1.125 * nozzle_diameter
4:     Given: Nozzle Diameter of 0.4, a desired width of 1mm and layer height of 0.5
4:      Then: Spacing for supplied width is 0.8927f
4:     Given: Nozzle Diameter of 0.25
4:      When: layer height is set to 0.2
4:      Then: Max width is set.
4:     Given: Nozzle Diameter of 0.25
4:      When: Layer height is set to 0.25
4:      Then: Min width is set.
4: Passed in 0.000118 [seconds]
4: 
4: Testing Scenario: Flow: Flow math for bridges
4:     Given: Nozzle Diameter of 0.4, a desired width of 1mm and layer height of 0.5
4:      When: Flow role is frExternalPerimeter
4:      Then: Bridge width is same as nozzle diameter
4:     Given: Nozzle Diameter of 0.4, a desired width of 1mm and layer height of 0.5
4:      When: Flow role is frExternalPerimeter
4:      Then: Bridge spacing is same as nozzle diameter + BRIDGE_EXTRA_SPACING
4: Passed in 6.3e-05 [seconds]
4: 
4: Testing Scenario: Origin manipulation
4:      When: set_origin to (10,0)
4:      When: set_origin to (10,0) and translate by (5, 5)
4:      Then: origin returns reference to point
4: Passed in 0.000123 [seconds]
4: 
4: Testing Scenario: lift() is not ignored after unlift() at normal values of Z
4:     Given: A config from a file and a single extruder.
4:      When: Z is set to 203
4:  And when: GcodeWriter::Lift() is called
4:  And when: Z is moved post-lift to the same delta as the config Z lift
4:  And when: GCodeWriter::Unlift() is called
4:      Then: GCodeWriter::Lift() emits gcode.
4:     Given: A config from a file and a single extruder.
4:      When: Z is set to 500003
4:  And when: GcodeWriter::Lift() is called
4:  And when: Z is moved post-lift to the same delta as the config Z lift
4:  And when: GCodeWriter::Unlift() is called
4:      Then: GCodeWriter::Lift() emits gcode.
4:     Given: A config from a file and a single extruder.
4:      When: Z is set to 10.3
4:  And when: GcodeWriter::Lift() is called
4:  And when: Z is moved post-lift to the same delta as the config Z lift
4:  And when: GCodeWriter::Unlift() is called
4:      Then: GCodeWriter::Lift() emits gcode.
4: Passed in 0.001394 [seconds]
4: 
4: Testing Scenario: set_speed emits values with fixed-point output.
4:     Given: GCodeWriter instance
4:      When: set_speed is called to set speed to 99999.123
4:      Then: Output string is G1 F99999.123
4:     Given: GCodeWriter instance
4:      When: set_speed is called to set speed to 1
4:      Then: Output string is G1 F1.000
4:     Given: GCodeWriter instance
4:      When: set_speed is called to set speed to 203.200022
4:      Then: Output string is G1 F203.200
4:     Given: GCodeWriter instance
4:      When: set_speed is called to set speed to 203.200522
4:      Then: Output string is G1 F203.201
4: Passed in 0.000222 [seconds]
4: 
4: Testing Scenario: Model construction
4:     Given: A Slic3r Model
4:      When: Model object is added
4:      Then: Model object list == 1
4:     Given: A Slic3r Model
4:      When: Model object is added
4:      Then: Model volume list == 1
4:     Given: A Slic3r Model
4:      When: Model object is added
4:      Then: Model volume is a part
4:     Given: A Slic3r Model
4:      When: Model object is added
4:      Then: Mesh is equivalent to input mesh.
4:     Given: A Slic3r Model
4:      When: Model object is added
4:      Then: Print works?
4: Passed in 0.215265 [seconds]
4: 
4: Testing Scenario: PrintObject: Perimeter generation
4:     Given: 20mm cube and default config
4:      When: make_perimeters() is called
4:      Then: 67 layers exist in the model
4:     Given: 20mm cube and default config
4:      When: make_perimeters() is called
4:      Then: Every layer in region 0 has 1 island of perimeters
4:     Given: 20mm cube and default config
4:      When: make_perimeters() is called
4:      Then: Every layer in region 0 has 3 paths in its perimeters list.
4: Passed in 0.054077 [seconds]
4: 
4: Testing Scenario: Print: Skirt generation
4:     Given: 20mm cube and default config
4:      When: Skirts is set to 2 loops
4:      Then: Skirt Extrusion collection has 2 loops in it
4: Passed in 0.020259 [seconds]
4: 
4: Testing Scenario: Print: Changing number of solid surfaces does not cause all surfaces to become internal.
4:     Given: sliced 20mm cube and config with top_solid_surfaces = 2 and bottom_solid_surfaces = 1
4:      When: Model is re-sliced with top_solid_layers == 3
4:      Then: Print object does not have 0 solid bottom layers.
4:     Given: sliced 20mm cube and config with top_solid_surfaces = 2 and bottom_solid_surfaces = 1
4:      When: Model is re-sliced with top_solid_layers == 3
4:       And: Print object has 3 top solid layers
4: Passed in 0.041582 [seconds]
4: 
4: Testing Scenario: Print: Brim generation
4:     Given: 20mm cube and default config, 1mm first layer width
4:      When: Brim is set to 3mm
4:      Then: Brim Extrusion collection has 3 loops in it
4:     Given: 20mm cube and default config, 1mm first layer width
4:      When: Brim is set to 6mm
4:      Then: Brim Extrusion collection has 6 loops in it
4:     Given: 20mm cube and default config, 1mm first layer width
4:      When: Brim is set to 6mm, extrusion width 0.5mm
4:      Then: Brim Extrusion collection has 12 loops in it
4: Passed in 0.070674 [seconds]
4: 
4: Testing Scenario: PrintGCode basic functionality
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Some text output is generated.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Exported text contains slic3r version
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Exported text contains extrusion statistics.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Exported text does not contain cooling markers (they were consumed)
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: GCode preamble is emitted.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Config options emitted for print config, default region config, default object config
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Infill is emitted.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Perimeters are emitted.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: Skirt is emitted.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with no support material
4:      Then: final Z height is 20mm
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: Some text output is generated.
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: Infill is emitted.
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: Perimeters are emitted.
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: Skirt is emitted.
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: Between-object-gcode is emitted.
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: final Z height is 20.1mm
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: Z height resets on object change
4:     Given: A default configuration and a print test object
4:      When: output is executed with complete objects and two differently-sized meshes
4:      Then: Shorter object is printed before taller object.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with support material
4:      Then: Some text output is generated.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with support material
4:      Then: Exported text contains extrusion statistics.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with support material
4:      Then: Raft is emitted.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with a separate first layer extrusion width
4:      Then: Some text output is generated.
4:     Given: A default configuration and a print test object
4:      When: the output is executed with a separate first layer extrusion width
4:      Then: Exported text contains extrusion statistics.
4:     Given: A default configuration and a print test object
4:      When: Cooling is enabled and the fan is disabled.
4:      Then: GCode to disable fan is emitted.
4:     Given: A default configuration and a print test object
4:      When: end_gcode exists with layer_num and layer_z
4:      Then: layer_num and layer_z are processed in the end gcode
4:     Given: A default configuration and a print test object
4:      When: current_extruder exists in start_gcode
4:      Then: current_extruder is processed in the start gcode and set for first extruder
4:     Given: A default configuration and a print test object
4:      When: current_extruder exists in start_gcode
4:      Then: current_extruder is processed in the start gcode and set for second extruder
4:     Given: A default configuration and a print test object
4:      When: layer_num represents the layer's index from z=0
4:      Then: First and second object last layer is emitted
4: Passed in 8.82353 [seconds]
4: 
4: Testing Scenario: PrintObject: object layer heights
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 2mm layer heights and nozzle diameter of 3mm
4:      Then: The output vector has 10 entries
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 2mm layer heights and nozzle diameter of 3mm
4:       And: Each layer is approximately 2mm above the previous Z
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 10mm layer heights and nozzle diameter of 11mm
4:      Then: The output vector has 3 entries
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 10mm layer heights and nozzle diameter of 11mm
4:       And: Layer 0 is at 2mm
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 10mm layer heights and nozzle diameter of 11mm
4:       And: Layer 1 is at 12mm
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 15mm layer heights and nozzle diameter of 16mm
4:      Then: The output vector has 2 entries
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 15mm layer heights and nozzle diameter of 16mm
4:       And: Layer 0 is at 2mm
4:     Given: 20mm cube and default initial config, initial layer height of 2mm
4:      When: generate_object_layers() is called for 15mm layer heights and nozzle diameter of 16mm
4:       And: Layer 1 is at 17mm
4: Passed in 0.084496 [seconds]
4: 
4: Testing Skirt height is honored
4: printing a single object
4: printing multiple objects
4: Passed in 0.19695 [seconds]
4: 
4: Testing Scenario: Original Slic3r Skirt/Brim tests
4:     Given: A default configuration
4:      When: Brim width is set to 5
4:      Then: Brim is generated
4:     Given: A default configuration
4:      When: Skirt area is smaller than the brim
4:      Then: Gcode generates
4: fff_print_tests: /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:281: void Eigen::PlainObjectBase<Derived>::resize(Eigen::Index, Eigen::Index) [with Derived = Eigen::Matrix<int, 3, 1, 2>; Eigen::Index = long int]: Assertion `(!(RowsAtCompileTime!=Dynamic) || (rows==RowsAtCompileTime)) && (!(ColsAtCompileTime!=Dynamic) || (cols==ColsAtCompileTime)) && (!(RowsAtCompileTime==Dynamic && MaxRowsAtCompileTime!=Dynamic) || (rows<=MaxRowsAtCompileTime)) && (!(ColsAtCompileTime==Dynamic && MaxColsAtCompileTime!=Dynamic) || (cols<=MaxColsAtCompileTime)) && rows>=0 && cols>=0 && "Invalid sizes when resizing a matrix or array."' failed.
4: 
4: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4: fff_print_tests is a Catch v2.13.3 host application.
4: Run with -? for options
4: 
4: -------------------------------------------------------------------------------
4: Scenario: Original Slic3r Skirt/Brim tests
4:       Given: A default configuration
4:        When: Skirt area is smaller than the brim
4:        Then: Gcode generates
4: -------------------------------------------------------------------------------
4: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/fff_print/test_skirt_brim.cpp:107
4: ...............................................................................
4: 
4: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/fff_print/test_skirt_brim.cpp:107: FAILED:
4: due to a fatal error condition:
4:   SIGABRT - Abort (abnormal termination) signal
4: 
4: ===============================================================================
4: test cases:  19 |  18 passed | 1 failed
4: assertions: 350 | 349 passed | 1 failed
4: 
4/5 Test #4: fff_print_tests ..................Subprocess aborted***Exception:   4.46 sec

@bubnikv
Copy link
Collaborator

bubnikv commented Sep 22, 2021

We only support building on Linux using our static dependencies.
https://github.com/prusa3d/PrusaSlicer/blob/master/doc/How%20to%20build%20-%20Linux%20et%20al.md
If you do it differently, you are on your own. We accept pull requests fixing compilation issues.

@bubnikv bubnikv closed this as completed Sep 22, 2021
@sl1pkn07
Copy link
Author

None of the test failed is about static/dynamic dependencies or how is the projet builded

So closing the issue about you comment is invalid

If you read across the issue, you see one time works and others not. So you make regressions in the code and not fix it

Please reopen and fix the problems posted in the issue

Greetings

@bubnikv
Copy link
Collaborator

bubnikv commented Sep 23, 2021

We do not see your issue, thus we cannot fix it.
We will gladly accept a pull request.

@sl1pkn07
Copy link
Author

What part exactly you not see? Please copy@paste the code

Greetings

@lukasmatena
Copy link
Collaborator

@sl1pkn07 We build statically against dependencies pulled by the script in deps folder. The tests don't fail, the application does not crash. You build against some unknown versions of those libraries, maybe mixing libraries built with gcc and clang, maybe with further incompatibilities in libc++/libstdc++ and who knows what else. That may lead to mysterious crashes and we don't have resources to untangle it and reason what exactly is wrong.

Of course there can be a different problem. But again, if we cannot reproduce it, we cannot fix it.

@sl1pkn07
Copy link
Author

sl1pkn07 commented Sep 23, 2021

as you wish, use the instructions on https://github.com/prusa3d/PrusaSlicer/blob/master/doc/How%20to%20build%20-%20Linux%20et%20al.md

commit used: 04e4aee
gcc versión 11.1.0 (GCC)
GTK3 3.24.30

Test project /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/build
    Start 1: libnest2d_tests
1/5 Test #1: libnest2d_tests ..................   Passed    0.22 sec
    Start 2: libslic3r_tests
2/5 Test #2: libslic3r_tests ..................***Failed    9.49 sec
[2021-09-23 19:35:13.974272] [0x00007f96f9329b80] [trace]   Initializing StaticPrintConfigs
Testing sort_remove_duplicates
Passed in 9e-06 [seconds]

Testing string_printf
Empty format with empty data should return empty string
String output length should be the same as input
String format should be interpreted as with sprintf
String format should survive large input data
Passed in 8.3e-05 [seconds]

Testing Scenario: Reading 3mf file
    Given: umlauts in the path of the file
     When: 3mf model is read
     Then: load should succeed
Passed in 0.001512 [seconds]

Testing Scenario: Export+Import geometry to/from 3mf file cycle
    Given: world vertices coordinates before save
     When: model is saved+loaded to/from 3mf file
     Then: world vertices coordinates after load match
Passed in 0.022034 [seconds]

Testing Scenario: 2D convex hull of sinking object
    Given: model
     When: model is rotated, scaled and set as sinking
     Then: 2D convex hull should match with reference

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libslic3r_tests is a Catch v2.13.6 host application.
Run with -? for options

-------------------------------------------------------------------------------
Scenario: 2D convex hull of sinking object
      Given: model
       When: model is rotated, scaled and set as sinking
       Then: 2D convex hull should match with reference
-------------------------------------------------------------------------------
/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/libslic3r/test_3mf.cpp:117
...............................................................................

/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/tests/libslic3r/test_3mf.cpp:118: FAILED:
  REQUIRE( res )
with expansion:
  false

    Given: model
     When: model is rotated, scaled and set as sinking
Testing Building a tree over a box, ray caster and closest query
Passed in 3.3e-05 [seconds]

Testing Scenario: Constant offset
    Given: 20mm box
     When: Slic3r::offset()
plus 1mm, miter 2x
     Then: Area is 22^2mm2
    Given: 20mm box
     When: Slic3r::offset()
minus 1mm, miter 2x
     Then: Area is 18^2mm2
    Given: 20mm box
     When: Slic3r::offset()
plus 1mm, miter 1.5x
     Then: Area is 22^2mm2
    Given: 20mm box
     When: Slic3r::offset()
minus 1mm, miter 1.5x
     Then: Area is 18^2mm2
    Given: 20mm box
     When: Slic3r::offset()
plus 1mm, miter 1.2x
     Then: Area is 22^2mm2
    Given: 20mm box
     When: Slic3r::offset()
minus 1mm, miter 1.2x
     Then: Area is 18^2mm2
    Given: 20mm box
     When: Slic3r::variable_offset_outer/inner
plus 1mm, miter 2x
     Then: Area is 22^2mm2
    Given: 20mm box
     When: Slic3r::variable_offset_outer/inner
minus 1mm, miter 2x
     Then: Area is 18^2mm2
    Given: 20mm box
     When: Slic3r::variable_offset_outer/inner
plus 1mm, miter 1.5x
     Then: Area is 22^2mm2
    Given: 20mm box
     When: Slic3r::variable_offset_outer/inner
minus 1mm, miter 1.5x
     Then: Area is 18^2mm2
    Given: 20mm box
     When: Slic3r::variable_offset_outer/inner
plus 1mm, miter 1.2x
     Then: Area is 22^2mm2
    Given: 20mm box
     When: Slic3r::variable_offset_outer/inner
minus 1mm, miter 1.2x
     Then: Area is 18^2mm2
    Given: 20mm box with 10mm hole
Slic3r::offset()
miter 2x
     When: plus 1mm
     Then: Area is 22^2-8^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::offset()
miter 2x
     When: minus 1mm
     Then: Area is 18^2-12^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::offset()
miter 1.5x
     When: plus 1mm
     Then: Area is 22^2-8^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::offset()
miter 1.5x
     When: minus 1mm
     Then: Area is 18^2-12^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::offset()
miter 1.2x
     When: plus 1mm
     Then: Area is 22^2-8^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::offset()
miter 1.2x
     When: minus 1mm
     Then: Area is 18^2-12^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::variable_offset_outer()
miter 2x
     When: plus 1mm
     Then: Area is 22^2-8^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::variable_offset_outer()
miter 2x
     When: minus 1mm
     Then: Area is 18^2-12^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::variable_offset_outer()
miter 1.5x
     When: plus 1mm
     Then: Area is 22^2-8^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::variable_offset_outer()
miter 1.5x
     When: minus 1mm
     Then: Area is 18^2-12^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::variable_offset_outer()
miter 1.2x
     When: plus 1mm
     Then: Area is 22^2-8^2 mm2
    Given: 20mm box with 10mm hole
Slic3r::variable_offset_outer()
miter 1.2x
     When: minus 1mm
     Then: Area is 18^2-12^2 mm2
    Given: 20mm right angle triangle
Slic3r::offset()
Outer offset 1mm, miter 2x
     Then: Area matches
    Given: 20mm right angle triangle
Slic3r::offset()
Outer offset 1mm, miter 1.5x
     Then: Area matches
    Given: 20mm right angle triangle
Slic3r::offset()
Outer offset 1mm, miter 1.2x
     Then: Area matches
    Given: 20mm right angle triangle
Slic3r::variable_offset_outer()
Outer offset 1mm, miter 2x
     Then: Area matches
    Given: 20mm right angle triangle
Slic3r::variable_offset_outer()
Outer offset 1mm, miter 1.5x
     Then: Area matches
    Given: 20mm right angle triangle
Slic3r::variable_offset_outer()
Outer offset 1mm, miter 1.2x
     Then: Area matches
Passed in 0.004244 [seconds]

Testing Scenario: Various Clipper operations - xs/t/11_clipper.t
    Given: square_with_hole
     When: offset
     Then: offset matches
    Given: square_with_hole
     When: offset_ex
     Then: offset matches
    Given: square_with_hole
     When: offset2_ex
     Then: offset matches
    Given: square_with_hole 2
     When: offset2_ex
     Then: offset matches
    Given: square and hole
     When: diff_ex
     Then: hole is created
    Given: polyline
     When: intersection_pl
     Then: correct number of result lines
    Given: polyline
     When: intersection_pl
     Then: result lines have correct length
    Given: polyline
     When: diff_pl
     Then: correct number of result lines
    Given: polyline
     When: diff_pl
     Then: the left result line has correct length
    Given: polyline
     When: diff_pl
     Then: the right result line has correct length
    Given: polyline
     When: diff_pl
     Then: the central result line has correct length
    Given: Clipper bug #96 / Slic3r issue #2028
     Then: intersection_pl - result is not empty
    Given: Clipper bug #122
     Then: intersection_pl - result is not empty
    Given: Clipper bug #126
     Then: intersection_pl - result is not empty
    Given: Clipper bug #126
     Then: intersection_pl - result has same length as subject polyline
Passed in 0.001242 [seconds]

Testing Scenario: Various Clipper operations - t/clipper.t
    Given: square with hole
     When: intersection_ex with another square
     Then: intersection area matches (hole is preserved)
    Given: square with hole 2
     When: union_ex with another square
     Then: union of two ccw and one cw is a contour with no holes
    Given: square with hole 2
     When: diff_ex with another square
     Then: difference of a cw from two ccw is a contour with one hole
    Given: yet another square
     When: no-op diff_pl
     Then: returns the right number of polylines
    Given: yet another square
     When: no-op diff_pl
     Then: returns the unmodified input polyline
Passed in 0.000316 [seconds]

Testing Traversing Clipper PolyTree
Traverse into Polygons WITHOUT spatial ordering
Traverse into ExPolygons WITHOUT spatial ordering
Traverse into Polygons WITH spatial ordering
Traverse into ExPolygons WITH spatial ordering
Passed in 0.000183 [seconds]

Testing Scenario: Generic config validation performs as expected.
    Given: A config generated from default options
     When: perimeter_extrusion_width is set to 250%, a valid value
     Then: The config is read as valid.
    Given: A config generated from default options
     When: perimeter_extrusion_width is set to -10, an invalid value
     Then: Validate returns error
    Given: A config generated from default options
     When: perimeters is set to -10, an invalid value
     Then: Validate returns error
Passed in 0.003619 [seconds]

Testing Scenario: Config accessor functions perform as expected.
    Given: A config generated from default options
     When: A boolean option is set to a boolean value
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: A boolean option is set to a string value representing a 0 or 1
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: A boolean option is set to a string value representing something other than 0 or 1
     Then: A BadOptionTypeException exception is thrown.
    Given: A config generated from default options
     When: A boolean option is set to a string value representing something other than 0 or 1
      And: Value is unchanged.
    Given: A config generated from default options
     When: A boolean option is set to an int value
     Then: A BadOptionTypeException exception is thrown.
    Given: A config generated from default options
     When: A numeric option is set from serialized string
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: An floating-point option is set through the integer interface
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: A floating-point option is set through the double interface
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: An integer-based option is set through the double interface
     Then: A BadOptionTypeException exception is thrown.
    Given: A config generated from default options
     When: A numeric option is set to a non-numeric value.
     Then: A BadOptionTypeException exception is thown.
    Given: A config generated from default options
     When: A numeric option is set to a non-numeric value.
     Then: The value does not change.
    Given: A config generated from default options
     When: A string option is set through the string interface
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: A string option is set through the integer interface
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: A string option is set through the double interface
     Then: The underlying value is set correctly.
    Given: A config generated from default options
     When: A float or percent is set as a percent through the string interface.
     Then: Value and percent flag are 100/true
    Given: A config generated from default options
     When: A float or percent is set as a float through the string interface.
     Then: Value and percent flag are 100/false
    Given: A config generated from default options
     When: A float or percent is set as a float through the int interface.
     Then: Value and percent flag are 100/false
    Given: A config generated from default options
     When: A float or percent is set as a float through the double interface.
     Then: Value and percent flag are 100.5/false
    Given: A config generated from default options
     When: An invalid option is requested during set.
     Then: A BadOptionTypeException exception is thrown.
    Given: A config generated from default options
     When: An invalid option is requested during get.
     Then: A UnknownOptionException exception is thrown.
    Given: A config generated from default options
     When: An invalid option is requested during opt.
     Then: A UnknownOptionException exception is thrown.
    Given: A config generated from default options
     When: getX called on an unset option.
     Then: The default is returned.
    Given: A config generated from default options
     When: getFloat called on an option that has been set.
     Then: The set value is returned.
Passed in 0.008271 [seconds]

Testing Scenario: Config ini load/save interface
     When: new_from_ini is called
     Then: Config object contains ini file options.
Passed in 0.000133 [seconds]

Testing Scenario: Elephant foot compensation
    Given: Contour with hole
     When: Compensated
     Then: area of the compensated polygon is smaller
    Given: Tiny contour
     When: Compensated
     Then: Tiny contour is not compensated
    Given: Large box
     When: Compensated
     Then: area of the compensated polygon is smaller
    Given: Thin ring (GH issue #2085)
     When: Compensated
     Then: area of the compensated polygon is smaller
    Given: Rectangle with a narrow part sticking out
     When: Partially compensated
     Then: area of the compensated polygon is smaller
    Given: Rectangle with a narrow part sticking out
     When: Fully compensated
     Then: area of the compensated polygon is smaller
    Given: Box with hole close to wall (GH issue #2998)
     When: Compensated
     Then: area of the compensated polygon is smaller
    Given: Spirograph wheel
     When: Partially compensated
     Then: area of the compensated polygon is smaller
    Given: Spirograph wheel
     When: Fully compensated
     Then: area of the compensated polygon is smaller
    Given: Spirograph wheel
     When: Brutally compensated
     Then: area of the compensated polygon is smaller
    Given: Vase with fins
     When: Compensated
     Then: area of the compensated polygon is smaller
Passed in 0.057816 [seconds]

Testing Polygon::contains works properly
Passed in 8e-06 [seconds]

Testing Scenario: Intersections of line segments
    Given: Integer coordinates
     Then: The intersection is valid
    Given: Scaled coordinates
     Then: There is still an intersection
Passed in 5.7e-05 [seconds]

Testing Creating a polyline generates the obvious lines
Passed in 7e-06 [seconds]

Testing Splitting a Polygon generates a polyline correctly
Passed in 7e-06 [seconds]

Testing Bounding boxes are scaled appropriately
Passed in 8e-06 [seconds]

Testing Offseting a line generates a polygon correctly
Passed in 1.9e-05 [seconds]

Testing Scenario: Circle Fit, TaubinFit with Newton's method
    Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the entire array
     Then: A center point of -6,0 is returned.
    Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the first four points
     Then: A center point of -6,0 is returned.
    Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the middle four points
     Then: A center point of -6,0 is returned.
    Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the entire array
     Then: A center point of 3,9 is returned.
    Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the first four points
     Then: A center point of 3,9 is returned.
    Given: A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the middle four points
     Then: A center point of 3,9 is returned.
    Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the entire array
     Then: A center point of scaled 3,9 is returned.
    Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the first four points
     Then: A center point of scaled 3,9 is returned.
    Given: A vector of Points arranged in a half-circle with approximately the same distance R from some point
     When: Circle fit is called on the middle four points
     Then: A center point of scaled 3,9 is returned.
Passed in 0.00029 [seconds]

Testing Scenario: Path chaining
    Given: A path
     Then: Chained with no diagonals (thus 26 units long)
    Given: Gyroid infill end points
     Then: Chained taking the shortest path
    Given: Loop pieces
     Then: Connected without a gap
Passed in 0.00195 [seconds]

Testing Scenario: Line distances
    Given: A line
     Then: Points on the line segment have 0 distance
    Given: A line
     Then: Points off the line have the appropriate distance
Passed in 4.2e-05 [seconds]

Testing Scenario: Polygon convex/concave detection
    Given: A Square with dimension 100
     Then: It has 4 convex points counterclockwise
    Given: A Square with dimension 100
     Then: It has 4 concave points clockwise
    Given: A Square with an extra colinearvertex
     Then: It has 4 convex points counterclockwise
    Given: A Square with an extra collinear vertex in different order
     Then: It has 4 convex points counterclockwise
    Given: A triangle
     Then: it has three convex vertices
    Given: A triangle with an extra collinear point
     Then: it has three convex vertices
    Given: A polygon with concave vertices with angles of specifically 4/3pi
     Then: the correct number of points are detected
Passed in 0.000215 [seconds]

Testing Triangle Simplification does not result in less than 3 points
Passed in 1.5e-05 [seconds]

Testing Scenario: Ported from xs/t/14_geometry.t
    Given: square
convex hull returns the correct number of points
arrange returns expected number of positions
directions_parallel
Passed in 5.8e-05 [seconds]

Testing Scenario: Placeholder parser scripting
nested config options (legacy syntax)
array reference
whitespaces and newlines are maintained
math: 2*3
math: 2*3/6
math: 2*3/12
math: 2.*3/12
math: 10 % 2.5
math: 11 % 2.5
math: 2*(3-12)
math: 2*foo*(3-12)
math: 2*bar*(3-12)
math: 2.5*bar*(3-12)
math: min(12, 14)
math: max(12, 14)
math: min(13.4, -1238.1)
math: max(13.4, -1238.1)
math: int(13.4)
math: int(-13.4)
perimeter_extrusion_width
first_layer_extrusion_width
support_material_xy_spacing
external_perimeter_speed
infill_overlap
first_layer_speed
boolean expression parser: 12 == 12
boolean expression parser: 12 != 12
boolean expression parser: regex matches
boolean expression parser: regex does not match
boolean expression parser: accessing variables, equal
boolean expression parser: accessing variables, not equal
boolean expression parser: (12 == 12) and (13 != 14)
boolean expression parser: (12 == 12) && (13 != 14)
boolean expression parser: (12 == 12) or (13 == 14)
boolean expression parser: (12 == 12) || (13 == 14)
boolean expression parser: (12 == 12) and not (13 == 14)
boolean expression parser: ternary true
boolean expression parser: ternary false
boolean expression parser: ternary false 2
boolean expression parser: ternary true 2
boolean expression parser: lower than - false
boolean expression parser: lower than - true
boolean expression parser: greater than - true
boolean expression parser: greater than - false
boolean expression parser: lower than or equal- false
boolean expression parser: lower than or equal - true
boolean expression parser: greater than or equal - true
boolean expression parser: greater than or equal - false
boolean expression parser: lower than or equal (same values) - true
boolean expression parser: greater than or equal (same values) - true
complex expression
complex expression2
complex expression3
Passed in 0.029977 [seconds]

Testing Scenario: Converted Perl tests
    Given: ccw_square
     Then: ccw_square is valid
    Given: ccw_square
     Then: cw_square is valid
    Given: ccw_square
     Then: ccw_square.area
    Given: ccw_square
     Then: cw_square.area
    Given: ccw_square
     Then: ccw_square.centroid
    Given: ccw_square
     Then: cw_square.centroid
    Given: ccw_square
     Then: ccw_square.contains_point(150, 150)
    Given: ccw_square
     Then: cw_square.contains_point(150, 150)
    Given: ccw_square
     Then: conversion to lines
    Given: ccw_square
     Then: split_at_first_point
    Given: ccw_square
     Then: split_at_index(2)
    Given: ccw_square
     Then: split_at_vertex(ccw_square[2])
    Given: ccw_square
     Then: is_counter_clockwise
    Given: ccw_square
     Then: ! is_counter_clockwise
    Given: ccw_square
     Then: make_counter_clockwise
    Given: ccw_square
     Then: make_counter_clockwise^2
    Given: ccw_square
     Then: first_point
    Given: Triangulating hexagon
     Then: right number of triangles
    Given: Triangulating hexagon
     Then: all triangles are ccw
    Given: General triangle
     Then: Intersection with line
Passed in 0.000847 [seconds]

Testing Centroid of Trapezoid must be inside
Passed in 7e-06 [seconds]

Testing Scenario: Remove collinear points from Polygon
    Given: Polygon with collinear points
     When: collinear points are removed
     Then: Leading collinear points are removed
    Given: Polygon with collinear points
     When: collinear points are removed
     Then: Trailing collinear points are removed
    Given: Polygon with collinear points
     When: collinear points are removed
     Then: Number of remaining points is correct
Passed in 0.000101 [seconds]

Testing Scenario: Iterators
    Given: Polygon with three points
     When: Iterating upwards
     Then: ++ it is not equal to begin
    Given: Polygon with three points
     When: Iterating upwards
     Then: ++ it is not equal to end
    Given: Polygon with three points
     When: Iterating upwards
     Then: ++ (++ it) is not equal to begin
    Given: Polygon with three points
     When: Iterating upwards
     Then: ++ (++ it) is equal to end
    Given: Polygon with three points
     When: Iterating upwards
     Then: ++ (++ (++ it)) is equal to begin
    Given: Polygon with three points
     When: Iterating upwards
     Then: ++ (++ (++ it)) is not equal to end
    Given: Polygon with three points
     When: Iterating downwards
     Then: -- it is not equal to begin
    Given: Polygon with three points
     When: Iterating downwards
     Then: -- it is equal to end
    Given: Polygon with three points
     When: Iterating downwards
     Then: -- (-- it) is not equal to begin
    Given: Polygon with three points
     When: Iterating downwards
     Then: -- (-- it) is not equal to end
    Given: Polygon with three points
     When: Iterating downwards
     Then: -- (-- (-- it)) is equal to begin
    Given: Polygon with three points
     When: Iterating downwards
     Then: -- (-- (-- it)) is not equal to end
    Given: Polygon with three points
     When: Deleting 1st point
     Then: Size is 2
    Given: Polygon with three points
     When: Deleting 1st point
     Then: p.begin().remove() == it_2nd
    Given: Polygon with three points
     When: Deleting 1st point
     Then: it_2nd == new begin()
    Given: Polygon with three points
     When: Deleting 2nd point
     Then: Size is 2
    Given: Polygon with three points
     When: Deleting 2nd point
     Then: it_2nd.remove() == it_3rd
    Given: Polygon with three points
     When: Deleting 2nd point
     Then: it_1st == new begin()
    Given: Polygon with three points
     When: Deleting two points
     Then: Size is 1
    Given: Polygon with three points
     When: Deleting two points
     Then: p.begin().next() == p.begin()
    Given: Polygon with three points
     When: Deleting two points
     Then: p.begin().prev() == p.begin()
    Given: Polygon with three points
     When: Deleting all points
     Then: Size is 0
    Given: Polygon with three points
     When: Deleting all points
     Then: ! p.begin().valid()
    Given: Polygon with three points
     When: Deleting all points
     Then: last iterator not valid
    Given: Polygon with three points
     When: Inserting a point at the beginning
     Then: Polygon content is ok
    Given: Polygon with three points
     When: Inserting a point at the 2nd position
     Then: Polygon content is ok
    Given: Polygon with three points
     When: Inserting a point after a point was removed
     Then: Initial capacity is 3
    Given: Polygon with three points
     When: Inserting a point after a point was removed
     Then: After removal of the 1st point the capacity is still 3
    Given: Polygon with three points
     When: Inserting a point after a point was removed
     Then: After removal of the 1st point the content is ok
    Given: Polygon with three points
     When: Inserting a point after a point was removed
     Then: After insertion at head position the polygon content is ok
    Given: Polygon with three points
     When: Inserting a point after a point was removed
     Then: and the capacity is still 3
Passed in 0.001404 [seconds]

Testing Scenario: Remove degenerate points from MutablePolygon
    Given: Polygon with duplicate points
     When: Duplicate points are removed
     Then: Polygon content is ok
Passed in 3.1e-05 [seconds]

Testing Scenario: smooth_outward
    Given: Convex polygon
     When: smooth_outward
     Then: Polygon is unmodified
    Given: Sharp tiny concave polygon (hole)
     When: smooth_outward
     Then: Hole is closed
    Given: Two polygons
     When: smooth_outward
     Then: CCW contour unmodified, CW contour removed.
Passed in 0.0001 [seconds]

Testing Skip addressing
block root
block leaf
Obtaining child
Obtaining parent
Passed in 5.6e-05 [seconds]

Testing Mutable priority queue - basic tests
a default constructed queue is empty
an empty queue is not empty when one element is inserted
a queue with one element has it on top
a queue with one element becomes empty when popped
insert sorted stays sorted
randomly inserted elements are popped sorted
Passed in 0.028597 [seconds]

Testing Mutable priority queue - reshedule first
reschedule top with highest prio leaves order unchanged
reschedule to mid range moves element to correct place
reschedule to last moves element to correct place
reschedule top of 2 elements to last
reschedule top of 3 elements left to 2nd
reschedule top of 3 elements right to 2nd
reschedule top random gives same resultas pop/push
Passed in 0.00403 [seconds]

Testing Mutable priority queue - first pop
Passed in 0.004132 [seconds]

Testing Mutable priority queue complex
Passed in 0.043609 [seconds]

Testing Scenario: Reading an STL file
    Given: umlauts in the path of a binary STL file, Czech characters in the file name
     When: STL file is read
     Then: load should succeed
    Given: in ASCII format
     When: line endings LF
     Then: load should succeed
    Given: in ASCII format
     When: line endings CRLF
     Then: load should succeed
    Given: in ASCII format
     When: nonstandard STL file (text after ending tags, invalid normals, for example infinities)
     Then: load should succeed
Passed in 0.005552 [seconds]

Testing CGAL and TriangleMesh conversions
Passed in 0.924352 [seconds]

Testing Empty raster should result in empty polygons
Passed in 2.4e-05 [seconds]

Testing Marching squares directions
Passed in 8e-06 [seconds]

Testing Fully covered raster should result in a rectangle
Full accuracy
Half accuracy
Passed in 0.00055 [seconds]

Testing 4x4 raster with one ring
Passed in 8.9e-05 [seconds]

Testing 4x4 raster with two rings
Ambiguous case with 'ac' square
Ambiguous case with 'bd' square
Passed in 0.000373 [seconds]

Testing Square with hole in the middle
Proportional raster, 1x1 mm pixel size, full accuracy
Proportional raster, 1x1 mm pixel size, half accuracy
Landscape raster, 1x1 mm pixel size, full accuracy
Landscape raster, 1x1 mm pixel size, half accuracy
Portrait raster, 1x1 mm pixel size, full accuracy
Portrait raster, 1x1 mm pixel size, half accuracy
Proportional raster, 2x2 mm pixel size, full accuracy
Proportional raster, 2x2 mm pixel size, half accuracy
Proportional raster, 0.5x0.5 mm pixel size, full accuracy
Proportional raster, 0.5x0.5 mm pixel size, half accuracy
Passed in 0.01419 [seconds]

Testing Circle with hole in the middle
Passed in 0.043844 [seconds]

Testing Recreate object from rasters
Passed in 6.83885 [seconds]

Testing ISO8601Z
Passed in 5.5e-05 [seconds]

Testing Slic3r_UTC_Time_Format
Passed in 2.9e-05 [seconds]

Testing Voronoi missing edges - points 12067
Passed in 4.9e-05 [seconds]

Testing Voronoi missing edges - Alessandro gapfill 12707
Passed in 0.000179 [seconds]

Testing Voronoi weirdness
Passed in 6.3e-05 [seconds]

Testing Voronoi division by zero 12903
Passed in 3.5e-05 [seconds]

Testing Voronoi offset
Passed in 0.000163 [seconds]

Testing Voronoi offset 2
Passed in 0.000439 [seconds]

Testing Voronoi offset 3
Passed in 0.000756 [seconds]

Testing Voronoi offset with edge collapse
Passed in 0.015053 [seconds]

Testing Voronoi offset 5
Passed in 0.003141 [seconds]

Testing Voronoi skeleton
Passed in 0.000258 [seconds]

Testing Voronoi missing vertex 1
Passed in 0.000121 [seconds]

Testing Voronoi missing vertex 2
Passed in 0.000195 [seconds]

Testing Voronoi missing vertex 3
Passed in 0.000335 [seconds]

Testing Duplicate Voronoi vertices
Passed in 0.000152 [seconds]

Testing Intersecting Voronoi edges
Passed in 9e-05 [seconds]

Testing Test brute force optimzer for basic 1D and 2D functions
Passed in 7.6e-05 [seconds]

Testing PNG read
Correct png buffer should be recognized as such.
Fake png buffer should be recognized as such.
Decoded PNG buffer resolution should match the original
Passed in 0.000588 [seconds]

Testing Split empty mesh
Passed in 9e-06 [seconds]

Testing Split simple mesh consisting of one part
Passed in 2.1e-05 [seconds]

Testing Split two non-watertight mesh
Passed in 1.5e-05 [seconds]

Testing Split non-manifold mesh
Passed in 1.7e-05 [seconds]

Testing Split two watertight meshes
Passed in 0.005572 [seconds]

Testing Reduce one edge by Quadric Edge Collapse
Passed in 6.7e-05 [seconds]

Testing Simplify mesh by Quadric edge collapse to 5%
Passed in 0.134516 [seconds]

Testing Simplify trouble case
Passed in 0.000186 [seconds]

Testing Simplified cube should not be empty.
Passed in 8.2e-05 [seconds]

Testing Hollow two overlapping spheres
Passed in 1.33781 [seconds]

===============================================================================
test cases:    77 |    76 passed | 1 failed
assertions: 47464 | 47463 passed | 1 failed


    Start 3: slic3rutils_tests
3/5 Test #3: slic3rutils_tests ................   Passed    0.03 sec
    Start 4: fff_print_tests
4/5 Test #4: fff_print_tests ..................   Passed    2.25 sec
    Start 5: sla_print_tests
5/5 Test #5: sla_print_tests ..................   Passed   21.78 sec

80% tests passed, 1 tests failed out of 5

Total Test time (real) =  33.78 sec

The following tests FAILED:
          2 - libslic3r_tests (Failed)
Errors while running CTest

build script:

cd "${srcdir}
 sed 's|DBUS REQUIRED_VARS|DBus REQUIRED_VARS|g' \
    -i PrusaSlicer/cmake/modules/FindDBus.cmake

  sed 's|find_package(OpenGL REQUIRED)|set(OpenGL_GL_PREFERENCE GLVND)\nfind_package(OpenGL REQUIRED)|g' \
    -i PrusaSlicer/deps/GLEW/glew/CMakeLists.txt \
    -i PrusaSlicer/deps/OpenCSG/CMakeLists.txt.in
  sed '12a-DOpenGL_GL_PREFERENCE=GLVND' \
    -i PrusaSlicer/deps/TIFF/TIFF.cmake

  msg2 "build deps"
  cd "${srcdir}/PrusaSlicer/deps/build"
  cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DDEP_WX_GTK3=ON

  make -j1

  msg2 "Build PrusaSlicer"
  cd "${srcdir}/PrusaSlicer/build"
  cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_PREFIX_PATH="${srcdir}/PrusaSlicer/deps/build/destdir/usr/local" \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DSLIC3R_FHS=ON \
    -DSLIC3R_PCH=OFF \
    -DSLIC3R_STATIC=ON \
    -DSLIC3R_WX_STABLE=ON \
    -DSLIC3R_GTK=3 \
    -DGLEW_SHARED_LIBRARY_RELEASE=""

  make
  ctest --output-on-failure
-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- SLIC3R_ASAN: OFF
-- SLIC3R_BUILD_SANDBOXES: OFF
-- SLIC3R_BUILD_TESTS: ON
-- SLIC3R_FHS: ON
-- SLIC3R_GTK: 3
-- SLIC3R_GUI: ON
-- SLIC3R_MSVC_COMPILE_PARALLEL: ON
-- SLIC3R_MSVC_PDB: ON
-- SLIC3R_PCH: OFF
-- SLIC3R_PERL_XS: OFF
-- SLIC3R_PROFILE: OFF
-- SLIC3R_STATIC: ON
-- SLIC3R_WX_STABLE: ON
-- SLIC3R_STATIC: ON
-- CMAKE_PREFIX_PATH: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local (from cache or command line)
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.0") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Found DBus: /usr/include/dbus-1.0;/usr/lib/dbus-1.0/include  
-- Found Boost: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/cmake/Boost-1.75.0/BoostConfig.cmake (found suitable version "1.75.0", minimum required is "1.66.0") found components: system filesystem thread log locale regex chrono atomic date_time iostreams 
-- Boost::boost exists
-- Found TBB: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include (found version "2017.0")  
--   TBB_FOUND               = TRUE
--   TBB_INCLUDE_DIRS        = /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include
--   TBB_DEFINITIONS         = 
--   TBB_LIBRARIES           = /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libtbb_static.a
--   TBB_DEFINITIONS_DEBUG   = TBB_USE_DEBUG=1
--   TBB_LIBRARIES_DEBUG     = 
--   TBB_DEFINITIONS_RELEASE = 
--   TBB_LIBRARIES_RELEASE   = /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libtbb_static.a
-- Found CURL: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libcurl.a (found version "7.75.0-DEV") 
-- Found ZLIB: /usr/lib/libz.so (found version "1.2.11") 
-- Found OpenSSL: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib64/libcrypto.a (found version "1.1.0l")  
OpenSSL include dir: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include
OpenSSL libraries: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib64/libssl.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib64/libcrypto.a;-pthread;dl
-- Found EXPAT: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libexpat.a (found version "2.2.0") 
-- Found PNG: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libpng.a (found version "1.6.35") 
-- Found OpenGL: /usr/lib/libOpenGL.so   
-- FindGLEW: did not find GLEW CMake config file. Searching for libraries.
-- FindGLEW: GLEW_USE_STATIC_LIBS: ON.
-- FindGLEW: GLEW_INCLUDE_DIR: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include
-- FindGLEW: GLEW_INCLUDE_DIRS: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include
-- FindGLEW: CMAKE_FIND_LIBRARY_SUFFIXES for SHARED: .so;.a
-- FindGLEW: CMAKE_FIND_LIBRARY_SUFFIXES for STATIC: .so
-- FindGLEW: GLEW_SHARED_LIBRARY_RELEASE: 
-- FindGLEW: GLEW_STATIC_LIBRARY_RELEASE: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libglew.a
-- FindGLEW: GLEW_SHARED_LIBRARY_DEBUG: GLEW_SHARED_LIBRARY_DEBUG-NOTFOUND
-- FindGLEW: GLEW_STATIC_LIBRARY_DEBUG: GLEW_STATIC_LIBRARY_DEBUG-NOTFOUND
-- FindGLEW: GLEW_SHARED_LIBRARY: GLEW_SHARED_LIBRARY-NOTFOUND
-- FindGLEW: GLEW_STATIC_LIBRARY: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libglew.a
-- FindGLEW: GLEW_LIBRARIES: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libglew.a
-- FindGLEW: GLEW_VERSION_MAJOR: 1
-- FindGLEW: GLEW_VERSION_MINOR: 13
-- FindGLEW: GLEW_VERSION_MICRO: 0
-- FindGLEW: GLEW_VERSION: 1.13.0
-- Found GLEW: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include (found version "1.13.0") 
-- FindGLEW: Creating GLEW::glew_s imported target.
-- FindGLEW: Creating GLEW::GLEW imported target.
-- Found NLopt in '/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib'.
-- Using NLopt include directory '/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include'.
-- Using NLopt library '/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libnlopt.a'.
-- Found OpenVDB: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include (found suitable version "6.2.1", minimum required is "5.0") found components: openvdb 
-- OpenVDB ABI Version: 6
-- Found Boost: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/cmake/Boost-1.75.0/BoostConfig.cmake (found version "1.75.0") found components: iostreams system 
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB
-- Performing Test HAVE_CXX_ATOMICS64_WITHOUT_LIB - Success
-- Performing Test LLVM_HAS_ATOMICS
-- Performing Test LLVM_HAS_ATOMICS - Success
-- OpenVDB libraries: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libopenvdb.a
-- Miniz NOT found in system, using bundled version...
-- Using qhull from system.
-- [libigl] Looking for Eigen3
-- IGL found, using system version...
-- Using header-only CGAL
-- Targetting Unix Makefiles
-- Using /usr/bin/c++ compiler.
-- Found GMP: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libgmp.a  
-- Found MPFR: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libmpfr.a  
-- Found Boost: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/cmake/Boost-1.75.0/BoostConfig.cmake (found suitable version "1.75.0", minimum required is "1.48")  
-- Boost include dirs: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include/boost-1_75
-- Boost libraries:    
-- Using gcc version 4 or later. Adding -frounding-math
-- Found wxWidgets: -L/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib;-pthread;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_gtk3u_gl-3.1.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_gtk3u_html-3.1.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_gtk3u_core-3.1.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_baseu-3.1.a;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;libOpenGL.so;libGLX.so;libGLU.so;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;-lwx_gtk3u_core-3.1;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;-lwx_baseu-3.1;libjpeg.a;libpng.a;libz.so;m;libtiff.a;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;libz.so;-lwxregexu-3.1;secret-1;gio-2.0;gobject-2.0;glib-2.0;libc.so;-lpthread;dl (found suitable version "3.1.4", minimum required is "3.0") 
-- wx-config path: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/bin/wx-config
-- wx libs: -L/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib;-pthread;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_gtk3u_gl-3.1.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_gtk3u_html-3.1.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_gtk3u_core-3.1.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libwx_baseu-3.1.a;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;libGLX.so;libGLU.so;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;-lwx_gtk3u_core-3.1;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;-lwx_baseu-3.1;libz.so;m;libSM.so;libICE.so;libX11.so;libXext.so;gtk-3;gdk-3;z;pangocairo-1.0;pango-1.0;harfbuzz;atk-1.0;cairo-gobject;cairo;gdk_pixbuf-2.0;gio-2.0;gobject-2.0;glib-2.0;libz.so;-lwxregexu-3.1;secret-1;gio-2.0;gobject-2.0;glib-2.0;libc.so;-lpthread;dl;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libpng.a;/usr/lib/libz.so;m;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libtiff.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib64/libjpeg.a;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/lib/libexpat.a;/usr/lib/librt.so
-- Found GTK3: /usr/include/gtk-3.0;/usr/include/pango-1.0;/usr/include/glib-2.0;/usr/lib/glib-2.0/include;/usr/include/harfbuzz;/usr/include/freetype2;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include/libpng16;/usr/include/libmount;/usr/include/blkid;/usr/include/fribidi;/usr/include/cairo;/usr/include/lzo;/usr/include/pixman-1;/usr/include/gdk-pixbuf-2.0;/tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/deps/build/destdir/usr/local/include;/usr/include/gio-unix-2.0;/usr/include/cloudproviders;/usr/include/atk-1.0;/usr/include/at-spi2-atk/2.0;/usr/include/dbus-1.0;/usr/lib/dbus-1.0/include;/usr/include/at-spi-2.0  
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/makepkg/sl1-prusa-slicer-git/src/PrusaSlicer/build

and now?

greetings

@sl1pkn07
Copy link
Author

well. i have tested a lot of things, and i think i have found the gulty

the systemwide C/CXXFLAGS set up -march=native as default compiler flag. then i've change in build time to -march=x86-64 -mtune=generic, and the ctest is passed OK without problem

any dev can take a look why fail the 2rd test (and some time get segfault when use the program normally, like posted in #4141 (comment)) and if is fixeable without change that flag?

greetings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants