diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /third_party/rust/rustc_version/tests | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/rustc_version/tests')
-rw-r--r-- | third_party/rust/rustc_version/tests/all.rs | 456 |
1 files changed, 456 insertions, 0 deletions
diff --git a/third_party/rust/rustc_version/tests/all.rs b/third_party/rust/rustc_version/tests/all.rs new file mode 100644 index 0000000000..c3cff7048a --- /dev/null +++ b/third_party/rust/rustc_version/tests/all.rs @@ -0,0 +1,456 @@ +#![allow(clippy::match_like_matches_macro)] + +use std::process::Command; + +use rustc_version::{ + version, version_meta, version_meta_for, Channel, Error, LlvmVersion, LlvmVersionParseError, + Version, VersionMeta, +}; + +#[test] +fn rustc_error() { + let mut cmd = Command::new("rustc"); + cmd.arg("--FOO"); + let stderr = match VersionMeta::for_command(cmd) { + Err(Error::CommandError { stdout: _, stderr }) => stderr, + _ => panic!("command error expected"), + }; + assert_eq!(stderr, "error: Unrecognized option: \'FOO\'\n\n"); +} + +#[test] +fn smoketest() { + let v = version().unwrap(); + assert!(v.major >= 1); + + let v = version_meta().unwrap(); + assert!(v.semver.major >= 1); + + assert!(version().unwrap() >= Version::parse("1.0.0").unwrap()); +} + +#[test] +fn parse_1_0_0() { + let version = version_meta_for( + "rustc 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14) +binary: rustc +commit-hash: a59de37e99060162a2674e3ff45409ac73595c0e +commit-date: 2015-05-13 +build-date: 2015-05-14 +host: x86_64-unknown-linux-gnu +release: 1.0.0", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.0.0").unwrap()); + assert_eq!( + version.commit_hash, + Some("a59de37e99060162a2674e3ff45409ac73595c0e".into()) + ); + assert_eq!(version.commit_date, Some("2015-05-13".into())); + assert_eq!(version.build_date, Some("2015-05-14".into())); + assert_eq!(version.channel, Channel::Stable); + assert_eq!(version.host, "x86_64-unknown-linux-gnu"); + assert_eq!( + version.short_version_string, + "rustc 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14)" + ); + assert_eq!(version.llvm_version, None); +} + +#[test] +fn parse_unknown() { + let version = version_meta_for( + "rustc 1.3.0 +binary: rustc +commit-hash: unknown +commit-date: unknown +host: x86_64-unknown-linux-gnu +release: 1.3.0", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.3.0").unwrap()); + assert_eq!(version.commit_hash, None); + assert_eq!(version.commit_date, None); + assert_eq!(version.channel, Channel::Stable); + assert_eq!(version.host, "x86_64-unknown-linux-gnu"); + assert_eq!(version.short_version_string, "rustc 1.3.0"); + assert_eq!(version.llvm_version, None); +} + +#[test] +fn parse_nightly() { + let version = version_meta_for( + "rustc 1.5.0-nightly (65d5c0833 2015-09-29) +binary: rustc +commit-hash: 65d5c083377645a115c4ac23a620d3581b9562b6 +commit-date: 2015-09-29 +host: x86_64-unknown-linux-gnu +release: 1.5.0-nightly", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.5.0-nightly").unwrap()); + assert_eq!( + version.commit_hash, + Some("65d5c083377645a115c4ac23a620d3581b9562b6".into()) + ); + assert_eq!(version.commit_date, Some("2015-09-29".into())); + assert_eq!(version.channel, Channel::Nightly); + assert_eq!(version.host, "x86_64-unknown-linux-gnu"); + assert_eq!( + version.short_version_string, + "rustc 1.5.0-nightly (65d5c0833 2015-09-29)" + ); + assert_eq!(version.llvm_version, None); +} + +#[test] +fn parse_stable() { + let version = version_meta_for( + "rustc 1.3.0 (9a92aaf19 2015-09-15) +binary: rustc +commit-hash: 9a92aaf19a64603b02b4130fe52958cc12488900 +commit-date: 2015-09-15 +host: x86_64-unknown-linux-gnu +release: 1.3.0", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.3.0").unwrap()); + assert_eq!( + version.commit_hash, + Some("9a92aaf19a64603b02b4130fe52958cc12488900".into()) + ); + assert_eq!(version.commit_date, Some("2015-09-15".into())); + assert_eq!(version.channel, Channel::Stable); + assert_eq!(version.host, "x86_64-unknown-linux-gnu"); + assert_eq!( + version.short_version_string, + "rustc 1.3.0 (9a92aaf19 2015-09-15)" + ); + assert_eq!(version.llvm_version, None); +} + +#[test] +fn parse_1_16_0_nightly() { + let version = version_meta_for( + "rustc 1.16.0-nightly (5d994d8b7 2017-01-05) +binary: rustc +commit-hash: 5d994d8b7e482e87467d4a521911477bd8284ce3 +commit-date: 2017-01-05 +host: x86_64-unknown-linux-gnu +release: 1.16.0-nightly +LLVM version: 3.9", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.16.0-nightly").unwrap()); + assert_eq!( + version.commit_hash, + Some("5d994d8b7e482e87467d4a521911477bd8284ce3".into()) + ); + assert_eq!(version.commit_date, Some("2017-01-05".into())); + assert_eq!(version.channel, Channel::Nightly); + assert_eq!(version.host, "x86_64-unknown-linux-gnu"); + assert_eq!( + version.short_version_string, + "rustc 1.16.0-nightly (5d994d8b7 2017-01-05)" + ); + assert_eq!( + version.llvm_version, + Some(LlvmVersion { major: 3, minor: 9 }) + ); +} + +#[test] +fn parse_1_47_0_stable() { + let version = version_meta_for( + "rustc 1.47.0 (18bf6b4f0 2020-10-07) +binary: rustc +commit-hash: 18bf6b4f01a6feaf7259ba7cdae58031af1b7b39 +commit-date: 2020-10-07 +host: powerpc64le-unknown-linux-gnu +release: 1.47.0 +LLVM version: 11.0", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.47.0").unwrap()); + assert_eq!( + version.commit_hash, + Some("18bf6b4f01a6feaf7259ba7cdae58031af1b7b39".into()) + ); + assert_eq!(version.commit_date, Some("2020-10-07".into())); + assert_eq!(version.channel, Channel::Stable); + assert_eq!(version.host, "powerpc64le-unknown-linux-gnu"); + assert_eq!( + version.short_version_string, + "rustc 1.47.0 (18bf6b4f0 2020-10-07)" + ); + assert_eq!( + version.llvm_version, + Some(LlvmVersion { + major: 11, + minor: 0, + }) + ); +} + +#[test] +fn parse_llvm_micro() { + let version = version_meta_for( + "rustc 1.51.0-nightly (4253153db 2021-01-17) +binary: rustc +commit-hash: 4253153db205251f72ea4493687a31e04a2a8ca0 +commit-date: 2021-01-17 +host: x86_64-pc-windows-msvc +release: 1.51.0-nightly +LLVM version: 11.0.1", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.51.0-nightly").unwrap()); + assert_eq!( + version.commit_hash.unwrap(), + "4253153db205251f72ea4493687a31e04a2a8ca0" + ); + assert_eq!(version.commit_date.unwrap(), "2021-01-17"); + assert_eq!(version.host, "x86_64-pc-windows-msvc"); + assert_eq!( + version.short_version_string, + "rustc 1.51.0-nightly (4253153db 2021-01-17)" + ); + assert_eq!( + version.llvm_version, + Some(LlvmVersion { + major: 11, + minor: 0 + }) + ); +} + +#[test] +fn parse_debian_buster() { + let version = version_meta_for( + "rustc 1.41.1 +binary: rustc +commit-hash: unknown +commit-date: unknown +host: powerpc64le-unknown-linux-gnu +release: 1.41.1 +LLVM version: 7.0", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.41.1").unwrap()); + assert_eq!(version.commit_hash, None); + assert_eq!(version.commit_date, None); + assert_eq!(version.channel, Channel::Stable); + assert_eq!(version.host, "powerpc64le-unknown-linux-gnu"); + assert_eq!(version.short_version_string, "rustc 1.41.1"); + assert_eq!( + version.llvm_version, + Some(LlvmVersion { major: 7, minor: 0 }) + ); +} + +#[test] +fn parse_termux() { + let version = version_meta_for( + "rustc 1.46.0 +binary: rustc +commit-hash: unknown +commit-date: unknown +host: aarch64-linux-android +release: 1.46.0 +LLVM version: 10.0", + ) + .unwrap(); + + assert_eq!(version.semver, Version::parse("1.46.0").unwrap()); + assert_eq!(version.commit_hash, None); + assert_eq!(version.commit_date, None); + assert_eq!(version.channel, Channel::Stable); + assert_eq!(version.host, "aarch64-linux-android"); + assert_eq!(version.short_version_string, "rustc 1.46.0"); + assert_eq!( + version.llvm_version, + Some(LlvmVersion { + major: 10, + minor: 0, + }) + ); +} + +#[test] +fn parse_llvm_version_empty() { + let res: Result<LlvmVersion, _> = "".parse(); + assert!(match res { + Err(LlvmVersionParseError::ParseIntError(_)) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_invalid_char() { + let res: Result<LlvmVersion, _> = "A".parse(); + assert!(match res { + Err(LlvmVersionParseError::ParseIntError(_)) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_overflow() { + let res: Result<LlvmVersion, _> = "9999999999999999999999999999999".parse(); + assert!(match res { + Err(LlvmVersionParseError::ParseIntError(_)) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_leading_zero_on_zero() { + let res: Result<LlvmVersion, _> = "00".parse(); + assert!(match res { + Err(LlvmVersionParseError::ComponentMustNotHaveLeadingZeros) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_leading_zero_on_nonzero() { + let res: Result<LlvmVersion, _> = "01".parse(); + assert!(match res { + Err(LlvmVersionParseError::ComponentMustNotHaveLeadingZeros) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_4_components() { + let res: Result<LlvmVersion, _> = "4.0.0.0".parse(); + + assert!(match res { + Err(LlvmVersionParseError::TooManyComponents) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_component_sign_plus() { + let res: Result<LlvmVersion, _> = "1.+3".parse(); + + assert!(match res { + Err(LlvmVersionParseError::ComponentMustNotHaveSign) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_component_sign_minus() { + let res: Result<LlvmVersion, _> = "1.-3".parse(); + + assert!(match res { + Err(LlvmVersionParseError::ComponentMustNotHaveSign) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_3() { + let res: Result<LlvmVersion, _> = "3".parse(); + + assert!(match res { + Err(LlvmVersionParseError::MinorVersionRequiredBefore4) => true, + _ => false, + }); +} + +#[test] +fn parse_llvm_version_5() { + let v: LlvmVersion = "5".parse().unwrap(); + assert_eq!(v, LlvmVersion { major: 5, minor: 0 }); +} + +#[test] +fn parse_llvm_version_5_0() { + let v: LlvmVersion = "5.0".parse().unwrap(); + assert_eq!(v, LlvmVersion { major: 5, minor: 0 }); +} + +#[test] +fn parse_llvm_version_4_0() { + let v: LlvmVersion = "4.0".parse().unwrap(); + assert_eq!(v, LlvmVersion { major: 4, minor: 0 }); +} + +#[test] +fn parse_llvm_version_3_0() { + let v: LlvmVersion = "3.0".parse().unwrap(); + assert_eq!(v, LlvmVersion { major: 3, minor: 0 }); +} + +#[test] +fn parse_llvm_version_3_9() { + let v: LlvmVersion = "3.9".parse().unwrap(); + assert_eq!(v, LlvmVersion { major: 3, minor: 9 }); +} + +#[test] +fn parse_llvm_version_11_0() { + let v: LlvmVersion = "11.0".parse().unwrap(); + assert_eq!( + v, + LlvmVersion { + major: 11, + minor: 0 + } + ); +} + +#[test] +fn parse_llvm_version_11() { + let v: LlvmVersion = "11".parse().unwrap(); + assert_eq!( + v, + LlvmVersion { + major: 11, + minor: 0 + } + ); +} + +#[test] +fn test_llvm_version_comparison() { + // check that field order is correct + assert!(LlvmVersion { major: 3, minor: 9 } < LlvmVersion { major: 4, minor: 0 }); +} + +/* +#[test] +fn version_matches_replacement() { + let f = |s1: &str, s2: &str| { + let a = Version::parse(s1).unwrap(); + let b = Version::parse(s2).unwrap(); + println!("{} <= {} : {}", s1, s2, a <= b); + }; + + println!(); + + f("1.5.0", "1.5.0"); + f("1.5.0-nightly", "1.5.0"); + f("1.5.0", "1.5.0-nightly"); + f("1.5.0-nightly", "1.5.0-nightly"); + + f("1.5.0", "1.6.0"); + f("1.5.0-nightly", "1.6.0"); + f("1.5.0", "1.6.0-nightly"); + f("1.5.0-nightly", "1.6.0-nightly"); + + panic!(); + +} +*/ |