From: Chris Koeritz Date: Thu, 20 Aug 2020 13:27:42 +0000 (-0400) Subject: Merge branch 'release-2.140.126' X-Git-Tag: 2.140.126^0 X-Git-Url: https://feistymeow.org/gitweb/?p=feisty_meow.git;a=commitdiff_plain;h=714f07e34483e14aa4a91047b8891463267ae568;hp=e7c657cd5544c1e4e5108412f9fa5e51d56a0ad3 Merge branch 'release-2.140.126' --- diff --git a/infobase/fortunes.dat b/infobase/fortunes.dat index 19252d88..1c983a92 100644 --- a/infobase/fortunes.dat +++ b/infobase/fortunes.dat @@ -43909,4 +43909,8 @@ So all the "lefthanders" stay away and do not disturben the brainstorming von here working intelligencies. Otherwise you will be out thrown and kicked anderswhere! Also: please keep still and only watchen astaunished the blinkenlights. - +~ +Naval Lint! Belly up to the finest barnacle scrub on the market, and have +your teams boat bright as a button! +Only $9.99 a bottle, sold at all Ben Franklin Department Stores. + -- fictional product developed due to misspelling of navel lint diff --git a/production/feisty_meow_config.ini b/production/feisty_meow_config.ini index 81ff4b6a..38cd7780 100644 --- a/production/feisty_meow_config.ini +++ b/production/feisty_meow_config.ini @@ -3,7 +3,7 @@ # specifies the version of the code that is being constructed here. major=2 minor=140 -revision=125 +revision=126 build=420 # specifies the remainder of the version record info. diff --git a/scripts/archival/snarf_notes.pl b/scripts/archival/snarf_notes.pl index 56fe7a6f..b14d05d7 100644 --- a/scripts/archival/snarf_notes.pl +++ b/scripts/archival/snarf_notes.pl @@ -42,10 +42,12 @@ local($snarf_file) = &snarf_name($snarf_file_base, $number); # gather any directories in our home that match these often recurring patterns. &snarf_by_pattern($snarf_file_base, "$root", "crucial"); +&snarf_by_pattern($snarf_file_base, "$root", "Documents"); &snarf_by_pattern($snarf_file_base, "$root", "idea"); &snarf_by_pattern($snarf_file_base, "$root", "issue"); &snarf_by_pattern($snarf_file_base, "$root", "list"); &snarf_by_pattern($snarf_file_base, "$root", "note"); +&snarf_by_pattern($snarf_file_base, "$root", "nuage"); &snarf_by_pattern($snarf_file_base, "$root", "project"); &snarf_by_pattern($snarf_file_base, "$root", "task"); &snarf_by_pattern($snarf_file_base, "$root", "invention"); diff --git a/scripts/core/functions.sh b/scripts/core/functions.sh index db08274f..28c2f058 100644 --- a/scripts/core/functions.sh +++ b/scripts/core/functions.sh @@ -239,26 +239,51 @@ if [ -z "$skip_all" ]; then ############## # locates a process given a search pattern to match in the process list. - # supports a single command line flag style parameter of "-u USERNAME"; - # if the -u flag is found, a username is expected afterwards, and only the - # processes of that user are considered. + # + # + the -u flag specifies a user name, e.g. "-u joe", which causes only + # the processes of that user "joe" to be considered. + # + # + the -x flag specifies a pattern to exclude from the list, e.g. "-x pszap.sh" + # would ignore any processes that mention the phrase "pszap.sh". function psfind() { + local user_flag="-e" + # default user flag is for all users. + local excluder="ScrengeflebbitsAPhraseWeNeverExpecttomatchanythingYO298238" + # for our default, pick an exclusion string we would never match. + + local found_flag=1 + while [ $found_flag -eq 1 ]; do + # reset our sentinel now that we're safely in our loop. + found_flag=0 + + # save the first argument, since we're going to shift the args. + local arg1="$1" + if [ "$arg1" == "-u" ]; then + # handle the user flag. + user_flag="-u $2" +#echo "found a -u parm and user=$2" + found_flag=1 # signal that we found one. + # skip these two arguments, since we've consumed them. + shift + shift + elif [ "$arg1" == "-x" ]; then + # handle the exclusion flag. + excluder="$2" +#echo "found a -x parm and excluder=$excluder" + found_flag=1 # signal that we found one. + # skip these two arguments, since we've consumed them. + shift + shift + fi + done + + # now that we've yanked any flags out, we can pull the rest of the + # arguments in as patterns to seek in the process list. local -a patterns=("${@}") #echo ==== #echo patterns list is: "${patterns[@]}" #echo ==== - local user_flag - if [ "${patterns[0]}" == "-u" ]; then - user_flag="-u ${patterns[1]}" -#echo "found a -u parm and user=${patterns[1]}" - # void the two elements with that user flag so we don't use them as patterns. - unset patterns[0] patterns[1]= - else - # select all users. - user_flag="-e" - fi - local PID_DUMP="$(mktemp "$TMP/zz_pidlist.XXXXXX")" local -a PIDS_SOUGHT @@ -287,8 +312,10 @@ if [ -z "$skip_all" ]; then # ids out of the results. local i for i in "${patterns[@]}"; do +#echo "pattern curr is '$i'" PIDS_SOUGHT+=($(cat $PID_DUMP \ | grep -i "$i" \ + | grep -v "$excluder" \ | sed -n -e "$pid_finder_pattern")) done #echo ==== diff --git a/scripts/processes/pszap.sh b/scripts/processes/pszap.sh index 31e119f8..93b137b9 100644 --- a/scripts/processes/pszap.sh +++ b/scripts/processes/pszap.sh @@ -6,7 +6,9 @@ fi source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh" -PIDLIST=$(psfind $1) +SCRIPT_NAME="pszap.sh" + +PIDLIST=$(psfind -x $SCRIPT_NAME $1) #echo "PIDS are $PIDLIST" if [ -z "$PIDLIST" ]; then echo "Your process name was not found in the system." diff --git a/testkit/doc/makefile b/testkit/doc/makefile new file mode 100644 index 00000000..7bc9877d --- /dev/null +++ b/testkit/doc/makefile @@ -0,0 +1,5 @@ + +all: testkit_reference.html + +testkit_reference.html: testkit_reference-source.html + @bash rebrand.sh diff --git a/testkit/doc/rebrand.sh b/testkit/doc/rebrand.sh new file mode 100644 index 00000000..093a1f1f --- /dev/null +++ b/testkit/doc/rebrand.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# makes a new copy of the testkit reference with branding info installed. + +echo "Rebranding the TestKit reference for: $TESTKIT_BRANDING" + +# pull in our testkit config. +source ../prepare_tools.sh ../prepare_tools.sh +source $TESTKIT_ROOT/library/process_configuration.sh +define_and_export_variables + +# just a search and replace. the source doc had better still have "$BRANDING" tags in it. +sed -e "s/\$BRANDING/$TESTKIT_BRANDING/g" \ + < testkit_reference-source.html \ + > testkit_reference.html + + diff --git a/testkit/doc/testkit_reference-source.html b/testkit/doc/testkit_reference-source.html new file mode 100644 index 00000000..255738bd --- /dev/null +++ b/testkit/doc/testkit_reference-source.html @@ -0,0 +1,280 @@ + + + + TestKit Reference Manual + + +

