From: Thomas Lamprecht Date: Fri, 11 Dec 2020 17:50:22 +0000 (+0100) Subject: add basic test so schema is in sync with available plugins X-Git-Url: https://git.proxmox.com/?p=proxmox-acme.git;a=commitdiff_plain;h=895b703e20135212e0006af4514e22c77ef1b871 add basic test so schema is in sync with available plugins Signed-off-by: Thomas Lamprecht --- diff --git a/src/Makefile b/src/Makefile index 9bf2e70..c308cc7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -119,6 +119,10 @@ install: install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/ACME for f in ${LIB_SOURCES}; do install -D -m 0644 PVE/$$f ${DESTDIR}${PERLDIR}/PVE/$$f; done +.PHONY: test +test: + $(MAKE) -C test test + .PHONY: clean clean: rm -rf *~ diff --git a/src/test/Makefile b/src/test/Makefile new file mode 100644 index 0000000..982f698 --- /dev/null +++ b/src/test/Makefile @@ -0,0 +1,6 @@ + +.PHONY: test +test: verify-dnsapi-plugins-in-schema.pl.t + +%.t: % + ./$< diff --git a/src/test/verify-dnsapi-plugins-in-schema.pl b/src/test/verify-dnsapi-plugins-in-schema.pl new file mode 100755 index 0000000..3f1377e --- /dev/null +++ b/src/test/verify-dnsapi-plugins-in-schema.pl @@ -0,0 +1,47 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use lib '../'; + +use PVE::Tools qw(dir_glob_foreach); +use PVE::ACME::DNSChallenge; + +my $dnsapi_path = '../acme.sh/dnsapi'; + +die "cannot find dnsapi path '$dnsapi_path'!\n" if ! -d $dnsapi_path; + +my $acmesh_plugins = []; +dir_glob_foreach($dnsapi_path, qr/dns_(\S+)\.sh/, sub { + my ($file, $provider) = @_; + push @$acmesh_plugins, $provider; +}); + +my $ok = 1; +my $defined_plugins = PVE::ACME::DNSChallenge::get_supported_plugins(); + +# first check for missing ones, delete from hash so we can easily see if a plug got removed/renamed +my $printed_missing = 0; +for my $provider (sort @$acmesh_plugins) { + my $schema = delete $defined_plugins->{$provider}; + if (!defined($schema)) { + print STDERR "missing (also adapt makefile!):\n" if !$printed_missing; + print STDERR " '$provider' => {},\n"; + $printed_missing = 1; + $ok = 0; + } +} + +my $printed_extra = 0; +for my $provider (sort keys %$defined_plugins) { + print STDERR "extra:\n" if !$printed_extra; + print STDERR " $provider\n"; + $printed_extra = 1; + $ok = 0; +} + +die "schema not in sync with available plugins!\n" if !$ok; + +print STDERR "OK: DNS challenge schema in sync with available plugins.\n"; +exit(0);