summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Paulmier <matt@mpaulmier.home>2018-08-02 17:15:24 +0200
committerMatthias Paulmier <matt@mpaulmier.home>2018-08-02 20:21:33 +0200
commit6d487b3ed42c62aebe0a7e172def7f3da25e72d1 (patch)
tree830a1acc8ba5e545e5eeafe65db57440f448b6e2
parentd4a8005fd2d5adddabf537d26f932192b226806f (diff)
downloadautomake-6d487b3ed42c62aebe0a7e172def7f3da25e72d1.tar.gz
Modify all tests to use the Test::Simple lib
All tests now use the Test::Simple library. We keep the distinction between pl (pure perl) and plt (perl + Test::Simple) in case someone wants to write a perl tests without this lib. - t/pm/*: All tests now use the plt extension and the Test::Simple library. - t/pm/CondStack.pl: Remove it as it was not well built and the test results were false.
-rw-r--r--t/list-of-tests.mk24
-rw-r--r--t/pm/Channels.plt (renamed from t/pm/Channels.pl)5
-rw-r--r--t/pm/CondStack.pl76
-rw-r--r--t/pm/Condition-t.plt (renamed from t/pm/Condition-t.pl)12
-rw-r--r--t/pm/Condition.plt (renamed from t/pm/Condition.pl)16
-rw-r--r--t/pm/DisjConditions-t.plt (renamed from t/pm/DisjConditions-t.pl)12
-rw-r--r--t/pm/DisjConditions.plt (renamed from t/pm/DisjConditions.pl)14
-rw-r--r--t/pm/General.plt (renamed from t/pm/General.pl)10
-rw-r--r--t/pm/SilentRules.pl60
-rw-r--r--t/pm/SilentRules.plt22
-rw-r--r--t/pm/Utils.plt (renamed from t/pm/Utils.pl)52
-rw-r--r--t/pm/Version.pl127
-rw-r--r--t/pm/Version.plt122
-rw-r--r--t/pm/Wrap.plt (renamed from t/pm/Wrap.pl)23
14 files changed, 225 insertions, 350 deletions
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index c91bd8c6f..c4e3844a0 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -34,19 +34,17 @@ t/remake-am-pr10111.sh \
t/remake-m4-pr10111.sh
perl_tap_TESTS = \
-t/pm/File.plt
-
-perl_TESTS = \
-t/pm/Channels.pl \
-t/pm/Condition.pl \
-t/pm/Condition-t.pl \
-t/pm/CondStack.pl \
-t/pm/DisjConditions.pl \
-t/pm/DisjConditions-t.pl \
-t/pm/General.pl \
-t/pm/Utils.pl \
-t/pm/Version.pl \
-t/pm/Wrap.pl
+t/pm/Channels.plt \
+t/pm/Condition.plt \
+t/pm/Condition-t.plt \
+t/pm/DisjConditions.plt \
+t/pm/DisjConditions-t.plt \
+t/pm/File.plt \
+t/pm/General.plt \
+t/pm/SilentRules.plt \
+t/pm/Utils.plt \
+t/pm/Version.plt \
+t/pm/Wrap.plt
perf_TESTS = \
t/perf/cond.sh \
diff --git a/t/pm/Channels.pl b/t/pm/Channels.plt
index b7d0b0a19..4014ebf49 100644
--- a/t/pm/Channels.pl
+++ b/t/pm/Channels.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2018 Matthias Paulmier
# This program is free software; you can redistribute it and/or
@@ -17,10 +18,10 @@
use Automake::Channels;
use Automake::Location;
+use Test::Simple tests => 1;
eval { msg ('test-fatal', new Automake::Location ('.'), "Test Message") };
warn $@ if $@;
-exit 0 if $@;
-exit 1;
+ok ($@, "Test fatal error");
diff --git a/t/pm/CondStack.pl b/t/pm/CondStack.pl
deleted file mode 100644
index 5e28e69ae..000000000
--- a/t/pm/CondStack.pl
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (C) 2018 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-use Automake::CondStack;
-use Automake::Condition qw (TRUE FALSE);
-use Automake::Location;
-
-# The different test cases. What happens with IF alone?
-my @tests = (['IF', 'ELSE', 'ENDIF'],
- ['ELSE', 'ENDIF'],
- ['IF', 'ENDIF'],
- ['ENDIF'],
- ['IF', 'ELSE', 'IF', 'ELSE', 'ENDIF']);
-
-my @exp_res = (0, 1, 0, 1, 0);
-
-my $where = new Automake::Location "/dev/null:0";
-
-sub test_cond_stack ()
-{
- my @real_res = ();
- for (@tests)
- {
- # Reset conditional stack for each test case
- @cond_stack = ();
- my $res = 0;
- my $else_called = 0;
- for my $test (@$_)
- {
- if ($test eq 'IF')
- {
- cond_stack_if (undef, 'FALSE', $where);
- }
- if ($test eq 'ELSE')
- {
- $else_called = 1;
- if (cond_stack_else ('!', 'FALSE', $where) == FALSE)
- {
- $res = 1;
- last;
- }
- }
- if ($test eq 'ENDIF')
- {
- my $cond = ($else_called ? TRUE : FALSE);
- if (cond_stack_else (undef, undef, $where) == $cond)
- {
- $res = 1;
- last;
- }
- }
- }
- push @real_res, $res;
- }
- print "@real_res\n";
- print "@exp_res\n";
- for my $i (0 .. $#exp_res)
- {
- return 1 if $real_res[$i] ne $exp_res[$i];
- }
- return 0;
-}
-
-exit (test_cond_stack);
diff --git a/t/pm/Condition-t.pl b/t/pm/Condition-t.plt
index 18d30eaf0..364230d82 100644
--- a/t/pm/Condition-t.pl
+++ b/t/pm/Condition-t.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -28,6 +29,7 @@ BEGIN {
}
}
use Automake::Condition qw/TRUE FALSE/;
+use Test::Simple tests => 5;
sub test_basics ()
{
@@ -303,8 +305,8 @@ sub test_merge ()
return 0;
}
-exit (test_basics
- || test_true_when
- || test_reduce_and
- || test_reduce_or
- || test_merge);
+ok (test_basics == 0, 'Test basic conditions');
+ok (test_true_when == 0, 'Test implied conditions when declaring a new one');
+ok (test_reduce_and == 0, 'Test "and" reduction');
+ok (test_reduce_or == 0, 'Test "or" reduction');
+ok (test_merge == 0, 'Test the merge method');
diff --git a/t/pm/Condition.pl b/t/pm/Condition.plt
index 58f89b3ae..c019b5fdc 100644
--- a/t/pm/Condition.pl
+++ b/t/pm/Condition.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -14,6 +15,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
use Automake::Condition qw/TRUE FALSE/;
+use Test::Simple tests => 6;
sub test_basics ()
{
@@ -262,7 +264,6 @@ sub test_bad_declarations ()
my $cond1 = new Automake::Condition ('TRUE');
eval { new Automake::Condition ($cond1) };
- warn $@ if $@;
$failed = 1 unless $@;
$@ = '';
@@ -271,14 +272,13 @@ sub test_bad_declarations ()
my $cond2 = new Automake::Condition ("COND1_TRUE");
eval { new Automake::Condition ("$cond2") };
- warn $@ if $@;
$failed = 1 unless $@;
return $failed;
}
-exit (test_basics
- || test_true_when
- || test_reduce_and
- || test_reduce_or
- || test_merge
- || test_bad_declarations);
+ok (test_basics == 0, 'Test basic conditions');
+ok (test_true_when == 0, 'Test implied conditions when declaring a new one');
+ok (test_reduce_and == 0, 'Test "and" reduction');
+ok (test_reduce_or == 0, 'Test "or" reduction');
+ok (test_merge == 0, 'Test the merge method');
+ok (test_bad_declarations == 0, 'Test bad condition declarations');
diff --git a/t/pm/DisjConditions-t.pl b/t/pm/DisjConditions-t.plt
index 33c6c2d75..976d7a82e 100644
--- a/t/pm/DisjConditions-t.pl
+++ b/t/pm/DisjConditions-t.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -29,6 +30,7 @@ BEGIN {
}
use Automake::Condition qw/TRUE FALSE/;
use Automake::DisjConditions;
+use Test::Simple tests => 5;
sub test_basics ()
{
@@ -437,8 +439,8 @@ sub test_ambig ()
return $failed;
}
-exit (test_basics
- || test_invert
- || test_simplify
- || test_sub_conditions
- || test_ambig);
+ok (test_basics == 0, 'Basic tests');
+ok (test_invert == 0, 'Test inverts');
+ok (test_simplify == 0, 'Test condition simplifications');
+ok (test_sub_conditions == 0, 'Test sub conditions');
+ok (test_ambig == 0, 'Test ambiguous conditions');
diff --git a/t/pm/DisjConditions.pl b/t/pm/DisjConditions.plt
index bdcafd2bb..c5ec25be0 100644
--- a/t/pm/DisjConditions.pl
+++ b/t/pm/DisjConditions.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2001-2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -15,6 +16,7 @@
use Automake::Condition qw/TRUE FALSE/;
use Automake::DisjConditions;
+use Test::Simple tests => 6;
sub test_basics ()
{
@@ -403,9 +405,9 @@ sub test_bad_declarations
return $failed;
}
-exit (test_basics
- || test_invert
- || test_simplify
- || test_sub_conditions
- || test_ambig
- || test_bad_declarations);
+ok (test_basics == 0, 'Basic tests');
+ok (test_invert == 0, 'Test inverts');
+ok (test_simplify == 0, 'Test condition simplifications');
+ok (test_sub_conditions == 0, 'Test sub conditions');
+ok (test_ambig == 0, 'Test ambiguous conditions');
+ok (test_bad_declarations == 0, 'Test wrong condition declarations');
diff --git a/t/pm/General.pl b/t/pm/General.plt
index 0caefe7cf..645886d9c 100644
--- a/t/pm/General.pl
+++ b/t/pm/General.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -14,14 +15,11 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
use Automake::General;
-
-my $failed = 0;
+use Test::Simple tests => 2;
# Check 'none'.
my $none_positive = none { $_[0] < 0 } (1, 7, 3, 8, 9);
-$failed = 1 if ($none_positive == 0);
+ok ($none_positive != 0, 'Test none on positive values');
my $none_gt_8 = none { $_[0] >= 8 } (1, 7, 3, 8, 9);
-$failed = 1 if ($none_gt_8 == 1);
-
-exit $failed;
+ok ($none_gt_8 == 0, 'Test none on values > 8');
diff --git a/t/pm/SilentRules.pl b/t/pm/SilentRules.pl
deleted file mode 100644
index 7397c3a74..000000000
--- a/t/pm/SilentRules.pl
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2018 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-use Automake::SilentRules;
-
-my @test_vars = qw (FOO BAR BAZ TEST);
-
-
-sub test_verbose_flag
-{
- my @res = map { verbose_flag $_ } @test_vars;
- print "Test verbose_flag:\n";
- print "Variable names: @test_vars\n";
- print "Result: @res\n\n";
- for my $i (0 .. $#res)
- {
- return 1
- unless $res[$i] eq '$(AM_V_' . $test_vars[$i] . ')';
- }
- return 0;
-}
-
-
-sub test_verbose_nodep_flag
-{
- my @res = map { verbose_nodep_flag $_ } @test_vars;
- print "Test verbose_nodep_flag:\n";
- print "Variable names: @test_vars\n";
- print "Result: @res\n\n";
- for my $i (0 .. $#res)
- {
- return 1
- unless $res[$i] eq '$(AM_V_' . $test_vars[$i] . '@am__nodep@)';
- }
- return 0;
-}
-
-
-sub test_silent_flag
-{
- return 1
- unless silent_flag eq '$(AM_V_at)';
- print "silent_flag: OK\n\n";
- return 0;
-}
-
-
-exit (test_verbose_flag | test_verbose_nodep_flag | test_silent_flag);
diff --git a/t/pm/SilentRules.plt b/t/pm/SilentRules.plt
new file mode 100644
index 000000000..506d4b2cf
--- /dev/null
+++ b/t/pm/SilentRules.plt
@@ -0,0 +1,22 @@
+# -*- mode:perl -*-
+# Copyright (C) 2018 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+use Automake::SilentRules;
+use Test::Simple tests => 3;
+
+ok (verbose_flag 'FOO' eq '$(AM_V_FOO)', 'verbose_flag');
+ok (verbose_nodep_flag 'FOO' eq '$(AM_V_FOO@am__nodep@)', 'verbose_nodep_flag');
+ok (silent_flag eq '$(AM_V_at)', 'silent_flag');
diff --git a/t/pm/Utils.pl b/t/pm/Utils.plt
index ad8fc35be..7bb0fe750 100644
--- a/t/pm/Utils.pl
+++ b/t/pm/Utils.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2018 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or
@@ -14,25 +15,13 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
use Automake::Utils;
+use Test::Simple tests => 3;
-sub check_subst
-{
- my @inputs = qw (AC_FOO AC_BAR AC_BAZ);
- my @expected_outputs = map {
- (my $exp = $_) =~ s/(.*)/\@$1\@/;
- $exp;
- } @inputs;
+ok (subst 'AC_FOO' eq '@AC_FOO@', 'subst');
- for my $i (0 .. $#inputs)
- {
- return 1 if (subst $inputs[$i]) ne $expected_outputs[$i];
- }
- return 0;
-}
+##########################################
-sub check_flatten
-{
- my $test_str = "\
+my $test_str = "\
Aliquam posuere. Nunc aliquet, augue nec adipiscing interdum, lacus tellus
malesuada massa, quis varius mi purus non odio. Pellentesque condimentum,
@@ -44,24 +33,19 @@ sit amet urna. Curabitur vulputate vestibulum lorem. Fusce sagittis, libero
lacinia eros.
";
- my $expected_res = "Aliquam posuere. Nunc aliquet, augue nec adipiscing " .
- "interdum, lacus tellus malesuada massa, quis varius mi purus non " .
- "odio. Pellentesque condimentum, magna ut suscipit hendrerit, ipsum " .
- "augue ornare nulla, non luctus diam neque sit amet urna. Curabitur " .
- "vulputate vestibulum lorem. Fusce sagittis, libero non molestie " .
- "mollis, magna orci ultrices dolor, at vulputate neque nulla lacinia " .
- "eros.";
+my $expected_res = "Aliquam posuere. Nunc aliquet, augue nec adipiscing " .
+ "interdum, lacus tellus malesuada massa, quis varius mi purus non " .
+ "odio. Pellentesque condimentum, magna ut suscipit hendrerit, ipsum " .
+ "augue ornare nulla, non luctus diam neque sit amet urna. Curabitur " .
+ "vulputate vestibulum lorem. Fusce sagittis, libero non molestie " .
+ "mollis, magna orci ultrices dolor, at vulputate neque nulla lacinia " .
+ "eros.";
- return 1 if (flatten $test_str) ne $expected_res;
- return 0;
-}
+ok ((flatten $test_str) eq $expected_res, 'flatten');
-sub check_locate_aux_dir
-{
- locate_aux_dir;
- # The install-sh script is located in $(top_scrdir)/lib/
- return 1 if ($am_config_aux_dir ne "$(top_srcdir)/lib/");
- return 0;
-}
+#####################################################
-exit (check_subst || check_flatten);
+locate_aux_dir;
+# The install-sh script is located in $(top_scrdir)/lib/
+print "$am_config_aux_dir\n";
+ok ($am_config_aux_dir eq '$(top_srcdir)', 'locate_aux_dir');
diff --git a/t/pm/Version.pl b/t/pm/Version.pl
deleted file mode 100644
index e4372fffb..000000000
--- a/t/pm/Version.pl
+++ /dev/null
@@ -1,127 +0,0 @@
-# Copyright (C) 2002-2018 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-use Automake::Version;
-
-my $failed = 0;
-
-sub test_version_compare
-{
- my ($left, $right, $result) = @_;
- my @leftver = Automake::Version::split ($left);
- my @rightver = Automake::Version::split ($right);
- if ($#leftver == -1)
- {
- print "can't grok \"$left\"\n";
- $failed = 1;
- return;
- }
- if ($#rightver == -1)
- {
- print "can't grok \"$right\"\n";
- $failed = 1;
- return;
- }
- my $res = Automake::Version::compare (@leftver, @rightver);
- if ($res != $result)
- {
- print "compare (\"$left\", \"$right\") = $res! (not $result?)\n";
- $failed = 1;
- }
-
- my $check_expected = ($result == 0 || $result == 1) ? 0 : 1;
- # Exception for 'foo' fork.
- $check_expected = 1
- if ($right =~ /foo/ && !($left =~ /foo/));
-
- my $check = Automake::Version::check ($left, $right);
- if ($check != $check_expected)
- {
- print "check (\"$left\", \"$right\") = $check! (not $check_expected?)\n";
- $failed = 1;
- }
-}
-
-sub test_bad_versions
-{
- my ($ver) = @_;
- my @version = Automake::Version::split ($ver);
- if ($#version != -1)
- {
- print "shouldn't grok \"$ver\"\n";
- $failed = 1;
- }
-}
-
-sub test_bad_declarations
-{
- eval { Automake::Version::check ('', '1.2.3') };
-
- warn $@ if $@;
- $failed = 1 unless $@;
-
- $@ = '';
-
- eval { Automake::Version::check ('1.2.3', '') };
-
- warn $@ if $@;
- $failed = 1 unless $@;
-}
-
-my @tests = (
-# basics
- ['1.0', '2.0', -1],
- ['2.0', '1.0', 1],
- ['1.2', '1.2', 0],
- ['1.1', '1.2', -1],
- ['1.2', '1.1', 1],
-# alphas
- ['1.4', '1.4g', -1],
- ['1.4g', '1.5', -1],
- ['1.4g', '1.4', 1],
- ['1.5', '1.4g', 1],
- ['1.4a', '1.4g', -1],
- ['1.5a', '1.3g', 1],
- ['1.6a', '1.6a', 0],
-# micros
- ['1.5.1', '1.5', 1],
- ['1.5.0', '1.5', 0],
- ['1.5.4', '1.6.1', -1],
-# micros and alphas
- ['1.5a', '1.5.1', 1],
- ['1.5a', '1.5.1a', 1],
- ['1.5a', '1.5.1f', 1],
- ['1.5', '1.5.1a', -1],
- ['1.5.1a', '1.5.1f', -1],
- ['1.5.1f', '1.5.1a', 1],
- ['1.5.1f', '1.5.1f', 0],
-# special exceptions
- ['1.6-p5a', '1.6.5a', 0],
- ['1.6', '1.6-p5a', -1],
- ['1.6-p4b', '1.6-p5a', -1],
- ['1.6-p4b', '1.6-foo', 1],
- ['1.6-p4b', '1.6a-foo', -1],
- ['1.6-p5', '1.6.5', 0],
- ['1.6a-foo', '1.6a-foo', 0],
-);
-
-my @bad_versions = (
- '', 'a', '1', '1a', '1.2.3.4', '-1.2'
-);
-
-test_version_compare (@{$_}) foreach @tests;
-test_bad_versions ($_) foreach @bad_versions;
-
-exit $failed;
diff --git a/t/pm/Version.plt b/t/pm/Version.plt
new file mode 100644
index 000000000..4684453af
--- /dev/null
+++ b/t/pm/Version.plt
@@ -0,0 +1,122 @@
+# -*- mode:perl -*-
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use Automake::Version;
+use Test::Simple tests => 34;
+
+sub test_version_compare
+{
+ my ($left, $right, $result) = @_;
+ my @leftver = Automake::Version::split ($left);
+ my @rightver = Automake::Version::split ($right);
+ if ($#leftver == -1)
+ {
+ print "can't grok \"$left\"\n";
+ return 1;
+ }
+ if ($#rightver == -1)
+ {
+ print "can't grok \"$right\"\n";
+ return 1;
+ }
+ my $res = Automake::Version::compare (@leftver, @rightver);
+ if ($res != $result)
+ {
+ print "compare (\"$left\", \"$right\") = $res! (not $result?)\n";
+ return 1;
+ }
+
+ my $check_expected = ($result == 0 || $result == 1) ? 0 : 1;
+ # Exception for 'foo' fork.
+ $check_expected = 1
+ if ($right =~ /foo/ && !($left =~ /foo/));
+
+ my $check = Automake::Version::check ($left, $right);
+ if ($check != $check_expected)
+ {
+ print "check (\"$left\", \"$right\") = $check! (not $check_expected?)\n";
+ return 1;
+ }
+ return 0;
+}
+
+sub test_bad_versions
+{
+ my ($ver) = @_;
+ my @version = Automake::Version::split ($ver);
+ if ($#version != -1)
+ {
+ print "shouldn't grok \"$ver\"\n";
+ return 1;
+ }
+ return 0;
+}
+
+sub test_bad_declarations
+{
+ eval { Automake::Version::check ('', '1.2.3') };
+
+ warn $@ if $@;
+ $failed = 1 unless $@;
+
+ $@ = '';
+
+ eval { Automake::Version::check ('1.2.3', '') };
+
+ warn $@ if $@;
+ return 1 unless $@;
+ return 0;
+}
+
+ok (test_version_compare ('2.0', '1.0', 1) == 0, 'Test comparing versions basics 2');
+ok (test_version_compare ('1.2', '1.2', 0) == 0, 'Test comparing versions basics 3');
+ok (test_version_compare ('1.1', '1.2', -1) == 0, 'Test comparing versions basics 4');
+ok (test_version_compare ('1.2', '1.1', 1) == 0, 'Test comparing versions basics 5');
+
+ok (test_version_compare ('1.4', '1.4g', -1) == 0, 'Test comparing versions with alphas 1');
+ok (test_version_compare ('1.4g', '1.5', -1) == 0, 'Test comparing versions with alphas 2');
+ok (test_version_compare ('1.4g', '1.4', 1) == 0, 'Test comparing versions with alphas 3');
+ok (test_version_compare ('1.5', '1.4g', 1) == 0, 'Test comparing versions with alphas 4');
+ok (test_version_compare ('1.4a', '1.4g', -1) == 0, 'Test comparing versions with alphas 5');
+ok (test_version_compare ('1.5a', '1.3g', 1) == 0, 'Test comparing versions with alphas 6');
+ok (test_version_compare ('1.6a', '1.6a', 0) == 0, 'Test comparing versions with alphas 7');
+
+ok (test_version_compare ('1.5.1', '1.5', 1) == 0, 'Test comparing versions micros 1');
+ok (test_version_compare ('1.5.0', '1.5', 0) == 0, 'Test comparing versions micros 2');
+ok (test_version_compare ('1.5.4', '1.6.1', -1) == 0, 'Test comparing versions micros 3');
+
+ok (test_version_compare ('1.5a', '1.5.1', 1) == 0, 'Test comparing versions micros and alphas 1');
+ok (test_version_compare ('1.5a', '1.5.1a', 1) == 0, 'Test comparing versions micros and alphas 2');
+ok (test_version_compare ('1.5a', '1.5.1f', 1) == 0, 'Test comparing versions micros and alphas 3');
+ok (test_version_compare ('1.5', '1.5.1a', -1) == 0, 'Test comparing versions micros and alphas 4');
+ok (test_version_compare ('1.5.1a', '1.5.1f', -1) == 0, 'Test comparing versions micros and alphas 5');
+ok (test_version_compare ('1.5.1f', '1.5.1a', 1) == 0, 'Test comparing versions micros and alphas 6');
+ok (test_version_compare ('1.5.1f', '1.5.1f', 0) == 0, 'Test comparing versions micros and alphas 7');
+
+ok (test_version_compare ('1.6-p5a', '1.6.5a', 0) == 0, 'Test comparing versions special exceptions 1');
+ok (test_version_compare ('1.6', '1.6-p5a', -1) == 0, 'Test comparing versions special exceptions 1');
+ok (test_version_compare ('1.6-p4b', '1.6-p5a', -1) == 0, 'Test comparing versions special exceptions 1');
+ok (test_version_compare ('1.6-p4b', '1.6-foo', 1) == 0, 'Test comparing versions special exceptions 1');
+ok (test_version_compare ('1.6-p4b', '1.6a-foo', -1) == 0, 'Test comparing versions special exceptions 1');
+ok (test_version_compare ('1.6-p5', '1.6.5', 0) == 0, 'Test comparing versions special exceptions 1');
+ok (test_version_compare ('1.6a-foo', '1.6a-foo', 0) == 0, 'Test comparing versions special exceptions 1');
+
+ok (test_bad_versions ('') == 0, 'Test bad version numbers empty str');
+ok (test_bad_versions ('a') == 0, 'Test bad version numbers only alpha');
+ok (test_bad_versions ('1') == 0, 'Test bad version numbers only major');
+ok (test_bad_versions ('1a') == 0, 'Test bad version numbers only major with alpha');
+ok (test_bad_versions ('1.2.3.4') == 0, 'Test bad version numbers to many minor versions');
+ok (test_bad_versions ('-1.2') == 0, 'Test bad version numbers negative');
diff --git a/t/pm/Wrap.pl b/t/pm/Wrap.plt
index 995569a4f..fdfdab3bf 100644
--- a/t/pm/Wrap.pl
+++ b/t/pm/Wrap.plt
@@ -1,3 +1,4 @@
+# -*- mode:perl -*-
# Copyright (C) 2003-2018 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -14,8 +15,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
use Automake::Wrap qw/wrap makefile_wrap/;
-
-my $failed = 0;
+use Test::Simple tests => 9;
sub test_wrap
{
@@ -25,20 +25,21 @@ sub test_wrap
if ($out ne $exp_out)
{
print STDERR "For: @$in\nGot:\n$out\nInstead of:\n$exp_out\n---\n";
- ++$failed;
+ return 1;
}
+ return 0;
}
sub test_makefile_wrap
{
my ($in, $exp_out) = @_;
-
my $out = &makefile_wrap (@$in);
if ($out ne $exp_out)
{
print STDERR "For: @$in\nGot:\n$out\nInstead of:\n$exp_out\n---\n";
- ++$failed;
+ return 1;
}
+ return 0;
}
my @tests = (
@@ -89,7 +90,13 @@ my @makefile_tests = (
\tunlike in the second line
"]);
-test_wrap (@{$_}) foreach @tests;
-test_makefile_wrap (@{$_}) foreach @makefile_tests;
+ok (test_wrap (@{$tests[0]}) == 0, 'test_wrap 0');
+ok (test_wrap (@{$tests[1]}) == 0, 'test_wrap 1');
+ok (test_wrap (@{$tests[2]}) == 0, 'test_wrap 2');
+ok (test_wrap (@{$tests[3]}) == 0, 'test_wrap 3');
+ok (test_wrap (@{$tests[4]}) == 0, 'test_wrap 4');
-exit $failed;
+ok (test_makefile_wrap (@{$makefile_tests[0]}) == 0, 'test_makefile_wrap 0');
+ok (test_makefile_wrap (@{$makefile_tests[1]}) == 0, 'test_makefile_wrap 1');
+ok (test_makefile_wrap (@{$makefile_tests[2]}) == 0, 'test_makefile_wrap 2');
+ok (test_makefile_wrap (@{$makefile_tests[3]}) == 0, 'test_makefile_wrap 3');