file-visitor 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,19 +0,0 @@
1
- = file-visitor
2
-
3
- Description goes here.
4
-
5
- == Contributing to file-visitor
6
-
7
- * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
8
- * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
9
- * Fork the project.
10
- * Start a feature/bugfix branch.
11
- * Commit and push until you are happy with your contribution.
12
- * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
- * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
-
15
- == Copyright
16
-
17
- Copyright (c) 2013 bonar. See LICENSE.txt for
18
- further details.
19
-
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.0
@@ -1,62 +0,0 @@
1
-
2
- require 'file/visitor'
3
- require 'spec_utils'
4
-
5
- describe 'use case test' do
6
- include SpecUtils
7
-
8
- before(:each) do
9
- setup_test_dir
10
- end
11
-
12
- context "collect log file" do
13
-
14
- before(:each) do
15
- @path1 = create_file(['log', '2013-01'], '2013-01-01.log', 'a')
16
- @path2 = create_file(['log', '2013-02'], '2013-02-02.log', 'b')
17
- @path3 = create_file(['log', '2013-02'], '2013-02-03.log', 'c')
18
- @path4 = create_file(['log', '2013-01'], '2013-01-03.txt', 'd')
19
- end
20
-
21
- it 'removes 2013-02 logs' do
22
- visitor = File::Visitor.new
23
- visitor.add_filter(:ext, :log)
24
- visitor.add_filter { |path| path =~ /2013\-02/ }
25
-
26
- FileUtils.stub!(:rm).with(@path2)
27
- FileUtils.stub!(:rm).with(@path3)
28
-
29
- visitor.visit(test_dir) do |path|
30
- FileUtils.rm(path)
31
- end
32
- end
33
-
34
- it 'removes old logs' do
35
- time1 = Time.parse("2013-01-01 00:00:00")
36
- time2 = Time.parse("2013-01-02 00:00:00")
37
- time3 = Time.parse("2013-01-03 00:00:00")
38
- time4 = Time.parse("2013-01-04 00:00:00")
39
-
40
- File.utime(time1, time1, @path1)
41
- File.utime(time2, time2, @path2)
42
- File.utime(time3, time3, @path3)
43
- File.utime(time4, time4, @path4)
44
-
45
- Time.stub!(:now).and_return(Time.parse("2013-01-04 22:00:00"))
46
-
47
- visitor = File::Visitor.new
48
- visitor.add_filter(:mtime, :passed, 1, :day)
49
-
50
- visitor.file_list(test_dir).should == [@path1, @path2, @path3]
51
-
52
- visitor.add_filter(:mtime, :passed, 2, :days)
53
- visitor.file_list(test_dir).should == [@path1, @path2]
54
-
55
- visitor.add_filter(:mtime, :passed, 3, :days)
56
- visitor.file_list(test_dir).should == [@path1]
57
- end
58
-
59
- end
60
-
61
- end
62
-
@@ -1,23 +0,0 @@
1
-
2
- require 'file/visitor/filter/ext'
3
-
4
- describe File::Visitor::Filter::Ext do
5
-
6
- it 'can be created with String/Symbol' do
7
- filter = File::Visitor::Filter::Ext.new(:txt)
8
- filter = File::Visitor::Filter::Ext.new("txt")
9
- end
10
-
11
- it 'can match filename extention' do
12
- filter = File::Visitor::Filter::Ext.new(:txt)
13
- filter.match?("/path/to/file.txt").should be_true
14
- filter.match?("/path/to/file.dat").should be_false
15
- end
16
-
17
- it 'can be stringified' do
18
- filter = File::Visitor::Filter::Ext.new(:jpg)
19
- filter.to_s.should == "File::Visitor::Filter::Ext[.jpg]"
20
- end
21
-
22
- end
23
-
@@ -1,116 +0,0 @@
1
-
2
- require 'file/visitor/filter/mtime'
3
- require 'spec_helper'
4
- require 'fileutils'
5
- require 'time'
6
-
7
- describe File::Visitor::Filter::Mtime do
8
-
9
- before(:each) do
10
- @ns = File::Visitor::Filter::Mtime
11
- cleanup_spec_data_dir
12
- end
13
-
14
- after(:each) do
15
- cleanup_spec_data_dir
16
- end
17
-
18
- it "can be created with comparator/target_time" do
19
- filter = @ns.new(:equals_to, Time.now)
20
- filter.should be_a @ns
21
- end
22
-
23
- context ":passed" do
24
-
25
- it ":passed initialize" do
26
- Time.stub!(:now).and_return(
27
- Time.parse("2013-01-05 05:00"))
28
-
29
- filter1 = @ns.new(:passed, 2, :days)
30
-
31
- file1 = spec_data_create("file1")
32
- file2 = spec_data_create("file2")
33
- file3 = spec_data_create("file3")
34
- file4 = spec_data_create("file4")
35
-
36
- time1 = Time.parse("2013-01-03 04:59")
37
- time2 = Time.parse("2013-01-03 05:00")
38
- time3 = Time.parse("2013-01-03 05:01")
39
- time4 = Time.parse("2013-01-04 05:00")
40
-
41
- File.utime(time1, time1, file1)
42
- File.utime(time2, time2, file2)
43
- File.utime(time3, time3, file3)
44
- File.utime(time4, time4, file4)
45
-
46
- filter1.match?(file1).should be_true
47
- filter1.match?(file2).should be_false
48
- filter1.match?(file3).should be_false
49
- filter1.match?(file4).should be_false
50
-
51
- filter2 = @ns.new(:passed=, 2, :days)
52
- filter2.match?(file1).should be_true
53
- filter2.match?(file2).should be_true
54
- filter2.match?(file3).should be_false
55
- filter2.match?(file4).should be_false
56
- end
57
-
58
- end
59
-
60
- it "raises error with invalid comparator" do
61
- expect { @ns.new(:invalid, Time.now) }.to \
62
- raise_error(ArgumentError, %r/comparator must/)
63
- end
64
-
65
- it "raises error with non-Time instance" do
66
- expect { @ns.new(:equals_to, :now) }.to \
67
- raise_error(ArgumentError, %r/time must be/)
68
- end
69
-
70
- context "match?" do
71
-
72
- before(:each) do
73
- @file1 = spec_data_create("file1")
74
- @file2 = spec_data_create("file2")
75
- @file3 = spec_data_create("file3")
76
- @file4 = spec_data_create("file4")
77
-
78
- @time1 = Time.parse("2013-01-05 00:00")
79
- @time2 = Time.parse("2013-01-06 00:00")
80
- @time3 = Time.parse("2013-01-07 00:00")
81
- @time4 = Time.parse("2013-01-08 00:00")
82
-
83
- File.utime(@time1, @time1, @file1)
84
- File.utime(@time2, @time2, @file2)
85
- File.utime(@time3, @time3, @file3)
86
- File.utime(@time4, @time4, @file4)
87
- end
88
-
89
- it "supports eq filter" do
90
- filter = @ns.new(:equals_to, @time2)
91
- filter.match?(@file1).should be_false
92
- filter.match?(@file2).should be_true
93
- filter.match?(@file3).should be_false
94
- filter.match?(@file4).should be_false
95
- end
96
-
97
- it "supports lt filter" do
98
- filter = @ns.new(:is_less_than, @time2)
99
- filter.match?(@file1).should be_true
100
- filter.match?(@file2).should be_false
101
- filter.match?(@file3).should be_false
102
- filter.match?(@file4).should be_false
103
- end
104
-
105
- it "supports gt filter" do
106
- filter = @ns.new(:is_greater_than, @time2)
107
- filter.match?(@file1).should be_false
108
- filter.match?(@file2).should be_false
109
- filter.match?(@file3).should be_true
110
- filter.match?(@file4).should be_true
111
- end
112
-
113
- end
114
-
115
- end
116
-
@@ -1,40 +0,0 @@
1
-
2
- require 'file/visitor/filter/name'
3
-
4
- describe File::Visitor::Filter::Name do
5
-
6
- it 'can be created with new()' do
7
- filter = File::Visitor::Filter::Name.new('hoge')
8
- end
9
-
10
- it 'can match filename string' do
11
- filter = File::Visitor::Filter::Name.new('file')
12
-
13
- filter.match?("/path/to/file").should be_true
14
- filter.match?("file").should be_true
15
-
16
- filter.match?("file.txt").should be_false
17
- filter.match?(".file").should be_false
18
- end
19
-
20
- it 'can match filename regexp' do
21
- filter = File::Visitor::Filter::Name.new(/file\.\w+/)
22
-
23
- filter.match?("/path/to/file.txt").should be_true
24
- filter.match?("/path/to/xxx_file.txt").should be_true
25
- filter.match?("file.jpg").should be_true
26
-
27
- filter.match?("/path/to/file").should be_false
28
- end
29
-
30
- it 'can be stringified' do
31
- str1 = File::Visitor::Filter::Name.new("strfilter").to_s
32
- str2 = File::Visitor::Filter::Name.new(/filename\.\w+/).to_s
33
-
34
- str1.should be_a String
35
- str2.should be_a String
36
-
37
- str1.should_not == str2
38
- end
39
-
40
- end
@@ -1,36 +0,0 @@
1
-
2
- require 'file/visitor/filter/proc'
3
-
4
- describe File::Visitor::Filter::Proc do
5
-
6
- it 'can be created with new()' do
7
- filter = File::Visitor::Filter::Proc.new(proc { |path| true })
8
- end
9
-
10
- it 'raises error when non-proc instance given' do
11
- expect {
12
- filter = File::Visitor::Filter::Proc.new(true)
13
- }.to raise_error(ArgumentError, /Proc instance required/)
14
- end
15
-
16
- it 'can match path with custom proc' do
17
- filter = File::Visitor::Filter::Proc.new(proc { |path|
18
- path =~ /log/
19
- })
20
- filter.match?("/tmp/hoge/fuga.log").should be_true
21
- filter.match?("/tmp/log/fuga.txt").should be_true
22
- filter.match?("/tmp/hoge/fuga").should be_false
23
- end
24
-
25
- it 'can be stringified' do
26
- filter1 = File::Visitor::Filter::Proc.new(proc { true })
27
- filter2 = File::Visitor::Filter::Proc.new(proc { false })
28
-
29
- filter1.to_s.should be_a String
30
- filter2.to_s.should be_a String
31
-
32
- filter1.to_s.should_not == filter2.to_s
33
- end
34
-
35
- end
36
-
@@ -1,26 +0,0 @@
1
-
2
- require 'file/visitor/filter_dispatcher'
3
-
4
- describe File::Visitor::FilterDispatcher do
5
-
6
- it "dispatches filter classname" do
7
- File::Visitor::FilterDispatcher.dispatch(:name)\
8
- .should == File::Visitor::Filter::Name
9
- File::Visitor::FilterDispatcher.dispatch(:filename)\
10
- .should == File::Visitor::Filter::Name
11
-
12
- File::Visitor::FilterDispatcher.dispatch(:ext)\
13
- .should == File::Visitor::Filter::Ext
14
- File::Visitor::FilterDispatcher.dispatch(:extension)\
15
- .should == File::Visitor::Filter::Ext
16
- File::Visitor::FilterDispatcher.dispatch(:filetype)\
17
- .should == File::Visitor::Filter::Ext
18
-
19
- File::Visitor::FilterDispatcher.dispatch(:mtime)\
20
- .should == File::Visitor::Filter::Mtime
21
- File::Visitor::FilterDispatcher.dispatch(:modified_time)\
22
- .should == File::Visitor::Filter::Mtime
23
- end
24
-
25
- end
26
-
@@ -1,12 +0,0 @@
1
-
2
- require 'file/visitor/filter'
3
-
4
- describe File::Visitor::Filter do
5
-
6
- it "create filter namespace" do
7
- File::Visitor::Filter.should_not be_nil
8
-
9
- end
10
-
11
- end
12
-
@@ -1,156 +0,0 @@
1
-
2
- require 'file/visitor/time_utils'
3
-
4
- describe File::Visitor::TimeUtils do
5
- include File::Visitor::TimeUtils
6
-
7
- describe 'unitexp2sec' do
8
-
9
- it "returns seconds with unit string of time" do
10
- unitexp2sec(1, :sec).should == 1
11
- unitexp2sec(2, :sec).should == 2
12
- unitexp2sec(3, :sec).should == 3
13
-
14
- unitexp2sec(1, :min).should == 60
15
- unitexp2sec(2, :min).should == 120
16
- unitexp2sec(3, :min).should == 180
17
-
18
- unitexp2sec(1, :hour).should == 60 * 60 * 1
19
- unitexp2sec(2, :hour).should == 60 * 60 * 2
20
- unitexp2sec(3, :hour).should == 60 * 60 * 3
21
- end
22
-
23
- it "returns seconds with unit string aliases" do
24
- unitexp2sec(1, :second).should == 1
25
- unitexp2sec(2, :seconds).should == 2
26
- unitexp2sec(3, :secs).should == 3
27
-
28
- unitexp2sec(1, :mins).should == 60
29
- unitexp2sec(2, :minute).should == 120
30
- unitexp2sec(3, :minutes).should == 180
31
-
32
- unitexp2sec(1, :hours).should == 60 * 60 * 1
33
- unitexp2sec(2, :days).should == 60 * 60 * 24 * 2
34
- unitexp2sec(3, :months).should == 60 * 60 * 24 * 31 * 3
35
- end
36
-
37
- it "raises error with invalid count" do
38
- expect { unitexp2sec(nil, :day) }.to \
39
- raise_error(ArgumentError, %r/time count must be/)
40
- expect { unitexp2sec(-1, :day) }.to \
41
- raise_error(ArgumentError, %r/time count must be/)
42
- end
43
-
44
- it "raises error with invalid unit name" do
45
- expect { unitexp2sec(1 , :nichi) }.to \
46
- raise_error(ArgumentError, %r/unknown time unit/)
47
- end
48
-
49
- end
50
-
51
- describe 'compare_time' do
52
-
53
- it "supports equals_to" do
54
- compare_time(
55
- '2011-12-01 00:00:04',
56
- :equals_to,
57
- '2011-12-01 00:00:05'
58
- ).should be_false
59
-
60
- compare_time(
61
- '2011-12-01 00:00:05',
62
- :equals_to,
63
- '2011-12-01 00:00:05'
64
- ).should be_true
65
-
66
- compare_time(
67
- '2011-12-01 00:00:05',
68
- :equals_to,
69
- '2011-12-01 00:00:06'
70
- ).should be_false
71
- end
72
-
73
- it "supports is_greater_than" do
74
- compare_time(
75
- '2011-12-01 00:00:04',
76
- :is_greater_than,
77
- '2011-12-01 00:00:05'
78
- ).should be_false
79
-
80
- compare_time(
81
- '2011-12-01 00:00:05',
82
- :is_greater_than,
83
- '2011-12-01 00:00:05'
84
- ).should be_false
85
-
86
- compare_time(
87
- '2011-12-01 00:00:06',
88
- :is_greater_than,
89
- '2011-12-01 00:00:05'
90
- ).should be_true
91
- end
92
-
93
- it "supports is_greater_than=" do
94
- compare_time(
95
- '2011-12-01 00:00:04',
96
- :is_greater_than=,
97
- '2011-12-01 00:00:05'
98
- ).should be_false
99
-
100
- compare_time(
101
- '2011-12-01 00:00:05',
102
- :is_greater_than=,
103
- '2011-12-01 00:00:05'
104
- ).should be_true
105
-
106
- compare_time(
107
- '2011-12-01 00:00:06',
108
- :is_greater_than=,
109
- '2011-12-01 00:00:05'
110
- ).should be_true
111
- end
112
-
113
- it "supports is_less_than" do
114
- compare_time(
115
- '2011-12-01 00:00:04',
116
- :is_less_than,
117
- '2011-12-01 00:00:05'
118
- ).should be_true
119
-
120
- compare_time(
121
- '2011-12-01 00:00:05',
122
- :is_less_than,
123
- '2011-12-01 00:00:05'
124
- ).should be_false
125
-
126
- compare_time(
127
- '2011-12-01 00:00:06',
128
- :is_less_than,
129
- '2011-12-01 00:00:05'
130
- ).should be_false
131
- end
132
-
133
- it "supports is_less_than=" do
134
- compare_time(
135
- '2011-12-01 00:00:04',
136
- :is_less_than=,
137
- '2011-12-01 00:00:05'
138
- ).should be_true
139
-
140
- compare_time(
141
- '2011-12-01 00:00:05',
142
- :is_less_than=,
143
- '2011-12-01 00:00:05'
144
- ).should be_true
145
-
146
- compare_time(
147
- '2011-12-01 00:00:06',
148
- :is_less_than=,
149
- '2011-12-01 00:00:05'
150
- ).should be_false
151
- end
152
-
153
- end
154
-
155
- end
156
-