$BRANDING TestKit Reference Manual

+

Author: Chris Koeritz

+
Version 1.0 ― Updated August 14 2020
+

The $BRANDING TestKit

+

The TestKit is a collection of scripts that leverages the ShUnit unit + testing environment.  The TestKit provides a pattern for creating + test suites using a simple configuration file approach.  Full + reporting on test runs is provided in a convenient tabular format.

+

Generally, writing a test script using the TestKit is a matter of + minutes.  A blank test is provided as a template, and that can be + expanded with whatever test steps are needed.

+

TestKit (and ShUnit) are implemented in the GNU Bash script language, but + a TestKit test script can invoke external applications, written in + whatever programming language or scripting tool is desired, using the + standard POSIX interfaces.
+

+

Getting the TestKit

+

Follow these steps to download and install a new "vanilla" version of the + TestKit:
+

+
+

sudo + mkdir /opt/feistymeow.org
+ sudo chown -R $USER /opt/feistymeow.org
+ cd /opt/feistymeow.org
+ git clone git://feistymeow.org/feisty_meow
+ ls feisty_meow/testkit  # the testkit location; can be copied + elsewhere for use.

+

+
+

The above steps were used to kick-start the local version of the TestKit.

+

It is possible to check out the TestKit within one's own code base (by + adding the Feisty Meow® Codebase that was retrieved above).  Then one + can retrieve an updated Feisty Meow® TestKit by running "git pull" on the + "feisty_meow" folder.  This will get the latest version of TestKit + without disturbing whatever project's revision control repository contains + the TestKit for testing.

