1
0
mirror of https://github.com/magefile/mage.git synced 2026-10-24 06:19:18 +03:00
Files
mage/target/target_test.go
Geofrey Ernest fe23edb1ac Add mg.Target (#54)
* 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
2017-10-18 20:16:56 -04:00

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)
}
}
}