summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2017-02-18 22:28:58 -0700
committerKarl Williamson <khw@cpan.org>2017-02-19 23:25:13 -0700
commit934272c1a42c040b4bd39f09eb0eeced3388942e (patch)
treead23ba7d5f48fc8919678511b60429ba611713fc /ext
parent8f71649941d02d5bdfe4fed5054c505b12dd2c0e (diff)
downloadperl-934272c1a42c040b4bd39f09eb0eeced3388942e.tar.gz
Split APItest/t/handy.t
This is a very long running test. This commit splits it into smaller chunks, based on the environment variable TEST_JOBS, up to 10. Each chunk executes 1/TEST_JOBS of the total test. If TEST_JOBS is not set, it reverts to 1 chunk. The alternative would be to revert to 10, but since there is overhead associated with each new chunk, I chose, for now, 1. There may be a better solution later on, but I think this is good enough for now.
Diffstat (limited to 'ext')
-rw-r--r--ext/XS-APItest/t/handy0.t7
-rw-r--r--ext/XS-APItest/t/handy1.t7
-rw-r--r--ext/XS-APItest/t/handy2.t7
-rw-r--r--ext/XS-APItest/t/handy3.t7
-rw-r--r--ext/XS-APItest/t/handy4.t7
-rw-r--r--ext/XS-APItest/t/handy5.t7
-rw-r--r--ext/XS-APItest/t/handy6.t7
-rw-r--r--ext/XS-APItest/t/handy7.t7
-rw-r--r--ext/XS-APItest/t/handy8.t7
-rw-r--r--ext/XS-APItest/t/handy9.t7
-rw-r--r--ext/XS-APItest/t/handy_base.pl (renamed from ext/XS-APItest/t/handy.t)17
11 files changed, 86 insertions, 1 deletions
diff --git a/ext/XS-APItest/t/handy0.t b/ext/XS-APItest/t/handy0.t
new file mode 100644
index 0000000000..7c3e4e3e72
--- /dev/null
+++ b/ext/XS-APItest/t/handy0.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 0;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy1.t b/ext/XS-APItest/t/handy1.t
new file mode 100644
index 0000000000..2fd8ec1d21
--- /dev/null
+++ b/ext/XS-APItest/t/handy1.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 1;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy2.t b/ext/XS-APItest/t/handy2.t
new file mode 100644
index 0000000000..2d4e78d311
--- /dev/null
+++ b/ext/XS-APItest/t/handy2.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 2;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy3.t b/ext/XS-APItest/t/handy3.t
new file mode 100644
index 0000000000..fe07af3b64
--- /dev/null
+++ b/ext/XS-APItest/t/handy3.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 3;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy4.t b/ext/XS-APItest/t/handy4.t
new file mode 100644
index 0000000000..08977a1aa7
--- /dev/null
+++ b/ext/XS-APItest/t/handy4.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 4;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy5.t b/ext/XS-APItest/t/handy5.t
new file mode 100644
index 0000000000..d2bb9269bc
--- /dev/null
+++ b/ext/XS-APItest/t/handy5.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 5;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy6.t b/ext/XS-APItest/t/handy6.t
new file mode 100644
index 0000000000..44fd1c6346
--- /dev/null
+++ b/ext/XS-APItest/t/handy6.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 6;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy7.t b/ext/XS-APItest/t/handy7.t
new file mode 100644
index 0000000000..c6c2d5092a
--- /dev/null
+++ b/ext/XS-APItest/t/handy7.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 7;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy8.t b/ext/XS-APItest/t/handy8.t
new file mode 100644
index 0000000000..7e546d7371
--- /dev/null
+++ b/ext/XS-APItest/t/handy8.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 8;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy9.t b/ext/XS-APItest/t/handy9.t
new file mode 100644
index 0000000000..38d89c0c73
--- /dev/null
+++ b/ext/XS-APItest/t/handy9.t
@@ -0,0 +1,7 @@
+use strict;
+use warnings;
+no warnings 'once';
+
+$::TEST_CHUNK = 9;
+
+do './t/handy_base.pl';
diff --git a/ext/XS-APItest/t/handy.t b/ext/XS-APItest/t/handy_base.pl
index 5ae97cdb21..676f7dfe6c 100644
--- a/ext/XS-APItest/t/handy.t
+++ b/ext/XS-APItest/t/handy_base.pl
@@ -166,7 +166,18 @@ my %utf8_param_code = (
"deprecated mathoms" => -2,
);
+# This test is split into this number of files.
+my $num_test_files = $ENV{TEST_JOBS} || 1;
+$num_test_files = 10 if $num_test_files > 10;
+
+my $property_count = -1;
foreach my $name (sort keys %properties, 'octal') {
+
+ # We test every nth property in this run so that this test is split into
+ # smaller chunks to minimize test suite elapsed time when run in parallel.
+ $property_count++;
+ next if $property_count % $num_test_files != $::TEST_CHUNK;
+
my @invlist;
if ($name eq 'octal') {
# Hand-roll an inversion list with 0-7 in it and nothing else.
@@ -389,8 +400,12 @@ my %to_properties = (
UPPER => 'Uppercase_Mapping',
);
-
+$property_count = -1;
foreach my $name (sort keys %to_properties) {
+
+ $property_count++;
+ next if $property_count % $num_test_files != $::TEST_CHUNK;
+
my $property = $to_properties{$name};
my ($list_ref, $map_ref, $format, $missing)
= prop_invmap($property, );