]> git.vpit.fr Git - perl/modules/indirect.git/blobdiff - t/09-load-threads.t
Make sure the module is loaded in the first thread first
[perl/modules/indirect.git] / t / 09-load-threads.t
index 1f000c15d228d07364667b8839085a25930014e9..4652ab9f7d489da70bf7fe3381176df6a0be7904 100644 (file)
@@ -65,11 +65,19 @@ sub is_loaded {
 
  my $res = load_test();
 
+ my $expected;
  if ($affirmative) {
-  is $res, 1, "$desc: module loaded";
+  $expected = 1;
+  $desc     = "$desc: module loaded";
  } else {
-  is $res, 0, "$desc: module not loaded";
+  $expected = 0;
+  $desc     = "$desc: module not loaded";
  }
+
+ is($res, $expected, $desc)
+               or diag("Test '$desc' failed: got '$res', expected '$expected'");
+
+ return;
 }
 
 BEGIN {
@@ -174,7 +182,7 @@ is_loaded 0, 'main body, after nested loadings';
 use threads;
 use threads::shared;
 
-my @locks_down = (1) x 5;
+my @locks_down = (1) x 6;
 my @locks_up   = (0) x scalar @locks_down;
 share($_) for @locks_down, @locks_up;
 
@@ -213,17 +221,19 @@ sub sync_slave {
 SKIP: {
  my $thr1 = spawn(sub {
   my $here = 'first simultaneous thread';
-  is_loaded 0, "$here, beginning";
   sync_slave 0;
 
+  is_loaded 0, "$here, beginning";
+  sync_slave 1;
+
   do_load;
   is_loaded 1, "$here, after loading";
-  sync_slave 1;
   sync_slave 2;
-
   sync_slave 3;
-  is_loaded 1, "$here, still loaded while also loaded in the other thread";
+
   sync_slave 4;
+  is_loaded 1, "$here, still loaded while also loaded in the other thread";
+  sync_slave 5;
 
   is_loaded 1, "$here, end";
 
@@ -234,17 +244,19 @@ SKIP: {
 
  my $thr2 = spawn(sub {
   my $here = 'second simultaneous thread';
-  is_loaded 0, "$here, beginning";
   sync_slave 0;
 
+  is_loaded 0, "$here, beginning";
   sync_slave 1;
-  is_loaded 0, "$here, loaded in other thread but not here";
+
   sync_slave 2;
+  sync_slave 3;
+  is_loaded 0, "$here, loaded in other thread but not here";
 
   do_load;
   is_loaded 1, "$here, after loading";
-  sync_slave 3;
   sync_slave 4;
+  sync_slave 5;
 
   is_loaded 1, "$here, end";