OzFramework / oz

Oz is a behavioral web-ui testing framework developed to reduce test maintenance by using a predictive model rather than a scriptive model when writing tests.
Apache License 2.0
23 stars 7 forks source link

Structure Oz as a Gem #174

Closed Castone22 closed 5 years ago

Castone22 commented 5 years ago

closes #172 Note: This PR includes and requires 172, so merging it will merge both.

This required me to change a bit about how require_all works on a low level, which means some rework will be required in adopting frameworks, as if oz lives within a gem, we will not be able to assume that oz will be adjacent to the project it's interacting with. As such, require_all has to no longer care about where it's located.

I did some rather... creative refactoring here to make this possible and to ultimately reduce some repetition in the require methods. Now require all can be called with a block that defines a filter that it uses when trimming the files. It also makes an attempt to reuse the file list if the root directory has not changed, though i didn't want to make the caching too strict because otherwise we'd introduce some brittleness.

The bigger external change is that require_all no longer works off a relative directory from core (this always felt a bit obtuse anyway?) and now defaults to working from present working directory, meaning usually, where cucumber was executed from. This allows us to not have to write crazy, system specific, paths relative to the user's rubygems directory, because that would just be silly.

The bulk of this change is moving files to different directories, namely adding a lib/oz directory to the top level of the repo. This is so we don't clobber random file loading from other libraries by overwriting their files/directories inadvertently, because that would just be rube.