===========================
step 1
lua ProjectDIR/src/lmod.in.lua bash --regression_testing --version
===========================
Modules based on Lua: Version 8.6.9  2022-02-02 11:25 -04:00
    by Robert McLay mclay@tacc.utexas.edu
===========================
step 2
lua ProjectDIR/src/lmod.in.lua bash --regression_testing --help
===========================
Usage: module [options] sub-command [args ...]
Options:
  -h -? -H --help                   This help message
  -s availStyle --style=availStyle  Site controlled avail style: system (default: system)
  --regression_testing              Lmod regression testing
  -D                                Program tracing written to stderr
  --debug=dbglvl                    Program tracing written to stderr (where dbglvl is a number 1,2,3)
  --pin_versions=pinVersions        When doing a restore use specified version, do not follow defaults
  -d --default                      List default modules only when used with avail
  -q --quiet                        Do not print out warnings
  --expert                          Expert mode
  -t --terse                        Write out in machine readable format for commands: list, avail, spider, savelist
  --initial_load                    loading Lmod for first time in a user shell
  --latest                          Load latest (ignore default)
  --ignore_cache                    Treat the cache file(s) as out-of-date
  --novice                          Turn off expert and quiet flag
  --raw                             Print modulefile in raw output when used with show
  -w twidth --width=twidth          Use this as max term width
  -v --version                      Print version info and quit
  -r --regexp                       use regular expression match
  --gitversion                      Dump git version in a machine readable way and quit
  --dumpversion                     Dump version in a machine readable way and quit
  --check_syntax --checkSyntax      Checking module command syntax: do not load
  --config                          Report Lmod Configuration
  --config_json                     Report Lmod Configuration in json format
  --mt                              Report Module Table State
  --timer                           report run times
  --force                           force removal of a sticky module or save an empty collection
  --redirect                        Send the output of list, avail, spider to stdout (not stderr)
  --no_redirect                     Force output of list, avail and spider to stderr
  --show_hidden                     Avail and spider will report hidden modules
  --spider_timeout=timeout          a timeout for spider
  -T --trace
  --nx --no_extensions
  --loc --location                  Just print the file location when using show
module [options] sub-command [args ...]
Help sub-commands:
  help                              prints this message
  help                module [...]  print help message from module(s)
Loading/Unloading sub-commands:
  load | add          module [...]  load module(s)
  try-load | try-add  module [...]  Add module(s), do not complain if not found
  del | unload        module [...]  Remove module(s), do not complain if not found
  swap | sw | switch  m1 m2         unload m1 and load m2
  purge                             unload all modules
  refresh                           reload aliases from current list of modules.
  update                            reload all currently loaded modules.
Listing / Searching sub-commands:
  list                              List loaded modules
  list                s1 s2 ...     List loaded modules that match the pattern
  avail | av                        List available modules
  avail | av          string        List available modules that contain "string".
  overview | ov                     List all available modules by short names with number of versions
  overview | ov       string        List available modules by short names with number of versions that contain "string"
  spider                            List all possible modules
  spider              module        List all possible version of that module file
  spider              string        List all module that contain the "string".
  spider              name/version  Detailed information about that version of the module.
  whatis              module        Print whatis information about module
  keyword | key       string        Search all name and whatis that contain "string".
Searching with Lmod:
  All searching (spider, list, avail, keyword) support regular expressions:
  -r spider           '^p'          Finds all the modules that start with `p' or `P'
  -r spider           mpi           Finds all modules that have "mpi" in their name.
  -r spider           'mpi$         Finds all modules that end with "mpi" in their name.
Handling a collection of modules:
  save | s                          Save the current list of modules to a user defined "default" collection.
  save | s            name          Save the current list of modules to "name" collection.
  reset                             The same as "restore system"
  restore | r                       Restore modules from the user's "default" or system default.
  restore | r         name          Restore modules from "name" collection.
  restore             system        Restore module state to system defaults.
  savelist                          List of saved collections.
  describe | mcc      name          Describe the contents of a module collection.
  disable             name          Disable (i.e. remove) a collection.
