rmToo uses rmToo for its own requirements management, making it a great example of the tool’s capabilities.
Because rmToo uses rmToo for requirements management, it is possible to use rmToo as an example for rmToo’s features. The rmToo project itself contains requirements files that demonstrate real-world usage patterns.
Note: The following procedure is optional and not needed for using rmToo in your projects.
When you want to create all the documentation for rmToo itself, you can execute the steps described in this section. This is useful for:
If you’re using the source/tar ball distribution:
# Set up environment
source setenv.sh
# Build all documentation
make
# Run tests
make tests
The configuration files for output artifacts are located in doc/requirements/ConfigX.py
.
All created documents are stored in the artifacts/
directory.
If you’re using the Debian package:
# Navigate to the rmToo directory
cd /usr/share/pyshared/rmtoo
# Run tests
nosetests -v -s
Note: Some test cases will fail because they assume that there is a git history available, which is not included in the package.
The generated documents can be found under /usr/share/doc/rmtoo
.
rmToo is by default configured to create the complete history of rmToo requirements itself. When using the tar ball or Debian package, the git history is not available.
You might encounter an error like:
Traceback (most recent call last):
File "./bin/rmtoo", line 14, in <module>
main(sys.argv[1:], sys.stdout, sys.stderr)
File "/path/to/rmtoo/lib/RmtooMain.py", line 123, in main
exitfun(not main_impl(args, mstdout, mstderr))
File "/path/to/rmtoo/lib/RmtooMain.py", line 119, in main_impl
return execute_cmds(opts, config, mods, mstdout, mstderr)
File "/path/to/rmtoo/lib/RmtooMain.py", line 55, in execute_cmds
reqs = rc.continuum_latest()
File "/path/to/rmtoo/lib/ReqsContinuum.py", line 46, in continuum_latest
return self.continuum[self.continuum_order[0]]
IndexError: list index out of range
make: *** [artifacts/.rmtoo_dependencies] Error 1
If this happens, change the version control interval configuration to ["FILES", "FILES"]
in your configuration file. This tells rmToo to use file-based processing instead of git history.
The rmToo project includes:
doc/requirements/
doc/topics/
Config*.py
filesWhen exploring rmToo’s self-hosted requirements:
When contributing to rmToo:
.req
files in doc/requirements/
.tic
files in doc/topics/
make
to update artifactsmake tests
to verify everything worksrmToo uses multiple configuration files:
doc/requirements/Config*.py
: Different configurations for different output setsHistorical Note: Starting with rmToo version 11, GitPython was shipped with rmToo. The API of GitPython changed rapidly at that time, with three different APIs available. The plan was to remove the bundled GitPython once the API stabilized and use the OS/distribution version instead.
GitPython is used for:
For more information about GitPython, see the GitPython project page.
After exploring rmToo’s self-hosted requirements: