ritsu 0.7.0 → 0.7.1
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/README.md +95 -95
- data/bin/define_cpp_string +54 -54
- data/bin/ritsu +31 -31
- data/lib/ritsu.rb +16 -16
- data/lib/ritsu/block.rb +258 -258
- data/lib/ritsu/ext/cuda.rb +5 -5
- data/lib/ritsu/ext/cuda/external_library.rb +15 -15
- data/lib/ritsu/ext/cuda/project.rb +31 -31
- data/lib/ritsu/ext/cuda/src_files/cu_file.rb +46 -46
- data/lib/ritsu/ext/cuda/src_files/target_cmake_lists.rb +110 -110
- data/lib/ritsu/ext/cuda/target.rb +16 -16
- data/lib/ritsu/ext/cuda/targets/library.rb +16 -16
- data/lib/ritsu/ext/fake_install.rb +2 -2
- data/lib/ritsu/ext/fake_install/project.rb +16 -16
- data/lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb +45 -45
- data/lib/ritsu/ext/glsl.rb +1 -1
- data/lib/ritsu/ext/glsl/src_files/frag_file.rb +70 -70
- data/lib/ritsu/ext/glsl/src_files/vert_file.rb +70 -70
- data/lib/ritsu/ext/qt.rb +4 -4
- data/lib/ritsu/ext/qt/project.rb +47 -47
- data/lib/ritsu/ext/qt/src_files/header_file.rb +60 -60
- data/lib/ritsu/ext/qt/src_files/target_cmake_lists.rb +106 -106
- data/lib/ritsu/ext/qt/src_files/ui_file.rb +46 -46
- data/lib/ritsu/ext/test_case.rb +19 -19
- data/lib/ritsu/external_library.rb +46 -46
- data/lib/ritsu/project.rb +93 -93
- data/lib/ritsu/project_generator.rb +33 -33
- data/lib/ritsu/project_generators/default_generator.rb +72 -72
- data/lib/ritsu/project_generators/default_generator_files/Thorfile.erb +8 -8
- data/lib/ritsu/project_generators/default_generator_files/meta/project.rb.erb +10 -10
- data/lib/ritsu/src_file.rb +79 -79
- data/lib/ritsu/src_files.rb +12 -12
- data/lib/ritsu/src_files/cpp_file.rb +43 -43
- data/lib/ritsu/src_files/executable_cmake_lists.rb +39 -39
- data/lib/ritsu/src_files/header_file.rb +60 -60
- data/lib/ritsu/src_files/project_cmake_lists.rb +133 -133
- data/lib/ritsu/src_files/project_config_header_file.rb +14 -14
- data/lib/ritsu/src_files/project_config_header_template_file.rb +44 -44
- data/lib/ritsu/src_files/shared_library_cmake_lists.rb +39 -39
- data/lib/ritsu/src_files/static_library_cmake_lists.rb +39 -39
- data/lib/ritsu/src_files/target_cmake_lists.rb +189 -189
- data/lib/ritsu/src_files/templated_src_file.rb +47 -47
- data/lib/ritsu/src_files/unit.rb +32 -32
- data/lib/ritsu/target.rb +154 -154
- data/lib/ritsu/targets.rb +3 -3
- data/lib/ritsu/targets/executable.rb +44 -44
- data/lib/ritsu/targets/library.rb +29 -29
- data/lib/ritsu/targets/shared_library.rb +38 -38
- data/lib/ritsu/targets/static_library.rb +32 -32
- data/lib/ritsu/template.rb +68 -68
- data/lib/ritsu/template_policies.rb +132 -132
- data/lib/ritsu/test_helpers.rb +123 -123
- data/lib/ritsu/thors/default_thor.rb +1 -1
- data/lib/ritsu/utility.rb +7 -7
- data/lib/ritsu/utility/accessors.rb +29 -29
- data/lib/ritsu/utility/check_upon_add_set.rb +34 -34
- data/lib/ritsu/utility/file_robot.rb +128 -128
- data/lib/ritsu/utility/files.rb +12 -12
- data/lib/ritsu/utility/instance_dependencies.rb +112 -112
- data/lib/ritsu/utility/instance_set.rb +28 -28
- data/lib/ritsu/utility/platform.rb +20 -20
- data/lib/ritsu/utility/simple_io.rb +64 -64
- data/lib/ritsu/utility/single_instance.rb +33 -33
- data/lib/ritsu/utility/strings.rb +40 -40
- data/test/ritsu/block_test.rb +196 -196
- data/test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb +63 -63
- data/test/ritsu/external_library_test.rb +41 -41
- data/test/ritsu/project_generators/default_generator_test.rb +34 -34
- data/test/ritsu/project_test.rb +127 -127
- data/test/ritsu/src_file_test.rb +69 -69
- data/test/ritsu/src_files/cpp_file_test.rb +42 -42
- data/test/ritsu/src_files/executable_cmake_lists_test.rb +92 -92
- data/test/ritsu/src_files/header_file_test.rb +57 -57
- data/test/ritsu/src_files/project_cmake_lists_test.rb +159 -159
- data/test/ritsu/src_files/shared_library_cmake_lists_test.rb +54 -54
- data/test/ritsu/src_files/static_library_cmake_lists_test.rb +54 -54
- data/test/ritsu/src_files/target_cmake_lists_test.rb +15 -15
- data/test/ritsu/target_test.rb +105 -105
- data/test/ritsu/targets/executable_test.rb +10 -10
- data/test/ritsu/targets/shared_library_test.rb +10 -10
- data/test/ritsu/targets/static_library_test.rb +10 -10
- data/test/ritsu/utility/accessors_test.rb +14 -14
- data/test/ritsu/utility/check_upon_add_set_test.rb +31 -31
- data/test/ritsu/utility/file_robot_test.rb +175 -175
- data/test/ritsu/utility/strings_test.rb +28 -28
- data/test/test_helpers.rb +3 -3
- metadata +72 -124
- data/Thorfile +0 -104
- data/VERSION +0 -1
@@ -1,16 +1,16 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
-
|
3
|
-
class TargetCMakeListsTest < Test::Unit::TestCase
|
4
|
-
include Ritsu::SetupProjectAndClearEverythingElse
|
5
|
-
|
6
|
-
must "src_path must be target_name/CMakeLists.txt" do
|
7
|
-
target = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
8
|
-
assert_equal "abc/CMakeLists.txt", target.cmake_lists.src_path
|
9
|
-
end
|
10
|
-
|
11
|
-
must "src_path must be project_dir/target_name/CMakeLists.txt" do
|
12
|
-
target = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
13
|
-
assert_equal "#{@project.project_dir}/src/abc/CMakeLists.txt",
|
14
|
-
target.cmake_lists.abs_path
|
15
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class TargetCMakeListsTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
5
|
+
|
6
|
+
must "src_path must be target_name/CMakeLists.txt" do
|
7
|
+
target = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
8
|
+
assert_equal "abc/CMakeLists.txt", target.cmake_lists.src_path
|
9
|
+
end
|
10
|
+
|
11
|
+
must "src_path must be project_dir/target_name/CMakeLists.txt" do
|
12
|
+
target = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
13
|
+
assert_equal "#{@project.project_dir}/src/abc/CMakeLists.txt",
|
14
|
+
target.cmake_lists.abs_path
|
15
|
+
end
|
16
16
|
end
|
data/test/ritsu/target_test.rb
CHANGED
@@ -1,106 +1,106 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../test_helpers"
|
2
|
-
|
3
|
-
class TargetTest < Test::Unit::TestCase
|
4
|
-
include Ritsu
|
5
|
-
include Ritsu::Targets
|
6
|
-
include Ritsu::SetupProjectAndClearEverythingElse
|
7
|
-
|
8
|
-
must "contruct instances and keep track of them correctly" do
|
9
|
-
Executable.new("abc")
|
10
|
-
SharedLibrary.new("def")
|
11
|
-
StaticLibrary.new("ghi")
|
12
|
-
|
13
|
-
assert_equal 3, Target.instances.length
|
14
|
-
|
15
|
-
assert Target.instances.any? {|x| x.name =='abc'}
|
16
|
-
assert Target.instances.any? {|x| x.name == 'def'}
|
17
|
-
assert Target.instances.any? {|x| x.name == 'ghi'}
|
18
|
-
|
19
|
-
assert Target.instances.any? {|x| x.kind_of?(Executable)}
|
20
|
-
assert Target.instances.any? {|x| x.kind_of?(SharedLibrary)}
|
21
|
-
assert Target.instances.any? {|x| x.kind_of?(StaticLibrary)}
|
22
|
-
end
|
23
|
-
|
24
|
-
must "set the project to the default project if none is explicitly specified" do
|
25
|
-
abc = Executable.new('abc')
|
26
|
-
assert_equal @project, abc.project
|
27
|
-
end
|
28
|
-
|
29
|
-
must "upon creation, add the target to the given project" do
|
30
|
-
abc = Executable.new('abc', :project => @project)
|
31
|
-
assert_equal 1, @project.targets.length
|
32
|
-
assert @project.targets.any? {|x| x.name == 'abc'}
|
33
|
-
end
|
34
|
-
|
35
|
-
def setup_abcd_dependency_tree
|
36
|
-
@a = SharedLibrary.new('a')
|
37
|
-
@b = SharedLibrary.new('b')
|
38
|
-
@c = SharedLibrary.new('c')
|
39
|
-
@d = StaticLibrary.new('d')
|
40
|
-
|
41
|
-
@b.dependency_targets << @a
|
42
|
-
@c.dependency_targets << @b
|
43
|
-
@d.dependency_targets << @a
|
44
|
-
|
45
|
-
@nodes = {:a => @a, :b => @b, :c => @c, :d => @d}
|
46
|
-
end
|
47
|
-
|
48
|
-
must "be able to determine which target it depends directly on" do
|
49
|
-
setup_abcd_dependency_tree
|
50
|
-
|
51
|
-
[[:b,:a], [:c,:b], [:d,:a]].each do |u,v|
|
52
|
-
assert @nodes[u].depends_directly_on_target?(@nodes[v]),
|
53
|
-
"#{u} must depend directly on #{v}"
|
54
|
-
end
|
55
|
-
|
56
|
-
[[:c,:a], [:a,:b], [:b,:b], [:b,:d]].each do |u,v|
|
57
|
-
assert !(@nodes[u].depends_directly_on_target?(@nodes[v])),
|
58
|
-
"#{u} must not depend directly on #{v}"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
must "be able to determine which target it depends on, even not directly, on" do
|
63
|
-
setup_abcd_dependency_tree
|
64
|
-
|
65
|
-
[[:b,:a], [:c,:b], [:c,:b], [:d,:a]].each do |u,v|
|
66
|
-
assert @nodes[u].depends_on_target?(@nodes[v]),
|
67
|
-
"#{u} must depend on #{v}"
|
68
|
-
end
|
69
|
-
|
70
|
-
[[:a,:a], [:a,:b], [:a,:c], [:a,:d], [:b,:d], [:b,:c], [:c,:d], [:d,:c]].each do |u,v|
|
71
|
-
assert !(@nodes[u].depends_on_target?(@nodes[v])),
|
72
|
-
"#{u} must not depend on #{v}"
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
must "compute topological orders correctly" do
|
77
|
-
setup_abcd_dependency_tree
|
78
|
-
|
79
|
-
Target.compute_topological_orders
|
80
|
-
|
81
|
-
[[:b,:a], [:c,:b], [:d,:a]].each do |u,v|
|
82
|
-
assert @nodes[u].topological_order > @nodes[v].topological_order,
|
83
|
-
"#{u} should come after #{v} in topological ordering"
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
must "src_dir" do
|
88
|
-
abc = Executable.new('abc')
|
89
|
-
assert_equal "abc", abc.src_dir
|
90
|
-
end
|
91
|
-
|
92
|
-
must "compute src_path correctly" do
|
93
|
-
abc = Executable.new('abc')
|
94
|
-
assert_equal "abc/temp.cpp", abc.compute_src_path("temp.cpp")
|
95
|
-
end
|
96
|
-
|
97
|
-
must "compute src_path correctly relative to src" do
|
98
|
-
abc = Executable.new('abc')
|
99
|
-
assert_equal "xyz/temp.cpp", abc.compute_src_path("xyz/temp.cpp", :relative_to => :src)
|
100
|
-
end
|
101
|
-
|
102
|
-
must "compute src_path correct when the input is absolute" do
|
103
|
-
abc = Executable.new('abc')
|
104
|
-
assert_equal "../temp.cpp", abc.compute_src_path(@project.project_dir + "/temp.cpp", :relative_to => :absolute)
|
105
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../test_helpers"
|
2
|
+
|
3
|
+
class TargetTest < Test::Unit::TestCase
|
4
|
+
include Ritsu
|
5
|
+
include Ritsu::Targets
|
6
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
7
|
+
|
8
|
+
must "contruct instances and keep track of them correctly" do
|
9
|
+
Executable.new("abc")
|
10
|
+
SharedLibrary.new("def")
|
11
|
+
StaticLibrary.new("ghi")
|
12
|
+
|
13
|
+
assert_equal 3, Target.instances.length
|
14
|
+
|
15
|
+
assert Target.instances.any? {|x| x.name =='abc'}
|
16
|
+
assert Target.instances.any? {|x| x.name == 'def'}
|
17
|
+
assert Target.instances.any? {|x| x.name == 'ghi'}
|
18
|
+
|
19
|
+
assert Target.instances.any? {|x| x.kind_of?(Executable)}
|
20
|
+
assert Target.instances.any? {|x| x.kind_of?(SharedLibrary)}
|
21
|
+
assert Target.instances.any? {|x| x.kind_of?(StaticLibrary)}
|
22
|
+
end
|
23
|
+
|
24
|
+
must "set the project to the default project if none is explicitly specified" do
|
25
|
+
abc = Executable.new('abc')
|
26
|
+
assert_equal @project, abc.project
|
27
|
+
end
|
28
|
+
|
29
|
+
must "upon creation, add the target to the given project" do
|
30
|
+
abc = Executable.new('abc', :project => @project)
|
31
|
+
assert_equal 1, @project.targets.length
|
32
|
+
assert @project.targets.any? {|x| x.name == 'abc'}
|
33
|
+
end
|
34
|
+
|
35
|
+
def setup_abcd_dependency_tree
|
36
|
+
@a = SharedLibrary.new('a')
|
37
|
+
@b = SharedLibrary.new('b')
|
38
|
+
@c = SharedLibrary.new('c')
|
39
|
+
@d = StaticLibrary.new('d')
|
40
|
+
|
41
|
+
@b.dependency_targets << @a
|
42
|
+
@c.dependency_targets << @b
|
43
|
+
@d.dependency_targets << @a
|
44
|
+
|
45
|
+
@nodes = {:a => @a, :b => @b, :c => @c, :d => @d}
|
46
|
+
end
|
47
|
+
|
48
|
+
must "be able to determine which target it depends directly on" do
|
49
|
+
setup_abcd_dependency_tree
|
50
|
+
|
51
|
+
[[:b,:a], [:c,:b], [:d,:a]].each do |u,v|
|
52
|
+
assert @nodes[u].depends_directly_on_target?(@nodes[v]),
|
53
|
+
"#{u} must depend directly on #{v}"
|
54
|
+
end
|
55
|
+
|
56
|
+
[[:c,:a], [:a,:b], [:b,:b], [:b,:d]].each do |u,v|
|
57
|
+
assert !(@nodes[u].depends_directly_on_target?(@nodes[v])),
|
58
|
+
"#{u} must not depend directly on #{v}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
must "be able to determine which target it depends on, even not directly, on" do
|
63
|
+
setup_abcd_dependency_tree
|
64
|
+
|
65
|
+
[[:b,:a], [:c,:b], [:c,:b], [:d,:a]].each do |u,v|
|
66
|
+
assert @nodes[u].depends_on_target?(@nodes[v]),
|
67
|
+
"#{u} must depend on #{v}"
|
68
|
+
end
|
69
|
+
|
70
|
+
[[:a,:a], [:a,:b], [:a,:c], [:a,:d], [:b,:d], [:b,:c], [:c,:d], [:d,:c]].each do |u,v|
|
71
|
+
assert !(@nodes[u].depends_on_target?(@nodes[v])),
|
72
|
+
"#{u} must not depend on #{v}"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
must "compute topological orders correctly" do
|
77
|
+
setup_abcd_dependency_tree
|
78
|
+
|
79
|
+
Target.compute_topological_orders
|
80
|
+
|
81
|
+
[[:b,:a], [:c,:b], [:d,:a]].each do |u,v|
|
82
|
+
assert @nodes[u].topological_order > @nodes[v].topological_order,
|
83
|
+
"#{u} should come after #{v} in topological ordering"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
must "src_dir" do
|
88
|
+
abc = Executable.new('abc')
|
89
|
+
assert_equal "abc", abc.src_dir
|
90
|
+
end
|
91
|
+
|
92
|
+
must "compute src_path correctly" do
|
93
|
+
abc = Executable.new('abc')
|
94
|
+
assert_equal "abc/temp.cpp", abc.compute_src_path("temp.cpp")
|
95
|
+
end
|
96
|
+
|
97
|
+
must "compute src_path correctly relative to src" do
|
98
|
+
abc = Executable.new('abc')
|
99
|
+
assert_equal "xyz/temp.cpp", abc.compute_src_path("xyz/temp.cpp", :relative_to => :src)
|
100
|
+
end
|
101
|
+
|
102
|
+
must "compute src_path correct when the input is absolute" do
|
103
|
+
abc = Executable.new('abc')
|
104
|
+
assert_equal "../temp.cpp", abc.compute_src_path(@project.project_dir + "/temp.cpp", :relative_to => :absolute)
|
105
|
+
end
|
106
106
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
-
|
3
|
-
class ExecutableTest < Test::Unit::TestCase
|
4
|
-
include Ritsu::Targets
|
5
|
-
include Ritsu::SetupProjectAndClearEverythingElse
|
6
|
-
|
7
|
-
must "not be able to be depended on" do
|
8
|
-
exe = Executable.new('exe')
|
9
|
-
assert !exe.can_be_depended_on?
|
10
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class ExecutableTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::Targets
|
5
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
6
|
+
|
7
|
+
must "not be able to be depended on" do
|
8
|
+
exe = Executable.new('exe')
|
9
|
+
assert !exe.can_be_depended_on?
|
10
|
+
end
|
11
11
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
-
|
3
|
-
class SharedLibraryTest < Test::Unit::TestCase
|
4
|
-
include Ritsu::Targets
|
5
|
-
include Ritsu::SetupProjectAndClearEverythingElse
|
6
|
-
|
7
|
-
must "be able to be depended on" do
|
8
|
-
so = SharedLibrary.new('so')
|
9
|
-
assert so.can_be_depended_on?
|
10
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class SharedLibraryTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::Targets
|
5
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
6
|
+
|
7
|
+
must "be able to be depended on" do
|
8
|
+
so = SharedLibrary.new('so')
|
9
|
+
assert so.can_be_depended_on?
|
10
|
+
end
|
11
11
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
-
|
3
|
-
class StaticLibraryTest < Test::Unit::TestCase
|
4
|
-
include Ritsu::Targets
|
5
|
-
include Ritsu::SetupProjectAndClearEverythingElse
|
6
|
-
|
7
|
-
must "be able to be depended on" do
|
8
|
-
a = StaticLibrary.new('a')
|
9
|
-
assert a.can_be_depended_on?
|
10
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class StaticLibraryTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::Targets
|
5
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
6
|
+
|
7
|
+
must "be able to be depended on" do
|
8
|
+
a = StaticLibrary.new('a')
|
9
|
+
assert a.can_be_depended_on?
|
10
|
+
end
|
11
11
|
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
-
|
3
|
-
|
4
|
-
class AccessorsTest < Test::Unit::TestCase
|
5
|
-
class A
|
6
|
-
include Ritsu::Utility::Accessors
|
7
|
-
attr_method :x
|
8
|
-
end
|
9
|
-
|
10
|
-
must "attr_equal works correctly" do
|
11
|
-
a = A.new
|
12
|
-
a.x 10
|
13
|
-
assert_equal 10, a.x
|
14
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
|
4
|
+
class AccessorsTest < Test::Unit::TestCase
|
5
|
+
class A
|
6
|
+
include Ritsu::Utility::Accessors
|
7
|
+
attr_method :x
|
8
|
+
end
|
9
|
+
|
10
|
+
must "attr_equal works correctly" do
|
11
|
+
a = A.new
|
12
|
+
a.x 10
|
13
|
+
assert_equal 10, a.x
|
14
|
+
end
|
15
15
|
end
|
@@ -1,32 +1,32 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
-
|
3
|
-
class CheckUponAddSetTest < Test::Unit::TestCase
|
4
|
-
include Ritsu::Utility
|
5
|
-
|
6
|
-
must "behave like normal set when given no block" do
|
7
|
-
s = CheckUponAddSet.new
|
8
|
-
s << 1 << 2 << "abc"
|
9
|
-
assert s.include?(1)
|
10
|
-
assert s.include?(2)
|
11
|
-
assert s.include?("abc")
|
12
|
-
s.delete(1)
|
13
|
-
assert !s.include?(1)
|
14
|
-
end
|
15
|
-
|
16
|
-
must "preform check when block is given" do
|
17
|
-
s = CheckUponAddSet.new do |s,x|
|
18
|
-
if x > 10
|
19
|
-
raise ArgumentError.new("inserted value more than 10!")
|
20
|
-
end
|
21
|
-
end
|
22
|
-
assert_nothing_raised do
|
23
|
-
s << 1
|
24
|
-
s << 2
|
25
|
-
s << 10
|
26
|
-
s << -1
|
27
|
-
end
|
28
|
-
assert_raises ArgumentError do
|
29
|
-
s << 11
|
30
|
-
end
|
31
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class CheckUponAddSetTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::Utility
|
5
|
+
|
6
|
+
must "behave like normal set when given no block" do
|
7
|
+
s = CheckUponAddSet.new
|
8
|
+
s << 1 << 2 << "abc"
|
9
|
+
assert s.include?(1)
|
10
|
+
assert s.include?(2)
|
11
|
+
assert s.include?("abc")
|
12
|
+
s.delete(1)
|
13
|
+
assert !s.include?(1)
|
14
|
+
end
|
15
|
+
|
16
|
+
must "preform check when block is given" do
|
17
|
+
s = CheckUponAddSet.new do |s,x|
|
18
|
+
if x > 10
|
19
|
+
raise ArgumentError.new("inserted value more than 10!")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
assert_nothing_raised do
|
23
|
+
s << 1
|
24
|
+
s << 2
|
25
|
+
s << 10
|
26
|
+
s << -1
|
27
|
+
end
|
28
|
+
assert_raises ArgumentError do
|
29
|
+
s << 11
|
30
|
+
end
|
31
|
+
end
|
32
32
|
end
|
@@ -1,176 +1,176 @@
|
|
1
|
-
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
-
|
3
|
-
class FileRobotTest < Test::Unit::TestCase
|
4
|
-
include Ritsu::Utility
|
5
|
-
include Ritsu::TestCaseWithFileTestData
|
6
|
-
|
7
|
-
def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
|
8
|
-
|
9
|
-
def setup
|
10
|
-
init_data_dir
|
11
|
-
@input = StringIO.new
|
12
|
-
@output = StringIO.new
|
13
|
-
FileRobot.input = @input
|
14
|
-
FileRobot.output = @output
|
15
|
-
end
|
16
|
-
|
17
|
-
def provide_input(string)
|
18
|
-
@input << string
|
19
|
-
@input.rewind
|
20
|
-
end
|
21
|
-
|
22
|
-
def expect_output(string)
|
23
|
-
assert_equal string, @output.string
|
24
|
-
end
|
25
|
-
|
26
|
-
must "force must be initially false" do
|
27
|
-
assert !FileRobot.force
|
28
|
-
end
|
29
|
-
|
30
|
-
must "quiet must be initially false" do
|
31
|
-
assert !FileRobot.quiet
|
32
|
-
end
|
33
|
-
|
34
|
-
file_test "create empty file" do
|
35
|
-
FileRobot.create_file(output_path("abc.txt"))
|
36
|
-
assert_output_file_exists "abc.txt"
|
37
|
-
assert_output_file_content "", "abc.txt"
|
38
|
-
expect_output(" create #{output_dir}/abc.txt\n")
|
39
|
-
end
|
40
|
-
|
41
|
-
file_test "create file with content" do
|
42
|
-
FileRobot.create_file(output_path("abc.txt"), "def")
|
43
|
-
assert_output_file_content "def", "abc.txt"
|
44
|
-
expect_output(" create #{output_dir}/abc.txt\n")
|
45
|
-
end
|
46
|
-
|
47
|
-
file_test "create parent directories when creating a file" do
|
48
|
-
FileRobot.create_file(output_path("a/b/c/def.txt"), "def")
|
49
|
-
assert_output_file_exists "a/b/c/def.txt"
|
50
|
-
expect_output(
|
51
|
-
" create #{output_dir}/a/b/c\n" +
|
52
|
-
" create #{output_dir}/a/b/c/def.txt\n"
|
53
|
-
)
|
54
|
-
end
|
55
|
-
|
56
|
-
file_test "create directory" do
|
57
|
-
FileRobot.create_dir(output_path("abc/def/ghi"))
|
58
|
-
assert_file_exists(output_path("abc/def/ghi"))
|
59
|
-
expect_output(" create #{output_dir}/abc/def/ghi\n")
|
60
|
-
end
|
61
|
-
|
62
|
-
file_test "display exist message when dir already exist" do
|
63
|
-
FileRobot.create_dir(output_path("abc"))
|
64
|
-
FileRobot.create_dir(output_path("abc"))
|
65
|
-
expect_output(
|
66
|
-
" create #{output_dir}/abc\n" +
|
67
|
-
" exist #{output_dir}/abc\n"
|
68
|
-
)
|
69
|
-
end
|
70
|
-
|
71
|
-
['no', 'n', 'N', 'NO'].each do |answer|
|
72
|
-
file_test "ask user when file exist and do nothing when user says #{answer}" do
|
73
|
-
provide_input(answer)
|
74
|
-
FileRobot.create_file(output_path("abc.txt"), "abc")
|
75
|
-
FileRobot.create_file(output_path("abc.txt"), "def")
|
76
|
-
expect_output(
|
77
|
-
" create #{output_dir}/abc.txt\n" +
|
78
|
-
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
79
|
-
" exist #{output_dir}/abc.txt\n"
|
80
|
-
)
|
81
|
-
assert_output_file_content "abc", "abc.txt"
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
['yes', 'y', 'YES', 'Yes', 'Y'].each do |answer|
|
86
|
-
file_test "ask user when file exist and overwrite when user says #{answer}" do
|
87
|
-
provide_input(answer)
|
88
|
-
FileRobot.create_file(output_path("abc.txt"), "abc")
|
89
|
-
FileRobot.create_file(output_path("abc.txt"), "def")
|
90
|
-
expect_output(
|
91
|
-
" create #{output_dir}/abc.txt\n" +
|
92
|
-
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
93
|
-
" overwrite #{output_dir}/abc.txt\n"
|
94
|
-
)
|
95
|
-
assert_output_file_content "def", "abc.txt"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
['ye', 'non', 'Nevar', 'programming'].each do |answer|
|
100
|
-
file_test "ask user when file exist and ask again when user says #{answer}" do
|
101
|
-
provide_input(answer + "\nno")
|
102
|
-
FileRobot.create_file(output_path("abc.txt"), "abc")
|
103
|
-
FileRobot.create_file(output_path("abc.txt"), "def")
|
104
|
-
expect_output(
|
105
|
-
" create #{output_dir}/abc.txt\n" +
|
106
|
-
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
107
|
-
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
108
|
-
" exist #{output_dir}/abc.txt\n"
|
109
|
-
)
|
110
|
-
assert_output_file_content "abc", "abc.txt"
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
file_test "remove file" do
|
115
|
-
FileRobot.create_file(output_path("abc.txt"), "abc")
|
116
|
-
assert_output_file_exists("abc.txt")
|
117
|
-
FileRobot.remove_file(output_path("abc.txt"))
|
118
|
-
assert_output_file_not_exist("abc.txt")
|
119
|
-
end
|
120
|
-
|
121
|
-
file_test "write a message if file to remove does not exist" do
|
122
|
-
FileRobot.remove_file(output_path("abc.txt"))
|
123
|
-
expect_output(
|
124
|
-
" not exist #{output_dir}/abc.txt\n"
|
125
|
-
)
|
126
|
-
end
|
127
|
-
|
128
|
-
file_test "write a message if file to remove is not a file" do
|
129
|
-
FileRobot.create_dir(output_path("abc.txt"))
|
130
|
-
assert_output_file_exists("abc.txt")
|
131
|
-
FileRobot.remove_file(output_path("abc.txt"))
|
132
|
-
expect_output(
|
133
|
-
" create #{output_dir}/abc.txt\n" +
|
134
|
-
" not file #{output_dir}/abc.txt\n"
|
135
|
-
)
|
136
|
-
assert_output_file_exists("abc.txt")
|
137
|
-
end
|
138
|
-
|
139
|
-
file_test "remove dir" do
|
140
|
-
FileRobot.create_dir(output_path("abc"))
|
141
|
-
assert_output_file_exists("abc")
|
142
|
-
FileRobot.remove_dir(output_path("abc"))
|
143
|
-
assert_output_file_not_exist("abc")
|
144
|
-
end
|
145
|
-
|
146
|
-
file_test "write a message if dir to remove does not exist" do
|
147
|
-
FileRobot.remove_file(output_path("abc"))
|
148
|
-
expect_output(
|
149
|
-
" not exist #{output_dir}/abc\n"
|
150
|
-
)
|
151
|
-
end
|
152
|
-
|
153
|
-
file_test "write a message if dir to remove is not a dir" do
|
154
|
-
FileRobot.create_file(output_path("abc"), "")
|
155
|
-
assert_output_file_exists("abc")
|
156
|
-
FileRobot.remove_dir(output_path("abc"))
|
157
|
-
expect_output(
|
158
|
-
" create #{output_dir}/abc\n" +
|
159
|
-
" not dir #{output_dir}/abc\n"
|
160
|
-
)
|
161
|
-
assert_output_file_exists("abc")
|
162
|
-
end
|
163
|
-
|
164
|
-
file_test "write a message if dir to remove is not empty" do
|
165
|
-
FileRobot.create_dir(output_path("abc"))
|
166
|
-
FileRobot.create_file(output_path("abc/def.txt"), "")
|
167
|
-
assert_output_file_exists('abc/def.txt')
|
168
|
-
FileRobot.remove_dir(output_path("abc"))
|
169
|
-
expect_output(
|
170
|
-
" create #{output_dir}/abc\n" +
|
171
|
-
" create #{output_dir}/abc/def.txt\n" +
|
172
|
-
" not empty #{output_dir}/abc\n"
|
173
|
-
)
|
174
|
-
assert_output_file_exists("abc/def.txt")
|
175
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class FileRobotTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::Utility
|
5
|
+
include Ritsu::TestCaseWithFileTestData
|
6
|
+
|
7
|
+
def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
|
8
|
+
|
9
|
+
def setup
|
10
|
+
init_data_dir
|
11
|
+
@input = StringIO.new
|
12
|
+
@output = StringIO.new
|
13
|
+
FileRobot.input = @input
|
14
|
+
FileRobot.output = @output
|
15
|
+
end
|
16
|
+
|
17
|
+
def provide_input(string)
|
18
|
+
@input << string
|
19
|
+
@input.rewind
|
20
|
+
end
|
21
|
+
|
22
|
+
def expect_output(string)
|
23
|
+
assert_equal string, @output.string
|
24
|
+
end
|
25
|
+
|
26
|
+
must "force must be initially false" do
|
27
|
+
assert !FileRobot.force
|
28
|
+
end
|
29
|
+
|
30
|
+
must "quiet must be initially false" do
|
31
|
+
assert !FileRobot.quiet
|
32
|
+
end
|
33
|
+
|
34
|
+
file_test "create empty file" do
|
35
|
+
FileRobot.create_file(output_path("abc.txt"))
|
36
|
+
assert_output_file_exists "abc.txt"
|
37
|
+
assert_output_file_content "", "abc.txt"
|
38
|
+
expect_output(" create #{output_dir}/abc.txt\n")
|
39
|
+
end
|
40
|
+
|
41
|
+
file_test "create file with content" do
|
42
|
+
FileRobot.create_file(output_path("abc.txt"), "def")
|
43
|
+
assert_output_file_content "def", "abc.txt"
|
44
|
+
expect_output(" create #{output_dir}/abc.txt\n")
|
45
|
+
end
|
46
|
+
|
47
|
+
file_test "create parent directories when creating a file" do
|
48
|
+
FileRobot.create_file(output_path("a/b/c/def.txt"), "def")
|
49
|
+
assert_output_file_exists "a/b/c/def.txt"
|
50
|
+
expect_output(
|
51
|
+
" create #{output_dir}/a/b/c\n" +
|
52
|
+
" create #{output_dir}/a/b/c/def.txt\n"
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
file_test "create directory" do
|
57
|
+
FileRobot.create_dir(output_path("abc/def/ghi"))
|
58
|
+
assert_file_exists(output_path("abc/def/ghi"))
|
59
|
+
expect_output(" create #{output_dir}/abc/def/ghi\n")
|
60
|
+
end
|
61
|
+
|
62
|
+
file_test "display exist message when dir already exist" do
|
63
|
+
FileRobot.create_dir(output_path("abc"))
|
64
|
+
FileRobot.create_dir(output_path("abc"))
|
65
|
+
expect_output(
|
66
|
+
" create #{output_dir}/abc\n" +
|
67
|
+
" exist #{output_dir}/abc\n"
|
68
|
+
)
|
69
|
+
end
|
70
|
+
|
71
|
+
['no', 'n', 'N', 'NO'].each do |answer|
|
72
|
+
file_test "ask user when file exist and do nothing when user says #{answer}" do
|
73
|
+
provide_input(answer)
|
74
|
+
FileRobot.create_file(output_path("abc.txt"), "abc")
|
75
|
+
FileRobot.create_file(output_path("abc.txt"), "def")
|
76
|
+
expect_output(
|
77
|
+
" create #{output_dir}/abc.txt\n" +
|
78
|
+
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
79
|
+
" exist #{output_dir}/abc.txt\n"
|
80
|
+
)
|
81
|
+
assert_output_file_content "abc", "abc.txt"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
['yes', 'y', 'YES', 'Yes', 'Y'].each do |answer|
|
86
|
+
file_test "ask user when file exist and overwrite when user says #{answer}" do
|
87
|
+
provide_input(answer)
|
88
|
+
FileRobot.create_file(output_path("abc.txt"), "abc")
|
89
|
+
FileRobot.create_file(output_path("abc.txt"), "def")
|
90
|
+
expect_output(
|
91
|
+
" create #{output_dir}/abc.txt\n" +
|
92
|
+
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
93
|
+
" overwrite #{output_dir}/abc.txt\n"
|
94
|
+
)
|
95
|
+
assert_output_file_content "def", "abc.txt"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
['ye', 'non', 'Nevar', 'programming'].each do |answer|
|
100
|
+
file_test "ask user when file exist and ask again when user says #{answer}" do
|
101
|
+
provide_input(answer + "\nno")
|
102
|
+
FileRobot.create_file(output_path("abc.txt"), "abc")
|
103
|
+
FileRobot.create_file(output_path("abc.txt"), "def")
|
104
|
+
expect_output(
|
105
|
+
" create #{output_dir}/abc.txt\n" +
|
106
|
+
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
107
|
+
"overwrite #{output_dir}/abc.txt? (yes/no/all): " +
|
108
|
+
" exist #{output_dir}/abc.txt\n"
|
109
|
+
)
|
110
|
+
assert_output_file_content "abc", "abc.txt"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
file_test "remove file" do
|
115
|
+
FileRobot.create_file(output_path("abc.txt"), "abc")
|
116
|
+
assert_output_file_exists("abc.txt")
|
117
|
+
FileRobot.remove_file(output_path("abc.txt"))
|
118
|
+
assert_output_file_not_exist("abc.txt")
|
119
|
+
end
|
120
|
+
|
121
|
+
file_test "write a message if file to remove does not exist" do
|
122
|
+
FileRobot.remove_file(output_path("abc.txt"))
|
123
|
+
expect_output(
|
124
|
+
" not exist #{output_dir}/abc.txt\n"
|
125
|
+
)
|
126
|
+
end
|
127
|
+
|
128
|
+
file_test "write a message if file to remove is not a file" do
|
129
|
+
FileRobot.create_dir(output_path("abc.txt"))
|
130
|
+
assert_output_file_exists("abc.txt")
|
131
|
+
FileRobot.remove_file(output_path("abc.txt"))
|
132
|
+
expect_output(
|
133
|
+
" create #{output_dir}/abc.txt\n" +
|
134
|
+
" not file #{output_dir}/abc.txt\n"
|
135
|
+
)
|
136
|
+
assert_output_file_exists("abc.txt")
|
137
|
+
end
|
138
|
+
|
139
|
+
file_test "remove dir" do
|
140
|
+
FileRobot.create_dir(output_path("abc"))
|
141
|
+
assert_output_file_exists("abc")
|
142
|
+
FileRobot.remove_dir(output_path("abc"))
|
143
|
+
assert_output_file_not_exist("abc")
|
144
|
+
end
|
145
|
+
|
146
|
+
file_test "write a message if dir to remove does not exist" do
|
147
|
+
FileRobot.remove_file(output_path("abc"))
|
148
|
+
expect_output(
|
149
|
+
" not exist #{output_dir}/abc\n"
|
150
|
+
)
|
151
|
+
end
|
152
|
+
|
153
|
+
file_test "write a message if dir to remove is not a dir" do
|
154
|
+
FileRobot.create_file(output_path("abc"), "")
|
155
|
+
assert_output_file_exists("abc")
|
156
|
+
FileRobot.remove_dir(output_path("abc"))
|
157
|
+
expect_output(
|
158
|
+
" create #{output_dir}/abc\n" +
|
159
|
+
" not dir #{output_dir}/abc\n"
|
160
|
+
)
|
161
|
+
assert_output_file_exists("abc")
|
162
|
+
end
|
163
|
+
|
164
|
+
file_test "write a message if dir to remove is not empty" do
|
165
|
+
FileRobot.create_dir(output_path("abc"))
|
166
|
+
FileRobot.create_file(output_path("abc/def.txt"), "")
|
167
|
+
assert_output_file_exists('abc/def.txt')
|
168
|
+
FileRobot.remove_dir(output_path("abc"))
|
169
|
+
expect_output(
|
170
|
+
" create #{output_dir}/abc\n" +
|
171
|
+
" create #{output_dir}/abc/def.txt\n" +
|
172
|
+
" not empty #{output_dir}/abc\n"
|
173
|
+
)
|
174
|
+
assert_output_file_exists("abc/def.txt")
|
175
|
+
end
|
176
176
|
end
|