* tests/blackbox/test_push.py: (load_tests): One more changes type. (TestPushStrictMixin): Switch to using mixin, it's clearer. Define some default values as attributes so that they can be changed more easily. (TestPushStrictMixin.assertPushFails, TestPushStrictMixin.assertPushSucceeds): Use default values from attributes. (TestPushStrictWithChanges._out_of_sync_trees): Setup a new context and change the default values.
* errors.py: (OutOfDateTree, UncommittedChanges): Add a more parameter so more details can be given.
* builtins.py: (cmd_push.run): Add an additional check that the tree is still in sync with its branch before pushing.