Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fc9a14d
cleanup promoteds move check
lcnr Dec 18, 2024
67f4901
add tidy warning for unrecognized directives
cod10129 Jan 15, 2025
865a09d
remove unnecessary assertion for reference error
chenyukang Jan 17, 2025
5b46a07
Move std::env unit tests to integration tests
bjorn3 Jan 17, 2025
ce2f242
Move std::error unit tests to integration tests
bjorn3 Jan 17, 2025
5d07ee8
ci: improve github action name
marcoieni Jan 17, 2025
21c0d95
Move std float unit tests to integration tests
bjorn3 Jan 17, 2025
a89675d
Move std::num unit tests to integration tests
bjorn3 Jan 17, 2025
fc152a0
Move std::panic unit tests to integration tests
bjorn3 Jan 17, 2025
4d5b0ec
Move std::path unit tests to integration tests
bjorn3 Jan 17, 2025
9b142dd
Move std::time unit tests to integration tests
bjorn3 Jan 17, 2025
c4289e4
Move std::thread_local unit tests to integration tests
bjorn3 Jan 17, 2025
f301e4d
Move std::sync unit tests to integration tests
bjorn3 Jan 17, 2025
d48be0d
Fix benchmarking of libstd
bjorn3 Jan 17, 2025
00844be
new solver: prefer trivial builtin impls over where-clauses
lqd Jan 17, 2025
d58540d
add src/librustdoc and src/rustdoc-json-types to RUSTC_IF_UNCHANGED_A…
lolbinarycat Jan 17, 2025
39274b6
Rollup merge of #134455 - lcnr:move-errors-in-promoteds, r=compiler-e…
matthiaskrgr Jan 17, 2025
f9c3b8c
Rollup merge of #135421 - cod10129:warn-tidy-ignore, r=onur-ozkan
matthiaskrgr Jan 17, 2025
8ef152e
Rollup merge of #135611 - chenyukang:yukang-fix-135341-ice-crash, r=o…
matthiaskrgr Jan 17, 2025
150c2c0
Rollup merge of #135620 - marcoieni:edit-ghcr-action-name, r=Kobzol
matthiaskrgr Jan 17, 2025
84534e8
Rollup merge of #135621 - bjorn3:move_tests_to_stdtests, r=Noratrieb
matthiaskrgr Jan 17, 2025
03fb232
Rollup merge of #135639 - lqd:trivial-builtin-impls, r=lcnr
matthiaskrgr Jan 17, 2025
10239b1
Rollup merge of #135654 - lolbinarycat:bootstrap-135650, r=onur-ozkan
matthiaskrgr Jan 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move std::path unit tests to integration tests
  • Loading branch information
bjorn3 committed Jan 17, 2025
commit 4d5b0ecf311883140726c9be7c820dab1e16b417
1 change: 1 addition & 0 deletions library/std/benches/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
extern crate test;

