nushell/crates/nu-utils/src/sample_config/tests.nu
Antoine Stevan 9e589a9d93
FEATURE: add the first draft of the standard library (#8150)
hello there 👋 😋 

as discussed over on the discord server, in `#standard-library`, there
is this new project of putting together a bunch of "_standard_" scripts
and functions and propose a `nushell` "_standard library_".
this PR is the first one in that direction 🎉 

> **Note**
> ~~this PR is still a draft to have some feedback 😌~~ 
> this PR is now **READY FOR REVIEW** 🎉 

# Description
this PR implements the following few commands:
- the `assert` familly with a private helper `_assert`
- a version of the `match` statement

i've also added some examples in the docstrings of the functions 👍 

# User-Facing Changes
the standard library can now be used with
```bash
use crates/nu-utils/src/sample_config/std.nu
```
from the root of the `nushell` source

# Tests + Formatting
i've written a first draft of a
[`tests.nu`](https://github.com/amtoine/nushell/blob/feature/first-draft-of-the-standard-library/crates/nu-utils/src/sample_config/tests.nu)
module which
- tests the `assert` familly of function in `test_assert`
- tests the rest of the standard library in `tests`

the tests are run with
```bash
nu crates/nu-utils/src/sample_config/tests.nu
```
through the `main` function and should give no error 👍 

> **Note**
> if you change one of the test line, there should be an error popping
when running the tests 😉

# After Submitting
> **Warning**
> to be coming
2023-02-27 17:52:47 -06:00

47 lines
1.0 KiB
Plaintext

use std.nu
def test_assert [] {
def test_failing [code: closure] {
let code_did_run = (try { do $code; true } catch { false })
if $code_did_run {
error make {msg: (view source $code)}
}
}
std assert true
std assert (1 + 2 == 3)
test_failing { std assert false }
test_failing { std assert (1 + 2 == 4) }
std assert eq (1 + 2) 3
test_failing { std assert eq 1 "foo" }
test_failing { std assert eq (1 + 2) 4) }
std assert ne (1 + 2) 4
test_failing { std assert ne 1 "foo" }
test_failing { std assert ne (1 + 2) 3) }
}
def tests [] {
use std.nu assert
let branches = {
1: { -1 }
2: { -2 }
}
assert ((std match 1 $branches) == -1)
assert ((std match 2 $branches) == -2)
assert ((std match 3 $branches) == $nothing)
assert ((std match 1 $branches { 0 }) == -1)
assert ((std match 2 $branches { 0 }) == -2)
assert ((std match 3 $branches { 0 }) == 0)
}
def main [] {
test_assert
tests
}