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.
Files changed (89) hide show
  1. data/README.md +95 -95
  2. data/bin/define_cpp_string +54 -54
  3. data/bin/ritsu +31 -31
  4. data/lib/ritsu.rb +16 -16
  5. data/lib/ritsu/block.rb +258 -258
  6. data/lib/ritsu/ext/cuda.rb +5 -5
  7. data/lib/ritsu/ext/cuda/external_library.rb +15 -15
  8. data/lib/ritsu/ext/cuda/project.rb +31 -31
  9. data/lib/ritsu/ext/cuda/src_files/cu_file.rb +46 -46
  10. data/lib/ritsu/ext/cuda/src_files/target_cmake_lists.rb +110 -110
  11. data/lib/ritsu/ext/cuda/target.rb +16 -16
  12. data/lib/ritsu/ext/cuda/targets/library.rb +16 -16
  13. data/lib/ritsu/ext/fake_install.rb +2 -2
  14. data/lib/ritsu/ext/fake_install/project.rb +16 -16
  15. data/lib/ritsu/ext/fake_install/src_files/project_cmake_lists.rb +45 -45
  16. data/lib/ritsu/ext/glsl.rb +1 -1
  17. data/lib/ritsu/ext/glsl/src_files/frag_file.rb +70 -70
  18. data/lib/ritsu/ext/glsl/src_files/vert_file.rb +70 -70
  19. data/lib/ritsu/ext/qt.rb +4 -4
  20. data/lib/ritsu/ext/qt/project.rb +47 -47
  21. data/lib/ritsu/ext/qt/src_files/header_file.rb +60 -60
  22. data/lib/ritsu/ext/qt/src_files/target_cmake_lists.rb +106 -106
  23. data/lib/ritsu/ext/qt/src_files/ui_file.rb +46 -46
  24. data/lib/ritsu/ext/test_case.rb +19 -19
  25. data/lib/ritsu/external_library.rb +46 -46
  26. data/lib/ritsu/project.rb +93 -93
  27. data/lib/ritsu/project_generator.rb +33 -33
  28. data/lib/ritsu/project_generators/default_generator.rb +72 -72
  29. data/lib/ritsu/project_generators/default_generator_files/Thorfile.erb +8 -8
  30. data/lib/ritsu/project_generators/default_generator_files/meta/project.rb.erb +10 -10
  31. data/lib/ritsu/src_file.rb +79 -79
  32. data/lib/ritsu/src_files.rb +12 -12
  33. data/lib/ritsu/src_files/cpp_file.rb +43 -43
  34. data/lib/ritsu/src_files/executable_cmake_lists.rb +39 -39
  35. data/lib/ritsu/src_files/header_file.rb +60 -60
  36. data/lib/ritsu/src_files/project_cmake_lists.rb +133 -133
  37. data/lib/ritsu/src_files/project_config_header_file.rb +14 -14
  38. data/lib/ritsu/src_files/project_config_header_template_file.rb +44 -44
  39. data/lib/ritsu/src_files/shared_library_cmake_lists.rb +39 -39
  40. data/lib/ritsu/src_files/static_library_cmake_lists.rb +39 -39
  41. data/lib/ritsu/src_files/target_cmake_lists.rb +189 -189
  42. data/lib/ritsu/src_files/templated_src_file.rb +47 -47
  43. data/lib/ritsu/src_files/unit.rb +32 -32
  44. data/lib/ritsu/target.rb +154 -154
  45. data/lib/ritsu/targets.rb +3 -3
  46. data/lib/ritsu/targets/executable.rb +44 -44
  47. data/lib/ritsu/targets/library.rb +29 -29
  48. data/lib/ritsu/targets/shared_library.rb +38 -38
  49. data/lib/ritsu/targets/static_library.rb +32 -32
  50. data/lib/ritsu/template.rb +68 -68
  51. data/lib/ritsu/template_policies.rb +132 -132
  52. data/lib/ritsu/test_helpers.rb +123 -123
  53. data/lib/ritsu/thors/default_thor.rb +1 -1
  54. data/lib/ritsu/utility.rb +7 -7
  55. data/lib/ritsu/utility/accessors.rb +29 -29
  56. data/lib/ritsu/utility/check_upon_add_set.rb +34 -34
  57. data/lib/ritsu/utility/file_robot.rb +128 -128
  58. data/lib/ritsu/utility/files.rb +12 -12
  59. data/lib/ritsu/utility/instance_dependencies.rb +112 -112
  60. data/lib/ritsu/utility/instance_set.rb +28 -28
  61. data/lib/ritsu/utility/platform.rb +20 -20
  62. data/lib/ritsu/utility/simple_io.rb +64 -64
  63. data/lib/ritsu/utility/single_instance.rb +33 -33
  64. data/lib/ritsu/utility/strings.rb +40 -40
  65. data/test/ritsu/block_test.rb +196 -196
  66. data/test/ritsu/ext/cuda/src_files/cuda_static_library_cmake_lists_test.rb +63 -63
  67. data/test/ritsu/external_library_test.rb +41 -41
  68. data/test/ritsu/project_generators/default_generator_test.rb +34 -34
  69. data/test/ritsu/project_test.rb +127 -127
  70. data/test/ritsu/src_file_test.rb +69 -69
  71. data/test/ritsu/src_files/cpp_file_test.rb +42 -42
  72. data/test/ritsu/src_files/executable_cmake_lists_test.rb +92 -92
  73. data/test/ritsu/src_files/header_file_test.rb +57 -57
  74. data/test/ritsu/src_files/project_cmake_lists_test.rb +159 -159
  75. data/test/ritsu/src_files/shared_library_cmake_lists_test.rb +54 -54
  76. data/test/ritsu/src_files/static_library_cmake_lists_test.rb +54 -54
  77. data/test/ritsu/src_files/target_cmake_lists_test.rb +15 -15
  78. data/test/ritsu/target_test.rb +105 -105
  79. data/test/ritsu/targets/executable_test.rb +10 -10
  80. data/test/ritsu/targets/shared_library_test.rb +10 -10
  81. data/test/ritsu/targets/static_library_test.rb +10 -10
  82. data/test/ritsu/utility/accessors_test.rb +14 -14
  83. data/test/ritsu/utility/check_upon_add_set_test.rb +31 -31
  84. data/test/ritsu/utility/file_robot_test.rb +175 -175
  85. data/test/ritsu/utility/strings_test.rb +28 -28
  86. data/test/test_helpers.rb +3 -3
  87. metadata +72 -124
  88. data/Thorfile +0 -104
  89. data/VERSION +0 -1
