Description
Describe the bug
-
As shown in the following code snippet, the function
ensureFiles
checks the file mode for both regular files and secret files.
https://github.com/nginxinc/nginx-gateway-fabric/blob/6d4cfd7f0de32e9f98dae358cb6cec93529109a5/internal/mode/static/nginx/file/manager_test.go#L43-L47 -
The function
ReplaceFiles
innginx/file/manager.go
creates files by internally calling os.Create, which, by default, creates files with mode 0666 (before applyingumask
). See the source code ofos.Create
for more details. -
The function
writeFile
changes the mode of secret files to 0640 by callingchmod
, but does nothing for regular files. Hence, the checkExpect(info.Mode()).To(Equal(os.FileMode(0o644)))
innginx/file/manager_test.go
only passes forumask
with specific values. -
In my environment, the
umask
value is 002. Therefore, the mode for regular files will be 0666 - 0002 = 0664, causing the unit test to fail. In the following screenshot, 420 is 0o644, and 436 is 0o664.
To Reproduce
- Step 1: Set
umask
to 002. - Step 2: Run
make unit-test
.