```{index} single: Test2::Manual::Tooling::Plugin::ToolCompletes ``` # Test2::Manual::Tooling::Plugin::ToolCompletes How to add behaviors that occur when a tool completes work. ## DESCRIPTION This tutorial helps you understand how to add behaviors that occur when a tool is done with its work. All tools need to acquire and then release a context, for this tutorial we make use of the release hooks that are called every time a tool releases the context object. ## COMPLETE CODE UP FRONT ```perl package Test2::Plugin::MyPlugin; use Test2::API qw{test2_add_callback_context_release}; sub import { my $class = shift; test2_add_callback_context_release(sub { my $ctx_ref = shift; print "Context was released\n"; }); } 1; ``` ## LINE BY LINE - use Test2::API qw{test2\_add\_callback\_context\_release}; This imports the `test2_add_callback_context_release()` callback. - test2\_add\_callback\_context\_release(sub { ... }) - my $ctx\_ref = shift The coderefs for test2\_add\_callback\_context\_release() will receive exactly 1 argument, the context being released. - print "Context was released\\n" Print a notification whenever the context is released. ## SEE ALSO [Test2::Manual](../../../Manual.md) - Primary index of the manual. ## SOURCE The source code repository for Test2-Manual can be found at `https://github.com/Test-More/test-more/`. ## MAINTAINERS - Chad Granum ## AUTHORS - Chad Granum ## COPYRIGHT Copyright Chad Granum . This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See `http://dev.perl.org/licenses/`