2019-07-27 07:08:17 +00:00
|
|
|
// +build darwin
|
|
|
|
|
|
|
|
package tools
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io/ioutil"
|
|
|
|
"os"
|
|
|
|
"path"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
2019-08-04 04:42:25 +00:00
|
|
|
func TestCheckCloneFileSupported(t *testing.T) {
|
|
|
|
as := assert.New(t)
|
|
|
|
|
|
|
|
// Do
|
|
|
|
ok, err := CheckCloneFileSupported(os.TempDir())
|
|
|
|
|
|
|
|
// Verify
|
|
|
|
t.Logf("ok = %v, err = %v", ok, err) // Just logging for 1st element
|
|
|
|
|
|
|
|
if !checkCloneFileSupported() {
|
|
|
|
as.EqualError(err, "unsupported OS version. >= 10.12.x Sierra required")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-27 07:08:17 +00:00
|
|
|
func TestCloneFile(t *testing.T) {
|
|
|
|
as := assert.New(t)
|
|
|
|
|
|
|
|
// Do
|
|
|
|
ok, err := CloneFile(nil, nil)
|
|
|
|
|
|
|
|
// Verify always no error and not ok
|
|
|
|
as.NoError(err)
|
|
|
|
as.False(ok)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestCloneFileByPath(t *testing.T) {
|
|
|
|
if !cloneFileSupported {
|
|
|
|
t.Skip("clone not supported on this platform")
|
|
|
|
}
|
|
|
|
|
|
|
|
src := path.Join(os.TempDir(), "src")
|
|
|
|
t.Logf("src = %s", src)
|
|
|
|
|
|
|
|
dst := path.Join(os.TempDir(), "dst")
|
|
|
|
t.Logf("dst = %s", dst)
|
|
|
|
|
|
|
|
as := assert.New(t)
|
|
|
|
|
|
|
|
// Precondition
|
|
|
|
err := ioutil.WriteFile(src, []byte("TEST"), 0666)
|
|
|
|
as.NoError(err)
|
|
|
|
|
|
|
|
// Do
|
|
|
|
ok, err := CloneFileByPath(dst, src)
|
|
|
|
if err != nil {
|
|
|
|
if cloneFileError, ok := err.(*CloneFileError); ok && cloneFileError.Unsupported {
|
|
|
|
t.Log(err)
|
|
|
|
t.Skip("tmp file is not support clonefile in this os installation.")
|
|
|
|
}
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Verify
|
|
|
|
as.NoError(err)
|
|
|
|
as.True(ok)
|
|
|
|
|
|
|
|
dstContents, err := ioutil.ReadFile(dst)
|
|
|
|
as.NoError(err)
|
|
|
|
as.Equal("TEST", string(dstContents))
|
|
|
|
}
|