code.gitea.io/gitea@v1.19.3/modules/util/file_unix_test.go (about)

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