Unit test to verify whether Slic3r would hang when croaking from

a C++ exception handler. This is an unfortunate error in some
Strawberry Perl distributions.
This commit is contained in:
bubnikv 2016-11-06 17:42:36 +01:00
parent e9e55e7ac3
commit aac968162b
3 changed files with 25 additions and 0 deletions

View File

@ -166,6 +166,7 @@ t/18_motionplanner.t
t/19_model.t t/19_model.t
t/20_print.t t/20_print.t
t/21_gcode.t t/21_gcode.t
t/22_exception.t
xsp/BoundingBox.xsp xsp/BoundingBox.xsp
xsp/BridgeDetector.xsp xsp/BridgeDetector.xsp
xsp/Clipper.xsp xsp/Clipper.xsp

16
xs/t/22_exception.t Normal file
View File

@ -0,0 +1,16 @@
#!/usr/bin/perl
use strict;
use warnings;
use Slic3r::XS;
use Test::More tests => 1;
{
eval {
Slic3r::xspp_test_croak_hangs_on_strawberry();
};
is $@, "xspp_test_croak_hangs_on_strawberry: exception catched\n", 'croak from inside a C++ exception delivered';
}
__END__

View File

@ -28,4 +28,12 @@ FORK_NAME()
RETVAL = newSVpv(SLIC3R_FORK_NAME, 0); RETVAL = newSVpv(SLIC3R_FORK_NAME, 0);
OUTPUT: RETVAL OUTPUT: RETVAL
void
xspp_test_croak_hangs_on_strawberry()
CODE:
try {
throw 1;
} catch (...) {
croak("xspp_test_croak_hangs_on_strawberry: exception catched\n");
}
%} %}