mirror of
https://github.com/nushell/nushell.git
synced 2025-04-29 07:34:28 +02:00
Fix kv set
with a closure argument (#15588)
<!-- if this PR closes one or more issues, you can automatically link the PR with them by using one of the [*linking keywords*](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword), e.g. - this PR should close #xxxx - fixes #xxxx you can also mention related issues, PRs or discussions! --> Fixes #15528 # Description Fixed `kv set` passing the pipeline input to the closure instead of the value stored in that key. # User-Facing Changes Now `kv set` will pass the value in that key to the closure. # Tests + Formatting # After Submitting
This commit is contained in:
parent
a9657e17ad
commit
6193679dfc
@ -38,7 +38,7 @@ export def "kv set" [
|
||||
# If passed a closure, execute it
|
||||
let arg_type = ($value_or_closure | describe)
|
||||
let value = match $arg_type {
|
||||
closure => { $input | do $value_or_closure }
|
||||
closure => { kv get $key --universal=$universal | do $value_or_closure }
|
||||
_ => ($value_or_closure | default $input)
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ def local-transpose_to_record [] {
|
||||
}
|
||||
|
||||
@test
|
||||
def local-using_closure [] {
|
||||
def local-using_cellpaths [] {
|
||||
if ('sqlite' not-in (version).features) { return }
|
||||
|
||||
let key = (random uuid)
|
||||
@ -91,8 +91,8 @@ def local-using_closure [] {
|
||||
let size_key = (random uuid)
|
||||
|
||||
ls
|
||||
| kv set $name_key { get name }
|
||||
| kv set $size_key { get size }
|
||||
| kv set $name_key $in.name
|
||||
| kv set $size_key $in.size
|
||||
|
||||
let expected = "list<string>"
|
||||
let actual = (kv get $name_key | describe)
|
||||
@ -106,6 +106,22 @@ def local-using_closure [] {
|
||||
kv drop $size_key
|
||||
}
|
||||
|
||||
@test
|
||||
def local-using_closure [] {
|
||||
if ('sqlite' not-in (version).features) { return }
|
||||
|
||||
let key = (random uuid)
|
||||
|
||||
kv set $key 5
|
||||
kv set $key { $in + 1 }
|
||||
|
||||
let expected = 6
|
||||
let actual = (kv get $key)
|
||||
assert equal $actual $expected
|
||||
|
||||
kv drop $key
|
||||
}
|
||||
|
||||
@test
|
||||
def local-return-entire-list [] {
|
||||
if ('sqlite' not-in (version).features) { return }
|
||||
@ -137,7 +153,7 @@ def local-return_value_only [] {
|
||||
let key = (random uuid)
|
||||
|
||||
let expected = 'VALUE'
|
||||
let actual = ('value' | kv set -r v $key {str upcase})
|
||||
let actual = ('value' | kv set -r v $key ($in | str upcase))
|
||||
|
||||
assert equal $actual $expected
|
||||
|
||||
@ -233,7 +249,7 @@ def universal-transpose_to_record [] {
|
||||
}
|
||||
|
||||
@test
|
||||
def universal-using_closure [] {
|
||||
def universal-using_cellpaths [] {
|
||||
if ('sqlite' not-in (version).features) { return }
|
||||
|
||||
let key = (random uuid)
|
||||
@ -243,8 +259,8 @@ def universal-using_closure [] {
|
||||
let size_key = (random uuid)
|
||||
|
||||
ls
|
||||
| kv set -u $name_key { get name }
|
||||
| kv set -u $size_key { get size }
|
||||
| kv set -u $name_key $in.name
|
||||
| kv set -u $size_key $in.size
|
||||
|
||||
let expected = "list<string>"
|
||||
let actual = (kv get -u $name_key | describe)
|
||||
@ -259,6 +275,24 @@ def universal-using_closure [] {
|
||||
rm $env.NU_UNIVERSAL_KV_PATH
|
||||
}
|
||||
|
||||
@test
|
||||
def universal-using_closure [] {
|
||||
if ('sqlite' not-in (version).features) { return }
|
||||
|
||||
let key = (random uuid)
|
||||
$env.NU_UNIVERSAL_KV_PATH = (mktemp -t --suffix .sqlite3)
|
||||
|
||||
kv set -u $key 5
|
||||
kv set -u $key { $in + 1 }
|
||||
|
||||
let expected = 6
|
||||
let actual = (kv get -u $key)
|
||||
assert equal $actual $expected
|
||||
|
||||
kv drop -u $key
|
||||
rm $env.NU_UNIVERSAL_KV_PATH
|
||||
}
|
||||
|
||||
@test
|
||||
def universal-return-entire-list [] {
|
||||
if ('sqlite' not-in (version).features) { return }
|
||||
@ -295,7 +329,7 @@ def universal-return_value_only [] {
|
||||
let key = (random uuid)
|
||||
|
||||
let expected = 'VALUE'
|
||||
let actual = ('value' | kv set --universal -r v $key {str upcase})
|
||||
let actual = ('value' | kv set --universal -r v $key ($in | str upcase))
|
||||
|
||||
assert equal $actual $expected
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user