nushell/crates/nu-std/tests/test_std-rfc_kv.nu
Douglas 3eae657121
Update std-rfc tests for to use @test attributes (#15098)
After #14906, the test runner was updated to use attributes, along with
the existing `std` modules. However, since that PR was started before
`std-rfc` was in main, it didn't include updates to those tests. Once
#14906 was merged, the `std-rfc` tests no longer ran in CI. This PR
updates the tests accordingly.
2025-02-12 06:48:41 -05:00

305 lines
7.1 KiB
Plaintext

const kv_module = if ("sqlite" in (version).features) { "std-rfc/kv" } else { null }
use $kv_module *
use std/assert
use std/testing *
# It's important to use random keys and to clean-up
# after since the user running these tests may have
# either an existing local stor or universal db.
@test
def simple-local-set [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
kv set $key 42
let actual = (kv get $key)
let expected = 42
assert equal $actual $expected
kv drop $key | ignore
}
@test
def local-pipeline_set_returns_value [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
let key = (random uuid)
let actual = (42 | kv set $key)
let expected = 42
assert equal $actual $expected
let actual = (kv get $key)
let expected = 42
assert equal $actual $expected
kv drop $key | ignore
}
@test
def local-multiple_assignment [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
let key1 = (random uuid)
let key2 = (random uuid)
let key3 = (random uuid)
"test value" | kv set $key1 | kv set $key2 | kv set $key3
let expected = "test value"
assert equal (kv get $key1) $expected
assert equal (kv get $key2) $expected
assert equal (kv get $key3) $expected
assert equal (kv get $key3) (kv get $key1)
kv drop $key1
kv drop $key2
kv drop $key3
}
@test
def local-transpose_to_record [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
let key1 = (random uuid)
let key2 = (random uuid)
let key3 = (random uuid)
"test value" | kv set $key1 | kv set $key2 | kv set $key3
let record = (kv list | transpose -dr)
let actual = ($record | select $key1)
let expected = { $key1: "test value" }
assert equal $actual $expected
kv drop $key1
kv drop $key2
kv drop $key3
}
@test
def local-using_closure [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
let name_key = (random uuid)
let size_key = (random uuid)
ls
| kv set $name_key { get name }
| kv set $size_key { get size }
let expected = "list<string>"
let actual = (kv get $name_key | describe)
assert equal $actual $expected
let expected = "list<filesize>"
let actual = (kv get $size_key | describe)
assert equal $actual $expected
kv drop $name_key
kv drop $size_key
}
@test
def local-return-entire-list [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
let key1 = (random uuid)
let key2 = (random uuid)
let expected = 'value1'
$expected | kv set $key1
let actual = (
'value2'
| kv set --return all $key2 # Set $key2, but return the entire kv store
| transpose -dr # Convert to record for easier retrieval
| get $key1 # Attempt to retrieve key1 (set previously)
)
assert equal $actual $expected
kv drop $key1
kv drop $key2
}
@test
def local-return_value_only [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
let key = (random uuid)
let expected = 'VALUE'
let actual = ('value' | kv set -r v $key {str upcase})
assert equal $actual $expected
kv drop $key
}
@test
def universal-simple_set [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
$env.NU_UNIVERSAL_KV_PATH = (mktemp -t --suffix .sqlite3)
let key = (random uuid)
kv set -u $key 42
let actual = (kv get -u $key)
let expected = 42
assert equal $actual $expected
kv drop -u $key | ignore
rm $env.NU_UNIVERSAL_KV_PATH
}
@test
def universal-pipeline_set_returns_value [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
$env.NU_UNIVERSAL_KV_PATH = (mktemp -t --suffix .sqlite3)
let key = (random uuid)
let actual = (42 | kv set -u $key)
let expected = 42
assert equal $actual $expected
let actual = (kv get -u $key)
let expected = 42
assert equal $actual $expected
kv drop -u $key | ignore
rm $env.NU_UNIVERSAL_KV_PATH
}
@test
def universal-multiple_assignment [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
$env.NU_UNIVERSAL_KV_PATH = (mktemp -t --suffix .sqlite3)
let key1 = (random uuid)
let key2 = (random uuid)
let key3 = (random uuid)
"test value" | kv set -u $key1 | kv set -u $key2 | kv set -u $key3
let expected = "test value"
assert equal (kv get -u $key1) $expected
assert equal (kv get -u $key2) $expected
assert equal (kv get -u $key3) $expected
assert equal (kv get $key3) (kv get $key1)
kv drop -u $key1
kv drop -u $key2
kv drop -u $key3
rm $env.NU_UNIVERSAL_KV_PATH
}
@test
def universal-transpose_to_record [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
$env.NU_UNIVERSAL_KV_PATH = (mktemp -t --suffix .sqlite3)
let key1 = (random uuid)
let key2 = (random uuid)
let key3 = (random uuid)
"test value" | kv set -u $key1 | kv set -u $key2 | kv set -u $key3
let record = (kv list -u | transpose -dr)
let actual = ($record | select $key1)
let expected = { $key1: "test value" }
assert equal $actual $expected
kv drop -u $key1
kv drop -u $key2
kv drop -u $key3
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)
let name_key = (random uuid)
let size_key = (random uuid)
ls
| kv set -u $name_key { get name }
| kv set -u $size_key { get size }
let expected = "list<string>"
let actual = (kv get -u $name_key | describe)
assert equal $actual $expected
let expected = "list<filesize>"
let actual = (kv get -u $size_key | describe)
assert equal $actual $expected
kv drop -u $name_key
kv drop -u $size_key
rm $env.NU_UNIVERSAL_KV_PATH
}
@test
def universal-return-entire-list [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
$env.NU_UNIVERSAL_KV_PATH = (mktemp -t --suffix .sqlite3)
let key1 = (random uuid)
let key2 = (random uuid)
let expected = 'value1'
$expected | kv set -u $key1
let actual = (
'value2'
| kv set -u --return all $key2 # Set $key2, but return the entire kv store
| transpose -dr # Convert to record for easier retrieval
| get $key1 # Attempt to retrieve key1 (set previously)
)
assert equal $actual $expected
kv drop --universal $key1
kv drop --universal $key2
rm $env.NU_UNIVERSAL_KV_PATH
}
@test
def universal-return_value_only [] {
if ('sqlite' not-in (version).features) { return }
let key = (random uuid)
$env.NU_UNIVERSAL_KV_PATH = (mktemp -t --suffix .sqlite3)
let key = (random uuid)
let expected = 'VALUE'
let actual = ('value' | kv set --universal -r v $key {str upcase})
assert equal $actual $expected
kv drop --universal $key
rm $env.NU_UNIVERSAL_KV_PATH
}