Deprecated commands:
  getdefault          [name]        load name collection of modules or user's "default" if no name given.
                                    ===> Use "restore" instead  <====
  setdefault          [name]        Save current list of modules to name if given, otherwise save as the default list for you the user.
                                    ===> Use "save" instead. <====
Miscellaneous sub-commands:
  is-loaded           modulefile    return a true status if module is loaded
  is-avail            modulefile    return a true status if module can be loaded
  show                modulefile    show the commands in the module file.
  use [-a]            path          Prepend or Append path to MODULEPATH.
  unuse               path          remove path from MODULEPATH.
  tablelist                         output list of active modules as a lua table.
Important Environment Variables:
  LMOD_COLORIZE                     If defined to be "YES" then Lmod prints properties and warning in color.
Lmod Web Sites
  Documentation:    http://lmod.readthedocs.org
  GitHub:           https://github.com/TACC/Lmod
  SourceForge:      https://lmod.sf.net
  TACC Homepage:    https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
  To report a bug please read http://lmod.readthedocs.io/en/latest/075_bug_reporting.html
Modules based on Lua: Version 8.6.9  2022-02-02 11:25 -04:00
    by Robert McLay mclay@tacc.utexas.edu
===========================
step 3
lua ProjectDIR/src/lmod.in.lua bash --regression_testing help
===========================
Usage: module [options] sub-command [args ...]
Options:
  -h -? -H --help                   This help message
  -s availStyle --style=availStyle  Site controlled avail style: system (default: system)
  --regression_testing              Lmod regression testing
  -D                                Program tracing written to stderr
  --debug=dbglvl                    Program tracing written to stderr (where dbglvl is a number 1,2,3)
  --pin_versions=pinVersions        When doing a restore use specified version, do not follow defaults
  -d --default                      List default modules only when used with avail
  -q --quiet                        Do not print out warnings
  --expert                          Expert mode
  -t --terse                        Write out in machine readable format for commands: list, avail, spider, savelist
  --initial_load                    loading Lmod for first time in a user shell
  --latest                          Load latest (ignore default)
  --ignore_cache                    Treat the cache file(s) as out-of-date
  --novice                          Turn off expert and quiet flag
  --raw                             Print modulefile in raw output when used with show
  -w twidth --width=twidth          Use this as max term width
  -v --version                      Print version info and quit
  -r --regexp                       use regular expression match
  --gitversion                      Dump git version in a machine readable way and quit
  --dumpversion                     Dump version in a machine readable way and quit
  --check_syntax --checkSyntax      Checking module command syntax: do not load
  --config                          Report Lmod Configuration
  --config_json                     Report Lmod Configuration in json format
  --mt                              Report Module Table State
  --timer                           report run times
  --force                           force removal of a sticky module or save an empty collection
  --redirect                        Send the output of list, avail, spider to stdout (not stderr)
  --no_redirect                     Force output of list, avail and spider to stderr
  --show_hidden                     Avail and spider will report hidden modules
  --spider_timeout=timeout          a timeout for spider
  -T --trace
  --nx --no_extensions
  --loc --location                  Just print the file location when using show
module [options] sub-command [args ...]
Help sub-commands:
  help                              prints this message
  help                module [...]  print help message from module(s)
Loading/Unloading sub-commands:
  load | add          module [...]  load module(s)
  try-load | try-add  module [...]  Add module(s), do not complain if not found
  del | unload        module [...]  Remove module(s), do not complain if not found
  swap | sw | switch  m1 m2         unload m1 and load m2
  purge                             unload all modules
  refresh                           reload aliases from current list of modules.
  update                            reload all currently loaded modules.
