From 81e21db434c72146899549e5eec321c5c343dc4c Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 31 Jan 2020 14:43:39 +0100 Subject: [PATCH] Bug 24545: Fix find-license-problems.t to catch future wrong license statements Content-Type: text/plain; charset=utf-8 File adjust to run tests and be executed on all our codebase. Test plan: - Apply this patch without the other one - run the tests => Several failures - apply the other patch - run the tests => Should pass now Signed-off-by: David Nind Signed-off-by: Marcel de Rooy --- xt/find-license-problems | 68 ---------------------------------------------- xt/find-license-problems.t | 67 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 68 deletions(-) delete mode 100755 xt/find-license-problems create mode 100755 xt/find-license-problems.t diff --git a/xt/find-license-problems b/xt/find-license-problems deleted file mode 100755 index c18f2c195a..0000000000 --- a/xt/find-license-problems +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/perl -# -# Find copyright and license problems in Koha source files. At this -# time it only looks for references to the old FSF address in GPLv2 -# license notices, but it might in the future be extended to look for -# other things, too. -# -# Copyright 2010 Catalyst IT Ltd -# -# This file is part of Koha. -# -# 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, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - -use Modern::Perl; - -use File::Find; - - -my @files; -sub wanted { - my $name = $File::Find::name; - push @files, $name - unless $name =~ /\/(\.git|koha-tmpl)(\/.*)?$/ || - $name =~ /\.(gif|jpg|odt|ogg|pdf|png|po|psd|svg|swf|zip)$/ || - ! -f $name; -} - - -sub has_gpl2plus_and_current_fsf_address { - my ($name) = @_; - my $hascopyright; - my $hasgpl; - my $hasv2; - my $hasorlater; - my $hasfranklinst; - open(FILE, $name) || return 0; - while (my $line = ) { - $hascopyright = 1 if ($line =~ /Copyright.*\d\d/); - $hasgpl = 1 if ($line =~ /GNU General Public License/); - $hasv2 = 1 if ($line =~ /either version 2/); - $hasorlater = 1 if ($line =~ /any later version/ || - $line =~ /at your option/); - $hasfranklinst = 1 if ($line =~ /51 Franklin Street/); - } - return ! $hascopyright || - ($hasgpl && $hasv2 && $hasorlater && $hasfranklinst); -} - - -find({ wanted => \&wanted, no_chdir => 1 }, @ARGV); -foreach my $name (@files) { - if (! has_gpl2plus_and_current_fsf_address($name)) { - print "$name\n"; - } -} diff --git a/xt/find-license-problems.t b/xt/find-license-problems.t new file mode 100755 index 0000000000..b8817a9495 --- /dev/null +++ b/xt/find-license-problems.t @@ -0,0 +1,67 @@ +#!/usr/bin/perl +# +# Find copyright and license problems in Koha source files. At this +# time it only looks for references to the old FSF address in GPLv2 +# license notices, but it might in the future be extended to look for +# other things, too. +# +# Copyright 2010 Catalyst IT Ltd +# Copyright 2020 Koha Development Team +# +# This file is part of Koha. +# +# Koha 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 3 of the License, or +# (at your option) any later version. +# +# Koha 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 Koha; if not, see . + +use Modern::Perl; +use Test::More; + +use File::Spec; +use File::Find; + +my @files; +sub wanted { + my $name = $File::Find::name; + push @files, $name + unless $name =~ /\/(\.git|koha-tmpl|node_modules|swagger-ui)(\/.*)?$/ || + $name =~ /\.(gif|jpg|odt|ogg|pdf|png|po|psd|svg|swf|zip|patch)$/ || + $name =~ m[(xt/find-license-problems|xt/fix-old-fsf-address)] || + ! -f $name; +} + +find({ wanted => \&wanted, no_chdir => 1 }, File::Spec->curdir()); + +foreach my $name (@files) { + open( FILE, $name ) || return 0; + my ( $hascopyright, $hasgpl, $hasv3, $hasorlater, $haslinktolicense, + $hasfranklinst, $is_not_us ) = (0)x7; + while ( my $line = ) { + $hascopyright = 1 if ( $line =~ /^(#|--)?\s*Copyright.*\d\d/ ); + $hasgpl = 1 if ( $line =~ /GNU General Public License/ ); + $hasv3 = 1 if ( $line =~ /either version 3/ ); + $hasorlater = 1 + if ( $line =~ /any later version/ + || $line =~ /at your option/ ); + $haslinktolicense = 1 if $line =~ m|http://www\.gnu\.org/licenses|; + $hasfranklinst = 1 if ( $line =~ /51 Franklin Street/ ); + $is_not_us = 1 if $line =~ m|This file is part of the Zebra server|; + } + next unless $hascopyright; + next if $is_not_us; + is( $hasgpl + && $hasv3 + && $hasorlater + && $haslinktolicense + && !$hasfranklinst, 1 ) or diag(sprintf "File %s has wrong copyright: hasgpl=%s, hasv3=%s, hasorlater=%s, haslinktolicense=%s, hasfranklinst=%s", $name, $hasgpl, $hasv3, $hasorlater, $haslinktolicense, $hasfranklinst); +} +done_testing; -- 2.11.0