tui-checkbox 0.4.5

A customizable checkbox widget for Ratatui TUI applications
Documentation
#!/usr/bin/env nu
# ── tui-checkbox · test_bump_version.nu ─────────────────────────────────────
# Tests for scripts/bump_version.nu — bumping versions in Cargo.toml.

use std/assert
use runner.nu *

# ── Helpers ─────────────────────────────────────────────────────────────────

# Build a minimal Cargo.toml with the given version.
def make_cargo [version: string]: nothing -> string {
    $'[package]
name = "tui-checkbox"
version = "($version)"
edition = "2021"
license = "MIT"
description = "A customizable checkbox widget for Ratatui"

[dependencies]
ratatui = { version = "0.29", default-features = false }
'
}

# Read the package version from a Cargo.toml string.
def read_package_version [cargo_toml: string]: nothing -> string {
    $cargo_toml
    | lines
    | each { |l| $l | str trim }
    | where { |l| $l | str starts-with 'version' }
    | first
    | parse --regex 'version\s*=\s*"(?P<ver>[^"]+)"'
    | get ver
    | first
}

# Update the package version in a Cargo.toml string.
def bump_version [cargo_toml: string, new_version: string]: nothing -> string {
    $cargo_toml | str replace --regex '(?m)^version\s*=\s*"[^"]+"' $'version = "($new_version)"'
}

# ── Tests ───────────────────────────────────────────────────────────────────

def "test bump_version: patch bump updates version" [] {
    let cargo = (make_cargo "1.0.0")
    let bumped = (bump_version $cargo "1.0.1")
    let ver = (read_package_version $bumped)
    assert equal $ver "1.0.1"
}

def "test bump_version: minor bump updates version" [] {
    let cargo = (make_cargo "1.0.0")
    let bumped = (bump_version $cargo "1.1.0")
    let ver = (read_package_version $bumped)
    assert equal $ver "1.1.0"
}

def "test bump_version: major bump updates version" [] {
    let cargo = (make_cargo "1.2.3")
    let bumped = (bump_version $cargo "2.0.0")
    let ver = (read_package_version $bumped)
    assert equal $ver "2.0.0"
}

def "test bump_version: pre-release version" [] {
    let cargo = (make_cargo "1.0.0")
    let bumped = (bump_version $cargo "1.1.0-rc.1")
    let ver = (read_package_version $bumped)
    assert equal $ver "1.1.0-rc.1"
}

def "test bump_version: idempotent when version unchanged" [] {
    let cargo = (make_cargo "0.5.0")
    let bumped = (bump_version $cargo "0.5.0")
    let ver = (read_package_version $bumped)
    assert equal $ver "0.5.0"
}

def "test bump_version: double bump produces correct version" [] {
    let cargo = (make_cargo "0.1.0")
    let first = (bump_version $cargo "0.2.0")
    let second = (bump_version $first "0.3.0")
    let ver = (read_package_version $second)
    assert equal $ver "0.3.0"
}

def "test bump_version: preserves package name" [] {
    let cargo = (make_cargo "1.0.0")
    let bumped = (bump_version $cargo "2.0.0")
    assert ($bumped | str contains 'name = "tui-checkbox"')
}

def "test bump_version: preserves dependencies" [] {
    let cargo = (make_cargo "1.0.0")
    let bumped = (bump_version $cargo "2.0.0")
    assert ($bumped | str contains '[dependencies]')
    assert ($bumped | str contains 'ratatui')
}

def "test bump_version: preserves edition" [] {
    let cargo = (make_cargo "1.0.0")
    let bumped = (bump_version $cargo "2.0.0")
    assert ($bumped | str contains 'edition = "2021"')
}

def "test bump_version: zero to non-zero" [] {
    let cargo = (make_cargo "0.0.0")
    let bumped = (bump_version $cargo "0.1.0")
    let ver = (read_package_version $bumped)
    assert equal $ver "0.1.0"
}

# ── Main ────────────────────────────────────────────────────────────────────

def main [] { run-tests }