mirror of
https://github.com/nushell/nushell.git
synced 2025-04-29 15:44: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
|
# If passed a closure, execute it
|
||||||
let arg_type = ($value_or_closure | describe)
|
let arg_type = ($value_or_closure | describe)
|
||||||
let value = match $arg_type {
|
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)
|
_ => ($value_or_closure | default $input)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ def local-transpose_to_record [] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test
|
@test
|
||||||
def local-using_closure [] {
|
def local-using_cellpaths [] {
|
||||||
if ('sqlite' not-in (version).features) { return }
|
if ('sqlite' not-in (version).features) { return }
|
||||||
|
|
||||||
let key = (random uuid)
|
let key = (random uuid)
|
||||||
@ -91,8 +91,8 @@ def local-using_closure [] {
|
|||||||
let size_key = (random uuid)
|
let size_key = (random uuid)
|
||||||
|
|
||||||
ls
|
ls
|
||||||
| kv set $name_key { get name }
|
| kv set $name_key $in.name
|
||||||
| kv set $size_key { get size }
|
| kv set $size_key $in.size
|
||||||
|
|
||||||
let expected = "list<string>"
|
let expected = "list<string>"
|
||||||
let actual = (kv get $name_key | describe)
|
let actual = (kv get $name_key | describe)
|
||||||
@ -106,6 +106,22 @@ def local-using_closure [] {
|
|||||||
kv drop $size_key
|
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
|
@test
|
||||||
def local-return-entire-list [] {
|
def local-return-entire-list [] {
|
||||||
if ('sqlite' not-in (version).features) { return }
|
if ('sqlite' not-in (version).features) { return }
|
||||||
@ -137,7 +153,7 @@ def local-return_value_only [] {
|
|||||||
let key = (random uuid)
|
let key = (random uuid)
|
||||||
|
|
||||||
let expected = 'VALUE'
|
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
|
assert equal $actual $expected
|
||||||
|
|
||||||
@ -233,7 +249,7 @@ def universal-transpose_to_record [] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@test
|
@test
|
||||||
def universal-using_closure [] {
|
def universal-using_cellpaths [] {
|
||||||
if ('sqlite' not-in (version).features) { return }
|
if ('sqlite' not-in (version).features) { return }
|
||||||
|
|
||||||
let key = (random uuid)
|
let key = (random uuid)
|
||||||
@ -243,8 +259,8 @@ def universal-using_closure [] {
|
|||||||
let size_key = (random uuid)
|
let size_key = (random uuid)
|
||||||
|
|
||||||
ls
|
ls
|
||||||
| kv set -u $name_key { get name }
|
| kv set -u $name_key $in.name
|
||||||
| kv set -u $size_key { get size }
|
| kv set -u $size_key $in.size
|
||||||
|
|
||||||
let expected = "list<string>"
|
let expected = "list<string>"
|
||||||
let actual = (kv get -u $name_key | describe)
|
let actual = (kv get -u $name_key | describe)
|
||||||
@ -259,6 +275,24 @@ def universal-using_closure [] {
|
|||||||
rm $env.NU_UNIVERSAL_KV_PATH
|
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
|
@test
|
||||||
def universal-return-entire-list [] {
|
def universal-return-entire-list [] {
|
||||||
if ('sqlite' not-in (version).features) { return }
|
if ('sqlite' not-in (version).features) { return }
|
||||||
@ -295,7 +329,7 @@ def universal-return_value_only [] {
|
|||||||
let key = (random uuid)
|
let key = (random uuid)
|
||||||
|
|
||||||
let expected = 'VALUE'
|
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
|
assert equal $actual $expected
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user