droidtui 0.5.2

A beautiful Terminal User Interface (TUI) for Android development and ADB commands
Documentation
#!/usr/bin/env nu
# Tests for scripts/version.nu
#
# Run with: nu scripts/tests/test_version.nu

use std/assert
use ./runner.nu *

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

# Extract the version string from the contents of a Cargo.toml string.
# This mirrors the exact pipeline used in version.nu.
def parse_version [cargo_toml: string] {
    $cargo_toml
    | lines
    | where { |l| $l =~ '^version\s*=' }
    | first
    | parse --regex 'version\s*=\s*"(?P<v>[^"]+)"'
    | get v
    | first
}

# Write a minimal Cargo.toml at the given version into a temp dir and return the dir path.
def make_cargo [version: string] {
    let tmp = (mktemp -d)
    let content = $'[package]
name = "test-crate"
version = "($version)"
edition = "2021"
'
    $content | save --force ($tmp | path join "Cargo.toml")
    $tmp
}

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

def "test version reads simple semver" [] {
    let tmp = make_cargo "1.2.3"
    let got = parse_version (open --raw ($tmp | path join "Cargo.toml"))
    rm -rf $tmp
    assert equal $got "1.2.3"
}

def "test version reads zero patch" [] {
    let tmp = make_cargo "0.1.0"
    let got = parse_version (open --raw ($tmp | path join "Cargo.toml"))
    rm -rf $tmp
    assert equal $got "0.1.0"
}

def "test version reads pre-release suffix" [] {
    let tmp = make_cargo "0.5.0-beta.1"
    let got = parse_version (open --raw ($tmp | path join "Cargo.toml"))
    rm -rf $tmp
    assert equal $got "0.5.0-beta.1"
}

def "test version reads padded assignment" [] {
    # After a bump the line becomes `version      = "x.y.z"` with extra spaces.
    let tmp = (mktemp -d)
    let content = '[package]
name = "test-crate"
version      = "2.0.0"
edition = "2021"
'
    $content | save --force ($tmp | path join "Cargo.toml")
    let got = parse_version (open --raw ($tmp | path join "Cargo.toml"))
    rm -rf $tmp
    assert equal $got "2.0.0"
}

def "test version ignores dependency version lines" [] {
    # Lines like `serde = { version = "1.0" }` must not be picked up because
    # they do not start with `version`.
    let tmp = (mktemp -d)
    let content = '[package]
name = "test-crate"
version = "3.1.4"
edition = "2021"

[dependencies]
serde = { version = "1.0" }
ratatui = { version = "0.29" }
'
    $content | save --force ($tmp | path join "Cargo.toml")
    let got = parse_version (open --raw ($tmp | path join "Cargo.toml"))
    rm -rf $tmp
    assert equal $got "3.1.4"
}

def "test version output contains no whitespace" [] {
    let tmp = make_cargo "0.9.1"
    let got = parse_version (open --raw ($tmp | path join "Cargo.toml"))
    rm -rf $tmp
    assert ($got !~ '\s') $"expected no whitespace, got: ($got)"
}

def "test version output contains no quotes" [] {
    let tmp = make_cargo "1.0.0"
    let got = parse_version (open --raw ($tmp | path join "Cargo.toml"))
    rm -rf $tmp
    assert ($got !~ '"') $"expected no quotes, got: ($got)"
}

# ── Runner ────────────────────────────────────────────────────────────────────

def main [] {
    print $"(ansi cyan)═══ test_version.nu ═══(ansi reset)"
    run-tests
}