clutil 2011.138.0 → 2014.304.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/cl/util/smtp.rb DELETED
@@ -1,170 +0,0 @@
1
- # $Id: smtp.rb,v 1.4 2008/12/09 06:58:56 chrismo Exp $
2
- =begin
3
- --------------------------------------------------------------------------
4
- Copyright (c) 2001-2010, Chris Morris
5
- All rights reserved.
6
-
7
- Redistribution and use in source and binary forms, with or without modification,
8
- are permitted provided that the following conditions are met:
9
-
10
- 1. Redistributions of source code must retain the above copyright notice, this
11
- list of conditions and the following disclaimer.
12
-
13
- 2. Redistributions in binary form must reproduce the above copyright notice,
14
- this list of conditions and the following disclaimer in the documentation and/or
15
- other materials provided with the distribution.
16
-
17
- 3. Neither the names Chris Morris, cLabs nor the names of contributors to this
18
- software may be used to endorse or promote products derived from this software
19
- without specific prior written permission.
20
-
21
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
22
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
25
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
29
- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- --------------------------------------------------------------------------------
32
- =end
33
- require 'net/smtp'
34
- require 'time'
35
-
36
- module ClUtil
37
- class Attachment
38
- def self.load_from_file(filename)
39
- data = nil
40
- File.open(filename, 'rb') do |f|
41
- data = f.read()
42
- end
43
- data = [data].pack("m*")
44
- Attachment.new(File.basename(filename), data)
45
- end
46
-
47
- attr_reader :name, :data
48
-
49
- def initialize(name, data)
50
- @name = name
51
- @data = data
52
- end
53
- end
54
-
55
- class Smtp
56
- attr_reader :attachments
57
- attr_accessor :from, :subj, :body, :extra_headers, :username, :password, :auth_type, :enable_starttls, :port
58
-
59
- def initialize(smtpsrv='localhost', port=25)
60
- @smtpsrv = smtpsrv
61
- @port = port
62
- @attachments = []
63
- @username = nil
64
- @password = nil
65
- @auth_type = :login
66
- @enable_starttls = false
67
- end
68
-
69
- def to
70
- @to
71
- end
72
-
73
- def to=(value)
74
- @to = [value].flatten
75
- end
76
-
77
- def sendmail
78
- msg = build_message
79
- @smtp = Net::SMTP.new(@smtpsrv, @port)
80
- start_tls_if_needed
81
- @smtp.start('localhost.localdomain', @username, @password, @auth_type) do |smtp|
82
- smtp.sendmail(msg, @from, @to)
83
- end
84
- end
85
-
86
- def start_tls_if_needed
87
- return if !@enable_starttls
88
- # require 'rubygems'
89
- # gem 'smtp_tls'
90
- # require 'smtp_tls'
91
- @smtp.enable_starttls
92
- end
93
-
94
- def content_type
95
- @body =~ /<html>/ ? "text/html" : "text/plain"
96
- end
97
-
98
- def build_message
99
- msg = format_headers
100
- boundary = create_boundary
101
-
102
- if !@attachments.empty?
103
- msg << [
104
- "Content-Type: multipart/mixed; boundary=\"#{boundary}\"\n",
105
- "\n",
106
- "This is a multi-part message in MIME format.\n",
107
- "\n"
108
- ]
109
- end
110
-
111
- if @body
112
- msg << [ "--#{boundary}\n" ] if !@attachments.empty?
113
- msg << [
114
- "Content-Type: #{content_type}; charset=\"iso-8859-1\"\n",
115
- "Content-Transfer-Encoding: 8bit\n",
116
- "\n",
117
- "#{@body}\n",
118
- "\n"
119
- ]
120
- end
121
-
122
- @attachments.each do |attachment|
123
- basename = attachment.name
124
- msg << [
125
- "--#{boundary}\n",
126
- "Content-Type: application/octet-stream; name=\"#{basename}\"\n",
127
- "Content-Transfer-Encoding: base64\n",
128
- "Content-Disposition: attachment; filename=\"#{basename}\"\n",
129
- "\n",
130
- "#{attachment.data}", # no \n needed
131
- "\n"
132
- ]
133
- end
134
-
135
- msg << ["--#{boundary}--\n"] if !@attachments.empty?
136
-
137
- msg.flatten!
138
- end
139
-
140
- def create_boundary()
141
- return "_____clabs_smtp_boundary______#{Time.new.to_i.to_s}___"
142
- end
143
-
144
- def format_headers
145
- headers = ["Subject: #{subj}", "From: #{from}", "To: #{to.join(";")}", "Date: #{Time.now.rfc2822}", "MIME-Version: 1.0" ]
146
- headers << @extra_headers if @extra_headers
147
- headers.flatten!
148
- headers.collect! { |hdr| hdr.strip << "\n" }
149
- [headers].flatten
150
- end
151
- end
152
- end
153
-
154
- # deprecated - use ClUtil::Smtp instead. The attachments argument is designed
155
- # to be either a single filename or an array of filenames.
156
- def sendmail(to, from, subj, body, smtpsrv=nil, attachments=nil, extra_headers=nil)
157
- smtpsrv = 'localhost' if !smtpsrv
158
- smtp = ClUtil::Smtp.new(smtpsrv)
159
- smtp.to = to
160
- smtp.from = from
161
- smtp.subj = subj
162
- smtp.body = body
163
- smtp.extra_headers = extra_headers
164
- attachments = [attachments].flatten
165
- attachments.compact!
166
- attachments.each do |attachment_fn|
167
- smtp.attachments << ClUtil::Attachment.load_from_file(attachment_fn)
168
- end
169
- smtp.sendmail
170
- end
data/cl/util/string.rb DELETED
@@ -1,73 +0,0 @@
1
- # $Id: string.rb,v 1.2 2003/06/27 17:46:03 chrismo Exp $
2
- =begin
3
- ----------------------------------------------------------------------------
4
- Copyright (c) 2001 - 2010, Chris Morris
5
- All rights reserved.
6
-
7
- Redistribution and use in source and binary forms, with or without
8
- modification, are permitted provided that the following conditions are met:
9
-
10
- 1. Redistributions of source code must retain the above copyright notice,
11
- this list of conditions and the following disclaimer.
12
-
13
- 2. Redistributions in binary form must reproduce the above copyright notice,
14
- this list of conditions and the following disclaimer in the documentation
15
- and/or other materials provided with the distribution.
16
-
17
- 3. Neither the names Chris Morris, cLabs nor the names of contributors to
18
- this software may be used to endorse or promote products derived from this
19
- software without specific prior written permission.
20
-
21
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
22
- IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
25
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
28
- OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
- ----------------------------------------------------------------------------
33
- (based on BSD Open Source License)
34
- =end
35
-
36
- class String
37
- def get_indent
38
- scan(/^(\s*)/).flatten[0].to_s
39
- end
40
-
41
- def rbpath
42
- self.gsub(/\\/, '/')
43
- end
44
-
45
- def winpath
46
- self.gsub(/\//, "\\")
47
- end
48
- end
49
-
50
- def indent(s, amt)
51
- a = s.split("\n", -1)
52
- if amt >= 0
53
- a.collect! do |ln|
54
- if !ln.empty?
55
- (' ' * amt) + ln
56
- else
57
- ln
58
- end
59
- end
60
- else
61
- a.collect! do |ln|
62
- (1..amt.abs).each do ln = ln[1..-1] if ln[0..0] == ' ' end
63
- ln
64
- end
65
- end
66
- a.join("\n")
67
- end
68
-
69
- def here_ltrim(s, add_indent_amt=0)
70
- a = s.split("\n", -1)
71
- trim_indent_amt = a[0].get_indent.length
72
- indent(s, add_indent_amt - trim_indent_amt)
73
- end
@@ -1,137 +0,0 @@
1
- =begin
2
- --------------------------------------------------------------------------
3
- Copyright (c) 2001, Chris Morris
4
- All rights reserved.
5
-
6
- Redistribution and use in source and binary forms, with or without modification,
7
- are permitted provided that the following conditions are met:
8
-
9
- 1. Redistributions of source code must retain the above copyright notice, this
10
- list of conditions and the following disclaimer.
11
-
12
- 2. Redistributions in binary form must reproduce the above copyright notice,
13
- this list of conditions and the following disclaimer in the documentation and/or
14
- other materials provided with the distribution.
15
-
16
- 3. Neither the names Chris Morris, cLabs nor the names of contributors to this
17
- software may be used to endorse or promote products derived from this software
18
- without specific prior written permission.
19
-
20
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
21
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
24
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
- SERVICES LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION) HOWEVER
27
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
28
- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
29
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
- --------------------------------------------------------------------------------
31
- =end
32
-
33
- require File.dirname(__FILE__) + '/../test'
34
- require File.dirname(__FILE__) + '/../dirsize'
35
- require 'test/unit'
36
-
37
- TestData = Struct.new("TestData",
38
- :clusterSize,
39
- :expectedFileSize,
40
- :expectedDiskSpace,
41
- :expectedFileSizeIncludeSubs,
42
- :expectedDiskSpaceIncludeSubs,
43
- :expectedFileCount,
44
- :expectedAvgFileSize,
45
- :expectedFileCountIncludeSubs,
46
- :expectedAvgFileSizeIncludeSubs
47
- )
48
-
49
- class TestDirSize < TempDirTest
50
- def setup
51
- super
52
- @test_data = TestData.new
53
- end
54
-
55
- def test_larger_singleton
56
- make_sample_text_file('', 5000)
57
- @test_data.clusterSize = 4096
58
- @test_data.expectedFileSize = 5000
59
- @test_data.expectedDiskSpace = (4096 * 2)
60
- @test_data.expectedFileSizeIncludeSubs = 5000
61
- @test_data.expectedDiskSpaceIncludeSubs = (4096 * 2)
62
- @test_data.expectedFileCount = 1
63
- @test_data.expectedAvgFileSize = 5000
64
- @test_data.expectedFileCountIncludeSubs = 1
65
- @test_data.expectedAvgFileSizeIncludeSubs = 5000
66
- do_test_dir_size(@test_data)
67
- end
68
-
69
- def do_test_dir_size(test_data)
70
- dir_size = DirSize.new
71
- dir_size.directory = @temp_dir
72
- dir_size.clusterSize = test_data.clusterSize
73
- dir_size.getSize
74
- assert_equal(test_data.expectedFileSize, dir_size.fileSize(false))
75
- assert_equal(test_data.expectedDiskSpace, dir_size.diskSpace(false))
76
- assert_equal(test_data.expectedFileSizeIncludeSubs, dir_size.fileSize(true))
77
- assert_equal(test_data.expectedDiskSpaceIncludeSubs,
78
- dir_size.diskSpace(true))
79
- assert_equal(test_data.expectedDiskSpace - test_data.expectedFileSize,
80
- dir_size.unusedDiskSpace(false))
81
- assert_equal(
82
- (test_data.expectedDiskSpaceIncludeSubs -
83
- test_data.expectedFileSizeIncludeSubs), dir_size.unusedDiskSpace(true))
84
- assert_equal(test_data.expectedFileCount, dir_size.fileCount(false))
85
- assert_equal(test_data.expectedAvgFileSize, dir_size.avgFileSize(false))
86
- assert_equal(test_data.expectedFileCountIncludeSubs,
87
- dir_size.fileCount(true))
88
- assert_equal(test_data.expectedAvgFileSizeIncludeSubs,
89
- dir_size.avgFileSize(true))
90
- end
91
-
92
- def test_small_singleton
93
- make_sample_text_file('', 1000)
94
- @test_data.clusterSize = 4096
95
- @test_data.expectedFileSize = 1000
96
- @test_data.expectedDiskSpace = (4096 * 1)
97
- @test_data.expectedFileSizeIncludeSubs = 1000
98
- @test_data.expectedDiskSpaceIncludeSubs = (4096 * 1)
99
- @test_data.expectedFileCount = 1
100
- @test_data.expectedAvgFileSize = 1000
101
- @test_data.expectedFileCountIncludeSubs = 1
102
- @test_data.expectedAvgFileSizeIncludeSubs = 1000
103
- do_test_dir_size(@test_data)
104
- end
105
-
106
- def test_sub_dir
107
- make_sub_dir('suba')
108
- make_sub_dir("suba\\suba1")
109
- make_sample_text_file('', 1000)
110
- make_sample_text_file('suba', 1000)
111
- make_sample_text_file("suba\\suba1", 1000)
112
- make_sample_text_file("suba\\suba1", 2000)
113
- @test_data.clusterSize = 4096
114
- @test_data.expectedFileSize = 1000
115
- @test_data.expectedDiskSpace = (4096 * 1)
116
- @test_data.expectedFileSizeIncludeSubs = 5000
117
- @test_data.expectedDiskSpaceIncludeSubs = (4096 * 4)
118
- @test_data.expectedFileCount = 1
119
- @test_data.expectedAvgFileSize = 1000
120
- @test_data.expectedFileCountIncludeSubs = 4
121
- @test_data.expectedAvgFileSizeIncludeSubs = 1250
122
- do_test_dir_size(@test_data)
123
- end
124
-
125
- def test_empty_dir
126
- @test_data.clusterSize = 4096
127
- @test_data.expectedFileSize = 0
128
- @test_data.expectedDiskSpace = 0
129
- @test_data.expectedFileCount = 0
130
- @test_data.expectedAvgFileSize = 0
131
- @test_data.expectedFileCountIncludeSubs = 0
132
- @test_data.expectedAvgFileSizeIncludeSubs = 0
133
- @test_data.expectedFileSizeIncludeSubs = 0
134
- @test_data.expectedDiskSpaceIncludeSubs = 0
135
- do_test_dir_size(@test_data)
136
- end
137
- end
@@ -1,244 +0,0 @@
1
- # $Id: filetest.rb,v 1.3 2002/08/28 16:49:33 chrismo Exp $
2
- =begin
3
- --------------------------------------------------------------------------
4
- Copyright (c) 2001, Chris Morris
5
- All rights reserved.
6
-
7
- Redistribution and use in source and binary forms, with or without modification,
8
- are permitted provided that the following conditions are met:
9
-
10
- 1. Redistributions of source code must retain the above copyright notice, this
11
- list of conditions and the following disclaimer.
12
-
13
- 2. Redistributions in binary form must reproduce the above copyright notice,
14
- this list of conditions and the following disclaimer in the documentation and/or
15
- other materials provided with the distribution.
16
-
17
- 3. Neither the names Chris Morris, cLabs nor the names of contributors to this
18
- software may be used to endorse or promote products derived from this software
19
- without specific prior written permission.
20
-
21
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
22
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
25
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
29
- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- --------------------------------------------------------------------------------
32
- (based on BSD Open Source License)
33
- =end
34
-
35
- require File.dirname(__FILE__) + '/../file'
36
- require File.dirname(__FILE__) + '/../test'
37
- require 'test/unit'
38
-
39
- # don't inherit from clutiltest.rb.TempDirTest, it uses things that are tested here
40
- class TestUtilFile < Test::Unit::TestCase
41
- READ_WRITE = 0644
42
- READ_ONLY = 0444
43
-
44
- def create_test_file(file_name, content, mtime=Time.now, attr=READ_WRITE)
45
- f = File.new(file_name, 'w+')
46
- f.puts(content)
47
- f.flush
48
- f.close
49
- File.utime(mtime, mtime, file_name)
50
- File.chmod(attr, file_name)
51
- end
52
-
53
- def setup
54
- @files = []
55
- end
56
-
57
- def teardown
58
- @files.each { | filename | File.delete_all(filename) if File.exists?(filename) }
59
- @dirs.reverse_each { | dirname | Dir.delete(dirname) if File.exists?(dirname) } if @dirs
60
- end
61
-
62
- def do_test_del_tree(attr)
63
- @dirs = ['/tmp/utilfiletest',
64
- '/tmp/utilfiletest/subA',
65
- '/tmp/utilfiletest/subA/subA1',
66
- '/tmp/utilfiletest/subA/subA2',
67
- '/tmp/utilfiletest/subB',
68
- '/tmp/utilfiletest/subB/subB1',
69
- '/tmp/utilfiletest/subB/subB1/subB1a']
70
- @dirs.each { | dir_name | FileUtils::makedirs(dir_name) }
71
- @files = ['/tmp/utilfiletest/subA/blah.txt',
72
- '/tmp/utilfiletest/subA/subA1/blah.txt',
73
- '/tmp/utilfiletest/subA/subA2/blah.txt',
74
- '/tmp/utilfiletest/subB/blah.txt',
75
- '/tmp/utilfiletest/subB/subB1/blah.txt',
76
- '/tmp/utilfiletest/subB/subB1/subB1a/blah.txt']
77
- @files.each { | filename | create_test_file(filename, 'test content', Time.now, attr) }
78
- ClUtilFile.delTree(@dirs[0])
79
- @files.each { | file_name | assert(!File.exists?(file_name)) }
80
- @dirs.each { | dir_name | assert(!File.exists?(dir_name)) }
81
- end
82
-
83
- def test_del_tree
84
- do_test_del_tree(READ_WRITE)
85
- end
86
-
87
- def test_del_tree_ro_files
88
- do_test_del_tree(READ_ONLY)
89
- end
90
-
91
- def test_del_tree_file_name_match
92
- @dirs = ['/tmp/utilfiletest',
93
- '/tmp/utilfiletest/subA',
94
- '/tmp/utilfiletest/subB']
95
- @dirs.each { | dir_name | FileUtils::makedirs(dir_name) }
96
- @files_to_stay = ['/tmp/utilfiletest/subA/blah.doc',
97
- '/tmp/utilfiletest/subB/blah.doc']
98
- @files_to_delete = ['/tmp/utilfiletest/subA/blah.txt',
99
- '/tmp/utilfiletest/subB/blah.txt']
100
- @files << @files_to_stay
101
- @files << @files_to_delete
102
- @files.flatten!
103
-
104
- @files_to_stay.each { | filename | create_test_file(filename, 'test content') }
105
- @files_to_delete.each { | filename | create_test_file(filename, 'test content') }
106
- ClUtilFile.delTree(@dirs[0], '*.txt')
107
- @files_to_stay.each { | file_name | assert(File.exists?(file_name)) }
108
- @files_to_delete.each { | file_name | assert(!File.exists?(file_name)) }
109
- ClUtilFile.delTree(@dirs[0])
110
- @files_to_stay.each { | file_name | assert(!File.exists?(file_name)) }
111
- @files_to_delete.each { | file_name | assert(!File.exists?(file_name)) }
112
- @dirs.each { | dir_name | assert(!File.exists?(dir_name)) }
113
- end
114
-
115
- def test_del_tree_aging
116
- @dirs = ['/tmp/utilfiletest',
117
- '/tmp/utilfiletest/subA',
118
- '/tmp/utilfiletest/subB']
119
- @dirs.each { | dir_name | FileUtils::makedirs(dir_name) }
120
- @files_to_stay = ['/tmp/utilfiletest/subA/blah0.txt',
121
- '/tmp/utilfiletest/subB/blah1.txt']
122
- @files_to_delete = ['/tmp/utilfiletest/subA/blah2.txt',
123
- '/tmp/utilfiletest/subB/blah3.txt']
124
- @files << @files_to_stay
125
- @files << @files_to_delete
126
- @files.flatten!
127
-
128
- @files_to_stay.each { | filename | create_test_file(filename, 'test content') }
129
-
130
- day = 60 * 60 * 24
131
- eight_days = day * 8
132
- seven_days = day * 7
133
- @files_to_delete.each { | filename | create_test_file(filename, 'test content', Time.now - eight_days) }
134
-
135
- ClUtilFile.delTree(@dirs[0]) { | file_name |
136
- (File.mtime(file_name) < (Time.now - seven_days))
137
- }
138
-
139
- @files_to_stay.each { | file_name | assert(File.exists?(file_name)) }
140
- @files_to_delete.each { | file_name | assert(!File.exists?(file_name)) }
141
- ClUtilFile.delTree(@dirs[0])
142
- @files_to_stay.each { | file_name | assert(!File.exists?(file_name)) }
143
- @files_to_delete.each { | file_name | assert(!File.exists?(file_name)) }
144
- @dirs.each { | dir_name | assert(!File.exists?(dir_name)) }
145
- end
146
-
147
- def test_dir_files
148
- @dirs = ['/tmp/utilfiletest',
149
- '/tmp/utilfiletest/subA',
150
- '/tmp/utilfiletest/subA/subA1',
151
- '/tmp/utilfiletest/subA/subA2',
152
- '/tmp/utilfiletest/subB',
153
- '/tmp/utilfiletest/subB/subB1',
154
- '/tmp/utilfiletest/subB/subB1/subB1a']
155
- @dirs.each { | dir_name | FileUtils::makedirs(dir_name) }
156
- @files = ['/tmp/utilfiletest/subA/blah.txt',
157
- '/tmp/utilfiletest/subA/subA1/blah.txt',
158
- '/tmp/utilfiletest/subA/subA2/blah.txt',
159
- '/tmp/utilfiletest/subB/blah.txt',
160
- '/tmp/utilfiletest/subB/subB1/blah.txt',
161
- '/tmp/utilfiletest/subB/subB1/subB1a/blah.txt']
162
- @files.each { | filename | create_test_file(filename, 'test content') }
163
- #puts 'Dir.entries'
164
- #puts Dir.entries('/tmp/utilfiletest/subA/subA1/')
165
- #puts 'Dir.files'
166
- #puts Dir.files('/tmp/utilfiletest/subA/subA1/')
167
- assert_equal(["blah.txt"], Dir.files('/tmp/utilfiletest/subA/subA1/'))
168
- end
169
-
170
- def test_file_extension
171
- assert_equal('rb', File.extension('/test/file.rb'))
172
- assert_equal(nil, File.extension('/test/file'))
173
- assert_equal('rb', File.extension('/test/file.of.some.such.rb'))
174
- end
175
- end
176
-
177
- class TestBackup < TempDirTest
178
-
179
- def setup
180
- super
181
- @a_dir = make_sub_dir('a')
182
- @b_dir = make_sub_dir('b')
183
- end
184
-
185
- def test_backed_up_because_not_exists
186
- src = make_sample_text_file('a')
187
- dst = File.join(@b_dir, File.basename(src))
188
- assert_equal(true, File.backup(src, dst))
189
- assert_equal(true, File.exists?(dst))
190
- end
191
-
192
- def test_not_backed_up_because_exists
193
- src = make_sample_text_file('a')
194
- dst = File.join(@b_dir, File.basename(src))
195
- assert_equal(true, File.backup(src, dst))
196
- assert_equal(false, File.backup(src, dst))
197
- end
198
-
199
- def test_backed_up_because_exists_different_mtime
200
- src = make_sample_text_file('a')
201
- dst = File.join(@b_dir, File.basename(src))
202
- assert_equal(true, File.backup(src, dst))
203
-
204
- File.utime(0, 0, dst)
205
- assert_equal(true, File.backup(src, dst))
206
- end
207
-
208
- def test_backed_up_because_exists_different_size
209
- src = make_sample_text_file('a')
210
- dst = File.join(@b_dir, File.basename(src))
211
- assert_equal(true, File.backup(src, dst))
212
-
213
- File.open(dst, 'a+') do |f| f.print "bigger" end
214
- assert_equal(true, File.backup(src, dst))
215
- end
216
-
217
- def test_not_backed_up_because_exists_byte_diff_but_no_bincompare
218
- src = make_sample_text_file('a')
219
- dst = File.join(@b_dir, File.basename(src))
220
- assert_equal(true, File.backup(src, dst))
221
-
222
- guts = File.read(dst)
223
- guts.reverse!
224
- File.open(dst, 'w+') do |f| f.print guts end
225
- File.utime(File.atime(src), File.mtime(src), dst)
226
- assert_equal(false, File.backup(src, dst))
227
- end
228
-
229
- def test_backed_up_because_exists_byte_diff_and_bincompare
230
- src = make_sample_text_file('a')
231
- dst = File.join(@b_dir, File.basename(src))
232
- assert_equal(true, File.backup(src, dst))
233
-
234
- guts = File.read(dst)
235
- guts.reverse!
236
- File.open(dst, 'w+') do |f| f.print guts end
237
- File.utime(File.atime(src), File.mtime(src), dst)
238
- assert_equal(true, File.backup(src, dst, true))
239
- end
240
-
241
- end
242
-
243
-
244
-
@@ -1,11 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../install')
2
- require 'test/unit'
3
-
4
- class TestInstall < Test::Unit::TestCase
5
- def test_set_prefix
6
- install = CLabs::Install.new
7
- conf = install.get_conf({'prefix' => '/tmp/ruby'})
8
- assert_equal('/tmp/ruby', conf['prefix'])
9
- assert_equal('/tmp/ruby/lib/ruby/site_ruby', conf['sitedir'])
10
- end
11
- end
@@ -1,43 +0,0 @@
1
- # $Id: progresstest.rb,v 1.2 2003/09/12 14:53:53 chrismo Exp $
2
- =begin
3
- --------------------------------------------------------------------------
4
- Copyright (c) 2002, Chris Morris
5
- All rights reserved.
6
-
7
- Redistribution and use in source and binary forms, with or without modification,
8
- are permitted provided that the following conditions are met:
9
-
10
- 1. Redistributions of source code must retain the above copyright notice, this
11
- list of conditions and the following disclaimer.
12
-
13
- 2. Redistributions in binary form must reproduce the above copyright notice,
14
- this list of conditions and the following disclaimer in the documentation and/or
15
- other materials provided with the distribution.
16
-
17
- 3. Neither the names Chris Morris, cLabs nor the names of contributors to this
18
- software may be used to endorse or promote products derived from this software
19
- without specific prior written permission.
20
-
21
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
22
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE
25
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
29
- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30
- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
- --------------------------------------------------------------------------------
32
- =end
33
-
34
- $LOAD_PATH << '..'
35
- require 'progress'
36
-
37
- p = Progress.new(10)
38
- p.start
39
- (0..9).each do |x| puts p.progress(true); sleep 0.5 end
40
-
41
- p = Progress.new(10)
42
- p.start
43
- (0..9).each do |x| print p.in_place_pct(true); sleep 0.5 end