diff test/org/tmatesoft/hg/test/TestCheckout.java @ 580:bd5926e24aa3

Respect unix flags for checkout/revert
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Fri, 19 Apr 2013 20:30:34 +0200
parents ca56a36c2eea
children e1b29756f901
line wrap: on
line diff
--- a/test/org/tmatesoft/hg/test/TestCheckout.java	Wed Apr 17 16:06:10 2013 +0200
+++ b/test/org/tmatesoft/hg/test/TestCheckout.java	Fri Apr 19 20:30:34 2013 +0200
@@ -30,6 +30,8 @@
 import org.tmatesoft.hg.core.Nodeid;
 import org.tmatesoft.hg.repo.HgLookup;
 import org.tmatesoft.hg.repo.HgRepository;
+import org.tmatesoft.hg.util.FileInfo;
+import org.tmatesoft.hg.util.FileWalker;
 import org.tmatesoft.hg.util.Pair;
 import org.tmatesoft.hg.util.Path;
 
@@ -115,6 +117,36 @@
 		
 		errorCollector.assertEquals("test", repo.getWorkingCopyBranchName());
 	}
+	
+	@Test
+	public void testCheckoutLinkAndExec() throws Exception {
+		File testRepoLoc = cloneRepoToTempLocation("test-flags", "test-checkout-flags", true);
+		repo = new HgLookup().detect(testRepoLoc);
+		new HgCheckoutCommand(repo).clean(true).changeset(0).execute();
+		
+		FileWalker fw = new FileWalker(repo.getSessionContext(), testRepoLoc, new Path.SimpleSource());
+		int execFound, linkFound, regularFound;
+		execFound = linkFound = regularFound = 0;
+		while(fw.hasNext()) {
+			fw.next();
+			FileInfo fi = fw.file();
+			boolean executable = fi.isExecutable();
+			boolean symlink = fi.isSymlink();
+			if (executable) {
+				execFound++;
+			}
+			if (symlink) {
+				linkFound++;
+			}
+			if (!executable && !symlink) {
+				regularFound++;
+			}
+		}
+		// TODO alter expected values to pass on Windows 
+		errorCollector.assertEquals("Executable files", 1, execFound);
+		errorCollector.assertEquals("Symlink files", 1, linkFound);
+		errorCollector.assertEquals("Regular files", 1, regularFound);
+	}
 
 	private static final class FilesOnlyFilter implements FileFilter {
 		public boolean accept(File f) {