@@ -1032,4 +1032,40 @@ public String getPathInfo() {
1032
1032
env .releaseIndexSearchers ();
1033
1033
IOUtils .removeRecursive (env .getDataRootFile ().toPath ());
1034
1034
}
1035
+
1036
+ @ ParameterizedTest
1037
+ @ ValueSource (strings = {"main.c" , "nonexistent" })
1038
+ void testIsUnreadableFalse (String fileName ) {
1039
+ HttpServletRequest req = new DummyHttpServletRequest () {
1040
+ @ Override
1041
+ public String getPathInfo () {
1042
+ return "mercurial/" + fileName ;
1043
+ }
1044
+ };
1045
+
1046
+ PageConfig cfg = PageConfig .get (req );
1047
+ assertFalse (cfg .isUnreadable ());
1048
+ }
1049
+
1050
+ // File.setReadable() does not change the behavior of File.canRead() on Windows.
1051
+ @ EnabledOnOs ({OS .LINUX , OS .MAC , OS .SOLARIS , OS .AIX , OS .OTHER })
1052
+ @ Test
1053
+ void testIsUnreadableTrue () {
1054
+ final String relativePath = Path .of ("mercurial" , "Makefile" ).toString ();
1055
+ HttpServletRequest req = new DummyHttpServletRequest () {
1056
+ @ Override
1057
+ public String getPathInfo () {
1058
+ return relativePath ;
1059
+ }
1060
+ };
1061
+
1062
+ final File file = new File (RuntimeEnvironment .getInstance ().getSourceRootPath (), relativePath );
1063
+ assertTrue (file .exists ());
1064
+ assertTrue (file .setReadable (false , false ));
1065
+ PageConfig cfg = PageConfig .get (req );
1066
+ assertTrue (cfg .isUnreadable ());
1067
+
1068
+ // cleanup
1069
+ assertTrue (file .setReadable (true , false ));
1070
+ }
1035
1071
}
0 commit comments