nushell/crates/nu-utils/standard_library
Antoine Stevan 14bf0b000e
standard library: fix the tests for the new closure parsing of 0.77.2 (#8504)
# Description
as closures now need to have explicit parameters, this PR adds the empty
`||` to the two closure of the `std match` test.

# User-Facing Changes
```
$nothing
```

# Tests + Formatting
```
nu crates/nu-utils/standard_library/tests.nu
```
does not give the following anymore
```
Error: nu::parser::closure_missing_pipe

  × Missing || inside closure
    ╭─[/home/amtoine/.local/share/git/store/github.com/amtoine/nushell/crates/nu-utils/standard_library/test_std.nu:29:1]
 29 │     let branches = {
 30 │         1: { -1 }
    ·            ───┬──
    ·               ╰── Parsing as a closure, but || is missing
 31 │         2: { -2 }
    ╰────
  help: Try add || to the beginning of closure

Error: nu:🐚:only_supports_this_input_type

  × Input type not supported.
    ╭─[/home/amtoine/.local/share/git/store/github.com/amtoine/nushell/crates/nu-utils/standard_library/tests.nu:7:1]
  7 │             nu -c $'use ($test_file) *; $nu.scope.commands | to nuon'
  8 │             | from nuon
    ·               ────┬────
    ·                   ╰── input type: nothing
  9 │             | where module_name == $module_name
    ·               ──┬──
    ·                 ╰── only list, binary, raw data or range input data is supported
 10 │             | where ($it.name | str starts-with "test_")
    ╰────
```

# After Submitting
```
$nothing
```
2023-03-18 08:52:08 +13:00
..
README.md stdlib: add test discovery, extract test files (#8443) 2023-03-16 13:23:29 -05:00
std.nu REFACTOR: put all the standard library in std.nu (#8489) 2023-03-17 12:30:35 -05:00
test_dirs.nu REFACTOR: put all the standard library in std.nu (#8489) 2023-03-17 12:30:35 -05:00
test_std.nu standard library: fix the tests for the new closure parsing of 0.77.2 (#8504) 2023-03-18 08:52:08 +13:00
tests.nu stdlib: add test discovery, extract test files (#8443) 2023-03-16 13:23:29 -05:00

Welcome to the standard library of `nushell`!

The standard library is a pure-nushell collection of commands to allow anyone to build complex applications using standardized tools gathered incrementally.

In this library, you might find rust-like assert commands to write tests, tools to manipulate paths and strings, etc, etc, ...

🧰 use the standard library in the REPL or in scripts

in order to "import" the standard library to either the interactive REPL of nushell or inside some .nu script, you might want to use the use command!

use /path/to/standard_library/std.nu

🔍 a concrete example

  • my name is @amtoine and i use the ghq tool to manage git projects

Note


ghq stores any repository inside $env.GHQ_ROOT under <host>/<owner>/<repo>/

  • the path to my local fork of nushell is then defined as
let-env NUSHELL_REPO = ($env.GHQ_ROOT | path join "github.com" "amtoine" "nushell")
  • and the full path to the standard library is defined as
let-env STD_LIB = ($env.NUSHELL_REPO | path join "crates" "nu-utils" "standard_library")

see the content of $env.STD_LIB 😋

>_ ls $env.STD_LIB | get name | str replace $env.STD_LIB "" | str trim -l -c "/"
╭───┬───────────╮
│ 0 │ README.md │
│ 1 │ std.nu    │
│ 2 │ tests.nu  │
╰───┴───────────╯
  • finally we can use the standard library and have access to the commands it exposes 👍
>_ use std.nu
>_ help std
Module: std

Exported commands:
  assert (std assert), assert eq (std assert eq), assert ne (std assert ne), match (std match)

This module does not export environment.

✏️ contribute to the standard library

🔧 add new commands

  • add new standard commands to std.nu, or preferably create a new submodule.
  • add associated tests to test_std.nu or preferably to test_<submodule>.nu.
    • define a new exported (!) test_<feature> command
    • import the assert functions you need at the top of the functions, e.g. use std.nu "assert eq"

🧪 run the tests

the following call should return no errors

nu /path/to/standard_library/tests.nu

🔍 a concrete example

with STD_LIB defined as in the example above

nu ($env.STD_LIB | path join "tests.nu")