Listing / Searching sub-commands:
  list                              List loaded modules
  list                s1 s2 ...     List loaded modules that match the pattern
  avail | av                        List available modules
  avail | av          string        List available modules that contain "string".
  overview | ov                     List all available modules by short names with number of versions
  overview | ov       string        List available modules by short names with number of versions that contain "string"
  spider                            List all possible modules
  spider              module        List all possible version of that module file
  spider              string        List all module that contain the "string".
  spider              name/version  Detailed information about that version of the module.
  whatis              module        Print whatis information about module
  keyword | key       string        Search all name and whatis that contain "string".
Searching with Lmod:
  All searching (spider, list, avail, keyword) support regular expressions:
  -r spider           '^p'          Finds all the modules that start with `p' or `P'
  -r spider           mpi           Finds all modules that have "mpi" in their name.
  -r spider           'mpi$         Finds all modules that end with "mpi" in their name.
Handling a collection of modules:
  save | s                          Save the current list of modules to a user defined "default" collection.
  save | s            name          Save the current list of modules to "name" collection.
  reset                             The same as "restore system"
  restore | r                       Restore modules from the user's "default" or system default.
  restore | r         name          Restore modules from "name" collection.
  restore             system        Restore module state to system defaults.
  savelist                          List of saved collections.
  describe | mcc      name          Describe the contents of a module collection.
  disable             name          Disable (i.e. remove) a collection.
Deprecated commands:
  getdefault          [name]        load name collection of modules or user's "default" if no name given.
                                    ===> Use "restore" instead  <====
  setdefault          [name]        Save current list of modules to name if given, otherwise save as the default list for you the user.
                                    ===> Use "save" instead. <====
Miscellaneous sub-commands:
  is-loaded           modulefile    return a true status if module is loaded
  is-avail            modulefile    return a true status if module can be loaded
  show                modulefile    show the commands in the module file.
  use [-a]            path          Prepend or Append path to MODULEPATH.
  unuse               path          remove path from MODULEPATH.
  tablelist                         output list of active modules as a lua table.
Important Environment Variables:
  LMOD_COLORIZE                     If defined to be "YES" then Lmod prints properties and warning in color.
Lmod Web Sites
  Documentation:    http://lmod.readthedocs.org
  GitHub:           https://github.com/TACC/Lmod
  SourceForge:      https://lmod.sf.net
  TACC Homepage:    https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
  To report a bug please read http://lmod.readthedocs.io/en/latest/075_bug_reporting.html
Modules based on Lua: Version 8.6.9  2022-02-02 11:25 -04:00
    by Robert McLay mclay@tacc.utexas.edu
===========================
step 4
lua ProjectDIR/src/lmod.in.lua bash --regression_testing help amber
===========================
Module Specific Help for "amber/9"
The TACC Amber installation only includes the parallel Sander/pmemd modules.
The Amber modulefile defines the following environment variables:
TACC_AMBER_DIR, TACC_AMBER_DOC, TACC_AMBER_BIN for the location of
the Amber distribution, documentation, and binaries, respectively.
Also, AMBERHOME is set to the Amber Home Directory (TACC_AMBER_DIR),
and $AMBERHOME/exe is included in the PATH variable.
Here is an example command for executing the Sander module:
sander.LES -i tes.in -o tes.out -p tes.prmtop.save -c tes.x -r tes.rst
Version 9
===========================
step 5
lua ProjectDIR/src/lmod.in.lua bash --regression_testing --config
===========================
Modules based on Lua: Version 8.6.9  2022-02-02 11:25 -04:00
    by Robert McLay mclay@tacc.utexas.edu
