Check out the glossary to make sure we are using the same words for things.
Install the software versions specified in .tool-versions.
Run bin/setup to install dependencies. Then, run bundle exec rake to run
the tests and linter and make sure they're green
before starting to make your changes.
Run bundle exec rake -AD for a full list of all the available tasks you may use for development purposes.
Run bundle exec rake to run the tests and linter.
The examples/ directory is used as an ad-hoc integration testing method.
Read more here
- Make sure the tests are passing
- Make sure the linter is happy
- Make sure the
examples/look the same or have suffered and improvement - Update the unreleased section of the changelog with a human readable explanation of your changes
High level description of the heuristic specdiff implements
- receive 2 pieces of data:
aandb - determine types for
aandb- test against plugin types
- test against built in types
- fall back to the
:unknowntype
- determine which differ is appropriate for the types
- test against plugin differs
- test against built in differs
- fall back to the null differ (
NotFound)
- run the selected differ with a and b
- package it into a
::Specdiff::Diffwhich records the detected types
<time passes>
- at some point later when
#to_sis invoked, stringify the diff using the differ's#stringify
- unit tests are passing (
$ bundle exec rake test) - linter is happy (
$ bundle exec rake lint) -
examples/look good - check the package size using
$ bundle exec inspect_build, make sure you haven't added any large files by accident - update the version number in
version.rb - make sure the
examples/Gemfile.lockfiles are updated (run bundle install) - make sure
Gemfile.lockis updated (run bundle install) - move unreleased changes to the next version in the changelog
- commit in the form "vX.X.X" and push
- make sure the pipeline is green
-
$ bundle exec rake release
- word diff
- yard documentation?
- 2.7.0 support
- actual integration tests (replacing
examples/) - real documentation for the plugin interface