@@ -1,64 +1,64 @@
1
- require File.dirname(__FILE__) + "/../../../../test_helpers"
2
- require File.dirname(__FILE__) + "/../../../../../lib/ritsu/ext/cuda"
3
-
4
- class CudaStaticLibraryCMakeListsTest < Test::Unit::TestCase
5
- include Ritsu::SetupProjectAndClearEverythingElse
6
- include Ritsu::TestCaseWithFileTestData
7
- include Ritsu::Utility
8
-
9
- def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
10
-
11
- def setup
12
- setup_project('mio')
13
- @project.project_dir = output_dir
14
- @project.setup_cuda
15
- end
16
-
17
- file_test "must be present" do
18
- abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project, :cuda_target=>true)
19
- abc.add_external_library "cuda"
20
- assert abc.respond_to?(:cmake_lists)
21
- assert abc.cmake_lists.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)
22
- assert_equal 1,
23
- abc.src_files.select {|x| x.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)}.length
24
- end
25
-
26
- file_test "create" do
27
- abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project, :cuda_target=>true)
28
- FileRobot.quietly do
29
- abc.cmake_lists.create
30
- end
31
- assert_file_exists(abc.cmake_lists.abs_path)
32
-
33
- expected_content = <<-CMAKE
34
- ##<< TargetCmakeLists -- abc -- Libraries
35
- ##>> TargetCmakeLists -- abc -- Libraries
36
-
37
- ##<< TargetCmakeLists -- abc -- CudaIncludeDirectories
38
- ##>> TargetCmakeLists -- abc -- CudaIncludeDirectories
39
-
40
- ##<< TargetCmakeLists -- abc -- Custom Commands
41
- ##>> TargetCmakeLists -- abc -- Custom Commands
42
-
43
- ##<< TargetCmakeLists -- abc -- Source Files
44
- SET(ABC_SRC_FILES
45
- )
46
- ##>> TargetCmakeLists -- abc -- Source Files
47
-
48
- ##<< TargetCmakeLists -- abc -- CudaCompile
49
- ##>> TargetCmakeLists -- abc -- CudaCompile
50
-
51
- ##<< StaticLibraryCmakeLists -- abc -- Static Library
52
- ADD_LIBRARY(abc STATIC ${ABC_SRC_FILES})
53
- ##>> StaticLibraryCmakeLists -- abc -- Static Library
54
-
55
- ##<< TargetCmakeLists -- abc -- Dependencies
56
- ##>> TargetCmakeLists -- abc -- Dependencies
57
-
58
- ##<< TargetCmakeLists -- abc -- Install
59
- ##>> TargetCmakeLists -- abc -- Install
60
- CMAKE
61
-
62
- assert_file_content(expected_content, abc.cmake_lists.abs_path)
63
- end
1
+ require File.dirname(__FILE__) + "/../../../../test_helpers"
2
+ require File.dirname(__FILE__) + "/../../../../../lib/ritsu/ext/cuda"
3
+
4
+ class CudaStaticLibraryCMakeListsTest < Test::Unit::TestCase
5
+ include Ritsu::SetupProjectAndClearEverythingElse
6
+ include Ritsu::TestCaseWithFileTestData
7
+ include Ritsu::Utility
8
+
9
+ def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
10
+
11
+ def setup
12
+ setup_project('mio')
13
+ @project.project_dir = output_dir
14
+ @project.setup_cuda
15
+ end
16
+
17
+ file_test "must be present" do
18
+ abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project, :cuda_target=>true)
19
+ abc.add_external_library "cuda"
20
+ assert abc.respond_to?(:cmake_lists)
21
+ assert abc.cmake_lists.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)
22
+ assert_equal 1,
23
+ abc.src_files.select {|x| x.kind_of?(Ritsu::SrcFiles::StaticLibraryCmakeLists)}.length
24
+ end
25
+
26
+ file_test "create" do
27
+ abc = Ritsu::Targets::StaticLibrary.new("abc", :project=>@project, :cuda_target=>true)
28
+ FileRobot.quietly do
29
+ abc.cmake_lists.create
30
+ end
31
+ assert_file_exists(abc.cmake_lists.abs_path)
32
+
33
+ expected_content = <<-CMAKE
34
+ ##<< TargetCmakeLists -- abc -- Libraries
35
+ ##>> TargetCmakeLists -- abc -- Libraries
36
+
37
+ ##<< TargetCmakeLists -- abc -- CudaIncludeDirectories
38
+ ##>> TargetCmakeLists -- abc -- CudaIncludeDirectories
39
+
40
+ ##<< TargetCmakeLists -- abc -- Custom Commands
41
+ ##>> TargetCmakeLists -- abc -- Custom Commands
42
+
43
+ ##<< TargetCmakeLists -- abc -- Source Files
44
+ SET(ABC_SRC_FILES
45
+ )
46
+ ##>> TargetCmakeLists -- abc -- Source Files
47
+
48
+ ##<< TargetCmakeLists -- abc -- CudaCompile
49
+ ##>> TargetCmakeLists -- abc -- CudaCompile
50
+
51
+ ##<< StaticLibraryCmakeLists -- abc -- Static Library
52
+ ADD_LIBRARY(abc STATIC ${ABC_SRC_FILES})
53
+ ##>> StaticLibraryCmakeLists -- abc -- Static Library
54
+
55
+ ##<< TargetCmakeLists -- abc -- Dependencies
56
+ ##>> TargetCmakeLists -- abc -- Dependencies
57
+
58
+ ##<< TargetCmakeLists -- abc -- Install
59
+ ##>> TargetCmakeLists -- abc -- Install
60
+ CMAKE
61
+
62
+ assert_file_content(expected_content, abc.cmake_lists.abs_path)
63
+ end
64
64
  end
@@ -1,42 +1,42 @@
1
- require File.dirname(__FILE__) + "/../test_helpers"
2
-
3
- class ExternalLibraryTest < Test::Unit::TestCase
4
- include Ritsu
5
-
6
- def setup
7
- ExternalLibrary.instances.clear
8
- end
9
-
10
- must "initialize correctly" do
11
- qt = ExternalLibrary.new('qt')
12
- assert_equal 'qt', qt.name
13
- assert_equal '', qt.cmake_name
14
- assert_equal '', qt.cmake_depend_script
15
- assert_equal '', qt.cmake_find_script
16
- assert_equal 1, ExternalLibrary.instances.size
17
- end
18
-
19
- must "be able to use cmake_name, cmake_depend_script, and cmake_find_script methods in instance_eval" do
20
- qt = ExternalLibrary.new('qt')
21
- qt.instance_eval do
22
- cmake_name 'Qt'
23
- cmake_depend_script 'abc'
24
- cmake_find_script 'def'
25
- end
26
- assert_equal 'Qt', qt.cmake_name
27
- assert_equal 'abc', qt.cmake_depend_script
28
- assert_equal 'def', qt.cmake_find_script
29
- end
30
-
31
- must "raise exception if create external library with duplicated names" do
32
- ExternalLibrary.new('qt')
33
- assert_raises(ArgumentError) do
34
- ExternalLibrary.new('qt')
35
- end
36
- end
37
-
38
- must "find_by_name correctly" do
39
- qt = ExternalLibrary.new('qt')
40
- assert_equal qt, ExternalLibrary.find_by_name('qt')
41
- end
1
+ require File.dirname(__FILE__) + "/../test_helpers"
2
+
3
+ class ExternalLibraryTest < Test::Unit::TestCase
4
+ include Ritsu
5
+
6
+ def setup
7
+ ExternalLibrary.instances.clear
8
+ end
9
+
10
+ must "initialize correctly" do
11
+ qt = ExternalLibrary.new('qt')
12
+ assert_equal 'qt', qt.name
13
+ assert_equal '', qt.cmake_name
14
+ assert_equal '', qt.cmake_depend_script
15
+ assert_equal '', qt.cmake_find_script
16
+ assert_equal 1, ExternalLibrary.instances.size
17
+ end
18
+
19
+ must "be able to use cmake_name, cmake_depend_script, and cmake_find_script methods in instance_eval" do
20
+ qt = ExternalLibrary.new('qt')
21
+ qt.instance_eval do
22
+ cmake_name 'Qt'
23
+ cmake_depend_script 'abc'
24
+ cmake_find_script 'def'
25
+ end
26
+ assert_equal 'Qt', qt.cmake_name
27
+ assert_equal 'abc', qt.cmake_depend_script
28
+ assert_equal 'def', qt.cmake_find_script
29
+ end
30
+
31
+ must "raise exception if create external library with duplicated names" do
32
+ ExternalLibrary.new('qt')
33
+ assert_raises(ArgumentError) do
34
+ ExternalLibrary.new('qt')
35
+ end
36
+ end
37
+
38
+ must "find_by_name correctly" do
39
+ qt = ExternalLibrary.new('qt')
40
+ assert_equal qt, ExternalLibrary.find_by_name('qt')
41
+ end
42
42
  end
