mirror of
https://github.com/nushell/nushell.git
synced 2025-04-23 12:48:22 +02:00
This PR implements the changes proposed in #15112 without any breaking changes. Should close #15112 post the review. # Description Added functionality to generate `uuid` versions 1, 3, 4, 5, 7 instead of just the version 4. - Users can now add a `-v n` flag to specify the version of uuid they want to generate and it maintains backward compatibility by returning a v4 uuid by default if no flags are passed. - Versions 3 and 5 have the additional but required namespace (`-s`) and name (`-n`) arguments too. Version 1 requires a mac address (`-m`). # User-Facing Changes - Added support for uuid versions 1, 3, 5 and 7. - For v3 and v5, the namespace and name arguments are required and hence there will be an error if those are not passed. Similarly the mac address for v1. - Full backward compatibility by setting v4 as default. # Tests + Formatting Tests added: in `nu-command::commands::random` - generates_valid_uuid4_by_default - generates_valid_uuid1 - generates_valid_uuid3_with_namespace_and_name - generates_valid_uuid4 - generates_valid_uuid5_with_namespace_and_name - generates_valid_uuid7
77 lines
1.9 KiB
Rust
77 lines
1.9 KiB
Rust
use nu_test_support::nu;
|
|
use uuid::Uuid;
|
|
|
|
#[test]
|
|
fn generates_valid_uuid4_by_default() {
|
|
let actual = nu!("random uuid");
|
|
let result = Uuid::parse_str(actual.out.as_str());
|
|
assert!(result.is_ok());
|
|
|
|
if let Ok(uuid) = result {
|
|
assert_eq!(uuid.get_version_num(), 4);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn generates_valid_uuid1() {
|
|
let actual = nu!("random uuid -v 1 -m 00:11:22:33:44:55");
|
|
let result = Uuid::parse_str(actual.out.as_str());
|
|
assert!(result.is_ok());
|
|
|
|
if let Ok(uuid) = result {
|
|
assert_eq!(uuid.get_version_num(), 1);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn generates_valid_uuid3_with_namespace_and_name() {
|
|
let actual = nu!("random uuid -v 3 -n dns -s example.com");
|
|
let result = Uuid::parse_str(actual.out.as_str());
|
|
assert!(result.is_ok());
|
|
|
|
if let Ok(uuid) = result {
|
|
assert_eq!(uuid.get_version_num(), 3);
|
|
|
|
let namespace = Uuid::NAMESPACE_DNS;
|
|
let expected = Uuid::new_v3(&namespace, "example.com".as_bytes());
|
|
assert_eq!(uuid, expected);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn generates_valid_uuid4() {
|
|
let actual = nu!("random uuid -v 4");
|
|
let result = Uuid::parse_str(actual.out.as_str());
|
|
assert!(result.is_ok());
|
|
|
|
if let Ok(uuid) = result {
|
|
assert_eq!(uuid.get_version_num(), 4);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn generates_valid_uuid5_with_namespace_and_name() {
|
|
let actual = nu!("random uuid -v 5 -n dns -s example.com");
|
|
let result = Uuid::parse_str(actual.out.as_str());
|
|
assert!(result.is_ok());
|
|
|
|
if let Ok(uuid) = result {
|
|
assert_eq!(uuid.get_version_num(), 5);
|
|
|
|
let namespace = Uuid::NAMESPACE_DNS;
|
|
let expected = Uuid::new_v5(&namespace, "example.com".as_bytes());
|
|
assert_eq!(uuid, expected);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn generates_valid_uuid7() {
|
|
let actual = nu!("random uuid -v 7");
|
|
let result = Uuid::parse_str(actual.out.as_str());
|
|
assert!(result.is_ok());
|
|
|
|
if let Ok(uuid) = result {
|
|
assert_eq!(uuid.get_version_num(), 7);
|
|
}
|
|
}
|