]> ruderich.org/simon Gitweb - blhc/blhc.git/blobdiff - t/tests.t
Release 0.12
[blhc/blhc.git] / t / tests.t
index fb2936653a5458ffcc6f97706b35f2a9d487b408..9dc897500697124b57e7796fe051e1534c426730 100644 (file)
--- a/t/tests.t
+++ b/t/tests.t
@@ -1,6 +1,6 @@
 # Tests for blhc.
 #
-# Copyright (C) 2012-2016  Simon Ruderich
+# Copyright (C) 2012-2020  Simon Ruderich
 #
 # 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
@@ -19,7 +19,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 216;
+use Test::More tests => 244;
 
 
 sub is_blhc {
@@ -48,11 +48,17 @@ sub is_blhc {
 
 # Usage, invalid arguments.
 
-my $usage =
+use Pod::Usage;
+my $usage = ( $Pod::Usage::VERSION < 1.65 ?
         'Usage:
     blhc [*options*] *<dpkg-buildpackage build log file>..*
 
-';
+'
+    :
+        'Usage:
+    blhc [options] <dpkg-buildpackage build log file>..
+
+');
 is_blhc '', '--invalid', 2,
         "Unknown option: invalid\n"
         . $usage;
@@ -61,7 +67,7 @@ is_blhc '', '', 2,
         $usage;
 
 is_blhc '', '--version', 0,
-        'blhc 0.05  Copyright (C) 2012-2016  Simon Ruderich
+        'blhc 0.12  Copyright (C) 2012-2020  Simon Ruderich
 
 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
@@ -79,7 +85,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 is_blhc '', '--help', 1,
         qr/^Usage:
-    blhc \[\*options\*\] \*<dpkg-buildpackage build log file>\.\.\*
+    blhc \[\*?options\*?\] \*?<dpkg-buildpackage build log file>\.\.\*?
 
 Options:
 /s;
@@ -118,23 +124,14 @@ is_blhc 'ignore-flag-ldflags', '--ignore-flag -fPIE', 0,
 
 # Invalid option.
 is_blhc 'ignore-flag', '--ignore-arch-flag -g', 2,
-        'Value "-g" invalid for option ignore-arch-flag ("arch:flag" expected)
-Usage:
-    blhc [*options*] *<dpkg-buildpackage build log file>..*
-
-';
+        'Value "-g" invalid for option ignore-arch-flag ("arch:flag" expected)'
+        . "\n$usage";
 is_blhc 'ignore-flag', '--ignore-arch-flag -g:', 2,
-        'Value "-g:" invalid for option ignore-arch-flag ("arch:flag" expected)
-Usage:
-    blhc [*options*] *<dpkg-buildpackage build log file>..*
-
-';
+        'Value "-g:" invalid for option ignore-arch-flag ("arch:flag" expected)'
+        . "\n$usage";
 is_blhc 'ignore-flag', '--ignore-arch-flag :amd64', 2,
-        'Value ":amd64" invalid for option ignore-arch-flag ("arch:flag" expected)
-Usage:
-    blhc [*options*] *<dpkg-buildpackage build log file>..*
-
-';
+        'Value ":amd64" invalid for option ignore-arch-flag ("arch:flag" expected)'
+        . "\n$usage";
 
 # Wrong architecture.
 is_blhc 'ignore-flag', '--ignore-arch-flag amd64:-g', 8,
@@ -165,6 +162,17 @@ is_blhc 'arch-i386', '--ignore-arch-flag amd64:-fstack-protector-strong --ignore
 LDFLAGS missing (-pie): gcc -fPIE -Wl,-z,relro -Wl,-z,now -o test test.o
 ';
 
+# Ignore certain lines (through inline command).
+
+is_blhc 'ignore-line-inline', '', 8,
+        'CFLAGS missing (-g -O2 -fstack-protector-strong -Wformat -Werror=format-security):     ./prepare-script gcc test-a.c test-b.c test-c.c
+CPPFLAGS missing (-D_FORTIFY_SOURCE=2):     ./prepare-script gcc test-a.c test-b.c test-c.c
+LDFLAGS missing (-Wl,-z,relro):     ./prepare-script gcc test-a.c test-b.c test-c.c
+';
+
+is_blhc 'ignore-line-inline2', '', 0,
+        '';
+
 
 # Ignore certain lines.
 
@@ -181,23 +189,14 @@ is_blhc 'ignore-line', '--ignore-line "\./prepare-script gcc test-[a-z]\.c" --ig
 
 # Invalid option.
 is_blhc 'ignore-line', '--ignore-arch-line .+', 2,
-        'Value ".+" invalid for option ignore-arch-line ("arch:line" expected)
-Usage:
-    blhc [*options*] *<dpkg-buildpackage build log file>..*
-
-';
+        'Value ".+" invalid for option ignore-arch-line ("arch:line" expected)'
+        . "\n$usage";
 is_blhc 'ignore-line', '--ignore-arch-line .+:', 2,
-        'Value ".+:" invalid for option ignore-arch-line ("arch:line" expected)
-Usage:
-    blhc [*options*] *<dpkg-buildpackage build log file>..*
-
-';
+        'Value ".+:" invalid for option ignore-arch-line ("arch:line" expected)'
+        . "\n$usage";
 is_blhc 'ignore-line', '--ignore-arch-line :amd64', 2,
-        'Value ":amd64" invalid for option ignore-arch-line ("arch:line" expected)
-Usage:
-    blhc [*options*] *<dpkg-buildpackage build log file>..*
-
-';
+        'Value ":amd64" invalid for option ignore-arch-line ("arch:line" expected)'
+        . "\n$usage";
 
 # Wrong architecture.
 is_blhc 'ignore-line', '--ignore-arch-line "amd64:.+"', 8,
@@ -504,6 +503,11 @@ CFLAGS missing (-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-se
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): (gcc -Wl,-z,relro -o test.output test.c)
 LDFLAGS missing (-fPIE -pie -Wl,-z,now): (gcc -Wl,-z,relro -o test.output test.c)
 ';
+is_blhc 'bad-cflags-stackprotector', '', 8,
+        'CFLAGS missing (-fstack-protector-strong): gcc -g -O2 -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -c -fno-stack-protector test-a.c
+CFLAGS missing (-fstack-protector-strong): gcc -g -O2 -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -c -fno-stack-protector-all test-a.c
+CFLAGS missing (-fstack-protector-strong): gcc -g -O2 -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -c -fno-stack-protector-strong test-a.c
+';
 
 is_blhc 'bad-cppflags', '', 8,
         'CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -g -O2 -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security -c test-a.c
@@ -515,11 +519,10 @@ CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=0 -g -O2 -fstack-p
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=1 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -c test-b.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=1 -c test-c.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=0 -c test-d.c
-CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=0 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -c test-e.c
-CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=1 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -c test-f.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -U_FORTIFY_SOURCE   -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -c test-g.c
-CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -U_FORTIFY_SOURCE   -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -c test-h.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -c test-i.c
+CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -U_FORTIFY_SOURCE -c test-i.c
+CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -D_FORTIFY_SOURCE=1 -c test-i.c
 ';
 
 is_blhc 'bad-cppflags', '--ignore-flag -D_FORTIFY_SOURCE=2', 0,
@@ -644,8 +647,13 @@ NONVERBOSE BUILD: [ 82%] Building C object src/CMakeFiles/test/test.c.o
 CXXFLAGS missing (-Wformat): cd /tmp/test/src && /usr/bin/c++ -g -O2 -fstack-protector-strong -Wformat-security -Werror=format-security -o CMakeFiles/test-verbose.dir/verbose.cpp.o -c -D_FORTIFY_SOURCE=2 /tmp/test/src/test-verbose/verbose.cpp
 CFLAGS missing (-Werror=format-security): cd /tmp/test/src && /usr/bin/gcc -g -O2 -fstack-protector-strong -Wformat -Wformat-security -o CMakeFiles/test-verbose-c.dir/verbose-c.c.o -c -D_FORTIFY_SOURCE=2 /tmp/test/src/test-verbose-c/verbose-c.c
 NONVERBOSE BUILD: Compiling test.c \     gcc test.c
+NONVERBOSE BUILD: [  3%] Building CXX object scribus/text/CMakeFiles/scribus_text_lib.dir/frect.cpp.o
+NONVERBOSE BUILD: [ 1/13] Compiling src/instance.c
+NONVERBOSE BUILD: [11/13] Compiling suil.pc.in
 ';
 
+is_blhc 'parallel', '', 0, '';
+
 
 # handle debug builds
 
@@ -661,6 +669,10 @@ is_blhc 'configure-check', '', 4,
         'NONVERBOSE BUILD:   CC              = gcc -std=gnu99 -std=gnu99 test.c
 ';
 
+is_blhc 'configure-check', '--line-numbers', 4,
+        '5:NONVERBOSE BUILD:   CC              = gcc -std=gnu99 -std=gnu99 test.c
+';
+
 is_blhc 'make', '', 1,
         $empty;
 
@@ -762,11 +774,13 @@ LDFLAGS missing (-fPIE -pie -Wl,-z,relro -Wl,-z,now): g++-4.6 -Wl,-z,defs -o tes
 
 my $ada = 'CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc-4.6 -c -fPIC -g -O2 -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security test.c
 LDFLAGS missing (-Wl,-z,relro): /usr/bin/gcc-4.6 -shared -lgnat-4.6 -o libtest.so.2 test-a.o test-b.o test-c.o -Wl,--as-needed
-CFLAGS missing (-fstack-protector-strong -Wformat -Werror=format-security): gcc -c -g -O2 test.c
+CFLAGS missing (-fPIE -fstack-protector-strong -Wformat -Werror=format-security): gcc -c -g -O2 test.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -c -g -O2 test.c
-CFLAGS missing (-fstack-protector-strong -Wformat -Werror=format-security): gcc -g -O2 test.c
+CFLAGS missing (-fPIE -fstack-protector-strong -Wformat -Werror=format-security): gcc -g -O2 test.c
 CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -g -O2 test.c
-LDFLAGS missing (-Wl,-z,relro): gcc -g -O2 test.c
+LDFLAGS missing (-fPIE -pie -Wl,-z,relro): gcc -g -O2 test.c
+CFLAGS missing (-fstack-protector-strong): gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -gnatw.I -I- -o /«PKGBUILDDIR»/build/objects/arm_frm.o /«PKGBUILDDIR»/progs/arm_frm.adb
+CFLAGS missing (-fstack-protector-strong): gcc-6 -c -I./ -I../progs -g -O2 -fPIE -gnat2005 -gnato -gnatVa -fstack-check -I- -x ada -o /«PKGBUILDDIR»/build/objects/arm_form.o /«PKGBUILDDIR»/progs/arm_form.ada
 ';
 is_blhc 'ada', '', 8,
         $ada;
@@ -774,6 +788,29 @@ is_blhc 'ada-pbuilder', '', 8,
         $ada;
 
 
+# fortran
+
+is_blhc 'fortran', '', 8,
+        'CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132 -Wl,-z,relro -o balls balls.f
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132  -c -o quadric.o quadric.f
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132  -c -o suv.o suv.f
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132 \ rastep.f quadric.o suv.o -Wl,-z,relro \ -o rastep
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132  -c -o render.o render.f
+LDFLAGS missing (-Wl,-z,relro): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132 -fstack-protector-strong -o balls-without-ldflags balls.f
+CFLAGS missing (-fstack-protector-strong): mpifort -cpp -DDOUB -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -c -o transform.o transform.f90
+';
+
+is_blhc 'fortran-no-build-deps', '', 8,
+        'CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132 -Wl,-z,relro -o balls balls.f
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132  -c -o quadric.o quadric.f
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132  -c -o suv.o suv.f
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132 \ rastep.f quadric.o suv.o -Wl,-z,relro \ -o rastep
+CFLAGS missing (-fstack-protector-strong): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132  -c -o render.o render.f
+LDFLAGS missing (-Wl,-z,relro): gfortran -g -w -O2 -Wtabs -ffixed-line-length-132 -fstack-protector-strong -o balls-without-ldflags balls.f
+CFLAGS missing (-fstack-protector-strong): mpifort -cpp -DDOUB -g -O2 -fdebug-prefix-map=/«PKGBUILDDIR»=. -c -o transform.o transform.f90
+';
+
+
 # libtool
 
 is_blhc 'libtool', '--bindnow', 12,
@@ -843,6 +880,11 @@ LDFLAGS missing (-pie -Wl,-z,relro): gcc -fPIE -o test test.o
 is_blhc 'dpkg-buildpackage-architecture-old', '', 0,
         '';
 
+# architecture in newer buildd logs
+
+is_blhc 'dpkg-buildpackage-architecture-new', '', 0,
+        '';
+
 
 # correct architecture detection
 
@@ -880,6 +922,15 @@ CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -c `dpkg-buildflags --get LDFLAGS` t
 LDFLAGS missing (-Wl,-z,relro): gcc -o test test.o `dpkg-buildflags --get CFLAGS`
 ';
 
+is_blhc 'debian', '--line-numbers', 8,
+        '9:CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -g -O2 -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security -Wall -c test.c
+13:CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -c `dpkg-buildflags --get CFLAGS` test.c
+14:CPPFLAGS missing (-D_FORTIFY_SOURCE=2): g++ -c `dpkg-buildflags --get CXXFLAGS` test.cc
+15:CFLAGS missing (-g -O2 -fstack-protector-strong -Wformat -Werror=format-security): gcc -c `dpkg-buildflags --get LDFLAGS` test.c
+15:CPPFLAGS missing (-D_FORTIFY_SOURCE=2): gcc -c `dpkg-buildflags --get LDFLAGS` test.c
+19:LDFLAGS missing (-Wl,-z,relro): gcc -o test test.o `dpkg-buildflags --get CFLAGS`
+';
+
 is_blhc 'debian-cmake', '', 32,
         'INVALID CMAKE: 2.8.7-1
 ';
@@ -927,6 +978,15 @@ is_blhc 'buildd-dpkg-dev-missing', '--buildd', 0,
         'W-dpkg-buildflags-missing|CFLAGS 3 (of 6), CXXFLAGS 1 (of 1) missing|
 ';
 
+is_blhc 'buildd-gcc-pie', '--buildd --all', 0,
+        'W-dpkg-buildflags-missing|CFLAGS 1 (of 1), LDFLAGS 1 (of 1) missing|
+';
+is_blhc 'buildd-gcc-pie-builtin-wrong-arch', '--buildd --all', 0,
+        'W-dpkg-buildflags-missing|CFLAGS 1 (of 1), LDFLAGS 1 (of 1) missing|
+';
+is_blhc 'buildd-gcc-pie-builtin', '--buildd', 0, '';
+is_blhc 'buildd-gcc-pie-builtin', '--buildd --all', 0, '';
+
 # Older dpkg versions use -fstack-protector instead of -strong.
 is_blhc 'buildd-dpkg-fstack-protector', '--buildd', 0,
         '';
@@ -954,6 +1014,11 @@ is_blhc 'debian-cmake', '--buildd', 0,
 ';
 
 
+# debian specific settings
+
+is_blhc 'debian-gcc-pie', '--debian', 0, '';
+
+
 # multiple files
 
 is_blhc ['good', 'good-pie', 'good-bindnow', 'good-all', 'good-multiline', 'good-library'], '', 0,