@@ -1,35 +1,35 @@
1
- require File.dirname(__FILE__) + "/../../test_helpers"
2
-
3
- class DefaultGeneratorTest < Test::Unit::TestCase
4
- include Ritsu::TestCaseWithFileTestData
5
- include Ritsu::Utility
6
-
7
- def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
8
-
9
- file_test "generate" do
10
- FileRobot.quietly do
11
- Ritsu::ProjectGenerators::DefaultGenerator.new.generate('mio', output_dir)
12
- end
13
-
14
- assert_output_file_exists("mio")
15
- assert_output_file_exists("mio/build")
16
- assert_output_file_exists("mio/src")
17
- assert_output_file_exists("mio/meta")
18
- assert_output_file_exists("mio/Thorfile")
19
- assert_output_file_exists("mio/meta/project.rb")
20
-
21
- expected_project_rb_content = <<-RUBY
22
- require 'rubygems'
23
- require 'ritsu'
24
-
25
- Ritsu::Project.create('mio') do |p|
26
-
27
- ##################
28
- # YOUR CODE HERE #
29
- ##################
30
-
31
- end
32
- RUBY
33
- assert_output_file_content(expected_project_rb_content, "mio/meta/project.rb")
34
- end
1
+ require File.dirname(__FILE__) + "/../../test_helpers"
2
+
3
+ class DefaultGeneratorTest < Test::Unit::TestCase
4
+ include Ritsu::TestCaseWithFileTestData
5
+ include Ritsu::Utility
6
+
7
+ def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
8
+
9
+ file_test "generate" do
10
+ FileRobot.quietly do
11
+ Ritsu::ProjectGenerators::DefaultGenerator.new.generate('mio', output_dir)
12
+ end
13
+
14
+ assert_output_file_exists("mio")
15
+ assert_output_file_exists("mio/build")
16
+ assert_output_file_exists("mio/src")
17
+ assert_output_file_exists("mio/meta")
18
+ assert_output_file_exists("mio/Thorfile")
19
+ assert_output_file_exists("mio/meta/project.rb")
20
+
21
+ expected_project_rb_content = <<-RUBY
22
+ require 'rubygems'
23
+ require 'ritsu'
24
+
25
+ Ritsu::Project.create('mio') do |p|
26
+
27
+ ##################
28
+ # YOUR CODE HERE #
29
+ ##################
30
+
31
+ end
32
+ RUBY
33
+ assert_output_file_content(expected_project_rb_content, "mio/meta/project.rb")
34
+ end
35
35
  end
