aboutsummaryrefslogtreecommitdiff
path: root/tests/docs/spdx-license-t
diff options
context:
space:
mode:
authorRuss Allbery <eagle@eyrie.org>2020-05-17 17:05:30 -0700
committerRuss Allbery <eagle@eyrie.org>2020-05-17 17:05:30 -0700
commitc138111a3c27863308b6552a5527a9e821a3dc11 (patch)
treefe3c16462bf0213708f20d251a63e5b9bbf2d23f /tests/docs/spdx-license-t
parentccfbd34d597318215b979338c4cb5d7e4a3f0d6f (diff)
Update to rra-c-util 8.2 and C TAP Harness 4.7
Update to rra-c-util 8.2: * Implement explicit_bzero with memset if it is not available. * Reformat all C source using clang-format 10. * Work around Test::Strict not skipping .git directories. * Fix warnings with perltidy 20190601 and Perl::Critic 1.134. * Fix warnings with Clang 10, GCC 10, and the Clang static analyzer. Update to C TAP Harness 4.7: * Fix warnings with GCC 10. * Reformat all C source using clang-format 10. * Fixed malloc error checking in bstrndup.
Diffstat (limited to 'tests/docs/spdx-license-t')
-rwxr-xr-xtests/docs/spdx-license-t35
1 files changed, 24 insertions, 11 deletions
diff --git a/tests/docs/spdx-license-t b/tests/docs/spdx-license-t
index 91072bf..d829080 100755
--- a/tests/docs/spdx-license-t
+++ b/tests/docs/spdx-license-t
@@ -9,7 +9,7 @@
# The canonical version of this file is maintained in the rra-c-util package,
# which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>.
#
-# Copyright 2018 Russ Allbery <eagle@eyrie.org>
+# Copyright 2018-2020 Russ Allbery <eagle@eyrie.org>
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
@@ -31,17 +31,18 @@
#
# SPDX-License-Identifier: MIT
-use 5.006;
+use 5.008;
use strict;
use warnings;
use lib "$ENV{C_TAP_SOURCE}/tap/perl";
-use File::Basename qw(basename);
-use Test::More;
use Test::RRA qw(skip_unless_automated);
use Test::RRA::Automake qw(all_files automake_setup);
+use File::Basename qw(basename);
+use Test::More;
+
# File name (the file without any directory component) and path patterns to
# skip for this check.
## no critic (RegularExpressions::ProhibitFixedStringMatches)
@@ -68,10 +69,13 @@ my @IGNORE_PATHS = (
qr{ \A php/acinclude [.] m4 \z }xms, # Created by phpize
qr{ \A php/build/ }xms, # Created by phpize
qr{ \A php/config [.] (guess|sub) \z }xms, # Created by phpize
- qr{ \A php/configure [.] in \z }xms, # Created by phpize
+ qr{ \A php/configure [.] (ac|in) \z }xms, # Created by phpize
qr{ \A php/ltmain [.] sh \z }xms, # Created by phpize
qr{ \A php/run-tests [.] php \z }xms, # Created by phpize
+ qr{ \A python/ .* [.] egg-info/ }xms, # Python build files
+ qr{ \A tests/config/ (?!README) }xms, # Test configuration
qr{ [.] l?a \z }xms, # Created by libtool
+ qr{ [.] o \z }xms, # Compiler objects
);
## use critic
@@ -91,9 +95,7 @@ sub check_file {
my ($path) = @_;
my $filename = basename($path);
- # Ignore files in the whitelist, binary files, and files under 1KB. The
- # latter can be rolled up into the overall project license and the license
- # notice may be a substantial portion of the file size.
+ # Ignore files in the whitelist and binary files.
for my $pattern (@IGNORE) {
return if $filename =~ $pattern;
}
@@ -101,16 +103,18 @@ sub check_file {
return if $path =~ $pattern;
}
return if !-T $path;
- return if -s $path < 1024;
# Scan the file.
- my ($saw_spdx, $skip_spdx);
+ my ($saw_legacy_notice, $saw_spdx, $skip_spdx);
open(my $file, '<', $path) or BAIL_OUT("Cannot open $path: $!");
while (defined(my $line = <$file>)) {
if ($line =~ m{ Generated [ ] by [ ] libtool [ ] }xms) {
close($file) or BAIL_OUT("Cannot close $path: $!");
return;
}
+ if ($line =~ m{ \b See \s+ LICENSE \s+ for \s+ licensing }xms) {
+ $saw_legacy_notice = 1;
+ }
if ($line =~ m{ \b SPDX-License-Identifier: \s+ \S+ }xms) {
$saw_spdx = 1;
last;
@@ -121,7 +125,16 @@ sub check_file {
}
}
close($file) or BAIL_OUT("Cannot close $path: $!");
- ok($saw_spdx || $skip_spdx, $path);
+
+ # If there is a legacy license notice, report a failure regardless of file
+ # size. Otherwise, skip files under 1KB. They can be rolled up into the
+ # overall project license and the license notice may be a substantial
+ # portion of the file size.
+ if ($saw_legacy_notice) {
+ ok(!$saw_legacy_notice, "$path has legacy license notice");
+ } else {
+ ok($saw_spdx || $skip_spdx || -s $path < 1024, $path);
+ }
return;
}