github.com/jlevesy/mattermost-server@v5.3.2-0.20181003190404-7468f35cb0c8+incompatible/utils/file_test.go (about)

     1  // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package utils
     5  
     6  import (
     7  	"io/ioutil"
     8  	"os"
     9  	"path/filepath"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestCopyDir(t *testing.T) {
    17  	srcDir, err := ioutil.TempDir("", "src")
    18  	require.NoError(t, err)
    19  	defer os.RemoveAll(srcDir)
    20  
    21  	dstParentDir, err := ioutil.TempDir("", "dstparent")
    22  	require.NoError(t, err)
    23  	defer os.RemoveAll(dstParentDir)
    24  
    25  	dstDir := filepath.Join(dstParentDir, "dst")
    26  
    27  	tempFile := "temp.txt"
    28  	err = ioutil.WriteFile(filepath.Join(srcDir, tempFile), []byte("test file"), 0655)
    29  	require.NoError(t, err)
    30  
    31  	childDir := "child"
    32  	err = os.Mkdir(filepath.Join(srcDir, childDir), 0777)
    33  	require.NoError(t, err)
    34  
    35  	childTempFile := "childtemp.txt"
    36  	err = ioutil.WriteFile(filepath.Join(srcDir, childDir, childTempFile), []byte("test file"), 0755)
    37  	require.NoError(t, err)
    38  
    39  	err = CopyDir(srcDir, dstDir)
    40  	assert.NoError(t, err)
    41  
    42  	stat, err := os.Stat(filepath.Join(dstDir, tempFile))
    43  	assert.NoError(t, err)
    44  	assert.Equal(t, uint32(0655), uint32(stat.Mode()))
    45  	assert.False(t, stat.IsDir())
    46  	data, err := ioutil.ReadFile(filepath.Join(dstDir, tempFile))
    47  	assert.NoError(t, err)
    48  	assert.Equal(t, "test file", string(data))
    49  
    50  	stat, err = os.Stat(filepath.Join(dstDir, childDir))
    51  	assert.NoError(t, err)
    52  	assert.True(t, stat.IsDir())
    53  
    54  	stat, err = os.Stat(filepath.Join(dstDir, childDir, childTempFile))
    55  	assert.NoError(t, err)
    56  	assert.Equal(t, uint32(0755), uint32(stat.Mode()))
    57  	assert.False(t, stat.IsDir())
    58  	data, err = ioutil.ReadFile(filepath.Join(dstDir, childDir, childTempFile))
    59  	assert.NoError(t, err)
    60  	assert.Equal(t, "test file", string(data))
    61  
    62  	err = CopyDir(srcDir, dstDir)
    63  	assert.Error(t, err)
    64  }