mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-07-26 09:42:00 -07:00
Fix symlink test.
We attempt to run it on Windows, but I'm getting "access denied" errors when trying to create a file symlink. So we disable the test on Windows.
This commit is contained in:
@@ -542,7 +542,7 @@ sherlock!(symlink_nofollow, "Sherlock", ".", |wd: WorkDir, mut cmd: Command| {
|
|||||||
wd.remove("sherlock");
|
wd.remove("sherlock");
|
||||||
wd.create_dir("foo");
|
wd.create_dir("foo");
|
||||||
wd.create_dir("foo/bar");
|
wd.create_dir("foo/bar");
|
||||||
wd.link("foo/baz", "foo/bar/baz");
|
wd.link_dir("foo/baz", "foo/bar/baz");
|
||||||
wd.create_dir("foo/baz");
|
wd.create_dir("foo/baz");
|
||||||
wd.create("foo/baz/sherlock", hay::SHERLOCK);
|
wd.create("foo/baz/sherlock", hay::SHERLOCK);
|
||||||
cmd.current_dir(wd.path().join("foo/bar"));
|
cmd.current_dir(wd.path().join("foo/bar"));
|
||||||
@@ -555,7 +555,7 @@ sherlock!(symlink_follow, "Sherlock", ".", |wd: WorkDir, mut cmd: Command| {
|
|||||||
wd.create_dir("foo/bar");
|
wd.create_dir("foo/bar");
|
||||||
wd.create_dir("foo/baz");
|
wd.create_dir("foo/baz");
|
||||||
wd.create("foo/baz/sherlock", hay::SHERLOCK);
|
wd.create("foo/baz/sherlock", hay::SHERLOCK);
|
||||||
wd.link("foo/baz", "foo/bar/baz");
|
wd.link_dir("foo/baz", "foo/bar/baz");
|
||||||
cmd.arg("-L");
|
cmd.arg("-L");
|
||||||
cmd.current_dir(wd.path().join("foo/bar"));
|
cmd.current_dir(wd.path().join("foo/bar"));
|
||||||
|
|
||||||
@@ -783,9 +783,13 @@ clean!(regression_131, "test", ".", |wd: WorkDir, mut cmd: Command| {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// See: https://github.com/BurntSushi/ripgrep/issues/137
|
// See: https://github.com/BurntSushi/ripgrep/issues/137
|
||||||
|
//
|
||||||
|
// TODO(burntsushi): Figure out why Windows gives "access denied" errors
|
||||||
|
// when trying to create a file symlink. For now, disable test on Windows.
|
||||||
|
#[cfg(not(windows))]
|
||||||
sherlock!(regression_137, "Sherlock", ".", |wd: WorkDir, mut cmd: Command| {
|
sherlock!(regression_137, "Sherlock", ".", |wd: WorkDir, mut cmd: Command| {
|
||||||
wd.link("sherlock", "sym1");
|
wd.link_file("sherlock", "sym1");
|
||||||
wd.link("sherlock", "sym2");
|
wd.link_file("sherlock", "sym2");
|
||||||
cmd.arg("sym1");
|
cmd.arg("sym1");
|
||||||
cmd.arg("sym2");
|
cmd.arg("sym2");
|
||||||
cmd.arg("-j1");
|
cmd.arg("-j1");
|
||||||
|
@@ -83,7 +83,7 @@ impl WorkDir {
|
|||||||
/// Creates a directory symlink to the src with the given target name
|
/// Creates a directory symlink to the src with the given target name
|
||||||
/// in this directory.
|
/// in this directory.
|
||||||
#[cfg(not(windows))]
|
#[cfg(not(windows))]
|
||||||
pub fn link<S: AsRef<Path>, T: AsRef<Path>>(&self, src: S, target: T) {
|
pub fn link_dir<S: AsRef<Path>, T: AsRef<Path>>(&self, src: S, target: T) {
|
||||||
use std::os::unix::fs::symlink;
|
use std::os::unix::fs::symlink;
|
||||||
let src = self.dir.join(src);
|
let src = self.dir.join(src);
|
||||||
let target = self.dir.join(target);
|
let target = self.dir.join(target);
|
||||||
@@ -91,8 +91,10 @@ impl WorkDir {
|
|||||||
nice_err(&target, symlink(&src, &target));
|
nice_err(&target, symlink(&src, &target));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a directory symlink to the src with the given target name
|
||||||
|
/// in this directory.
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
pub fn link<S: AsRef<Path>, T: AsRef<Path>>(&self, src: S, target: T) {
|
pub fn link_dir<S: AsRef<Path>, T: AsRef<Path>>(&self, src: S, target: T) {
|
||||||
use std::os::windows::fs::symlink_dir;
|
use std::os::windows::fs::symlink_dir;
|
||||||
let src = self.dir.join(src);
|
let src = self.dir.join(src);
|
||||||
let target = self.dir.join(target);
|
let target = self.dir.join(target);
|
||||||
@@ -100,6 +102,32 @@ impl WorkDir {
|
|||||||
nice_err(&target, symlink_dir(&src, &target));
|
nice_err(&target, symlink_dir(&src, &target));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a file symlink to the src with the given target name
|
||||||
|
/// in this directory.
|
||||||
|
#[cfg(not(windows))]
|
||||||
|
pub fn link_file<S: AsRef<Path>, T: AsRef<Path>>(
|
||||||
|
&self,
|
||||||
|
src: S,
|
||||||
|
target: T,
|
||||||
|
) {
|
||||||
|
self.link_dir(src, target);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a file symlink to the src with the given target name
|
||||||
|
/// in this directory.
|
||||||
|
#[cfg(windows)]
|
||||||
|
pub fn link_file<S: AsRef<Path>, T: AsRef<Path>>(
|
||||||
|
&self,
|
||||||
|
src: S,
|
||||||
|
target: T,
|
||||||
|
) {
|
||||||
|
use std::os::windows::fs::symlink_file;
|
||||||
|
let src = self.dir.join(src);
|
||||||
|
let target = self.dir.join(target);
|
||||||
|
let _ = fs::remove_file(&target);
|
||||||
|
nice_err(&target, symlink_file(&src, &target));
|
||||||
|
}
|
||||||
|
|
||||||
/// Runs and captures the stdout of the given command.
|
/// Runs and captures the stdout of the given command.
|
||||||
///
|
///
|
||||||
/// If the return type could not be created from a string, then this
|
/// If the return type could not be created from a string, then this
|
||||||
|
Reference in New Issue
Block a user