X-Git-Url: https://ruderich.org/simon/gitweb/?p=blhc%2Fblhc.git;a=blobdiff_plain;f=t%2Ftests.t;h=9dc897500697124b57e7796fe051e1534c426730;hp=fb2936653a5458ffcc6f97706b35f2a9d487b408;hb=c2874d0d8e4579450add73e804f400fdd7f2f456;hpb=d68da0d113108fe1e427d91464a230fdab0204e2 diff --git a/t/tests.t b/t/tests.t index fb29366..9dc8975 100644 --- 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*] *..* -'; +' + : + 'Usage: + blhc [options] .. + +'); 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 . is_blhc '', '--help', 1, qr/^Usage: - blhc \[\*options\*\] \*\.\.\* + blhc \[\*?options\*?\] \*?\.\.\*? 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*] *..* - -'; + '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*] *..* - -'; + '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*] *..* - -'; + '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*] *..* - -'; + '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*] *..* - -'; + '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*] *..* - -'; + '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,