cca0c4
From 9c9587feca7413b34498064db19d796e1c402b51 Mon Sep 17 00:00:00 2001
cca0c4
From: Alexander Todorov <atodorov@redhat.com>
cca0c4
Date: Thu, 11 Jun 2015 08:45:37 -0400
cca0c4
Subject: [PATCH 02/55] add README with description of the test suite
cca0c4
cca0c4
---
cca0c4
 README.rst | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
cca0c4
 1 file changed, 72 insertions(+)
cca0c4
 create mode 100644 README.rst
cca0c4
cca0c4
diff --git a/README.rst b/README.rst
cca0c4
new file mode 100644
cca0c4
index 00000000000..a5743ff2f96
cca0c4
--- /dev/null
cca0c4
+++ b/README.rst
cca0c4
@@ -0,0 +1,72 @@
cca0c4
+grubby is a command line tool for updating and displaying information about
cca0c4
+the configuration files for the grub, lilo, elilo (ia64), yaboot (powerpc)
cca0c4
+and zipl (s390) boot loaders. It is primarily designed to be used from scripts
cca0c4
+which install new kernels and need to find information about the current boot
cca0c4
+environment.
cca0c4
+
cca0c4
+
cca0c4
+Testing grubby
cca0c4
+==============
cca0c4
+
cca0c4
+To execute the integrated test suite from inside the source directory run the
cca0c4
+command::
cca0c4
+
cca0c4
+    make test
cca0c4
+
cca0c4
+
cca0c4
+Test Suite Architecture
cca0c4
+------------------------
cca0c4
+
cca0c4
+grubby's test suite is written in Bash. The file `test.sh` contains several
cca0c4
+helper functions and a list of different test scenarios which are exercised
cca0c4
+upon execution. Important functions are:
cca0c4
+
cca0c4
+- oneTest() - test if the configuration generated by the supplied grubby
cca0c4
+  parameters matches a well known configuration file;
cca0c4
+
cca0c4
+- oneDisplayTest() - test grubby features that display some information,
cca0c4
+  checking grubby's output against well known values;
cca0c4
+
cca0c4
+- commandTest() - test if the output of some commands matches the provided
cca0c4
+  text. This function is only used for grub2 testing in a few places.
cca0c4
+
cca0c4
+
cca0c4
+Note: the test suite creates aliases for oneTest() and oneDisplayTest(), which
cca0c4
+are prefixed with the corresponding boot loader name. For example:
cca0c4
+grubTest(). eliloTest(), etc.
cca0c4
+
cca0c4
+The invocation syntax is::
cca0c4
+
cca0c4
+    testFunction config_file results_file --grubby --options
cca0c4
+
cca0c4
+For example the line::
cca0c4
+
cca0c4
+    grubTest grub.1 updargs/g1.1 --update-kernel=DEFAULT --args="root=/dev/hda1"
cca0c4
+    
cca0c4
+means execute the command::
cca0c4
+
cca0c4
+    ./grubby --grub --config-file tests/grub.1 --update-kernel=DEFAULT \
cca0c4
+    --args="root=/dev/hda1"
cca0c4
+
cca0c4
+and compare the resulting configuration with the file
cca0c4
+`tests/results/updargs/g1.1`.
cca0c4
+
cca0c4
+
cca0c4
+The line::
cca0c4
+
cca0c4
+    grubDisplayTest grub.1 defaultindex/0 --default-index
cca0c4
+
cca0c4
+means execute::
cca0c4
+
cca0c4
+    ./grubby --grub --config-file tests/grub.1 --default-index
cca0c4
+
cca0c4
+and compare the output with the file `tests/results/defaultindex/0`.
cca0c4
+
cca0c4
+Writing New Test Cases
cca0c4
+----------------------
cca0c4
+
cca0c4
+To write a new test case for grubby you need a config file which matches the
cca0c4
+initial test conditions (either existing one or a new one), provide a 
cca0c4
+results file (likely a new one) which contains the expected configuration or
cca0c4
+output and finally add a call to the test function(s) using the desired grubby
cca0c4
+parameters in an appropriate section of `test.sh`.
cca0c4
-- 
cca0c4
2.17.1
cca0c4