mirror of
https://github.com/magefile/mage.git
synced 2026-10-24 06:19:18 +03:00
* Add mg.Target This function allows specifying files/directories as targets and returns true when the targets are met and false otherwise. Targets are met if the ModTime of src is older than any ModTime of any of the specified targets. For recursive checks of directory with its file contents set recusive argument to true
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package target
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestPath(t *testing.T) {
|
|
t.Parallel()
|
|
dirs := []string{"testdata/src_dir", "testdata/target_dir"}
|
|
for _, d := range dirs {
|
|
os.MkdirAll(d, 0777)
|
|
time.Sleep(10 * time.Millisecond)
|
|
}
|
|
files := []string{
|
|
"testdata/src_dir/some_file",
|
|
"testdata/src_dir/some_",
|
|
"testdata/src_file",
|
|
"testdata/target_dir/some_file",
|
|
"testdata/target_file",
|
|
}
|
|
for _, v := range files {
|
|
err := ioutil.WriteFile(v, []byte(v), 0600)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
time.Sleep(500 * time.Millisecond)
|
|
}
|
|
defer func() {
|
|
err := os.RemoveAll("testdata")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}()
|
|
|
|
table := []struct {
|
|
desc string
|
|
src string
|
|
targets []string
|
|
expect bool
|
|
}{
|
|
{"Files only target checks", "testdata/src_file",
|
|
[]string{"testdata/target_file"}, true},
|
|
{"Files only target doesn't check", "testdata/target_file",
|
|
[]string{"testdata/src_file"}, false},
|
|
{"Directories only target checks", "testdata/src_dir",
|
|
[]string{"testdata/target_dir"}, true},
|
|
{"Directories only target doesn't checks", "testdata/target_dir",
|
|
[]string{"testdata/src_dir"}, false},
|
|
}
|
|
|
|
for _, c := range table {
|
|
v, err := Path(c.src, c.targets...)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if v != c.expect {
|
|
t.Errorf("%s : expecting %v got %v", c.desc, c.expect, v)
|
|
}
|
|
}
|
|
}
|