Add support for longMessage and maxDiff to assertions api.

The longMessage attribute changes the behavior when an assertion fails
and a custom message is provided so that the standard failure message is
displayed followed by the custom message, it can be helpful when making
multiple assertions to use the custom message as an identifier for the
assertion so that similar failures can be distinguished from one
another.

The maxDiff attribute controls the behavior when an assertion fails on
some comparison types (e.g. assertEquals when comparing lists). When an
assertion failure occurs, a diff of the data is displayed so that the
whole state of the values being tested can be seen. The diff is limited
in size by the maxDiff attribute, with a value of None indicating no
limit.

Change-Id: I7a108b5415e5e89c048708a6e5887f871d710e55
Reviewed-on: https://chromium-review.googlesource.com/c/infra/luci/recipes-py/+/1509972
Auto-Submit: Garrett Beaty <gbeaty@chromium.org>
Reviewed-by: Stephen Martinis <martiniss@chromium.org>
Commit-Queue: Stephen Martinis <martiniss@chromium.org>
4 files changed
tree: f6125fe2390dbb4a161414716ae8fdcadf806592
  1. doc/
  2. infra/
  3. misc/
  4. recipe_engine/
  5. recipe_modules/
  6. recipe_proto/
  7. recipes/
  8. unittests/
  9. .gitattributes
  10. .gitignore
  11. .vpython
  12. AUTHORS
  13. codereview.settings
  14. CONTRIBUTORS
  15. LICENSE
  16. OWNERS
  17. PRESUBMIT.py
  18. README.md
  19. README.recipes.md
  20. recipes.py
README.md

Recipes

Recipes are a domain-specific language (embedded in python) for specifying sequences of subprocess calls in a cross-platform and testable way.

Files

  • README.md

    This file!

  • doc/

    Documentation for the recipe engine (including this file!). See the design doc for more detailed design information about the recipe engine.

  • infra/

    Chrome infra config files.

  • recipes.py

    The main entry point to the recipe engine. It has many subcommands and flags; run recipes.py -h to see them. Include this in your repository to start using recipes.

  • recipes/

    Recipes in the recipe engine. These are either example recipes, or recipes which are used to test the engine (see run_test.py to see these run)

  • recipe_modules/

    Built in recipe modules. These are very useful when writing recipes; take a look in there, and look at each of their examples subfolders to get an idea how to use them in a recipe.

  • recipe_engine/

    The core functionality of the recipe engine. Noteworthy files include:

    • main.py -- The main entrypoint for the recipe engine.
    • recipes_cfg.proto -- The protobuf file which defines the format of a recipes.cfg file.
    • third_party/ -- third_party code which is vendored into the recipe engine.
    • recipe_api.py -- The api exposed to a recipe module.
    • unittests -- Unittests for the engine.

    There are also several files which correspond to a subcommand of recipes.py; run, and autoroll are some examples.

  • unittests/

    Somewhat poorly named, these are higher level integration tests.

Contributing

  • Sign the Google CLA.
  • Make sure your user.email and user.name are configured in git config.

Run the following to setup the code review tool and create your first review:

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $HOME/src/depot_tools
export PATH="$PATH:$HOME/src/depot_tools"
git checkout -b work origin/master

# hack hack

git commit -a -m "This is awesome"
# This will ask for your Google Account credentials.
git cl upload -s -r joe@example.com
# Wait for approval over email.
# Click "Submit to CQ" button or ask reviewer to do it for you.
# Wait for the change to be tested and landed automatically.

Use git cl help and git cl help <cmd> for more details.