Show More
@@ -218,3 +218,4 b' 53221078e0de65d1a821ce5311dec45a7a978301' | |||||
218 | 86a60679cf619e14cee9442f865fcf31b142cb9f 0 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 |
@@ -231,3 +231,4 b' 53221078e0de65d1a821ce5311dec45a7a978301' | |||||
231 | 86a60679cf619e14cee9442f865fcf31b142cb9f 5.9.1 |
|
231 | 86a60679cf619e14cee9442f865fcf31b142cb9f 5.9.1 | |
232 | 750920b18aaaddd654756be40dec59d90f2643be 5.9.2 |
|
232 | 750920b18aaaddd654756be40dec59d90f2643be 5.9.2 | |
233 | 6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1 5.9.3 |
|
233 | 6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1 5.9.3 | |
|
234 | a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0 |
@@ -2,7 +2,7 b'' | |||||
2 |
|
2 | |||
3 | * `hg config` now has a `--source` option to show where each |
|
3 | * `hg config` now has a `--source` option to show where each | |
4 | configuration value comes from. |
|
4 | configuration value comes from. | |
5 |
* Introduced a command (debug-repair-issue65 |
|
5 | * Introduced a command (debug-repair-issue6528) to repair repositories affected | |
6 | by issue6528 where certain files would show up as modified even if they were |
|
6 | by issue6528 where certain files would show up as modified even if they were | |
7 | clean due to an issue in the copy-tracing code. |
|
7 | clean due to an issue in the copy-tracing code. | |
8 |
|
8 |
@@ -180,12 +180,14 b' impl PathAuditor {' | |||||
180 | #[cfg(test)] |
|
180 | #[cfg(test)] | |
181 | mod tests { |
|
181 | mod tests { | |
182 | use super::*; |
|
182 | use super::*; | |
183 | use crate::utils::files::get_path_from_bytes; |
|
183 | use std::fs::{create_dir, File}; | |
184 | use crate::utils::hg_path::path_to_hg_path_buf; |
|
184 | use tempfile::tempdir; | |
185 |
|
185 | |||
186 | #[test] |
|
186 | #[test] | |
187 | fn test_path_auditor() { |
|
187 | fn test_path_auditor() { | |
188 | let auditor = PathAuditor::new(get_path_from_bytes(b"/tmp")); |
|
188 | let base_dir = tempdir().unwrap(); | |
|
189 | let base_dir_path = base_dir.path(); | |||
|
190 | let auditor = PathAuditor::new(base_dir_path); | |||
189 |
|
191 | |||
190 | let path = HgPath::new(b".hg/00changelog.i"); |
|
192 | let path = HgPath::new(b".hg/00changelog.i"); | |
191 | assert_eq!( |
|
193 | assert_eq!( | |
@@ -201,32 +203,20 b' mod tests {' | |||||
201 | }) |
|
203 | }) | |
202 | ); |
|
204 | ); | |
203 |
|
205 | |||
204 | use std::fs::{create_dir, File}; |
|
206 | create_dir(&base_dir_path.join("realdir")).unwrap(); | |
205 | use tempfile::tempdir; |
|
207 | File::create(&base_dir_path.join("realdir/realfile")).unwrap(); | |
206 |
|
||||
207 | let base_dir = tempdir().unwrap(); |
|
|||
208 | let base_dir_path = base_dir.path(); |
|
|||
209 | let skip = base_dir_path.components().count() - 1; |
|
|||
210 | let a = base_dir_path.join("a"); |
|
|||
211 | let b = base_dir_path.join("b"); |
|
|||
212 | create_dir(&a).unwrap(); |
|
|||
213 | let in_a_path = a.join("in_a"); |
|
|||
214 | File::create(in_a_path).unwrap(); |
|
|||
215 |
|
||||
216 | // TODO make portable |
|
208 | // TODO make portable | |
217 |
std::os::unix::fs::symlink( |
|
209 | std::os::unix::fs::symlink( | |
218 |
|
210 | &base_dir_path.join("realdir"), | ||
219 | let buf = b.join("in_a").components().skip(skip).collect::<PathBuf>(); |
|
211 | &base_dir_path.join("symlink"), | |
220 | eprintln!("buf: {}", buf.display()); |
|
212 | ) | |
221 | let path = path_to_hg_path_buf(buf).unwrap(); |
|
213 | .unwrap(); | |
|
214 | let path = HgPath::new(b"symlink/realfile"); | |||
222 | assert_eq!( |
|
215 | assert_eq!( | |
223 |
auditor.audit_path( |
|
216 | auditor.audit_path(path), | |
224 | Err(HgPathError::TraversesSymbolicLink { |
|
217 | Err(HgPathError::TraversesSymbolicLink { | |
225 | path: path, |
|
218 | path: path.to_owned(), | |
226 |
symlink: |
|
219 | symlink: HgPathBuf::from_bytes(b"symlink"), | |
227 | b.components().skip(2).collect::<PathBuf>() |
|
|||
228 | ) |
|
|||
229 | .unwrap() |
|
|||
230 | }) |
|
220 | }) | |
231 | ); |
|
221 | ); | |
232 | } |
|
222 | } |
@@ -264,6 +264,13 b' def has_executablebit():' | |||||
264 | return not (new_file_has_exec or exec_flags_cannot_flip) |
|
264 | return not (new_file_has_exec or exec_flags_cannot_flip) | |
265 |
|
265 | |||
266 |
|
266 | |||
|
267 | @check("suidbit", "setuid and setgid bit") | |||
|
268 | def has_suidbit(): | |||
|
269 | if getattr(os, "statvfs", None) is None or getattr(os, "ST_NOSUID") is None: | |||
|
270 | return False | |||
|
271 | return bool(os.statvfs('.').f_flag & os.ST_NOSUID) | |||
|
272 | ||||
|
273 | ||||
267 | @check("icasefs", "case insensitive file system") |
|
274 | @check("icasefs", "case insensitive file system") | |
268 | def has_icasefs(): |
|
275 | def has_icasefs(): | |
269 | # Stolen from mercurial.util |
|
276 | # Stolen from mercurial.util |
@@ -33,6 +33,8 b'' | |||||
33 |
|
33 | |||
34 | $ chmod -R u+w master/.hg/remotefilelogcache |
|
34 | $ chmod -R u+w master/.hg/remotefilelogcache | |
35 |
|
35 | |||
|
36 | #if suidbit | |||
|
37 | ||||
36 | # Test setting up shared cache with the right permissions |
|
38 | # Test setting up shared cache with the right permissions | |
37 | # (this is hard to test in a cross platform way, so we just make sure nothing |
|
39 | # (this is hard to test in a cross platform way, so we just make sure nothing | |
38 | # crashes) |
|
40 | # crashes) | |
@@ -44,3 +46,5 b'' | |||||
44 | 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over * (glob) |
|
46 | 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over * (glob) | |
45 | $ ls -ld $CACHEDIR/11 |
|
47 | $ ls -ld $CACHEDIR/11 | |
46 | drwxrws* $TESTTMP/hgcache/11 (glob) |
|
48 | drwxrws* $TESTTMP/hgcache/11 (glob) | |
|
49 | ||||
|
50 | #endif |
@@ -23,7 +23,7 b' error paths' | |||||
23 | #if symlink |
|
23 | #if symlink | |
24 | $ ln -s `which true` hg |
|
24 | $ ln -s `which true` hg | |
25 | $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg |
|
25 | $ "$PYTHON" $TESTDIR/run-tests.py --with-hg=./hg | |
26 | warning: --with-hg should specify an hg script, not: true |
|
26 | ^warning: --with-hg should specify an hg script, not: (true|coreutils)$ (re) | |
27 | running 0 tests using 0 parallel processes |
|
27 | running 0 tests using 0 parallel processes | |
28 |
|
28 | |||
29 | # Ran 0 tests, 0 skipped, 0 failed. |
|
29 | # Ran 0 tests, 0 skipped, 0 failed. |
@@ -57,6 +57,7 b' With -v and -p daytime' | |||||
57 | $ hgserve -p daytime |
|
57 | $ hgserve -p daytime | |
58 | abort: cannot start server at 'localhost:13': Permission denied (?) |
|
58 | abort: cannot start server at 'localhost:13': Permission denied (?) | |
59 | abort: child process failed to start (?) |
|
59 | abort: child process failed to start (?) | |
|
60 | abort: no port number associated with service 'daytime' (?) | |||
60 | listening at http://localhost/ (bound to $LOCALIP:13) (?) |
|
61 | listening at http://localhost/ (bound to $LOCALIP:13) (?) | |
61 | % errors |
|
62 | % errors | |
62 | $ KILLQUIETLY=N |
|
63 | $ KILLQUIETLY=N |
General Comments 0
You need to be logged in to leave comments.
Login now