Mercurial > hg4j
diff test/org/tmatesoft/hg/test/TestStorePath.java @ 411:464b4404e75d smartgit3
Issue 29: Bad storage path translation - translate Unicode chars to filesystem encoding
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 20 Mar 2012 17:56:50 +0100 |
parents | 82bec80bb1a4 |
children | 63c5a9d7ca3f |
line wrap: on
line diff
--- a/test/org/tmatesoft/hg/test/TestStorePath.java Fri Mar 16 20:19:51 2012 +0100 +++ b/test/org/tmatesoft/hg/test/TestStorePath.java Tue Mar 20 17:56:50 2012 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 TMate Software Ltd + * Copyright (c) 2011-2012 TMate Software Ltd * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,9 +16,13 @@ */ package org.tmatesoft.hg.test; +import java.util.HashMap; +import java.util.Map; + import junit.framework.Assert; import org.hamcrest.CoreMatchers; +import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.tmatesoft.hg.internal.BasicSessionContext; @@ -36,18 +40,30 @@ public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); private PathRewrite storePathHelper; + private final Map<String, Object> propertyOverrides = new HashMap<String, Object>(); + + private Internals internals; public static void main(String[] args) throws Throwable { final TestStorePath test = new TestStorePath(); test.testWindowsFilenames(); test.testHashLongPath(); + test.testSuffixReplacement(); test.errorCollector.verify(); } public TestStorePath() { - final Internals i = new Internals(new BasicSessionContext(null, null)); - i.setStorageConfig(1, 0x7); - storePathHelper = i.buildDataFilesHelper(); + propertyOverrides.put("hg.consolelog.debug", true); + internals = new Internals(new BasicSessionContext(propertyOverrides, null, null)); + internals.setStorageConfig(1, 0x7); + storePathHelper = internals.buildDataFilesHelper(); + } + + @Before + public void setup() { + // just in case there are leftovers from #testNationalChars() and another test builds a helper + propertyOverrides.clear(); + propertyOverrides.put("hg.consolelog.debug", true); } @Test @@ -88,4 +104,27 @@ errorCollector.checkThat(storePathHelper.rewrite(n2), CoreMatchers.<CharSequence>equalTo(r2)); errorCollector.checkThat(storePathHelper.rewrite(n3), CoreMatchers.<CharSequence>equalTo(r3)); } + + @Test + public void testSuffixReplacement() { + String s1 = "aaa/bbb.hg/ccc.i/ddd.hg/xx.i"; + String s2 = "bbb.d/aa.hg/bbb.hg/yy.d"; + String r1 = s1.replace(".hg/", ".hg.hg/").replace(".i/", ".i.hg/").replace(".d/", ".d.hg/"); + String r2 = s2.replace(".hg/", ".hg.hg/").replace(".i/", ".i.hg/").replace(".d/", ".d.hg/"); + errorCollector.checkThat(storePathHelper.rewrite(s1), CoreMatchers.<CharSequence>equalTo("store/data/" + r1 + ".i")); + errorCollector.checkThat(storePathHelper.rewrite(s2), CoreMatchers.<CharSequence>equalTo("store/data/" + r2 + ".i")); + } + + @Test + public void testNationalChars() { + String s = "Привет.txt"; + // + propertyOverrides.put(Internals.CFG_PROPERT_FS_FILENAME_ENCODING, "cp1251"); + PathRewrite sph = internals.buildDataFilesHelper(); + errorCollector.checkThat(sph.rewrite(s), CoreMatchers.<CharSequence>equalTo("store/data/~cf~f0~e8~e2~e5~f2.txt.i")); + // + propertyOverrides.put(Internals.CFG_PROPERT_FS_FILENAME_ENCODING, "UTF8"); + sph = internals.buildDataFilesHelper(); + errorCollector.checkThat(sph.rewrite(s), CoreMatchers.<CharSequence>equalTo("store/data/~d0~9f~d1~80~d0~b8~d0~b2~d0~b5~d1~82.txt.i")); + } }