diff --git a/test/unit/repository_mercurial_test.rb b/test/unit/repository_mercurial_test.rb
index df37cf0733e4322513da403da2f3fe1580237bd3..384ba42dfb650a637601d7368011a10859b42858 100644
--- a/test/unit/repository_mercurial_test.rb
+++ b/test/unit/repository_mercurial_test.rb
@@ -171,6 +171,14 @@ class RepositoryMercurialTest < ActiveSupport::TestCase
       @repository.reload
       changesets = @repository.latest_changesets('README', nil)
       assert_equal %w|8 6 1 0|, changesets.collect(&:revision)
+
+      path = 'sql_escape/percent%dir/percent%file1.txt'
+      changesets = @repository.latest_changesets(path, nil)
+      assert_equal %w|11 10 9|, changesets.collect(&:revision)
+
+      path = 'sql_escape/underscore_dir/understrike_file.txt'
+      changesets = @repository.latest_changesets(path, nil)
+      assert_equal %w|12 9|, changesets.collect(&:revision)
     end
 
     def test_latest_changesets_with_dirpath
@@ -178,6 +186,14 @@ class RepositoryMercurialTest < ActiveSupport::TestCase
       @repository.reload
       changesets = @repository.latest_changesets('images', nil)
       assert_equal %w|1 0|, changesets.collect(&:revision)
+
+      path = 'sql_escape/percent%dir'
+      changesets = @repository.latest_changesets(path, nil)
+      assert_equal %w|13 11 10 9|, changesets.collect(&:revision)
+
+      path = 'sql_escape/underscore_dir'
+      changesets = @repository.latest_changesets(path, nil)
+      assert_equal %w|13 12 9|, changesets.collect(&:revision)
     end
   else
     puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"