Managing multiple module's tests
We currently have a monolithic repository with all of our puppet modules in it. It is part of our entire system's code, and we want to run the rake tasks as a part of our overall build.
I know that the short/best answer is 'make everything it's own repo, and run the tests per repo on checkin' but due to process/politics, that is not an option.
Being only a newbie with ruby/rake/rspec, is there a way that I can create specific rake tests per module, and then have a higher level rake task that will have multiple tasks that it would apply to all of the modules? I know that if I niavly move my Rakefile and my spec helper up to the top level, it will recursively search for all _spec.rb files and try to run them, but then the relative paths for the fixtures directories would be incorrect.
Is there a way to create tests that will migrate properly to a one module per repo path in the future, but still allow me to have a top-level rake test that will 'find' all the rakefiles, and run each of the tests locally from their directory? If there is already a solution/pattern out there, I don't want to reinvent the wheel. Otherwise I'll probably just script out what I mentioned above. ( find all Rakefile, foreach rake file, CD to it's parent and run a set of tasks, roll up success/failure).
One extra wrinkle in this is that we do have modules from the forge that aren't housed in our mono repo. (right now we sync our mono repo out to our puppet master into an environment, and we have all of our repo modules just extracted in /etc/puppet/modules/ ). I can setup the .fixtures.yml file with symlink options that would point to a 'vendor' folder where we could put all the forge modules, or I could check them into their own mono repo and use the repository option in the fixtures file.
Another wrinkle is that the rest of our build is done using ant. We hope to migrate to gradle in the not to distant future, but either way the wrapping build environment is not Rake. Being able to translate dependencies would be a plus, but rerunning all tests is not that big of a deal. (thanks CI server!)
TL:DR; Is there a good way to create a high level Rake task that could run individual targets of all the puppet modules under it? (separate task for lint, spec, beaker)