-
Notifications
You must be signed in to change notification settings - Fork 156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[MENFORCER-390] "requireFilesExist" no longer handles non-canonical paths #297
base: master
Are you sure you want to change the base?
Conversation
…and did not adequately deal with mixed filesystems.
Ok, the simple I only think - if we don't break and special cases ... but agree more complicated check should be done optionally or by next rule By the way we can mention in documentation a way how file existence is checked to be clear. |
I have added some words to the affected documentation on case-sensitivity, as well as some explic testing of symbolic links. |
Are all the white space changes in the .md files intended? |
No, they are not intended. That will be my IDE doing its own thing, I'll
use a different editor and update.
…On Mon, 27 Nov 2023 at 15:20, Torbjorn-Svensson ***@***.***> wrote:
Are all the white space changes in the .md files intended?
As far as I know, some of the trailing white spaces are needed in order to
not join the lines.
—
Reply to this email directly, view it on GitHub
<#297 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJHMQU65AH2DOVYZVDQKTUTYGSVUVAVCNFSM6AAAAAA7ZJWO7OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMRYGA2DCMRXGQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
That should be the whitepsace issues sorted. I also generated the site locally and it appeared OK to me. |
@@ -26,7 +26,10 @@ | |||
Require Files Don't Exist | |||
|
|||
This rule checks that the specified list of files do not exist. | |||
|
|||
|
|||
The mounted filesystem(s) will dictate the case-sensitive rules when checking files. If you require checks that your |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
case-sensitivity
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
|
||
|
||
The mounted filesystem(s) will dictate the case-sensitive rules when checking files. If you require checks that your | ||
filesystem(s) do not support (e.g. a case-sensitive check on a case-insensitive filesystem) then you should consider |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
delete "then you should"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
|
||
The mounted filesystem(s) will dictate the case-sensitive rules when checking files. If you require checks that your | ||
filesystem(s) do not support (e.g. a case-sensitive check on a case-insensitive filesystem) then you should consider | ||
adding your own custom plugin that meets your specific needs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
your own --> a
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
@@ -26,7 +26,10 @@ | |||
Require Files Exist | |||
|
|||
This rule checks that the specified list of files exist. | |||
|
|||
|
|||
The mounted filesystem(s) will dictate the case-sensitive rules when checking files. If you require checks that your |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as above
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
case-sensitivity
@@ -26,7 +26,10 @@ | |||
Require File Size | |||
|
|||
This rule checks that the specified list of files exist and are within the specified size range. | |||
|
|||
|
|||
The mounted filesystem(s) will dictate the case-sensitive rules when checking files. If you require checks that your |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ditto
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
case-sensitivity
import static org.junit.jupiter.api.Assertions.assertNotNull; | ||
import static org.junit.jupiter.api.Assertions.assertTrue; | ||
import static org.junit.jupiter.api.Assertions.fail; | ||
import static org.junit.jupiter.api.Assertions.*; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
project style does not use wildcard imports
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated, and in TestRequireFilesExist
as well
@@ -107,15 +106,58 @@ void testEmptyFileListAllowNull() { | |||
@Test | |||
void testFileDoesNotExist() throws EnforcerRuleException, IOException { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand this test. It checks that we create a file, delete it, and then that the file doesn't exist? Consider renamingi
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems to just be a minor variation on the original test code, but I can change the name.
What do you think "testDeletedFileDetected"?
I'll update the symbolic link test to follow a similar format.
There is also "testFileDoesNotExistSatisfyAny", which is original code.
|
||
linkFile.delete(); | ||
rule.execute(); | ||
} finally { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we use try with resources for this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don;'t think so, isn't that just for autoclosables?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking at other tests, it does not seem to be project standard to ensure tests delete files they create; I could just remove the try block entirely in that case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the temporary folder rule should take care of that
rule.setFilesList(Collections.singletonList(linkFile)); | ||
|
||
try { | ||
rule.execute(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no exception is a pass?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Correct. This whole class it basically the inverse of TestRequireFilesExist
.
@@ -31,35 +30,11 @@ public final class RequireFilesExist extends AbstractRequireFiles { | |||
@Override | |||
boolean checkFile(File file) { | |||
// if we get here and the handle is null, treat it as a success | |||
return file == null ? true : file.exists() && osIndependentNameMatch(file, true); | |||
return file == null ? true : file.exists(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMHO
return file == null || file.exists()
is clearer, but up to you
@@ -26,7 +26,10 @@ | |||
Require Files Exist | |||
|
|||
This rule checks that the specified list of files exist. | |||
|
|||
|
|||
The mounted filesystem(s) will dictate the case-sensitive rules when checking files. If you require checks that your |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
case-sensitivity
@@ -26,7 +26,10 @@ | |||
Require File Size | |||
|
|||
This rule checks that the specified list of files exist and are within the specified size range. | |||
|
|||
|
|||
The mounted filesystem(s) will dictate the case-sensitive rules when checking files. If you require checks that your |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
case-sensitivity
|
||
linkFile.delete(); | ||
rule.execute(); | ||
} finally { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the temporary folder rule should take care of that
This reverts the change from MENFORCER-364 as this led to a regressions with symbolic links.
The fundamental issue is that there is no clean way to deal with case-sensitivity as OSs can have multuple filesystems mounted that follow different rules. Thus the simple
file.exists()
is, despite the limitations, probably best. Those requiring more stringent checks writing their own handling.Following this checklist to help us incorporate your
contribution quickly and easily:
for the change (usually before you start working on it). Trivial changes like typos do not
require a JIRA issue. Your pull request should address just this issue, without
pulling in other changes.
[MENFORCER-XXX] - Fixes bug in ApproximateQuantiles
,where you replace
MENFORCER-XXX
with the appropriate JIRA issue. Best practiceis to use the JIRA issue title in the pull request title and in the first line of the
commit message.
mvn clean verify
to make sure basic checks pass. A more thorough check willbe performed on your pull request automatically.
mvn -Prun-its clean verify
).If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.
To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.
I hereby declare this contribution to be licenced under the Apache License Version 2.0, January 2004
In any other case, please file an Apache Individual Contributor License Agreement.