forked from extern/nushell
Make drop notification timing for plugin custom values more consistent (#12341)
# Description This keeps plugin custom values that have requested drop notification around during the lifetime of a plugin call / stream by sending them to a channel that gets persisted during the lifetime of the call. Before this change, it was very likely that the drop notification would be sent before the plugin ever had a chance to handle the value it received. Tests have been added to make sure this works - see the `custom_values` plugin. cc @ayax79 # User-Facing Changes This is basically just a bugfix, just a slightly big one. However, I did add an `as_mut_any()` function for custom values, to avoid having to clone them. This is a breaking change.
This commit is contained in:
@ -181,6 +181,20 @@ fn drop_check_custom_value_prints_message_on_drop() {
|
||||
assert!(actual.status.success());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn handle_make_then_get_success() {
|
||||
// The drop notification must wait until the `handle get` call has finished in order for this
|
||||
// to succeed
|
||||
let actual = nu_with_plugins!(
|
||||
cwd: "tests",
|
||||
plugin: ("nu_plugin_custom_values"),
|
||||
"42 | custom-value handle make | custom-value handle get"
|
||||
);
|
||||
|
||||
assert_eq!(actual.out, "42");
|
||||
assert!(actual.status.success());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn custom_value_in_example_is_rendered() {
|
||||
let actual = nu_with_plugins!(
|
||||
|
Reference in New Issue
Block a user