aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2012-05-25 11:14:15 +0100
committerDaniel P. Berrange <berrange@redhat.com>2012-05-28 11:07:12 +0100
commitde9758ae9b2cb0c7f9f8e15e4e69016f6e7fc2a8 (patch)
treeff1de248411d3dc8099b4eeec46f7e084966923c /build-aux
parentRe-order config options in qemu driver augeas lens (diff)
downloadlibvirt-de9758ae9b2cb0c7f9f8e15e4e69016f6e7fc2a8.tar.gz
libvirt-de9758ae9b2cb0c7f9f8e15e4e69016f6e7fc2a8.tar.bz2
libvirt-de9758ae9b2cb0c7f9f8e15e4e69016f6e7fc2a8.zip
Autogenerate augeas test case from default config files
When adding new config file parameters, the corresponding additions to the augeas lens' are constantly forgotten. Also there are augeas test cases, these don't catch the error, since they too are never updated. To address this, the augeas test cases need to be auto-generated from the example config files. * build-aux/augeas-gentest.pl: Helper to generate an augeas test file, substituting in elements from the example config files * src/Makefile.am, daemon/Makefile.am: Switch to auto-generated augeas test cases * daemon/test_libvirtd.aug, daemon/test_libvirtd.aug.in, src/locking/test_libvirt_sanlock.aug, src/locking/test_libvirt_sanlock.aug.in, src/lxc/test_libvirtd_lxc.aug, src/lxc/test_libvirtd_lxc.aug.in, src/qemu/test_libvirtd_qemu.aug, src/qemu/test_libvirtd_qemu.aug.in: Remove example config file data, replacing with a ::CONFIG:: placeholder Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Diffstat (limited to 'build-aux')
-rwxr-xr-xbuild-aux/augeas-gentest.pl71
1 files changed, 71 insertions, 0 deletions
diff --git a/build-aux/augeas-gentest.pl b/build-aux/augeas-gentest.pl
new file mode 100755
index 000000000..a5f9fd388
--- /dev/null
+++ b/build-aux/augeas-gentest.pl
@@ -0,0 +1,71 @@
+#!/usr/bin/perl
+#
+# augeas-gentest.pl: Generate an augeas test file, from an
+# example config file + test file template
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Authors:
+# Daniel P. Berrange <berrange@redhat.com>
+
+use strict;
+use warnings;
+
+die "syntax: $0 CONFIG TEMPLATE AUGTEST\n" unless @ARGV == 3;
+
+my $config = shift @ARGV;
+my $template = shift @ARGV;
+my $augtest = shift @ARGV;
+
+open AUGTEST, ">", $augtest or die "cannot create $augtest: $!";
+
+$SIG{__DIE__} = sub {
+ unlink $augtest;
+};
+
+open CONFIG, "<", $config or die "cannot read $config: $!";
+open TEMPLATE, "<", $template or die "cannot read $template: $!";
+
+my $group = 0;
+while (<TEMPLATE>) {
+ if (/::CONFIG::/) {
+ my $group = 0;
+ print AUGTEST " let conf = \"";
+ while (<CONFIG>) {
+ if (/^#\w/) {
+ s/^#//;
+ s/\"/\\\"/g;
+ print AUGTEST $_;
+ $group = /\[\s$/;
+ } elsif ($group) {
+ s/\"/\\\"/g;
+ if (/#\s*\]/) {
+ $group = 0;
+ }
+ if (/^#/) {
+ s/^#//;
+ print AUGTEST $_;
+ }
+ }
+ }
+ print AUGTEST "\"\n";
+ } else {
+ print AUGTEST $_;
+ }
+}
+
+close TEMPLATE;
+close CONFIG;
+close AUGTEST or die "cannot save $augtest: $!";