+

Preparing the TestKit on Linux

+

Linux is the easiest environment for running the TestKit, given that the + tests were built using the bash shell within a Linux environment.  If + some of the packages used in the tests are missing (such as expect and gnu + awk), these may need to be installed from the appropriate repository for + your Linux distribution.  Most distributions include these packages + automatically however.

+

Preparing the TestKit on Mac OS X

+

The test suite runs well on modern Macs with Intel CPUs.  Due to + some differences in the versions of a few applications on the Mac, some + GNU tools may need to be installed to run the TestKit.  These are + available via the Brew installer tool.
+

+

+

Preparing the TestKit on MS-Windows

+

The Cygwin Unix emulation system is required to run the TestKit on + Windows.  This package is available at: http://cygwin.com/install.html

+

The default packages selected by Cygwin are the starting point of the + install.  In addition to those packages, the following packages are + also required (see list below).  Rather than using the cygwin setup + program for this task, the next section describes how to install Cygwin + with the apt-cyg tool.  Apt-cyg is the preferred method, since it + involves less interaction with the somewhat clunky Cygwin installer.  + If necessary, it is possible to install all the packages without apt-cyg + just by using the Cygwin setup program.  To find each of these + packages more easily, try switching the “View” button on the Cygwin setup + program to “Full” to get an alphabetized list.

+
+

bc +
crypt
+ cygutils
+ emacs
+ email
+ expect
+ gcc-g++
+ git
+ gitk
+ gvim
+ inetutils
+ less
+ make
+ mutt
+ ncftp
+ openssh
+ perl
+ procps
+ python
+ sharutils
+ shutdown
+ subversion
+ time
+ unzip
+ util-linux
+ vim
+ wget
+ xinit
+ xterm
+ zip

+
+

Apt-cyg Installation Process

+

The apt-cyg program brings the convenience of the Debian and Ubuntu + installer application (apt-get) to Cygwin.  This program does require + a couple of additional setup steps.  This material is drawn from the + apt-cyg home page: https://github.com/transcode-open/apt-cyg

+

1.  Install the basic Cygwin packages with setup.exe (rather than + the long list above), but add these two packages which are not selected by + default:

+ +

2.   Download and install the apt-cyg program from within a + Cygwin bash prompt:

+
+

lynx + -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
+ install apt-cyg /bin

+
+

3.       Install the packages required for + the TestKit:

+
+

apt-cyg + install bc crypt cygutils emacs email expect gcc-g++ git gitk gvim \
+   inetutils less make mutt ncftp openssh perl procps python + sharutils \
+   shutdown time unzip util-linux vim xinit xterm zip

+
+

4.       The installation will run for a + while but then should conclude with all required packages installed.

+

Setting up a Test Suite

+

Running tests in TestKit uses a configuration file called + “testkit.config” to define the environment and, optionally, which test + scripts to run.  This file is the main switchboard that defines where + the tests will find the resources they require.

