ritsu 0.1.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/README.md +96 -0
- data/Thorfile +95 -0
- data/VERSION +1 -0
- data/bin/ritsu +32 -0
- data/lib/ritsu/block.rb +259 -0
- data/lib/ritsu/ext/test_case.rb +20 -0
- data/lib/ritsu/external_library.rb +47 -0
- data/lib/ritsu/project.rb +89 -0
- data/lib/ritsu/project_generator.rb +34 -0
- data/lib/ritsu/project_generators/default_generator.rb +73 -0
- data/lib/ritsu/project_generators/default_generator_files/Thorfile.erb +9 -0
- data/lib/ritsu/project_generators/default_generator_files/meta/project.rb.erb +9 -0
- data/lib/ritsu/project_generators.rb +1 -0
- data/lib/ritsu/src_file.rb +76 -0
- data/lib/ritsu/src_files/cpp_file.rb +33 -0
- data/lib/ritsu/src_files/cpp_file_mixin.rb +13 -0
- data/lib/ritsu/src_files/executable_cmake_lists.rb +40 -0
- data/lib/ritsu/src_files/header_file.rb +46 -0
- data/lib/ritsu/src_files/header_file_mixin.rb +20 -0
- data/lib/ritsu/src_files/project_cmake_lists.rb +110 -0
- data/lib/ritsu/src_files/project_config_header_file.rb +15 -0
- data/lib/ritsu/src_files/project_config_header_template_file.rb +46 -0
- data/lib/ritsu/src_files/shared_library_cmake_lists.rb +40 -0
- data/lib/ritsu/src_files/static_library_cmake_lists.rb +40 -0
- data/lib/ritsu/src_files/target_cmake_lists.rb +159 -0
- data/lib/ritsu/src_files/templated_src_file.rb +44 -0
- data/lib/ritsu/src_files.rb +14 -0
- data/lib/ritsu/target.rb +134 -0
- data/lib/ritsu/targets/executable.rb +45 -0
- data/lib/ritsu/targets/library.rb +29 -0
- data/lib/ritsu/targets/shared_library.rb +39 -0
- data/lib/ritsu/targets/static_library.rb +33 -0
- data/lib/ritsu/targets.rb +4 -0
- data/lib/ritsu/template.rb +69 -0
- data/lib/ritsu/template_policies.rb +133 -0
- data/lib/ritsu/test_helpers.rb +124 -0
- data/lib/ritsu/thors/default_thor.rb +57 -0
- data/lib/ritsu/thors.rb +1 -0
- data/lib/ritsu/utility/accessors.rb +30 -0
- data/lib/ritsu/utility/check_upon_add_set.rb +35 -0
- data/lib/ritsu/utility/file_robot.rb +129 -0
- data/lib/ritsu/utility/files.rb +13 -0
- data/lib/ritsu/utility/instance_dependencies.rb +113 -0
- data/lib/ritsu/utility/instance_set.rb +29 -0
- data/lib/ritsu/utility/platform.rb +21 -0
- data/lib/ritsu/utility/simple_io.rb +65 -0
- data/lib/ritsu/utility/single_instance.rb +34 -0
- data/lib/ritsu/utility/strings.rb +41 -0
- data/lib/ritsu/utility.rb +8 -0
- data/lib/ritsu.rb +17 -0
- data/test/ritsu/block_test.rb +197 -0
- data/test/ritsu/external_library_test.rb +42 -0
- data/test/ritsu/project_generators/default_generator_test.rb +34 -0
- data/test/ritsu/project_test.rb +128 -0
- data/test/ritsu/src_file_test.rb +70 -0
- data/test/ritsu/src_files/cpp_file_test.rb +43 -0
- data/test/ritsu/src_files/executable_cmake_lists_test.rb +52 -0
- data/test/ritsu/src_files/header_file_test.rb +58 -0
- data/test/ritsu/src_files/project_cmake_lists_test.rb +152 -0
- data/test/ritsu/src_files/shared_library_cmake_lists_test.rb +52 -0
- data/test/ritsu/src_files/static_library_cmake_lists_test.rb +52 -0
- data/test/ritsu/src_files/target_cmake_lists_test.rb +16 -0
- data/test/ritsu/target_test.rb +106 -0
- data/test/ritsu/targets/executable_test.rb +11 -0
- data/test/ritsu/targets/shared_library_test.rb +11 -0
- data/test/ritsu/targets/static_library_test.rb +11 -0
- data/test/ritsu/template_policies_test.rb +0 -0
- data/test/ritsu/utility/accessors_test.rb +15 -0
- data/test/ritsu/utility/check_upon_add_set_test.rb +32 -0
- data/test/ritsu/utility/file_robot_test.rb +176 -0
- data/test/ritsu/utility/strings_test.rb +29 -0
- data/test/test_helpers.rb +4 -0
- metadata +209 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class ExecutableCMakeListsTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
5
|
+
include Ritsu::TestCaseWithFileTestData
|
6
|
+
include Ritsu::Utility
|
7
|
+
|
8
|
+
def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
setup_project('mio')
|
12
|
+
@project.project_dir = output_dir
|
13
|
+
end
|
14
|
+
|
15
|
+
file_test "must be present" do
|
16
|
+
abc = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
17
|
+
assert abc.respond_to?(:cmake_lists)
|
18
|
+
assert abc.cmake_lists.kind_of?(Ritsu::SrcFiles::ExecutableCmakeLists)
|
19
|
+
assert_equal 1,
|
20
|
+
abc.src_files.select {|x| x.kind_of?(Ritsu::SrcFiles::ExecutableCmakeLists)}.length
|
21
|
+
end
|
22
|
+
|
23
|
+
file_test "create" do
|
24
|
+
abc = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
25
|
+
FileRobot.quietly do
|
26
|
+
abc.cmake_lists.create
|
27
|
+
end
|
28
|
+
assert_file_exists(abc.cmake_lists.abs_path)
|
29
|
+
|
30
|
+
expected_content = <<-CMAKE
|
31
|
+
##<< TargetCmakeLists -- abc -- Libraries
|
32
|
+
##>> TargetCmakeLists -- abc -- Libraries
|
33
|
+
|
34
|
+
##<< TargetCmakeLists -- abc -- Custom Commands
|
35
|
+
##>> TargetCmakeLists -- abc -- Custom Commands
|
36
|
+
|
37
|
+
##<< TargetCmakeLists -- abc -- Source Files
|
38
|
+
SET(ABC_SRC_FILES
|
39
|
+
)
|
40
|
+
##>> TargetCmakeLists -- abc -- Source Files
|
41
|
+
|
42
|
+
##<< ExecutableCmakeLists -- abc -- Executable
|
43
|
+
ADD_EXECUTABLE(abc ${ABC_SRC_FILES})
|
44
|
+
##>> ExecutableCmakeLists -- abc -- Executable
|
45
|
+
|
46
|
+
##<< TargetCmakeLists -- abc -- Dependencies
|
47
|
+
##>> TargetCmakeLists -- abc -- Dependencies
|
48
|
+
CMAKE
|
49
|
+
|
50
|
+
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class HeaderFileTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
5
|
+
include Ritsu::TestCaseWithFileTestData
|
6
|
+
include Ritsu::Utility
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_project
|
10
|
+
@project.project_dir = output_dir
|
11
|
+
@target = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
12
|
+
end
|
13
|
+
|
14
|
+
def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
|
15
|
+
|
16
|
+
must "include_guard computed correct" do
|
17
|
+
@header_file = Ritsu::SrcFiles::HeaderFile.new("abc/def.h", @target)
|
18
|
+
assert_equal "__PROJECT_ABC_DEF_H__", @header_file.include_guard
|
19
|
+
end
|
20
|
+
|
21
|
+
file_test "create" do
|
22
|
+
@header_file = Ritsu::SrcFiles::HeaderFile.new("abc/def.h", @target)
|
23
|
+
FileRobot.quietly do
|
24
|
+
@header_file.create
|
25
|
+
end
|
26
|
+
assert_file_exists(@header_file.abs_path)
|
27
|
+
expected_content = <<-HEADER_FILE
|
28
|
+
#ifndef __PROJECT_ABC_DEF_H__
|
29
|
+
#define __PROJECT_ABC_DEF_H__
|
30
|
+
|
31
|
+
////////////////////
|
32
|
+
// YOUR CODE HERE //
|
33
|
+
////////////////////
|
34
|
+
|
35
|
+
#endif
|
36
|
+
HEADER_FILE
|
37
|
+
assert_file_content(expected_content, @header_file.abs_path)
|
38
|
+
end
|
39
|
+
|
40
|
+
file_test "update_does_nothing" do
|
41
|
+
@header_file = Ritsu::SrcFiles::HeaderFile.new("abc/def.h", @target)
|
42
|
+
FileRobot.quietly do
|
43
|
+
FileRobot.create_file(output_path("src/abc/def.h"), "abc")
|
44
|
+
@header_file.update
|
45
|
+
end
|
46
|
+
assert_file_content("abc", @header_file.abs_path)
|
47
|
+
end
|
48
|
+
|
49
|
+
file_test "delete" do
|
50
|
+
@header_file = Ritsu::SrcFiles::HeaderFile.new("abc/def.h", @target)
|
51
|
+
FileRobot.quietly do
|
52
|
+
@header_file.create
|
53
|
+
assert_file_exists(@header_file.abs_path)
|
54
|
+
@header_file.remove
|
55
|
+
assert_file_not_exist(@header_file.abs_path)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,152 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class ProjectCMakeListsTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
5
|
+
include Ritsu::TestCaseWithFileTestData
|
6
|
+
include Ritsu::Utility
|
7
|
+
|
8
|
+
def data_dir; File.expand_path(File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb")) end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
setup_project('mio')
|
12
|
+
@project.project_dir = output_dir
|
13
|
+
end
|
14
|
+
|
15
|
+
must "be present in project" do
|
16
|
+
assert @project.respond_to?(:cmake_lists)
|
17
|
+
assert @project.cmake_lists.kind_of?(Ritsu::SrcFiles::ProjectCmakeLists)
|
18
|
+
end
|
19
|
+
|
20
|
+
must "src_path must be CMakeLists.txt" do
|
21
|
+
cmakelists = @project.cmake_lists
|
22
|
+
assert_equal "CMakeLists.txt", cmakelists.src_path
|
23
|
+
end
|
24
|
+
|
25
|
+
must "abs_path must be project_dir/src/CMakeLists.txt" do
|
26
|
+
cmakelists = @project.cmake_lists
|
27
|
+
assert_equal "#{@project.project_dir}/src/CMakeLists.txt",
|
28
|
+
cmakelists.abs_path
|
29
|
+
end
|
30
|
+
|
31
|
+
file_test "create" do
|
32
|
+
FileRobot.quietly do
|
33
|
+
@project.cmake_lists.create
|
34
|
+
end
|
35
|
+
assert_file_exists(@project.cmake_lists.abs_path)
|
36
|
+
|
37
|
+
expected_content = <<-TEXT
|
38
|
+
##<< ProjectCmakeLists -- Header
|
39
|
+
PROJECT(mio)
|
40
|
+
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
41
|
+
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
|
42
|
+
|
43
|
+
IF(WIN32)
|
44
|
+
OPTION(__WIN_PLATFORM__ "Windows Platform" ON)
|
45
|
+
ELSE(WIN32)
|
46
|
+
OPTION(__WIN_PLATFORM__ "Windows Platform" OFF)
|
47
|
+
ENDIF(WIN32)
|
48
|
+
|
49
|
+
IF(UNIX)
|
50
|
+
IF(APPLE)
|
51
|
+
OPTION(__MAC_PLATFORM__ "Apple Platform" ON)
|
52
|
+
OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)
|
53
|
+
ELSE(APPLE)
|
54
|
+
OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)
|
55
|
+
OPTION(__UNIX_PLATFORM__ "Unix Platform" ON)
|
56
|
+
ENDIF(APPLE)
|
57
|
+
ELSE(UNIX)
|
58
|
+
OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)
|
59
|
+
OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)
|
60
|
+
ENDIF(UNIX)
|
61
|
+
##>> ProjectCmakeLists -- Header
|
62
|
+
|
63
|
+
##<< ProjectCmakeLists -- External Libraries
|
64
|
+
##>> ProjectCmakeLists -- External Libraries
|
65
|
+
|
66
|
+
##<< ProjectCmakeLists -- Directories
|
67
|
+
##>> ProjectCmakeLists -- Directories
|
68
|
+
|
69
|
+
##<< ProjectCmakeLists -- Configure File
|
70
|
+
CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_SOURCE_DIR}/config.h )
|
71
|
+
##>> ProjectCmakeLists -- Configure File
|
72
|
+
TEXT
|
73
|
+
|
74
|
+
assert_file_content(expected_content, @project.cmake_lists.abs_path)
|
75
|
+
end
|
76
|
+
|
77
|
+
file_test "create 2" do
|
78
|
+
@project.add_external_library 'qt_core' do |e|
|
79
|
+
e.cmake_name '${QT_LIBRARIES}'
|
80
|
+
e.cmake_find_script <<-CMAKE
|
81
|
+
FIND_PACKAGE(Qt4 REQUIRED)
|
82
|
+
CMAKE
|
83
|
+
e.cmake_depend_script <<-CMAKE
|
84
|
+
INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
|
85
|
+
SET(QT_DONT_USE_QTGUI TRUE)
|
86
|
+
CMAKE
|
87
|
+
end
|
88
|
+
|
89
|
+
@project.add_external_library 'opengl' do |e|
|
90
|
+
e.cmake_name '${OPENGL_LIBRARY}'
|
91
|
+
e.cmake_find_script <<-CMAKE
|
92
|
+
FIND_PACKAGE(OpenGL REQUIRED)
|
93
|
+
CMAKE
|
94
|
+
e.cmake_depend_script <<-CMAKE
|
95
|
+
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
|
96
|
+
CMAKE
|
97
|
+
end
|
98
|
+
|
99
|
+
ghi = Ritsu::Targets::SharedLibrary.new("ghi", :project=>@project)
|
100
|
+
abc = Ritsu::Targets::Executable.new("abc", :project=>@project)
|
101
|
+
abc.dependency_targets << ghi
|
102
|
+
|
103
|
+
FileRobot.quietly do
|
104
|
+
@project.cmake_lists.create
|
105
|
+
end
|
106
|
+
|
107
|
+
expected_content = <<-TEXT
|
108
|
+
##<< ProjectCmakeLists -- Header
|
109
|
+
PROJECT(mio)
|
110
|
+
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
|
111
|
+
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
|
112
|
+
|
113
|
+
IF(WIN32)
|
114
|
+
OPTION(__WIN_PLATFORM__ "Windows Platform" ON)
|
115
|
+
ELSE(WIN32)
|
116
|
+
OPTION(__WIN_PLATFORM__ "Windows Platform" OFF)
|
117
|
+
ENDIF(WIN32)
|
118
|
+
|
119
|
+
IF(UNIX)
|
120
|
+
IF(APPLE)
|
121
|
+
OPTION(__MAC_PLATFORM__ "Apple Platform" ON)
|
122
|
+
OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)
|
123
|
+
ELSE(APPLE)
|
124
|
+
OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)
|
125
|
+
OPTION(__UNIX_PLATFORM__ "Unix Platform" ON)
|
126
|
+
ENDIF(APPLE)
|
127
|
+
ELSE(UNIX)
|
128
|
+
OPTION(__MAC_PLATFORM__ "Apple Platform" OFF)
|
129
|
+
OPTION(__UNIX_PLATFORM__ "Unix Platform" OFF)
|
130
|
+
ENDIF(UNIX)
|
131
|
+
##>> ProjectCmakeLists -- Header
|
132
|
+
|
133
|
+
##<< ProjectCmakeLists -- External Libraries
|
134
|
+
FIND_PACKAGE(OpenGL REQUIRED)
|
135
|
+
|
136
|
+
FIND_PACKAGE(Qt4 REQUIRED)
|
137
|
+
|
138
|
+
##>> ProjectCmakeLists -- External Libraries
|
139
|
+
|
140
|
+
##<< ProjectCmakeLists -- Directories
|
141
|
+
ADD_SUBDIRECTORY(ghi)
|
142
|
+
ADD_SUBDIRECTORY(abc)
|
143
|
+
##>> ProjectCmakeLists -- Directories
|
144
|
+
|
145
|
+
##<< ProjectCmakeLists -- Configure File
|
146
|
+
CONFIGURE_FILE( ${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_SOURCE_DIR}/config.h )
|
147
|
+
##>> ProjectCmakeLists -- Configure File
|
148
|
+
TEXT
|
149
|
+
|
150
|
+
assert_file_content(expected_content, @project.cmake_lists.abs_path)
|
151
|
+
end
|
152
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class SharedLibraryCMakeListsTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
5
|
+
include Ritsu::TestCaseWithFileTestData
|
6
|
+
include Ritsu::Utility
|
7
|
+
|
8
|
+
def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
setup_project('mio')
|
12
|
+
@project.project_dir = output_dir
|
13
|
+
end
|
14
|
+
|
15
|
+
file_test "must be present" do
|
16
|
+
abc = Ritsu::Targets::SharedLibrary.new("abc", :project=>@project)
|
17
|
+
assert abc.respond_to?(:cmake_lists)
|
18
|
+
assert abc.cmake_lists.kind_of?(Ritsu::SrcFiles::SharedLibraryCmakeLists)
|
19
|
+
assert_equal 1,
|
20
|
+
abc.src_files.select {|x| x.kind_of?(Ritsu::SrcFiles::SharedLibraryCmakeLists)}.length
|
21
|
+
end
|
22
|
+
|
23
|
+
file_test "create" do
|
24
|
+
abc = Ritsu::Targets::SharedLibrary.new("abc", :project=>@project)
|
25
|
+
FileRobot.quietly do
|
26
|
+
abc.cmake_lists.create
|
27
|
+
end
|
28
|
+
assert_file_exists(abc.cmake_lists.abs_path)
|
29
|
+
|
30
|
+
expected_content = <<-CMAKE
|
31
|
+
##<< TargetCmakeLists -- abc -- Libraries
|
32
|
+
##>> TargetCmakeLists -- abc -- Libraries
|
33
|
+
|
34
|
+
##<< TargetCmakeLists -- abc -- Custom Commands
|
35
|
+
##>> TargetCmakeLists -- abc -- Custom Commands
|
36
|
+
|
37
|
+
##<< TargetCmakeLists -- abc -- Source Files
|
38
|
+
SET(ABC_SRC_FILES
|
39
|
+
)
|
40
|
+
##>> TargetCmakeLists -- abc -- Source Files
|
41
|
+
|
42
|
+
##<< SharedLibraryCmakeLists -- abc -- Shared Library
|
43
|
+
ADD_LIBRARY(abc SHARED ${ABC_SRC_FILES})
|
44
|
+
##>> SharedLibraryCmakeLists -- abc -- Shared Library
|
45
|
+
|
46
|
+
##<< TargetCmakeLists -- abc -- Dependencies
|
47
|
+
##>> TargetCmakeLists -- abc -- Dependencies
|
48
|
+
CMAKE
|
49
|
+
|
50
|
+
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helpers"
|
2
|
+
|
3
|
+
class StaticLibraryCMakeListsTest < Test::Unit::TestCase
|
4
|
+
include Ritsu::SetupProjectAndClearEverythingElse
|
5
|
+
include Ritsu::TestCaseWithFileTestData
|
6
|
+
include Ritsu::Utility
|
7
|
+
|
8
|
+
def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
|
9
|
+
|
10
|
+
def setup
|
11
|
+
setup_project('mio')
|
12
|
+
@project.project_dir = output_dir
|
13
|
+
end
|
14
|
+
|
15
|
+
file_test "must be present" do
|
16
|
+
abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project)
|
17
|
+
assert abc.respond_to?(:cmake_lists)
|
18
|
+
assert abc.cmake_lists.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)
|
19
|
+
assert_equal 1,
|
20
|
+
abc.src_files.select {|x| x.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)}.length
|
21
|
+
end
|
22
|
+
|
23
|
+
file_test "create" do
|
24
|
+
abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project)
|
25
|
+
FileRobot.quietly do
|
26
|
+
abc.cmake_lists.create
|
27
|
+
end
|
28
|
+
assert_file_exists(abc.cmake_lists.abs_path)
|
29
|
+
|
30
|
+
expected_content = <<-CMAKE
|
31
|
+
##<< TargetCmakeLists -- abc -- Libraries
|
32
|
+
##>> TargetCmakeLists -- abc -- Libraries
|
33
|
+
|
34
|
+
##<< TargetCmakeLists -- abc -- Custom Commands
|
35
|
+
##>> TargetCmakeLists -- abc -- Custom Commands
|
36
|
+
|
37
|
+
##<< TargetCmakeLists -- abc -- Source Files
|
38
|
+
SET(ABC_SRC_FILES
|
39
|
+
)
|
40
|
+
##>> TargetCmakeLists -- abc -- Source Files
|
41
|
+
|
42
|
+
##<< StaticLibraryCmakeLists -- abc -- Static Library
|
43
|
+
ADD_LIBRARY(abc STATIC ${ABC_SRC_FILES})
|
44
|
+
##>> StaticLibraryCmakeLists -- abc -- Static Library
|
45
|
+
|
46
|
+
##<< TargetCmakeLists -- abc -- Dependencies
|
47
|
+
##>> TargetCmakeLists -- abc -- Dependencies
|
48
|
+
CMAKE
|
49
|
+
|
50
|
+
assert_file_content(expected_content, abc.cmake_lists.abs_path)
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +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
|
16
|
+
end
|
@@ -0,0 +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
|
106
|
+
end
|
@@ -0,0 +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
|
11
|
+
end
|
@@ -0,0 +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
|
11
|
+
end
|
@@ -0,0 +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
|
11
|
+
end
|
File without changes
|
@@ -0,0 +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
|
15
|
+
end
|
@@ -0,0 +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
|
32
|
+
end
|