Description                        Value
Allow root to use Lmod             yes
Allow TCL modulefiles              yes
Auto swapping                      yes
Avail Style                        <system>
Case Independent Sorting           no
Colorize Lmod                      yes
Configuration dir                  /etc/lmod
Disable Same Name AutoSwap         no
Display Extension w/ avail         yes
Using dotfiles                     yes
Allow duplicate paths              no
Require Exact Match/no defaults    no
Export the module command          yes
Allow extended default             yes
Use attached TCL over system call  no
Use italic instead of dim          no
KSH Support                        no
Language used for err/msg/warn     en
Site message file                  <empty>
LUA_CPATH                          @sys_lua_cpath@
LUA_PATH                           @sys_lua_path@
System lua-term                    no
avail: Include modulepath dir      no
MODULEPATH_INIT                    @PKG@/init/.modulespath -> <empty>
MODULEPATH_ROOT
number of cache dirs               0
OS Name                            <N/A>
Pager                              less
Pager Options                      -XqMREF
Path to HashSum                    PATH_to_HASHSUM
Path to Lua                        lua
Pin Versions in restore            no
Pkg Class name                     Pkg
Lmod prefix                        @PREFIX@
Site controlled prefix             no
Prepend order                      normal
LMOD_RC                            <empty>
Redirect to stdout                 no
Supporting Full Settarg Use        no
User shell                         bash
Site Name                          <empty>
Site Pkg location                  standard
Ignore Cache                       no
Cached loads                       no
System Name                        <empty>
SYSHOST (cluster name)             <empty>
TCL Version                        <N/A>
User cache valid time(sec)         86400
Write cache after (sec)            2
Threshold (sec)                    1
Tmod find first rule               no
Tmod prepend PATH Rule             no
Tracing                            no
uname -a
LMOD_PACKAGE_PATH  nil
Active RC file(s):
ProjectDIR/src/../init/lmodrc.lua
 OutputDIR/.lmodrc.lua
 Lmod Property Table:
propT = {
  arch = {
    displayT = {
      gpu = {
        color = "red",
        doc = "built for GPU",
        full_color = false,
        long = "(g)",
        short = "(g)",
      },
      ["gpu:mic"] = {
        color = "red",
        doc = "built natively for MIC and GPU",
        full_color = false,
        long = "(g,m)",
        short = "(gm)",
      },
      ["gpu:mic:offload"] = {
        color = "red",
        doc = "built natively for MIC and GPU and offload to the MIC",
        full_color = false,
        long = "(g,m,o)",
        short = "(@)",
      },
      mic = {
        color = "blue",
        doc = "built for host and native MIC",
        full_color = false,
        long = "(m)",
        short = "(m)",
      },
      ["mic:offload"] = {
        color = "blue",
        doc = "built for host, native MIC and offload to the MIC",
        full_color = false,
        long = "(m,o)",
        short = "(*)",
      },
      offload = {
        color = "blue",
        doc = "built for offload to the MIC only",
        full_color = false,
        long = "(o)",
        short = "(o)",
      },
    },
    validT = {
      gpu = 1,
      mic = 1,
      offload = 1,
    },
  },
  lmod = {
    displayT = {
      sticky = {
        color = "red",
        doc = "Module is Sticky, requires --force to unload or purge",
        long = "(S)",
        short = "(S)",
      },
    },
    validT = {
      sticky = 1,
    },
  },
  state = {
    displayT = {
      experimental = {
        color = "blue",
        doc = "Experimental",
        long = "(E)",
        short = "(E)",
      },
      obsolete = {
        color = "red",
        doc = "Obsolete",
        long = "(O)",
        short = "(O)",
      },
      testing = {
        color = "green",
        doc = "Testing",
        long = "(T)",
        short = "(T)",
      },
    },
    validT = {
      experimental = 1,
      obsolete = 1,
      testing = 1,
    },
  },
  status = {
    displayT = {
      active = {
        color = "yellow",
        doc = "Module is loaded",
        long = "(L)",
        short = "(L)",
      },
    },
    validT = {
      active = 1,
    },
  },
}
===========================
step 6
lua ProjectDIR/src/chkJson
===========================
configT matches
rcfileA is a table
rcfileA has two entries
propT is a table
