1
mirror of https://github.com/rclone/rclone synced 2024-11-23 00:06:55 +01:00

Fix --min-age and --max-age when only one is present

This commit is contained in:
Nick Craig-Wood 2015-12-17 14:22:43 +00:00
parent a1269fa669
commit e69e181090
2 changed files with 42 additions and 10 deletions

View File

@ -182,6 +182,7 @@ func NewFilter() (f *Filter, err error) {
return nil, err
}
f.ModTimeTo = time.Now().Add(-duration)
Debug(nil, "--min-age %v to %v", duration, f.ModTimeTo)
}
if *maxAge != "" {
duration, err := ParseDuration(*maxAge)
@ -192,6 +193,7 @@ func NewFilter() (f *Filter, err error) {
if !f.ModTimeTo.IsZero() && f.ModTimeTo.Before(f.ModTimeFrom) {
return nil, fmt.Errorf("Argument --min-age can't be larger than --max-age")
}
Debug(nil, "--max-age %v to %v", duration, f.ModTimeFrom)
}
if *dumpFilters {
fmt.Println("--- start filters ---")
@ -265,7 +267,7 @@ func (f *Filter) Include(remote string, size int64, modTime time.Time) bool {
if !f.ModTimeFrom.IsZero() && modTime.Before(f.ModTimeFrom) {
return false
}
if !f.ModTimeFrom.IsZero() && modTime.After(f.ModTimeTo) {
if !f.ModTimeTo.IsZero() && modTime.After(f.ModTimeTo) {
return false
}
if f.MinSize != 0 && size < f.MinSize {
@ -288,7 +290,7 @@ func (f *Filter) Include(remote string, size int64, modTime time.Time) bool {
func (f *Filter) IncludeObject(o Object) bool {
var modTime time.Time
if !f.ModTimeFrom.IsZero() || !f.ModTimeFrom.IsZero() {
if !f.ModTimeFrom.IsZero() || !f.ModTimeTo.IsZero() {
modTime = o.ModTime()
} else {
modTime = time.Unix(0, 0)

View File

@ -234,19 +234,49 @@ func TestNewFilterMaxSize(t *testing.T) {
})
}
func TestNewFilterModFile(t *testing.T) {
func TestNewFilterMinAndMaxAge(t *testing.T) {
f, err := NewFilter()
if err != nil {
t.Fatal(err)
}
f.ModTimeFrom = time.Unix(1447346230, 0)
f.ModTimeTo = time.Unix(1447432630, 0)
f.ModTimeFrom = time.Unix(1440000002, 0)
f.ModTimeTo = time.Unix(1440000003, 0)
testInclude(t, f, []includeTest{
{"file1.jpg", 100, 1447346230, true},
{"file2.jpg", 101, 1447389430, true},
{"file3.jpg", 102, 1447432630, true},
{"potato/file1.jpg", 98, 1447346229, false},
{"potato/file2.jpg", 99, 1447432631, false},
{"file1.jpg", 100, 1440000000, false},
{"file2.jpg", 101, 1440000001, false},
{"file3.jpg", 102, 1440000002, true},
{"potato/file1.jpg", 98, 1440000003, true},
{"potato/file2.jpg", 99, 1440000004, false},
})
}
func TestNewFilterMinAge(t *testing.T) {
f, err := NewFilter()
if err != nil {
t.Fatal(err)
}
f.ModTimeTo = time.Unix(1440000002, 0)
testInclude(t, f, []includeTest{
{"file1.jpg", 100, 1440000000, true},
{"file2.jpg", 101, 1440000001, true},
{"file3.jpg", 102, 1440000002, true},
{"potato/file1.jpg", 98, 1440000003, false},
{"potato/file2.jpg", 99, 1440000004, false},
})
}
func TestNewFilterMaxAge(t *testing.T) {
f, err := NewFilter()
if err != nil {
t.Fatal(err)
}
f.ModTimeFrom = time.Unix(1440000002, 0)
testInclude(t, f, []includeTest{
{"file1.jpg", 100, 1440000000, false},
{"file2.jpg", 101, 1440000001, false},
{"file3.jpg", 102, 1440000002, true},
{"potato/file1.jpg", 98, 1440000003, true},
{"potato/file2.jpg", 99, 1440000004, true},
})
}