@@ -1,128 +1,128 @@
1
- require File.dirname(__FILE__) + "/../test_helpers"
2
-
3
- class ProjectTest < Test::Unit::TestCase
4
- include Ritsu::TestCaseWithFileTestData
5
- include Ritsu::Utility
6
-
7
- def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
8
-
9
- def setup
10
- Ritsu::Target.instances.clear
11
- Ritsu::SrcFile.instances.clear
12
- Ritsu::ExternalLibrary.instances.clear
13
- end
14
-
15
- must "create correctly" do
16
- hello = Ritsu::Project.create('hello')
17
- assert_equal 'hello', hello.name
18
- assert_equal Set.new, hello.targets
19
- assert_equal Set.new, hello.external_libraries
20
- end
21
-
22
- ['53k', 'abc def', '???'].each do |project_name|
23
- must "raise exception if project name is #{project_name} (i.e., not a C name)" do
24
- assert_raises(ArgumentError) do
25
- Ritsu::Project.create(project_name)
26
- end
27
- end
28
- end
29
-
30
- ['mio', 'MikuMikuDance', '_Something'].each do |project_name|
31
- must "not raise exception if project name is #{project_name} (i.e., a valid C name)" do
32
- assert_nothing_raised do
33
- Ritsu::Project.create(project_name)
34
- end
35
- end
36
- end
37
-
38
- must "be able to add external libraries" do
39
- hello = Ritsu::Project.create('hello') do |p|
40
- p.add_external_library 'qt_core' do |e|
41
- e.cmake_name '${QT_LIBRARIES}'
42
- e.cmake_find_script <<-CMAKE
43
- FIND_PACKAGE(Qt4 REQUIRED)
44
- CMAKE
45
- e.cmake_depend_script <<-CMAKE
46
- INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
47
- SET(QT_DONT_USE_QTGUI TRUE)
48
- CMAKE
49
- end
50
- p.add_external_library 'qt_core_gui' do |e|
51
- e.cmake_name '${QT_LIBRARIES}'
52
- e.cmake_find_script <<-CMAKE
53
- FIND_PACKAGE(Qt4 REQUIRED)
54
- CMAKE
55
- e.cmake_depend_script <<-CMAKE
56
- INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
57
- CMAKE
58
- end
59
- p.add_external_library 'qt_core_gui_opengl' do |e|
60
- e.cmake_name '${QT_LIBRARIES}'
61
- e.cmake_find_script <<-CMAKE
62
- FIND_PACKAGE(Qt4 REQUIRED)
63
- CMAKE
64
- e.cmake_depend_script <<-CMAKE
65
- INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
66
- SET(QT_USE_OPENGL TRUE)
67
- CMAKE
68
- end
69
- end
70
-
71
- assert_equal 3, hello.external_libraries.length
72
- assert hello.external_libraries.any? { |x| x.name == 'qt_core' }
73
- assert hello.external_libraries.any? { |x| x.name == 'qt_core_gui' }
74
- assert hello.external_libraries.any? { |x| x.name == 'qt_core_gui_opengl' }
75
- end
76
-
77
- must "be able to add targets" do
78
- hello = Ritsu::Project.create('hello') do |p|
79
- p.add_executable 'abc'
80
- p.add_shared_library 'def'
81
- p.add_static_library 'ghi'
82
- end
83
-
84
- assert_equal 3, hello.targets.length
85
- assert hello.targets.any? { |x| x.name == 'abc' }
86
- assert hello.targets.any? { |x| x.name == 'def' }
87
- assert hello.targets.any? { |x| x.name == 'ghi' }
88
- end
89
-
90
- file_test "create config header file" do
91
- hello = Ritsu::Project.create('hello')
92
- hello.project_dir = output_dir
93
- assert hello.respond_to?(:config_header_file)
94
- assert hello.src_files.any? {|x| x.src_path != "config.h"}
95
-
96
- FileRobot.quietly do
97
- hello.update
98
- end
99
-
100
- assert_output_file_exists("src/config.h")
101
- assert_output_file_content("\n", "src/config.h")
102
- end
103
-
104
- file_test "create config header template file" do
105
- hello = Ritsu::Project.create('hello')
106
- hello.project_dir = output_dir
107
- assert hello.respond_to?(:config_header_template_file)
108
- assert hello.src_files.any? {|x| x.src_path != "config.h.in"}
109
-
110
- FileRobot.quietly do
111
- hello.update
112
- end
113
-
114
- assert_output_file_exists("src/config.h.in")
115
-
116
- expected_content = <<-TEXT
117
- #ifndef __PROJECT_CONFIG_H__
118
- #define __PROJECT_CONFIG_H__
119
-
120
- #cmakedefine __WIN_PLATFORM__
121
- #cmakedefine __MAC_PLATFORM__
122
- #cmakedefine __UNIX_PLATFORM__
123
-
124
- #endif
125
- TEXT
126
- assert_output_file_content("\n", "src/config.h")
127
- end
1
+ require File.dirname(__FILE__) + "/../test_helpers"
2
+
3
+ class ProjectTest < Test::Unit::TestCase
4
+ include Ritsu::TestCaseWithFileTestData
5
+ include Ritsu::Utility
6
+
7
+ def data_dir; File.dirname(__FILE__) + "/" + File.basename(__FILE__, ".rb") end
8
+
9
+ def setup
10
+ Ritsu::Target.instances.clear
11
+ Ritsu::SrcFile.instances.clear
12
+ Ritsu::ExternalLibrary.instances.clear
13
+ end
14
+
15
+ must "create correctly" do
16
+ hello = Ritsu::Project.create('hello')
17
+ assert_equal 'hello', hello.name
18
+ assert_equal Set.new, hello.targets
19
+ assert_equal Set.new, hello.external_libraries
20
+ end
21
+
22
+ ['53k', 'abc def', '???'].each do |project_name|
23
+ must "raise exception if project name is #{project_name} (i.e., not a C name)" do
24
+ assert_raises(ArgumentError) do
25
+ Ritsu::Project.create(project_name)
26
+ end
27
+ end
28
+ end
29
+
30
+ ['mio', 'MikuMikuDance', '_Something'].each do |project_name|
31
+ must "not raise exception if project name is #{project_name} (i.e., a valid C name)" do
32
+ assert_nothing_raised do
33
+ Ritsu::Project.create(project_name)
34
+ end
35
+ end
36
+ end
37
+
38
+ must "be able to add external libraries" do
39
+ hello = Ritsu::Project.create('hello') do |p|
40
+ p.add_external_library 'qt_core' do |e|
41
+ e.cmake_name '${QT_LIBRARIES}'
42
+ e.cmake_find_script <<-CMAKE
43
+ FIND_PACKAGE(Qt4 REQUIRED)
44
+ CMAKE
45
+ e.cmake_depend_script <<-CMAKE
46
+ INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
47
+ SET(QT_DONT_USE_QTGUI TRUE)
48
+ CMAKE
49
+ end
50
+ p.add_external_library 'qt_core_gui' do |e|
51
+ e.cmake_name '${QT_LIBRARIES}'
52
+ e.cmake_find_script <<-CMAKE
53
+ FIND_PACKAGE(Qt4 REQUIRED)
54
+ CMAKE
55
+ e.cmake_depend_script <<-CMAKE
56
+ INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
57
+ CMAKE
58
+ end
59
+ p.add_external_library 'qt_core_gui_opengl' do |e|
60
+ e.cmake_name '${QT_LIBRARIES}'
61
+ e.cmake_find_script <<-CMAKE
62
+ FIND_PACKAGE(Qt4 REQUIRED)
63
+ CMAKE
64
+ e.cmake_depend_script <<-CMAKE
65
+ INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
66
+ SET(QT_USE_OPENGL TRUE)
67
+ CMAKE
68
+ end
69
+ end
70
+
71
+ assert_equal 3, hello.external_libraries.length
72
+ assert hello.external_libraries.any? { |x| x.name == 'qt_core' }
73
+ assert hello.external_libraries.any? { |x| x.name == 'qt_core_gui' }
74
+ assert hello.external_libraries.any? { |x| x.name == 'qt_core_gui_opengl' }
75
+ end
76
+
77
+ must "be able to add targets" do
78
+ hello = Ritsu::Project.create('hello') do |p|
79
+ p.add_executable 'abc'
80
+ p.add_shared_library 'def'
81
+ p.add_static_library 'ghi'
82
+ end
83
+
84
+ assert_equal 3, hello.targets.length
85
+ assert hello.targets.any? { |x| x.name == 'abc' }
86
+ assert hello.targets.any? { |x| x.name == 'def' }
87
+ assert hello.targets.any? { |x| x.name == 'ghi' }
88
+ end
89
+
90
+ file_test "create config header file" do
91
+ hello = Ritsu::Project.create('hello')
92
+ hello.project_dir = output_dir
93
+ assert hello.respond_to?(:config_header_file)
94
+ assert hello.src_files.any? {|x| x.src_path != "config.h"}
95
+
96
+ FileRobot.quietly do
97
+ hello.update
98
+ end
99
+
100
+ assert_output_file_exists("src/config.h")
101
+ assert_output_file_content("\n", "src/config.h")
102
+ end
103
+
104
+ file_test "create config header template file" do
105
+ hello = Ritsu::Project.create('hello')
106
+ hello.project_dir = output_dir
107
+ assert hello.respond_to?(:config_header_template_file)
108
+ assert hello.src_files.any? {|x| x.src_path != "config.h.in"}
109
+
110
+ FileRobot.quietly do
111
+ hello.update
112
+ end
113
+
114
+ assert_output_file_exists("src/config.h.in")
115
+
116
+ expected_content = <<-TEXT
117
+ #ifndef __PROJECT_CONFIG_H__
118
+ #define __PROJECT_CONFIG_H__
119
+
120
+ #cmakedefine __WIN_PLATFORM__
121
+ #cmakedefine __MAC_PLATFORM__
122
+ #cmakedefine __UNIX_PLATFORM__
123
+
124
+ #endif
125
+ TEXT
126
+ assert_output_file_content("\n", "src/config.h")
127
+ end
128
128
  end