+

The configuration file can be specified via the environment variable + “TESTKIT_CFG_FILE”.  This variable can be set to any location, + enabling the configuration file to reside in a directory other than the + toolkit folder.  If the variable is not defined, then the testing + config file defaults to “$TESTKIT_ROOT/testkit.config”.

+ The TESTKIT_ROOT variable is frequently referred to in command + examples.  It is set up automatically by the prepare_tools script (see + below). +

Running a Test Suite

+

Once the TestKit configuration file has been established, running a whole + test suite can be accomplished with this command:
+

+
+

 bash + {TESTKIT_FOLDER}/test_driver.sh

+
+

Where the {TESTKIT_FOLDER} should be replaced with whatever path + the TestKit is stored in.

+

Alternatively, if the TESTKIT_ROOT folder is already established, the + tests can be run with:

+
+

 bash + "$TESTKIT_ROOT/test_driver.sh"

+
+

+

What to Expect From the Test Run

+

The test_driver.sh script will output a few informative lines of text + before printing a table of the tests that it intends to run.

+

After the test plan is shown, all of the tests listed will be executed in + the order they are listed in, and they will each produce output.  + Each individual test (usually a separate bash script) produces a summary + at the end of its run with a count of tests and a report of the tests + success or failure.

+

At the end of all the tests in the suite, the table of tests is printed + again with the results for each test.  For example, this is a test + run that had no errors in any test (that's good, since it is our super + simple example test):

+
$ + cd $FEISTY_MEOW_APEX/testkit
+ $ ./test_driver.sh summary
+ ===========================================================
+ Testkit environment loaded.
+ TESTKIT_ROOT=/opt/feistymeow.org/feisty_meow/testkit
+ TESTKIT_CFG_FILE=/opt/feistymeow.org/feisty_meow/testkit/testkit.config
+ TMP=/Users/fred/.tmp
+ TEST_TEMP=/Users/fred/.tmp/testkit_logs_fred
+ ===========================================================
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ TestKit running from: /opt/feistymeow.org/feisty_meow/testkit
+ TestKit config file: + /opt/feistymeow.org/feisty_meow/testkit/testkit.config
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Full set of tests:
+ 1: /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+
+ ======================================================================
+ Wed Aug 12 14:11:00 EDT 2020: Now running test 1: + /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+   Test output file: + /Users/fred/.tmp/testkit_logs_fred/run_2020_08_12/test_log.vKf7J3
+ OK: successful test run for test + /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+
+
+ Results table for this test run:
+
+ 01: OKAY -- + /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+
+ Total testing duration: 00:00 hh:mm (1 seconds total)
+ OK: All 1 Tests Ran Successfully.

+
+

The above shows the "summary" view, which does not allow + the individual tests to output to the console.  If the "summary" flag + is not passed, then the output from all the test runs is also shown.

+

Even when the summary view is used, all output files can + be examined after the run.  For example, in the above, the mentioned + output file "test_log.vKf7J3" can be checked to see exactly what happened + during the test.

+

A test with a failure in it will have “FAIL” next to the + test that failed, and the final output line will start with + “FAILURE”.  For example:

+
+

01: + OKAY – AckPfft_Tests/Gorp_Tests/deslagToaster.sh
+ 02: FAIL – AckPfft_Tests/Gorp_Tests/spumeMerchantry.sh
+ 03: OKAY – AckPfft_Tests/Gorp_Tests/octopusLauncher.sh
+ …
+ 22: OKAY -- Snargle_Tests/scramTests/scramForPetunias.sh

+ +

FAILURE: + 1 Tests Failed out of 22 Tests.

+
+

A failed test will also return a non-zero value from the test execution, + enabling the run of a test suite to be tested for success when launched + externally, such as from a continuous integration system.

+

Loading the TestKit Environment

+

If one wishes to run individual tests within the test suite, rather than + the entire suite, this is done by loading the TestKit variables into the + current shell environment, like so:

+
+

cd + {TESTKIT_FOLDER}  # replace with actual location of + TestKit.
+ source prepare_tools.sh prepare_tools.sh
+ source $TESTKIT_ROOT/library/process_configuration.sh
+ define_and_export_variables

+ # Show the + important variables.
+ var $TESTKIT_ROOT $TESTKIT_CFG_FILE
+

After loading the TestKit environment, one can execute a specific test + and see its results, for example:

+
+

cd + examples
+ bash blank_test.sh

+
+

The test will run and output its results to the console (that is, output + is sent to standard out and standard error, to be more precise).

+


+

+

+ + diff --git a/testkit/doc/testkit_reference.html b/testkit/doc/testkit_reference.html index d6fbbd10..fe752cc4 100644 --- a/testkit/doc/testkit_reference.html +++ b/testkit/doc/testkit_reference.html @@ -5,12 +5,13 @@

Feisty Meow® TestKit Reference Manual

-
Version 1.0 ― Updated August 12 2020
+

Author: Chris Koeritz

+
Version 1.0 ― Updated August 14 2020

The Feisty Meow® TestKit

The TestKit is a collection of scripts that leverages the ShUnit unit - testing environment.  TestKit provides a pattern for creating test - suites using a simple configuration file approach.  Full reporting on - test runs is provided in a convenient tabular format.

+ testing environment.  The TestKit provides a pattern for creating + test suites using a simple configuration file approach.  Full + reporting on test runs is provided in a convenient tabular format.

Generally, writing a test script using the TestKit is a matter of minutes.  A blank test is provided as a template, and that can be expanded with whatever test steps are needed.

@@ -20,17 +21,28 @@ standard POSIX interfaces.

Getting the TestKit

-

Follow these steps to download and install the Feisty Meow TestKit:
+

Follow these steps to download and install a new "vanilla" version of the + TestKit:

sudo +margin-left:0in;background:#DDD9C3">sudo mkdir /opt/feistymeow.org
sudo chown -R $USER /opt/feistymeow.org
cd /opt/feistymeow.org
- git clone git://feistymeow.org/feisty_meow

+ git clone git://feistymeow.org/feisty_meow
+ ls feisty_meow/testkit  # the testkit location; can be copied + elsewhere for use.
+

+

The above steps were used to kick-start the local version of the TestKit.

+

It is possible to check out the TestKit within one's own code base (by + adding the Feisty Meow® Codebase that was retrieved above).  Then one + can retrieve an updated Feisty Meow® TestKit by running "git pull" on the + "feisty_meow" folder.  This will get the latest version of TestKit + without disturbing whatever project's revision control repository contains + the TestKit for testing.

Preparing the TestKit on Linux

Linux is the easiest environment for running the TestKit, given that the tests were built using the bash shell within a Linux environment.  If @@ -61,83 +73,81 @@ margin-left:0in;background:#DDD9C3">sudo

bc
- crypt
- cygutils
- emacs
- email
- expect
- gcc-g++
- git
- gitk
- gvim
- inetutils
- less
- make
- mutt
- ncftp
- openssh
- perl
- procps
- python
- sharutils
- shutdown
- subversion
- time
- unzip
- util-linux
- vim
- wget
- xinit
- xterm
- zip

+margin-left:0in;margin-bottom:.0001pt;background:#DDD9C3">bc +
crypt
+ cygutils
+ emacs
+ email
+ expect
+ gcc-g++
+ git
+ gitk
+ gvim
+ inetutils
+ less
+ make
+ mutt
+ ncftp
+ openssh
+ perl
+ procps
+ python
+ sharutils
+ shutdown
+ subversion
+ time
+ unzip
+ util-linux
+ vim
+ wget
+ xinit
+ xterm
+ zip

-

 

Apt-cyg Installation Process

The apt-cyg program brings the convenience of the Debian and Ubuntu installer application (apt-get) to Cygwin.  This program does require a couple of additional setup steps.  This material is drawn from the apt-cyg home page: https://github.com/transcode-open/apt-cyg

-

1.  - Install the basic Cygwin packages with setup.exe (rather than the long - list above), but add these two packages which are not selected by default:

+

1.  Install the basic Cygwin packages with setup.exe (rather than + the long list above), but add these two packages which are not selected by + default:

-

2.   - Download and install the apt-cyg program from within a Cygwin bash prompt:

+

2.   Download and install the apt-cyg program from within a + Cygwin bash prompt:

lynx -source - rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
- install apt-cyg /bin

+margin-left:0in;background:#DDD9C3">lynx + -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
+ install apt-cyg /bin

-

3.       - Install the packages required for the TestKit:

+

3.       Install the packages required for + the TestKit:

apt-cyg install bc - crypt cygutils emacs email expect gcc-g++ git gitk gvim \
-   inetutils less make mutt ncftp openssh perl procps python - sharutils \
-   shutdown time unzip util-linux vim xinit xterm zip

+margin-left:0in;margin-bottom:.0001pt;background:#DDD9C3">apt-cyg + install bc crypt cygutils emacs email expect gcc-g++ git gitk gvim \
+   inetutils less make mutt ncftp openssh perl procps python + sharutils \
+   shutdown time unzip util-linux vim xinit xterm zip

-

4.       - The installation will run for a while but then should conclude with all - required packages installed.

+

4.       The installation will run for a + while but then should conclude with all required packages installed.

Setting up a Test Suite

-

Tunning tests in TestKit uses a configuration file called +

Running tests in TestKit uses a configuration file called “testkit.config” to define the environment and, optionally, which test scripts to run.  This file is the main switchboard that defines where - the tests will find users, home directories, queues, containers, and so - forth.  The configuration file can be specified via the environment - variable “TESTKIT_CFG_FILE”.  This variable can be set to any - location, enabling the configuration file to reside in a directory other - than the toolkit folder.  If the variable is not defined, then the - testing config file defaults to “$TESTKIT_ROOT/testkit.config”.

+ the tests will find the resources they require.

+

The configuration file can be specified via the environment variable + “TESTKIT_CFG_FILE”.  This variable can be set to any location, + enabling the configuration file to reside in a directory other than the + toolkit folder.  If the variable is not defined, then the testing + config file defaults to “$TESTKIT_ROOT/testkit.config”.

The TESTKIT_ROOT variable is frequently referred to in command examples.  It is set up automatically by the prepare_tools script (see below). @@ -148,8 +158,9 @@ margin-left:0in;margin-bottom:.0001pt;background:#DDD9C3">apt-cyg install bc

 bash {TESTKIT_FOLDER}/test_driver.sh -

+margin-left:0in;background:#DDD9C3"> bash + {TESTKIT_FOLDER}/test_driver.sh

+

Where the {TESTKIT_FOLDER} should be replaced with whatever path the TestKit is stored in.

Alternatively, if the TESTKIT_ROOT folder is already established, the @@ -157,7 +168,8 @@ margin-left:0in;background:#DDD9C3"> bash {TESTKIT_FOLDER}/test_driv

 bash "$TESTKIT_ROOT/test_driver.sh"

+margin-left:0in;background:#DDD9C3"> bash + "$TESTKIT_ROOT/test_driver.sh"

What to Expect From the Test Run

@@ -173,39 +185,40 @@ margin-left:0in;background:#DDD9C3"> bash "$TESTKIT_ROOT/test_driver.sh"

$ cd - $FEISTY_MEOW_APEX/testkit
- $ ./test_driver.sh summary
- ===========================================================
- Testkit environment loaded.
- TESTKIT_ROOT=/opt/feistymeow.org/feisty_meow/testkit
- TESTKIT_CFG_FILE=/opt/feistymeow.org/feisty_meow/testkit/testkit.config
- TMP=/Users/fred/.tmp
- TEST_TEMP=/Users/fred/.tmp/testkit_logs_fred
- ===========================================================
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- TestKit running from: /opt/feistymeow.org/feisty_meow/testkit
- TestKit config file: - /opt/feistymeow.org/feisty_meow/testkit/testkit.config
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- Full set of tests:
- 1: /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
-
- ======================================================================
- Wed Aug 12 14:11:00 EDT 2020: Now running test 1: - /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
-   Test output file: - /Users/fred/.tmp/testkit_logs_fred/run_2020_08_12/test_log.vKf7J3
- OK: successful test run for test - /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
-
-
- Results table for this test run:
-
- 01: OKAY -- /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
-
- Total testing duration: 00:00 hh:mm (1 seconds total)
- OK: All 1 Tests Ran Successfully.
+background:#DDD9C3;margin-left:.1in;margin-right:.1in">$ + cd $FEISTY_MEOW_APEX/testkit
+ $ ./test_driver.sh summary
+ ===========================================================
+ Testkit environment loaded.
+ TESTKIT_ROOT=/opt/feistymeow.org/feisty_meow/testkit
+ TESTKIT_CFG_FILE=/opt/feistymeow.org/feisty_meow/testkit/testkit.config
+ TMP=/Users/fred/.tmp
+ TEST_TEMP=/Users/fred/.tmp/testkit_logs_fred
+ ===========================================================
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ TestKit running from: /opt/feistymeow.org/feisty_meow/testkit
+ TestKit config file: + /opt/feistymeow.org/feisty_meow/testkit/testkit.config
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Full set of tests:
+ 1: /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+
+ ======================================================================
+ Wed Aug 12 14:11:00 EDT 2020: Now running test 1: + /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+   Test output file: + /Users/fred/.tmp/testkit_logs_fred/run_2020_08_12/test_log.vKf7J3
+ OK: successful test run for test + /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+
+
+ Results table for this test run:
+
+ 01: OKAY -- + /opt/feistymeow.org/feisty_meow/testkit/examples/blank_test.sh
+
+ Total testing duration: 00:00 hh:mm (1 seconds total)
+ OK: All 1 Tests Ran Successfully.

The above shows the "summary" view, which does not allow the individual tests to output to the console.  If the "summary" flag @@ -220,14 +233,16 @@ background:#DDD9C3;margin-left:.1in;margin-right:.1in">$ cd

01: FAIL – - AckPfft_Tests/Gorp_Tests/deslagToaster.sh
- 02: OKAY – AckPfft_Tests/Gorp_Tests/spumeMerchantry.sh
- 03: OKAY – AckPfft_Tests/Gorp_Tests/octopusLauncher.sh
- …
- 22: OKAY -- Snargle_Tests/scramTests/scramForPetunias.sh

+margin-left:0in;background:#DDD9C3">01: + OKAY – AckPfft_Tests/Gorp_Tests/deslagToaster.sh
+ 02: FAIL – AckPfft_Tests/Gorp_Tests/spumeMerchantry.sh
+ 03: OKAY – AckPfft_Tests/Gorp_Tests/octopusLauncher.sh
+ …
+ 22: OKAY -- Snargle_Tests/scramTests/scramForPetunias.sh

+

FAILURE: 1 Tests Failed out of 22 Tests.

+margin-left:0in;background:#DDD9C3">FAILURE: + 1 Tests Failed out of 22 Tests.

A failed test will also return a non-zero value from the test execution, enabling the run of a test suite to be tested for success when launched @@ -239,19 +254,22 @@ margin-left:0in;background:#DDD9C3">FAILURE: 1 Tests Failed out of 22 Tests.

cd {TESTKIT_FOLDER}  # replace - with actual location of TestKit.
- source prepare_tools.sh prepare_tools.sh
- source $TESTKIT_ROOT/library/process_configuration.sh
- define_and_export_variables

- # Show the important variables.
- var $TESTKIT_ROOT $TESTKIT_CFG_FILE
+margin-left:0in;background:#DDD9C3">cd + {TESTKIT_FOLDER}  # replace with actual location of + TestKit.
+ source prepare_tools.sh prepare_tools.sh
+ source $TESTKIT_ROOT/library/process_configuration.sh
+ define_and_export_variables

+ # Show the + important variables.
+ var $TESTKIT_ROOT $TESTKIT_CFG_FILE

After loading the TestKit environment, one can execute a specific test and see its results, for example:

cd examples
- bash blank_test.sh

+margin-left:0in;background:#DDD9C3">cd + examples
+ bash blank_test.sh

The test will run and output its results to the console (that is, output is sent to standard out and standard error, to be more precise).

diff --git a/testkit/examples/blank_test.sh b/testkit/examples/blank_test.sh index 47dfd3a6..239cbe73 100644 --- a/testkit/examples/blank_test.sh +++ b/testkit/examples/blank_test.sh @@ -34,8 +34,8 @@ testSanity() testCleaningPriorTestRun() { - echo taking steps to clean last test... -#if any. + # take steps to clean last test, if any are needed. + true } testDoAThing() @@ -55,8 +55,8 @@ testDoAnotherThing() } oneTimeTearDown() { - echo cleaning up after test now... -#if anything to do. + # cleaning up after test, if needed. + true } # load and run shUnit2 diff --git a/testkit/examples/fred-testkit.config b/testkit/examples/fred-testkit.config index 0d26181a..f0396bc6 100644 --- a/testkit/examples/fred-testkit.config +++ b/testkit/examples/fred-testkit.config @@ -18,6 +18,9 @@ BASE_USER=${USER} # Used for windows testing; provides the path to the binaries directory of cygwin. #CYGWIN_BIN_PATH=c:/cygwin/bin +# Used to insert branded bits into documentation and other places potentially. +TESTKIT_BRANDING="Feisty Meow®" + ############## # define the tests to run. this is the most convenient place to put this. diff --git a/testkit/makefile b/testkit/makefile index 115c1a2e..87e3549a 100644 --- a/testkit/makefile +++ b/testkit/makefile @@ -1,9 +1,8 @@ -include variables.def -PROJECT = testkit -FIRST_TARGETS += run_testkit_check -include rules.def +all: + @bash test_driver.sh + +docs: + cd doc && $(MAKE) -run_testkit_check: - $(HIDESH) -c 'bash test_driver.sh' diff --git a/testkit/prepare_tools.sh b/testkit/prepare_tools.sh index 9186522e..97aa6f24 100644 --- a/testkit/prepare_tools.sh +++ b/testkit/prepare_tools.sh @@ -43,6 +43,16 @@ GRITTY_TESTING_TOP_LEVEL="$(echo "$GRITTY_TESTING_TOP_LEVEL" | sed -e 's/\/cygdr # the top-level directory for tests, i.e. the root of testing hierarchy. export TESTKIT_ROOT="$GRITTY_TESTING_TOP_LEVEL" +# location needed for shunit temporary files. +export TMPDIR="$HOME/.shunit-temp" +if [ ! -d "$TMPDIR" ]; then + mkdir -p "$TMPDIR" + if [ $? -ne 0 ]; then + echo "Failure during creation of TMPDIR for shunit!" + exit 1 + fi +fi + # a bit of a dance to not pull in code too early... export TESTKIT_BOOTSTRAPPING=true source "$TESTKIT_ROOT/library/establish_environment.sh" diff --git a/testkit/testkit.config b/testkit/testkit.config index 0d26181a..f0396bc6 100644 --- a/testkit/testkit.config +++ b/testkit/testkit.config @@ -18,6 +18,9 @@ BASE_USER=${USER} # Used for windows testing; provides the path to the binaries directory of cygwin. #CYGWIN_BIN_PATH=c:/cygwin/bin +# Used to insert branded bits into documentation and other places potentially. +TESTKIT_BRANDING="Feisty Meow®" + ############## # define the tests to run. this is the most convenient place to put this.