knut_tools 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,35 @@
1
+ require 'test/unit'
2
+
3
+ $:.unshift('../lib') if $0 == __FILE__
4
+ require "knut_tools/file_winlink.rb"
5
+ require "knut_tools/catch_output"
6
+
7
+
8
+ class Test_shortcut < Test::Unit::TestCase
9
+ def setup()
10
+ @tmpdir = 'tmp_testdata'
11
+ @linkname = "#{@tmpdir}/link4test.lnk"
12
+ Dir.mkdir(@tmpdir) unless File.exist?(@tmpdir)
13
+ end
14
+ def teardown
15
+ File.delete(@linkname) if File.exist?(@linkname)
16
+ Dir.delete(@tmpdir)
17
+ end
18
+ #Check behaviour with unexisting files.
19
+ def test_exceptions()
20
+ assert_raise(Errno::ENOENT){mk_link( 'no_existing', 'xx.lnk') }
21
+ end
22
+
23
+ def test_create()
24
+
25
+ #Clear old testcases.
26
+ File.delete(@linkname) if File.exist?(@linkname)
27
+
28
+ assert_equal(false, File.exist?(@linkname))
29
+ Frame_catch_output.catch_stdout{
30
+ mk_link( __FILE__, @linkname, "This is a link to #{__FILE__}")
31
+ }
32
+ assert_equal(true, File.exist?(@linkname))
33
+
34
+ end
35
+ end
@@ -0,0 +1,195 @@
1
+ $:.unshift('../lib') if $0 == __FILE__
2
+ require 'test/unit'
3
+ require 'knut_tools/rake/gempackager.rb'
4
+ require 'knut_tools/catch_output'
5
+
6
+ class Test_Gem_packer < Test::Unit::TestCase
7
+
8
+ def test_create()
9
+ gemdef = Gem_packer.new('test', '0.1.0')
10
+ assert_kind_of(Gem_packer, gemdef)
11
+ assert_kind_of(Gem::Specification, gemdef.spec)
12
+ assert_equal('0.1.0', gemdef.spec.version.to_s)
13
+ assert_equal(gemdef.version, gemdef.spec.version.to_s)
14
+
15
+ assert_raise(ArgumentError){ Gem_packer.new('test', '0.1.0', :xx=>:c)}
16
+ assert_raise(ArgumentError){ Gem_packer.new('test', '0.1.0', 1 )}
17
+
18
+ end
19
+
20
+ def test_create_block()
21
+ gemdef = Gem_packer.new('test', '0.1.0'){|gemdef, spec|
22
+ assert_kind_of(Gem_packer, gemdef)
23
+ assert_kind_of(Gem::Specification, spec)
24
+ }
25
+ end
26
+ def test_version()
27
+ gemdef = Gem_packer.new('test_version', '0.1.0')
28
+ gemdef.versions << '0.1.0'
29
+ assert_equal('0.1.0', gemdef.spec.version.to_s)
30
+ assert_equal(gemdef.version, gemdef.spec.version.to_s)
31
+
32
+ app = Rake.application
33
+ assert_nothing_raised(){ app["test_version:check_version"].invoke }
34
+
35
+ #force a version error
36
+ gemdef.spec.version = '1.0.0'
37
+ app["test_version:check_version"].reenable
38
+ assert_raise(Gem_packer::VersionError){ app["test_version:check_version"].invoke }
39
+
40
+ #
41
+ gemdef = Gem_packer.new('test_version2', '0.1.0')
42
+ gemdef.versions << '0.1.1' #Assignment must be done before task is called
43
+ assert_equal('0.1.0', gemdef.spec.version.to_s)
44
+ assert_equal(gemdef.version, gemdef.spec.version.to_s)
45
+ assert_raise(Gem_packer::VersionError){ app["test_version2:check_version"].invoke }
46
+
47
+ #~ puts `call rake -f my_rake4gem.rb -T`
48
+ end
49
+
50
+ def test_tasks_generell()
51
+ app = Rake.application
52
+ assert_kind_of(Rake::Task, app['default'])
53
+ assert_kind_of(Rake::Task, app['check_version'])
54
+
55
+ assert_kind_of(Array, app['check_version'].prerequisites)
56
+
57
+ end
58
+ def test_tasks()
59
+
60
+ app = Rake.application
61
+ test_name = 'test_tasks' #test gem for this test. Must be uniq for all tests
62
+ tasks_before = app.tasks #get previous task list
63
+
64
+ #No test_tasks exist in advance
65
+ assert_raise(RuntimeError){app[test_name]}
66
+ Gem_packer::TASKLIST.each{|task|
67
+ assert_raise(RuntimeError){app["#{test_name}:#{task}"]}
68
+ }
69
+
70
+ #Build new action -> new tasks
71
+ gemdef = Gem_packer.new(test_name, '0.1.0')
72
+
73
+ #test_tasks exist after gem-definition
74
+ assert_nothing_raised(RuntimeError){app[test_name]}
75
+ assert_kind_of(Rake::Task, app[test_name])
76
+ Gem_packer::TASKLIST.each{|task|
77
+ assert_nothing_raised('Expected task from Gem_packer::TASKLIST missing'){ app["#{test_name}:#{task}"] }
78
+ assert_kind_of(Rake::Task, app["#{test_name}:#{task}"])
79
+ #check 'global' tasks
80
+ assert_equal(true, app[task].prerequisites.include?("#{test_name}:#{task}"))
81
+ }
82
+
83
+ #Check special tasks
84
+ assert_equal(true, app[test_name].prerequisites.include?("#{test_name}:default"))
85
+ assert_equal(["check"], app["#{test_name}:default"].prerequisites)
86
+ assert_equal(%w{check_version check_gemspec}, app["#{test_name}:check"].prerequisites)
87
+
88
+ #All new tasks
89
+ #~ assert_equal(Gem_packer::TASKLIST.size + 1, (app.tasks - tasks_before).size)
90
+ assert_equal([test_name] + Gem_packer::TASKLIST.map{|task| "#{test_name}:#{task}"}.sort,
91
+ (app.tasks - tasks_before).map{|x|x.name}
92
+ )
93
+
94
+ end
95
+ =begin rdoc
96
+ This test requires following files to be successfull:
97
+ testdata/
98
+ testdata/dummy_test.rb
99
+ =end
100
+ def test_test_task()
101
+
102
+ app = Rake.application
103
+ test_name = 'test_test_tasks' #test gem for this test. Must be uniq for all tests
104
+ gemdef = Gem_packer.new(test_name, '0.1.0')
105
+
106
+ #Missing test directory
107
+ assert_raise(ArgumentError){ gemdef.define_test()}
108
+ assert_raise(ArgumentError){ gemdef.define_test('not_existing_directory')}
109
+
110
+ assert_equal(true, File.exist?('testdata'))
111
+ #Require path missing
112
+ assert_raise(ArgumentError){ gemdef.define_test('testdata') }
113
+
114
+ #define gem with reachable require path
115
+ gemdef.spec.require_path = '.'
116
+ #no test files found
117
+ assert_raise(ArgumentError){ gemdef.define_test('testdata') }
118
+ assert_raise(ArgumentError){ gemdef.define_test('testdata', FileList['xxxx']) }
119
+
120
+ #Test files available
121
+ tasks_before = app.tasks
122
+ assert_nothing_raised{
123
+ assert_kind_of(Rake::TestTask, gemdef.define_test('testdata', FileList['dummy_test.rb']))
124
+ }
125
+ #One more test available
126
+ assert_equal(["#{test_name}:test"], (app.tasks - tasks_before).map{|x|x.name} )
127
+ assert_kind_of(Rake::Task, app["#{test_name}:test"])
128
+
129
+ end #test_test_task()
130
+ def test_mk_gem()
131
+
132
+ app = Rake.application
133
+ test_name = 'test_mk_gem' #test gem for this test. Must be uniq for all tests
134
+ gemdef = Gem_packer.new(test_name, '0.1.0'){|gem,spec|
135
+ spec.author = 'Author'
136
+ spec.email = 'Email'
137
+ spec.homepage = 'http://www.rubypla.net'
138
+ spec.summary = 'Summary'
139
+ spec.description = 'Description'
140
+ spec.rubyforge_project = 'test'
141
+ }
142
+
143
+ assert_equal(false, File.exist?("#{gemdef.spec.full_name}.gem"))
144
+ Frame_catch_output.catch_stdout{
145
+ app["#{test_name}:gem"].invoke
146
+ }
147
+ assert_equal(true, File.exist?("#{gemdef.spec.full_name}.gem"))
148
+
149
+ File.delete("#{gemdef.spec.full_name}.gem")
150
+ end
151
+
152
+ def test_mk_install()
153
+ #no testcases
154
+ end #test_mk_install()
155
+ def test_ftp_rdoc()
156
+ app = Rake.application
157
+ test_name = 'test_ftp_rdoc' #test gem for this test. Must be uniq for all tests
158
+ gemdef = nil
159
+ Frame_catch_output.catch_stdout{
160
+ gemdef = Gem_packer.new(test_name, '0.1.0')
161
+ }
162
+ assert_kind_of(Rake::Task, app["#{test_name}:ftp_rdoc"] )
163
+ assert_raise(Gem_packer::BlockError){ app["#{test_name}:ftp_rdoc"].invoke }
164
+
165
+ gemdef.public = true #Now it should be possible (but without add_ftp_connection nothing will happen)
166
+ assert_nothing_raised(Gem_packer::BlockError){ app["#{test_name}:ftp_rdoc"].invoke }
167
+
168
+ #no further testcases
169
+ end #test_mk_push()
170
+ def test_mk_push()
171
+ app = Rake.application
172
+ test_name = 'test_push' #test gem for this test. Must be uniq for all tests
173
+ gemdef = nil
174
+ Frame_catch_output.catch_stdout{
175
+ gemdef = Gem_packer.new(test_name, '0.1.0'){|gem,spec|
176
+ spec.author = 'Author'
177
+ spec.email = 'Email'
178
+ spec.homepage = 'http://www.rubypla.net'
179
+ spec.summary = 'Summary'
180
+ spec.description = 'Description'
181
+ spec.rubyforge_project = 'test'
182
+ }
183
+ app["#{test_name}:gem"].invoke #call prerequisite for push
184
+ }
185
+ assert_kind_of(Rake::Task, app["#{test_name}:push"] )
186
+ assert_raise(Gem_packer::BlockError){ app["#{test_name}:push"].invoke }
187
+ assert_nothing_raised{ File.delete(gemdef.spec.full_name + '.gem') }
188
+ #not tested. else we "push" the test
189
+ #~ gemdef.public = true #Now it should be possible
190
+ #~ assert_nothing_raised(Gem_packer::BlockError){ app["#{test_name}:ftp_rdoc"].invoke }
191
+
192
+ #no further testcases
193
+ end #test_mk_push()
194
+
195
+ end
@@ -0,0 +1,105 @@
1
+ $:.unshift('../lib') if $0 == __FILE__
2
+
3
+ #~ gem 'rake', '= 0.8.7'
4
+ #~ gem 'test-unit', '= ???'
5
+ require 'test/unit'
6
+ require 'knut_tools/catch_output'
7
+ require 'knut_tools/rake/testtask.rb'
8
+ require 'rake/clean'
9
+
10
+ =begin
11
+ C:\Program Files\ruby\lib\ruby\gems\1.8\gems\rake-0.8.7\lib\rake
12
+ C:\Program Files\Ruby19\lib\ruby\gems\1.9.1\gems\rake-0.8.7\lib\rake
13
+
14
+ Problem:
15
+ Test lesen Datei.
16
+ Mit Rake::TestTask.new ist kein Verzeichniswechsel m�glich.
17
+
18
+ =end
19
+
20
+ $testdir = "testdir"
21
+ $testfile = "my_test.rb"
22
+
23
+ #
24
+ #Build the testfile
25
+ #
26
+ desc 'Make the testdata'
27
+ task :mk_testdata do
28
+ Dir.mkdir($testdir) unless File.directory?($testdir)
29
+ File.open('hello_world.txt', 'w'){ |f| f << 'Hello World'}
30
+ File.open("#{$testdir}/#{$testfile}", 'w'){ |f| f << <<testscript
31
+ require 'test/unit'
32
+
33
+ class Test__xx < Test::Unit::TestCase
34
+ def test_xx()
35
+ assert_equal(true, File.exist?('../hello_world.txt'))
36
+ end #
37
+ end
38
+ testscript
39
+ }
40
+ end
41
+
42
+ desc 'Delete the testfiles'
43
+ CLOBBER.include(['hello_world.txt', $testdir])
44
+
45
+ Rake::TestTask.new(:test_ok) do |t|
46
+ t.dir = $testdir
47
+ t.test_files = [$testfile].flatten
48
+ t.verbose = true
49
+ end
50
+ =begin
51
+ This test stopps with a "not found error"
52
+ Class: <Errno::ENOENT>
53
+ Message: <"No such file or directory - testdir">
54
+ =end
55
+ Rake::TestTask.new(:test_err) do |t|
56
+ t.test_files = ["#{$testdir}/#{$testfile}"]
57
+ t.verbose = true
58
+ end
59
+
60
+ task :default => :mk_testdata
61
+ task :default => :test_ok
62
+ #~ task :default => :test_err #makes an error
63
+ task :default => :clobber
64
+
65
+ if $0 == __FILE__
66
+ #~ app = Rake.application
67
+ #~ app[:default].invoke
68
+ end
69
+
70
+
71
+ class Test_testtask < Test::Unit::TestCase
72
+ def test_rake_testtask_def()
73
+ assert_equal(true, Rake::TestTask.new.respond_to?(:'dir='))
74
+ end
75
+
76
+ def test_rake_testtask()
77
+ app = Rake.application
78
+ app[:mk_testdata].invoke
79
+
80
+
81
+ assert_nothing_raised{ app[:test_ok].invoke }
82
+
83
+
84
+ notify("Frame_catch_output.catch_screen_output does not work as expected with ruby 1.9.1.")
85
+ stdout, stderr = Frame_catch_output.catch_screen_output{
86
+ assert_nothing_raised{ app[:test_ok].invoke }
87
+ }
88
+ assert_match( %r{Loaded suite .*lib/rake/rake_test_loader
89
+ Started
90
+ .
91
+ Finished in .* seconds.
92
+
93
+ 1 tests, 1 assertions, 0 failures, 0 errors}, stdout)
94
+
95
+
96
+ Frame_catch_output.catch_screen_output{
97
+ assert_raise(RuntimeError){ app[:test_err].invoke }
98
+ }
99
+ Frame_catch_output.catch_stderr{
100
+ app[:clobber].invoke
101
+ }
102
+ #~ assert_raise(Errno::ENOENT){ app[:test_err].invoke }
103
+ #~ assert_equal_filecontent( "/test.txt", DUMMYTEXT )
104
+ end
105
+ end
@@ -0,0 +1,72 @@
1
+ =begin rdoc
2
+ This function is only for Ruby 1.8.
3
+ Ruby 1.9 includes already the full name of the included packages.
4
+
5
+ =end
6
+ if RUBY_VERSION =~ /1.9/
7
+ puts "Obsolte function for Ruby #{RUBY_VERSION}"
8
+ exit
9
+ end
10
+
11
+ require 'test/unit'
12
+
13
+
14
+
15
+ $:.unshift('../lib') if $0 == __FILE__
16
+ require 'knut_tools/catch_output'
17
+ require 'knut_tools/required_what'
18
+
19
+
20
+ class Test_required_what < Test::Unit::TestCase
21
+ def test_system()
22
+ assert_equal($:, $LOAD_PATH)
23
+ assert_equal($", $LOADED_FEATURES)
24
+ assert_equal("global-variable", defined? $LOADED_FEATURES_FULL)
25
+ #~ assert_equal([], $LOADED_FEATURES_FULL)
26
+ end
27
+
28
+ def test_load()
29
+
30
+ before = $LOADED_FEATURES.dup
31
+ before_full = $LOADED_FEATURES_FULL.dup
32
+
33
+ Frame_catch_output.catch_stdout{
34
+ assert_nothing_raised{ require 'testdata/hello_world' }
35
+ }
36
+
37
+ assert_equal(["testdata/hello_world.rb"], $LOADED_FEATURES - before)
38
+ assert_equal(["./testdata/hello_world.rb"], $LOADED_FEATURES_FULL - before_full)
39
+
40
+ end
41
+
42
+ def test_load_again()
43
+
44
+ load_result = nil
45
+ before = $LOADED_FEATURES_FULL.dup
46
+
47
+ assert_nothing_raised{
48
+ load_result = require 'knut_tools/catch_output'
49
+ }
50
+ assert_equal( false, load_result)
51
+ assert_equal([], $LOADED_FEATURES_FULL - before)
52
+
53
+ end
54
+
55
+ def test_singleton()
56
+
57
+ load_result = nil
58
+ before = $LOADED_FEATURES_FULL.dup
59
+ File.open('singleton.rb', 'w'){} unless File.exist?('singleton.rb')
60
+
61
+ load_result = require 'singleton.rb'
62
+ #If called from rakefile, singleton already loaded.
63
+ if load_result
64
+ assert_equal("C:/Program Files/ruby/lib/ruby/1.8/singleton.rb", ($LOADED_FEATURES_FULL - before).last)
65
+ assert_match(%r{Filename conflict in require: singleton.rb: \[.*singleton.rb\", \"./singleton.rb\"\]}, $LOADED_FEATURES_WARN.last )
66
+ end
67
+
68
+ File.delete('singleton.rb')
69
+
70
+ end
71
+ end
72
+
@@ -0,0 +1,144 @@
1
+ require 'test/unit'
2
+ require 'more_unit_test/assert_stdout.rb'
3
+
4
+ $: << '../lib' if $0 == __FILE__
5
+ require 'knut_tools/yaml'
6
+
7
+ #~ $expected = File.dirname(__FILE__) + '/tmp_expected'
8
+ #~ $folder_for_failure = File.dirname(__FILE__) + '/tmp_failure'
9
+
10
+
11
+ class Test_knut_tools_yaml < Test::Unit::TestCase
12
+ def test_yaml_load_with_warning()
13
+ assert_stdout_block("!YAML.load: Double Hash-key: a\n"){YAML.load_with_warning(<<-xx
14
+ a: A
15
+ a: A
16
+ xx
17
+ )}
18
+ assert_stdout_block("!YAML.load: Double Hash-key: 1\n"){YAML.load_with_warning(<<-xx
19
+ 1: [ eins, one, un, une ]
20
+ 2: [ zwei, two, deux ]
21
+ 3:
22
+ foo: bar
23
+ baz: foo
24
+ 1: [ eins ]
25
+ 10: zehn
26
+ 0xA: zehn, aber hex
27
+ xx
28
+ )}
29
+ end #test_yaml_load_with_warning
30
+ #
31
+ #Unfortenatly only level 1.
32
+ #
33
+ def test_yaml_load_with_warning_2()
34
+ assert_stdout_block(""){YAML.load_with_warning(<<-xx
35
+ 1:
36
+ a: A
37
+ a: A
38
+ xx
39
+ )}
40
+ assert_stdout_block(""){YAML.load_with_warning(<<-xx
41
+ -
42
+ a: A
43
+ a: A
44
+ xx
45
+ )}
46
+ end
47
+ end #Test_knut_tools
48
+
49
+ class Test_knut_tools_yaml_hash < Test::Unit::TestCase
50
+
51
+ Hash1 = { 2 => :two, 1 => :one }
52
+ Hash2 = { 'zwei' => 2, 'eins' => 1 }
53
+ ListWithHash = [ Hash1, Hash2 ]
54
+
55
+ #
56
+ #Default is "sorted"
57
+ #
58
+ def test_hash_default()
59
+ assert_equal(
60
+ "--- \n1: :one\n2: :two\n",
61
+ Hash1.to_yaml
62
+ )
63
+ assert_equal(
64
+ "--- \neins: 1\nzwei: 2\n",
65
+ Hash2.to_yaml
66
+ )
67
+ end #test_hash_default()
68
+ def test_ListWithHash()
69
+ assert_equal(
70
+ "--- \n- 1: :one\n 2: :two\n- eins: 1\n zwei: 2\n",
71
+ ListWithHash.to_yaml
72
+ )
73
+ end #test_ListWithHash()
74
+ def test_hash_without_hash()
75
+ assert_nothing_raised{[2,1].to_yaml}
76
+ assert_nothing_raised{'aaa'.to_yaml}
77
+ assert_nothing_raised{%w{a b c d e}.to_yaml}
78
+ end
79
+ def test_hash_true()
80
+ assert_equal(
81
+ "--- \n1: :one\n2: :two\n",
82
+ Hash1.to_yaml(:SortKeys => true)
83
+ )
84
+ assert_equal(
85
+ "--- \neins: 1\nzwei: 2\n",
86
+ Hash2.to_yaml(:SortKeys => true)
87
+ )
88
+ end
89
+ #
90
+ #This result may change. There is no fixed behaviuor
91
+ #
92
+ def test_hash_false()
93
+ #~ assert_equal(
94
+ #~ "--- \n1: :one\n2: :two\n",
95
+ #~ Hash1.to_yaml(:SortKeys => false)
96
+ #~ )
97
+ #~ assert_equal(
98
+ #~ "--- \nzwei: 2\neins: 1\n",
99
+ #~ Hash2.to_yaml(:SortKeys => false),
100
+ #~ "Result may change"
101
+ #~ )
102
+ end
103
+ def test_hash_symbols()
104
+ hash_sym = { :b => 'B', :a => 'A' }
105
+ assert_equal(
106
+ "--- \n:a: A\n:b: B\n",
107
+ hash_sym.to_yaml(:SortKeys => true)
108
+ )
109
+ #random the same
110
+ assert_equal(
111
+ "--- \n:a: A\n:b: B\n",
112
+ hash_sym.to_yaml(:SortKeys => false)
113
+ )
114
+ end
115
+ def test_hash_symbols()
116
+ hash_sym_mix = { :b => 'B', 'a' => 'A' }
117
+ assert_equal(
118
+ "--- \na: A\n:b: B\n",
119
+ hash_sym_mix.to_yaml(:SortKeys => true)
120
+ )
121
+ #by random the same
122
+ assert_equal(
123
+ "--- \na: A\n:b: B\n",
124
+ hash_sym_mix.to_yaml(:SortKeys => false)
125
+ )
126
+ end
127
+ def test_hash_mix_num()
128
+ hash_sym_mix = { 2 => 2, 1 => 1, '10' => 10 }
129
+ assert_equal(
130
+ "--- \n1: 1\n\"10\": 10\n2: 2\n",
131
+ hash_sym_mix.to_yaml(:SortKeys => true)
132
+ )
133
+ #by random the same
134
+ #~ assert_equal(
135
+ #~ "--- \n1: 1\n2: 2\n\"10\": 10\n",
136
+ #~ hash_sym_mix.to_yaml(:SortKeys => false),
137
+ #~ "Result may change"
138
+ #~ )
139
+ end
140
+ end
141
+
142
+ __END__
143
+ - first item
144
+ - second item