mod hash;
mod path;
114 changes: 114 additions & 0 deletions library/std/benches/path.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
use core::hint::black_box;
use std::collections::{BTreeSet, HashSet};
use std::hash::{DefaultHasher, Hash, Hasher};
use std::path::*;

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_cmp_fast_path_buf_sort(b: &mut test::Bencher) {
let prefix = "my/home";
let mut paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

paths.sort();

b.iter(|| {
black_box(paths.as_mut_slice()).sort_unstable();
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_cmp_fast_path_long(b: &mut test::Bencher) {
let prefix = "/my/home/is/my/castle/and/my/castle/has/a/rusty/workbench/";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = BTreeSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

b.iter(|| {
set.remove(paths[500].as_path());
set.insert(paths[500].as_path());
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_cmp_fast_path_short(b: &mut test::Bencher) {
let prefix = "my/home";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = BTreeSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

b.iter(|| {
set.remove(paths[500].as_path());
set.insert(paths[500].as_path());
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_hashset(b: &mut test::Bencher) {
let prefix = "/my/home/is/my/castle/and/my/castle/has/a/rusty/workbench/";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = HashSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

b.iter(|| {
set.remove(paths[500].as_path());
set.insert(black_box(paths[500].as_path()))
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_hashset_miss(b: &mut test::Bencher) {
let prefix = "/my/home/is/my/castle/and/my/castle/has/a/rusty/workbench/";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = HashSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

let probe = PathBuf::from(prefix).join("other");

b.iter(|| set.remove(black_box(probe.as_path())));
}

#[bench]
fn bench_hash_path_short(b: &mut test::Bencher) {
let mut hasher = DefaultHasher::new();
let path = Path::new("explorer.exe");

b.iter(|| black_box(path).hash(&mut hasher));

black_box(hasher.finish());
}

#[bench]
fn bench_hash_path_long(b: &mut test::Bencher) {
let mut hasher = DefaultHasher::new();
let path =
Path::new("/aaaaa/aaaaaa/./../aaaaaaaa/bbbbbbbbbbbbb/ccccccccccc/ddddddddd/eeeeeee.fff");

b.iter(|| black_box(path).hash(&mut hasher));

black_box(hasher.finish());
}
3 changes: 0 additions & 3 deletions library/std/src/path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,6 @@
#![stable(feature = "rust1", since = "1.0.0")]
#![deny(unsafe_op_in_unsafe_fn)]

#[cfg(test)]
mod tests;

use core::clone::CloneToUninit;

use crate::borrow::{Borrow, Cow};
Expand Down
149 changes: 24 additions & 125 deletions library/std/src/path/tests.rs → library/std/tests/path.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
use core::hint::black_box;

use super::*;
use crate::collections::{BTreeSet, HashSet};
use crate::hash::DefaultHasher;
use crate::mem::MaybeUninit;
use crate::ptr;
#![feature(
clone_to_uninit,
path_add_extension,
path_file_prefix,
maybe_uninit_slice,
os_string_pathbuf_leak
)]

use std::clone::CloneToUninit;
use std::ffi::OsStr;
use std::hash::{DefaultHasher, Hash, Hasher};
use std::mem::MaybeUninit;
use std::path::*;
use std::ptr;
use std::rc::Rc;
use std::sync::Arc;

#[allow(unknown_lints, unused_macro_rules)]
macro_rules! t (
Expand Down Expand Up @@ -110,7 +119,7 @@ macro_rules! t (

#[test]
fn into() {
use crate::borrow::Cow;
use std::borrow::Cow;

let static_path = Path::new("/home/foo");
let static_cow_path: Cow<'static, Path> = static_path.into();
Expand Down Expand Up @@ -1525,7 +1534,7 @@ pub fn test_with_added_extension() {

#[test]
fn test_eq_receivers() {
use crate::borrow::Cow;
use std::borrow::Cow;

let borrowed: &Path = Path::new("foo/bar");
let mut owned: PathBuf = PathBuf::new();
Expand All @@ -1550,7 +1559,7 @@ fn test_eq_receivers() {

#[test]
pub fn test_compare() {
use crate::hash::{DefaultHasher, Hash, Hasher};
use std::hash::{DefaultHasher, Hash, Hasher};

fn hash<T: Hash>(t: T) -> u64 {
let mut s = DefaultHasher::new();
Expand Down Expand Up @@ -1867,12 +1876,12 @@ fn test_ord() {
#[test]
#[cfg(any(unix, target_os = "wasi"))]
fn test_unix_absolute() {
use crate::path::absolute;
use std::path::absolute;

assert!(absolute("").is_err());

let relative = "a/b";
let mut expected = crate::env::current_dir().unwrap();
let mut expected = std::env::current_dir().unwrap();
expected.push(relative);
assert_eq!(absolute(relative).unwrap().as_os_str(), expected.as_os_str());

Expand All @@ -1888,20 +1897,20 @@ fn test_unix_absolute() {
);

// Test leading `.` and `..` components
let curdir = crate::env::current_dir().unwrap();
let curdir = std::env::current_dir().unwrap();
assert_eq!(absolute("./a").unwrap().as_os_str(), curdir.join("a").as_os_str());
assert_eq!(absolute("../a").unwrap().as_os_str(), curdir.join("../a").as_os_str()); // return /pwd/../a
}

#[test]
#[cfg(windows)]
fn test_windows_absolute() {
use crate::path::absolute;
use std::path::absolute;
// An empty path is an error.
assert!(absolute("").is_err());

let relative = r"a\b";
let mut expected = crate::env::current_dir().unwrap();
let mut expected = std::env::current_dir().unwrap();
expected.push(relative);
assert_eq!(absolute(relative).unwrap().as_os_str(), expected.as_os_str());

Expand Down Expand Up @@ -1953,116 +1962,6 @@ fn test_extension_path_sep_alternate() {
assert_eq!(path, Path::new("path/to/file.d\\test"));
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_cmp_fast_path_buf_sort(b: &mut test::Bencher) {
let prefix = "my/home";
let mut paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

paths.sort();

b.iter(|| {
black_box(paths.as_mut_slice()).sort_unstable();
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_cmp_fast_path_long(b: &mut test::Bencher) {
let prefix = "/my/home/is/my/castle/and/my/castle/has/a/rusty/workbench/";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = BTreeSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

b.iter(|| {
set.remove(paths[500].as_path());
set.insert(paths[500].as_path());
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_cmp_fast_path_short(b: &mut test::Bencher) {
let prefix = "my/home";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = BTreeSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

b.iter(|| {
set.remove(paths[500].as_path());
set.insert(paths[500].as_path());
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_hashset(b: &mut test::Bencher) {
let prefix = "/my/home/is/my/castle/and/my/castle/has/a/rusty/workbench/";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = HashSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

b.iter(|| {
set.remove(paths[500].as_path());
set.insert(black_box(paths[500].as_path()))
});
}

#[bench]
#[cfg_attr(miri, ignore)] // Miri isn't fast...
fn bench_path_hashset_miss(b: &mut test::Bencher) {
let prefix = "/my/home/is/my/castle/and/my/castle/has/a/rusty/workbench/";
let paths: Vec<_> =
(0..1000).map(|num| PathBuf::from(prefix).join(format!("file {num}.rs"))).collect();

let mut set = HashSet::new();

paths.iter().for_each(|p| {
set.insert(p.as_path());
});

let probe = PathBuf::from(prefix).join("other");

b.iter(|| set.remove(black_box(probe.as_path())));
}

#[bench]
fn bench_hash_path_short(b: &mut test::Bencher) {
let mut hasher = DefaultHasher::new();
let path = Path::new("explorer.exe");

b.iter(|| black_box(path).hash(&mut hasher));

black_box(hasher.finish());
}

#[bench]
fn bench_hash_path_long(b: &mut test::Bencher) {
let mut hasher = DefaultHasher::new();
let path =
Path::new("/aaaaa/aaaaaa/./../aaaaaaaa/bbbbbbbbbbbbb/ccccccccccc/ddddddddd/eeeeeee.fff");

b.iter(|| black_box(path).hash(&mut hasher));

black_box(hasher.finish());
}

#[test]
fn clone_to_uninit() {
let a = Path::new("hello.txt");
Expand Down