--- a/relnotes/5.9 Tue Oct 26 19:47:30 2021 +0100
+++ b/relnotes/5.9 Tue Nov 09 21:56:04 2021 +0530
@@ -2,7 +2,7 @@
* `hg config` now has a `--source` option to show where each
configuration value comes from.
- * Introduced a command (debug-repair-issue6533) to repair repositories affected
+ * Introduced a command (debug-repair-issue6528) to repair repositories affected
by issue6528 where certain files would show up as modified even if they were
clean due to an issue in the copy-tracing code.
--- a/rust/hg-core/src/utils/path_auditor.rs Tue Oct 26 19:47:30 2021 +0100
+++ b/rust/hg-core/src/utils/path_auditor.rs Tue Nov 09 21:56:04 2021 +0530
@@ -180,12 +180,14 @@
#[cfg(test)]
mod tests {
use super::*;
- use crate::utils::files::get_path_from_bytes;
- use crate::utils::hg_path::path_to_hg_path_buf;
+ use std::fs::{create_dir, File};
+ use tempfile::tempdir;
#[test]
fn test_path_auditor() {
- let auditor = PathAuditor::new(get_path_from_bytes(b"/tmp"));
+ let base_dir = tempdir().unwrap();
+ let base_dir_path = base_dir.path();
+ let auditor = PathAuditor::new(base_dir_path);
let path = HgPath::new(b".hg/00changelog.i");
assert_eq!(
@@ -201,32 +203,20 @@
})
);
- use std::fs::{create_dir, File};
- use tempfile::tempdir;
-
- let base_dir = tempdir().unwrap();
- let base_dir_path = base_dir.path();
- let skip = base_dir_path.components().count() - 1;
- let a = base_dir_path.join("a");
- let b = base_dir_path.join("b");
- create_dir(&a).unwrap();
- let in_a_path = a.join("in_a");
- File::create(in_a_path).unwrap();
-
+ create_dir(&base_dir_path.join("realdir")).unwrap();
+ File::create(&base_dir_path.join("realdir/realfile")).unwrap();
// TODO make portable
- std::os::unix::fs::symlink(&a, &b).unwrap();
-
- let buf = b.join("in_a").components().skip(skip).collect::<PathBuf>();
- eprintln!("buf: {}", buf.display());
- let path = path_to_hg_path_buf(buf).unwrap();
+ std::os::unix::fs::symlink(
+ &base_dir_path.join("realdir"),
+ &base_dir_path.join("symlink"),
+ )
+ .unwrap();
+ let path = HgPath::new(b"symlink/realfile");
assert_eq!(
- auditor.audit_path(&path),
+ auditor.audit_path(path),
Err(HgPathError::TraversesSymbolicLink {
- path: path,
- symlink: path_to_hg_path_buf(
- b.components().skip(2).collect::<PathBuf>()
- )
- .unwrap()
+ path: path.to_owned(),
+ symlink: HgPathBuf::from_bytes(b"symlink"),
})
);
}
--- a/tests/hghave.py Tue Oct 26 19:47:30 2021 +0100
+++ b/tests/hghave.py Tue Nov 09 21:56:04 2021 +0530
@@ -264,6 +264,13 @@
return not (new_file_has_exec or exec_flags_cannot_flip)
+@check("suidbit", "setuid and setgid bit")
+def has_suidbit():
+ if getattr(os, "statvfs", None) is None or getattr(os, "ST_NOSUID") is None:
+ return False
+ return bool(os.statvfs('.').f_flag & os.ST_NOSUID)
+
+
@check("icasefs", "case insensitive file system")
def has_icasefs():
# Stolen from mercurial.util
--- a/tests/test-remotefilelog-permissions.t Tue Oct 26 19:47:30 2021 +0100
+++ b/tests/test-remotefilelog-permissions.t Tue Nov 09 21:56:04 2021 +0530
@@ -33,6 +33,8 @@
$ chmod -R u+w master/.hg/remotefilelogcache
+#if suidbit
+
# Test setting up shared cache with the right permissions
# (this is hard to test in a cross platform way, so we just make sure nothing
# crashes)
@@ -44,3 +46,5 @@
1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over * (glob)
$ ls -ld $CACHEDIR/11
drwxrws* $TESTTMP/hgcache/11 (glob)
+
+#endif
--- a/tests/test-run-tests.t Tue Oct 26 19:47:30 2021 +0100
+++ b/tests/test-run-tests.t Tue Nov 09 21:56:04 2021 +0530
@@ -23,7 +23,7 @@
#if symlink
$ ln -s `which true` hg
$ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg
- warning: --with-hg should specify an hg script, not: true
+ ^warning: --with-hg should specify an hg script, not: (true|coreutils)$ (re)
running 0 tests using 0 parallel processes
# Ran 0 tests, 0 skipped, 0 failed.
--- a/tests/test-serve.t Tue Oct 26 19:47:30 2021 +0100
+++ b/tests/test-serve.t Tue Nov 09 21:56:04 2021 +0530
@@ -57,6 +57,7 @@
$ hgserve -p daytime
abort: cannot start server at 'localhost:13': Permission denied (?)
abort: child process failed to start (?)
+ abort: no port number associated with service 'daytime' (?)
listening at http://localhost/ (bound to $LOCALIP:13) (?)
% errors
$ KILLQUIETLY=N