You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

file_unix_test.go 760B

1234567891011121314151617181920212223242526272829303132333435
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. //go:build !windows
  4. package util
  5. import (
  6. "os"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestApplyUmask(t *testing.T) {
  11. f, err := os.CreateTemp(t.TempDir(), "test-filemode-")
  12. assert.NoError(t, err)
  13. err = os.Chmod(f.Name(), 0o777)
  14. assert.NoError(t, err)
  15. st, err := os.Stat(f.Name())
  16. assert.NoError(t, err)
  17. assert.EqualValues(t, 0o777, st.Mode().Perm()&0o777)
  18. oldDefaultUmask := defaultUmask
  19. defaultUmask = 0o037
  20. defer func() {
  21. defaultUmask = oldDefaultUmask
  22. }()
  23. err = ApplyUmask(f.Name(), os.ModePerm)
  24. assert.NoError(t, err)
  25. st, err = os.Stat(f.Name())
  26. assert.NoError(t, err)
  27. assert.EqualValues(t, 0o740, st.Mode().Perm()&0o777)
  28. }