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.

Conflicts:
	xs/xsp/XS.xsp
This commit is contained in:
Joseph Lenox 2016-11-08 10:23:30 -06:00
parent 8910b4970a
commit 1e37195af1
3 changed files with 37 additions and 0 deletions

View File

@ -121,6 +121,7 @@ t/18_motionplanner.t
t/19_model.t
t/20_print.t
t/21_gcode.t
t/22_exception.t
xsp/BoundingBox.xsp
xsp/BridgeDetector.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

@ -16,4 +16,24 @@ VERSION()
RETVAL = newSVpv(SLIC3R_VERSION, 0);
OUTPUT: RETVAL
SV*
DEBUG_OUT_PATH_PREFIX()
CODE:
RETVAL = newSVpv(SLIC3R_DEBUG_OUT_PATH_PREFIX, 0);
OUTPUT: RETVAL
SV*
FORK_NAME()
CODE:
RETVAL = newSVpv(SLIC3R_FORK_NAME, 0);
OUTPUT: RETVAL
void
xspp_test_croak_hangs_on_strawberry()
CODE:
try {
throw 1;
} catch (...) {
croak("xspp_test_croak_hangs_on_strawberry: exception catched\n");
}
%}