sprout 0.7.246 → 1.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sprout might be problematic. Click here for more details.

Files changed (211) hide show
  1. data/CHANGELOG.md +10 -0
  2. data/Gemfile +28 -0
  3. data/MIT-LICENSE +3 -2
  4. data/POSTINSTALL.rdoc +28 -0
  5. data/README.textile +152 -0
  6. data/bin/sprout +1 -131
  7. data/bin/sprout-generator +10 -0
  8. data/bin/sprout-library +11 -0
  9. data/bin/sprout-tool +10 -0
  10. data/lib/sprout.rb +4 -500
  11. data/lib/sprout/archive_unpacker.rb +122 -206
  12. data/lib/sprout/base.rb +90 -0
  13. data/lib/sprout/concern.rb +30 -0
  14. data/lib/sprout/dir.rb +23 -0
  15. data/lib/sprout/errors.rb +94 -0
  16. data/lib/sprout/executable.rb +496 -0
  17. data/lib/sprout/executable/boolean.rb +35 -0
  18. data/lib/sprout/executable/collection_param.rb +53 -0
  19. data/lib/sprout/executable/file_param.rb +53 -0
  20. data/lib/sprout/executable/files.rb +26 -0
  21. data/lib/sprout/executable/number.rb +10 -0
  22. data/lib/sprout/executable/param.rb +222 -0
  23. data/lib/sprout/executable/parameter_factory.rb +28 -0
  24. data/lib/sprout/executable/path.rb +21 -0
  25. data/lib/sprout/executable/paths.rb +21 -0
  26. data/lib/sprout/executable/string_param.rb +15 -0
  27. data/lib/sprout/executable/strings.rb +11 -0
  28. data/lib/sprout/executable/url.rb +10 -0
  29. data/lib/sprout/executable/urls.rb +10 -0
  30. data/lib/sprout/file_target.rb +76 -0
  31. data/lib/sprout/generator/base.rb +233 -0
  32. data/lib/sprout/generator/command.rb +67 -0
  33. data/lib/sprout/generator/directory_manifest.rb +49 -0
  34. data/lib/sprout/generator/file_manifest.rb +55 -0
  35. data/lib/sprout/generator/manifest.rb +13 -0
  36. data/lib/sprout/generator/template_manifest.rb +13 -0
  37. data/lib/sprout/generators/generator/generator_generator.rb +48 -0
  38. data/lib/sprout/generators/generator/templates/generator_class.rb +17 -0
  39. data/lib/sprout/generators/generator/templates/generator_executable +9 -0
  40. data/lib/sprout/generators/generator/templates/generator_template +1 -0
  41. data/lib/sprout/generators/generator/templates/generator_test.rb +37 -0
  42. data/lib/sprout/generators/generator/templates/generator_test_helper.rb +16 -0
  43. data/lib/sprout/generators/library/library_generator.rb +20 -0
  44. data/lib/sprout/generators/library/templates/library.gemspec +19 -0
  45. data/lib/sprout/generators/library/templates/library.rb +15 -0
  46. data/lib/sprout/generators/ruby/ruby_generator.rb +59 -0
  47. data/lib/sprout/generators/ruby/templates/ruby_base.rb +10 -0
  48. data/lib/sprout/generators/ruby/templates/ruby_executable +6 -0
  49. data/lib/sprout/generators/ruby/templates/ruby_gemfile +4 -0
  50. data/lib/sprout/generators/ruby/templates/ruby_input.rb +7 -0
  51. data/lib/sprout/generators/tool/templates/Gemfile +4 -0
  52. data/lib/sprout/generators/tool/templates/tool.gemspec +22 -0
  53. data/lib/sprout/generators/tool/templates/tool.rb +38 -0
  54. data/lib/sprout/generators/tool/tool_generator.rb +36 -0
  55. data/lib/sprout/library.rb +111 -0
  56. data/lib/sprout/log.rb +1 -0
  57. data/lib/sprout/platform.rb +71 -0
  58. data/lib/sprout/process_runner.rb +80 -40
  59. data/lib/sprout/progress_bar.rb +341 -0
  60. data/lib/sprout/rdoc_parser.rb +91 -0
  61. data/lib/sprout/remote_file_loader.rb +72 -50
  62. data/lib/sprout/remote_file_target.rb +44 -152
  63. data/lib/sprout/ruby_feature.rb +167 -0
  64. data/lib/sprout/specification.rb +197 -0
  65. data/lib/sprout/string.rb +19 -0
  66. data/lib/sprout/system.rb +35 -0
  67. data/lib/sprout/system/base_system.rb +225 -0
  68. data/lib/sprout/system/java_system.rb +9 -0
  69. data/lib/sprout/system/osx_system.rb +26 -0
  70. data/lib/sprout/system/unix_system.rb +72 -0
  71. data/lib/sprout/system/vista_system.rb +16 -0
  72. data/lib/sprout/system/win_nix_system.rb +41 -0
  73. data/lib/sprout/system/win_system.rb +76 -0
  74. data/lib/sprout/test/sprout_test_case.rb +211 -0
  75. data/lib/sprout/version.rb +9 -4
  76. data/rakefile.rb +85 -144
  77. data/script/console +10 -0
  78. data/script/destroy +14 -0
  79. data/script/generate +14 -0
  80. data/sprout.gemspec +26 -0
  81. data/test/fixtures/archive_unpacker/copyable/some_file.exe +0 -0
  82. data/test/fixtures/archive_unpacker/copyable/some_file.rb +0 -0
  83. data/test/fixtures/archive_unpacker/copyable/some_file.swc +0 -0
  84. data/test/fixtures/archive_unpacker/tgz/some folder.tgz +0 -0
  85. data/test/fixtures/archive_unpacker/tgz/some_file.tgz +0 -0
  86. data/test/fixtures/archive_unpacker/zip/some folder.zip +0 -0
  87. data/test/fixtures/archive_unpacker/zip/some_file.zip +0 -0
  88. data/test/fixtures/examples/app_generator.rb +127 -0
  89. data/test/fixtures/examples/echo_inputs.rb +151 -0
  90. data/test/fixtures/executable/echochamber_gem/bin/echochamber +3 -0
  91. data/test/fixtures/executable/echochamber_gem/echo_chamber.rb +10 -0
  92. data/test/fixtures/executable/flex3sdk_gem/flex3sdk.rb +11 -0
  93. data/test/fixtures/executable/flex3sdk_gem/mxmlc +3 -0
  94. data/test/fixtures/executable/flex3sdk_gem/mxmlc.bat +3 -0
  95. data/test/fixtures/executable/mxmlc.rb +805 -0
  96. data/test/fixtures/executable/params/input.as +0 -0
  97. data/test/fixtures/executable/params/input2.as +0 -0
  98. data/test/fixtures/executable/params/input3.as +0 -0
  99. data/test/fixtures/executable/params/mxmlc +5 -0
  100. data/test/fixtures/executable/path with spaces/input.as b/data/test/fixtures/executable/path with → spaces/input.as +0 -0
  101. data/test/fixtures/executable/path with spaces/input2.as b/data/test/fixtures/executable/path with → spaces/input2.as +0 -0
  102. data/test/fixtures/executable/path with spaces/input3.as b/data/test/fixtures/executable/path with → spaces/input3.as +0 -0
  103. data/test/fixtures/executable/paths/folder1/file1 +0 -0
  104. data/test/fixtures/executable/paths/folder1/file2 +0 -0
  105. data/test/fixtures/executable/paths/folder1/file3 +0 -0
  106. data/test/fixtures/executable/paths/folder2/file4 +0 -0
  107. data/test/fixtures/executable/paths/folder2/file5 +0 -0
  108. data/test/fixtures/executable/paths/folder3/file6 +0 -0
  109. data/test/fixtures/executable/src/Main.as +0 -0
  110. data/test/fixtures/executable/windows_line_endings +47 -0
  111. data/test/fixtures/generators/song_generator.rb +11 -0
  112. data/test/fixtures/generators/song_subclass/least_favorite.rb +10 -0
  113. data/test/fixtures/generators/song_subclass/templates/Song.txt +3 -0
  114. data/test/fixtures/generators/temp_generator.rb +24 -0
  115. data/test/fixtures/generators/templates/Main.as +9 -0
  116. data/test/fixtures/generators/templates/OtherFileTemplate +1 -0
  117. data/test/fixtures/generators/templates/SomeFile +1 -0
  118. data/test/fixtures/generators/templates/SomeSubclassFile +2 -0
  119. data/test/fixtures/generators/templates/Song.txt +3 -0
  120. data/test/fixtures/generators/templates/destroy +0 -0
  121. data/test/fixtures/generators/templates/generate +0 -0
  122. data/test/fixtures/library/archive/Archive.swc +0 -0
  123. data/test/fixtures/library/sources/lib/a/A.as +0 -0
  124. data/test/fixtures/library/sources/lib/b/B.as +0 -0
  125. data/test/fixtures/library/sources/src/Source.as +0 -0
  126. data/test/fixtures/process_runner/chmod_script.sh +3 -0
  127. data/test/fixtures/process_runner/dir with spaces/chmod_script.sh +3 -0
  128. data/test/fixtures/process_runner/failure +5 -0
  129. data/test/fixtures/process_runner/success +4 -0
  130. data/test/fixtures/remote_file_loader/md5/echochamber-test.zip +0 -0
  131. data/test/fixtures/remote_file_loader/md5/file_with_known_md5 +0 -0
  132. data/test/fixtures/remote_file_target/bin/echochamber +3 -0
  133. data/test/fixtures/remote_file_target/bin/echochamber.bat +3 -0
  134. data/test/fixtures/remote_file_target/echochamber-test.zip +0 -0
  135. data/test/fixtures/specification/asunit4.rb +25 -0
  136. data/test/fixtures/specification/ext/AsUnit-4.1.pre.swc +0 -0
  137. data/test/fixtures/specification/flashplayer.rb +30 -0
  138. data/test/fixtures/specification/flex4sdk.rb +72 -0
  139. data/test/fixtures/specification/flexunit4.sproutspec +17 -0
  140. data/test/fixtures/specification/lib/as3reflection/Reflection.as +0 -0
  141. data/test/fixtures/specification/src/AsUnit.as +0 -0
  142. data/test/fixtures/user/mxmlc_crlf +3 -0
  143. data/test/unit/archive_unpacker_test.rb +108 -0
  144. data/test/unit/boolean_param_test.rb +38 -0
  145. data/test/unit/executable_option_parser_test.rb +142 -0
  146. data/test/unit/executable_param_test.rb +76 -0
  147. data/test/unit/executable_test.rb +237 -0
  148. data/test/unit/fake_executable_task.rb +22 -0
  149. data/test/unit/fake_other_executable.rb +20 -0
  150. data/test/unit/fake_process_runner.rb +29 -0
  151. data/test/unit/file_param_test.rb +61 -0
  152. data/test/unit/file_target_test.rb +42 -0
  153. data/test/unit/files_param_test.rb +72 -0
  154. data/test/unit/generator_generator_test.rb +85 -0
  155. data/test/unit/generator_test.rb +333 -0
  156. data/test/unit/library_generator_test.rb +41 -0
  157. data/test/unit/library_test.rb +88 -0
  158. data/test/unit/osx_system_test.rb +20 -0
  159. data/test/unit/path_param_test.rb +43 -0
  160. data/test/unit/paths_param_test.rb +53 -0
  161. data/test/unit/platform_test.rb +76 -0
  162. data/test/unit/process_runner_test.rb +104 -0
  163. data/test/unit/rdoc_parser_test.rb +15 -0
  164. data/test/unit/remote_file_loader_test.rb +34 -0
  165. data/test/unit/remote_file_target_test.rb +105 -0
  166. data/test/unit/ruby_feature_test.rb +108 -0
  167. data/test/unit/ruby_generator_test.rb +70 -0
  168. data/test/unit/specification_test.rb +73 -0
  169. data/test/unit/sprout_test.rb +170 -0
  170. data/test/unit/sprout_test_helper.rb +18 -0
  171. data/test/unit/string_param_test.rb +19 -0
  172. data/test/unit/string_test.rb +20 -0
  173. data/test/unit/strings_param_test.rb +27 -0
  174. data/test/unit/test_helper.rb +1 -0
  175. data/test/unit/tool_generator_test.rb +43 -0
  176. data/test/unit/unix_system_test.rb +52 -0
  177. data/test/unit/user_test.rb +147 -0
  178. data/test/unit/vista_system_test.rb +40 -0
  179. data/test/unit/win_nix_system_test.rb +26 -0
  180. data/test/unit/win_system_test.rb +61 -0
  181. metadata +318 -113
  182. data/doc/Bundle +0 -14
  183. data/doc/Generator +0 -35
  184. data/doc/Library +0 -63
  185. data/doc/Task +0 -21
  186. data/doc/Tool +0 -20
  187. data/lib/platform.rb +0 -113
  188. data/lib/progress_bar.rb +0 -354
  189. data/lib/sprout/builder.rb +0 -51
  190. data/lib/sprout/bundle_resolver.rb +0 -349
  191. data/lib/sprout/commands/generate.rb +0 -9
  192. data/lib/sprout/dynamic_accessors.rb +0 -40
  193. data/lib/sprout/general_tasks.rb +0 -6
  194. data/lib/sprout/generator.rb +0 -7
  195. data/lib/sprout/generator/base_mixins.rb +0 -186
  196. data/lib/sprout/generator/named_base.rb +0 -227
  197. data/lib/sprout/project_model.rb +0 -278
  198. data/lib/sprout/simple_resolver.rb +0 -88
  199. data/lib/sprout/tasks/erb_resolver.rb +0 -118
  200. data/lib/sprout/tasks/gem_wrap_task.rb +0 -214
  201. data/lib/sprout/tasks/git_task.rb +0 -134
  202. data/lib/sprout/tasks/library_task.rb +0 -118
  203. data/lib/sprout/tasks/sftp_task.rb +0 -248
  204. data/lib/sprout/tasks/ssh_task.rb +0 -153
  205. data/lib/sprout/tasks/tool_task.rb +0 -836
  206. data/lib/sprout/tasks/zip_task.rb +0 -158
  207. data/lib/sprout/tool_task_model.rb +0 -19
  208. data/lib/sprout/user.rb +0 -415
  209. data/lib/sprout/version_file.rb +0 -89
  210. data/lib/sprout/zip_util.rb +0 -61
  211. data/samples/gem_wrap/rakefile.rb +0 -17
@@ -0,0 +1,18 @@
1
+ require "rubygems"
2
+ require "bundler"
3
+
4
+ Bundler.setup :default, :development
5
+
6
+ # These require statments *must* be in this order:
7
+ # http://bit.ly/bCC0Ew
8
+ # Somewhat surprised they're not being required by Bundler...
9
+ require 'shoulda'
10
+ require 'mocha'
11
+
12
+ require File.dirname(__FILE__) + '/../../lib/sprout'
13
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..'))
14
+
15
+ require 'unit/fake_process_runner'
16
+ require 'unit/fake_executable_task'
17
+ require 'sprout/test/sprout_test_case'
18
+
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class StringParamTest < Test::Unit::TestCase
4
+ include SproutTestCase
5
+
6
+ context "a new StringParam" do
7
+
8
+ setup do
9
+ @param = Sprout::Executable::StringParam.new
10
+ @param.name = "string"
11
+ end
12
+
13
+ should "escape spaces" do
14
+ @param.value = "a b c"
15
+ assert_equal '--string=a\ b\ c', @param.to_shell
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class StringTest < Test::Unit::TestCase
4
+ include SproutTestCase
5
+
6
+ context "a new string" do
7
+
8
+ should "switch to snake case" do
9
+ assert_equal "a_b_c", "ABC".snake_case
10
+ assert_equal "my_big_camel_case_word", "MyBigCamelCaseWord".snake_case
11
+ end
12
+
13
+ should "switch to camel case" do
14
+ assert_equal "ABC", "a_b_c".camel_case
15
+ assert_equal "MyBigCamelCaseWord", "my_big_camel_case_word".camel_case
16
+ end
17
+
18
+ end
19
+ end
20
+
@@ -0,0 +1,27 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class StringsParamTest < Test::Unit::TestCase
4
+ include SproutTestCase
5
+
6
+ context "a new StringsParam" do
7
+
8
+ setup do
9
+ @param = Sprout::Executable::Strings.new
10
+ @param.name = "strings"
11
+ end
12
+
13
+ ['abcd', 1234, true].each do |value|
14
+ should "throw with non-enumerable assignment of #{value}" do
15
+ assert_raises Sprout::Errors::ExecutableError do
16
+ @param.value = value
17
+ end
18
+ end
19
+ end
20
+
21
+ should "not escape spaces" do
22
+ @param.value << "a b c"
23
+ assert_equal '--strings+=a b c', @param.to_shell
24
+ end
25
+ end
26
+ end
27
+
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), 'sprout_test_helper')
@@ -0,0 +1,43 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper")
2
+
3
+ require 'sprout/generators/tool/tool_generator'
4
+
5
+ class ToolGeneratorTest < Test::Unit::TestCase
6
+ include SproutTestCase
7
+
8
+ context "A generated tool" do
9
+
10
+ setup do
11
+ @temp = File.join(fixtures, 'generators', 'tool')
12
+ FileUtils.mkdir_p @temp
13
+ @generator = Sprout::ToolGenerator.new
14
+ @generator.path = @temp
15
+ @generator.logger = StringIO.new
16
+ end
17
+
18
+ teardown do
19
+ remove_file @temp
20
+ end
21
+
22
+ should "generate a new tool project" do
23
+ @generator.input = 'flex4sdk'
24
+ @generator.author = 'Some Body'
25
+ @generator.execute
26
+
27
+ project = File.join(@temp, 'flex4sdk')
28
+ assert_file project
29
+ assert_file File.join(project, 'Gemfile')
30
+ assert_file File.join(project, 'flex4sdk.gemspec') do |content|
31
+ assert_matches /s.name\s+= Flex4sdk::NAME/, content
32
+ assert_matches /s.version\s+= Flex4sdk::VERSION::STRING/, content
33
+ assert_matches /s.author\s+= "Some Body"/, content
34
+ end
35
+ assert_file File.join(project, 'flex4sdk.rb') do |content|
36
+ assert_matches /NAME = 'flex4sdk'/, content
37
+ assert_matches /url\s+= "http:\/\/github.com/, content
38
+ end
39
+ end
40
+
41
+ end
42
+ end
43
+
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class UnixSystemTest < Test::Unit::TestCase
4
+ include SproutTestCase
5
+
6
+ context "new unix system" do
7
+
8
+ setup do
9
+ @user = Sprout::System::UnixSystem.new
10
+ @user.stubs(:home).returns '/home/someone'
11
+ end
12
+
13
+ should "escape spaces in paths" do
14
+ assert_equal 'a\ b', @user.clean_path('a b')
15
+ end
16
+
17
+ should "snake case application name" do
18
+ assert_equal '.foo_bar', @user.format_application_name('Foo Bar')
19
+ end
20
+
21
+ should "have home" do
22
+ assert_equal '/home/someone', @user.home
23
+ end
24
+
25
+ should "have library" do
26
+ assert_equal '/home/someone', @user.library
27
+ end
28
+
29
+ should "format application home" do
30
+ assert_equal '/home/someone/.sprouts', @user.application_home('Sprouts')
31
+ end
32
+
33
+ context "when fed an application with windows line endings" do
34
+
35
+ setup do
36
+ @source = File.join fixtures, 'executable', 'windows_line_endings'
37
+ @target = File.join fixtures, 'executable', 'windows_line_endings.tmp'
38
+ FileUtils.cp @source, @target
39
+ end
40
+
41
+ teardown do
42
+ remove_file @target
43
+ end
44
+
45
+ should "fix windows line endings" do
46
+ @user.expects :repair_executable
47
+ @user.attempt_to_repair_executable @target
48
+ end
49
+ end
50
+ end
51
+ end
52
+
@@ -0,0 +1,147 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ #include SproutTestCase
5
+
6
+ ['vista', 'mswin', 'wince', 'emx'].each do |variant|
7
+ context variant do
8
+ should "create a Win System" do
9
+ Sprout::Platform.any_instance.stubs(:ruby_platform).returns variant
10
+ assert Sprout::System.create.is_a?(Sprout::System::WinSystem)
11
+ end
12
+ end
13
+ end
14
+
15
+ =begin
16
+
17
+ ['cygwin', 'mingw', 'bccwin'].each do |variant|
18
+ context variant do
19
+ should "create a WinNix System" do
20
+ Sprout::Platform.any_instance.stubs(:ruby_platform).returns variant
21
+ assert Sprout::System.create.is_a?(Sprout::System::WinNixUser)
22
+ assert Sprout::System.create.is_a?(Sprout::System::WinUser)
23
+ end
24
+ end
25
+ end
26
+
27
+ context "vista" do
28
+ should "create a Vista System" do
29
+ Sprout::Platform.any_instance.stubs(:ruby_platform).returns "vista"
30
+ assert Sprout::System.create.is_a?(Sprout::System::VistaUser)
31
+ assert Sprout::System.create.is_a?(Sprout::System::WinUser)
32
+ end
33
+ end
34
+
35
+ ['solaris', 'redhat', 'ubuntu'].each do |variant|
36
+ context variant do
37
+
38
+ setup do
39
+ @success_exec = File.join(fixtures, 'process_runner', 'success')
40
+ @failure_exec = File.join(fixtures, 'process_runner', 'failure')
41
+ @system = Sprout::System::UnixUser.new
42
+ @process = FakeProcessRunner.new
43
+ # Allows this test to run on Windows:
44
+ @system.stubs(:get_process_runner).returns @process
45
+ end
46
+
47
+ should "create a Unix System" do
48
+ Sprout::Platform.any_instance.stubs(:ruby_platform).returns variant
49
+ assert Sprout::System.create.is_a?(Sprout::System::UnixUser)
50
+ end
51
+
52
+ should "execute external processes" do
53
+ @system.execute @success_exec
54
+ end
55
+
56
+ should "handle execution errors" do
57
+ # Write to the fake error stream:
58
+ @process.read_err.write "Forced Error For test"
59
+ assert_raises Sprout::Errors::ExecutionError do
60
+ @system.execute @failure_exec
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ context "osx" do
67
+ should "create an OSX System" do
68
+ Sprout::Platform.any_instance.stubs(:ruby_platform).returns "darwin"
69
+ assert Sprout::System.create.is_a?(Sprout::System::OSXUser)
70
+ end
71
+ end
72
+
73
+ context "java" do
74
+ should "create a Java System" do
75
+ Sprout::Platform.any_instance.stubs(:ruby_platform).returns "java"
76
+ assert Sprout::System.create.is_a?(Sprout::System::JavaUser)
77
+ end
78
+ end
79
+
80
+ context "any system" do
81
+
82
+ setup do
83
+ @system = Sprout::System::UnixUser.new
84
+ end
85
+
86
+ context "library path" do
87
+
88
+ should "match the home path" do
89
+ assert_not_nil @system.library
90
+ assert_equal @system.home, @system.library
91
+ end
92
+ end
93
+
94
+ context "home path" do
95
+
96
+ setup do
97
+ # Block all of the automatic path introspection:
98
+ [
99
+ :env_userprofile,
100
+ :env_home,
101
+ :env_homedrive,
102
+ :env_homepath,
103
+ :tilde_home,
104
+ :alt_separator?
105
+ ].each do |accessor|
106
+ @system.stubs(accessor).returns nil
107
+ end
108
+ end
109
+
110
+ should "use env HOME" do
111
+ @system.expects(:env_home).returns "abc"
112
+ assert_equal 'abc', @system.home
113
+ end
114
+
115
+ should "use the env USERPROFILE" do
116
+ @system.expects(:env_userprofile).returns "abc"
117
+ assert_equal 'abc', @system.home
118
+ end
119
+
120
+ should "use the env HOMEPATH" do
121
+ @system.expects(:env_homedrive).returns "c"
122
+ @system.expects(:env_homepath).returns "abc"
123
+ assert_equal 'c:abc', @system.home
124
+ end
125
+
126
+ should "use ~" do
127
+ @system.expects(:tilde_home).returns "abc"
128
+ assert_equal 'abc', @system.home
129
+ end
130
+
131
+ should "fallback to C drive" do
132
+ @system.expects(:tilde_home).raises StandardError.new
133
+ @system.expects(:alt_separator?).returns true
134
+ assert_equal "C:\\", @system.home
135
+ end
136
+
137
+ should "fallback to unix root" do
138
+ @system.expects(:tilde_home).raises StandardError.new
139
+ @system.expects(:alt_separator?).returns false
140
+ assert_equal "/", @system.home
141
+ end
142
+ end
143
+
144
+ end
145
+ =end
146
+ end
147
+
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class VistaSystemTest < Test::Unit::TestCase
4
+ include SproutTestCase
5
+
6
+ context "new windows vista system" do
7
+
8
+ setup do
9
+ @user_system = Sprout::System::VistaSystem.new
10
+ end
11
+
12
+ should "work when env_userprofile isn't found" do
13
+ @user_system.stubs(:find_home).returns 'C:\Documents and Settings\Some System'
14
+ File.stubs(:exists?).returns true
15
+ assert_equal 'C:\Documents and Settings\Some System/Local Settings/Application Data', @user_system.library
16
+ end
17
+
18
+ context "with a valid userprofile" do
19
+
20
+ setup do
21
+ @user_system.stubs(:env_userprofile).returns '/somehome'
22
+ end
23
+
24
+ should "find library" do
25
+ File.stubs(:exists?).returns true
26
+ assert_equal '/somehome/Local Settings/Application Data', @user_system.library
27
+ end
28
+
29
+ should "wrap paths that have spaces with escaped quotes" do
30
+ assert_equal "\"foo bar\"", @user_system.clean_path("foo bar")
31
+ end
32
+
33
+ should "not modify paths that have no spaced" do
34
+ assert_equal "foobar", @user_system.clean_path("foobar")
35
+ end
36
+ end
37
+
38
+ end
39
+ end
40
+
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class WinNixSystemTest < Test::Unit::TestCase
4
+ include SproutTestCase
5
+
6
+ context "new windows nix (cygwin/mingw) system" do
7
+
8
+ setup do
9
+ @user = Sprout::System::WinNixSystem.new
10
+ @user.stubs(:win_home).returns 'C:\Documents and Settings\Some System'
11
+ end
12
+
13
+ should "find home" do
14
+ assert_equal '/cygdrive/c/Documents and Settings/Some System', @user.home
15
+ end
16
+
17
+ should "wrap paths that have spaces with escaped quotes" do
18
+ assert_equal "\'foo bar\'", @user.clean_path("foo bar")
19
+ end
20
+
21
+ should "not modify paths that have no spaced" do
22
+ assert_equal "foobar", @user.clean_path("foobar")
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,61 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class WinSystemTest < Test::Unit::TestCase
4
+ include SproutTestCase
5
+
6
+ context "new windows system" do
7
+
8
+ setup do
9
+ @user = Sprout::System::WinSystem.new
10
+ end
11
+
12
+ should "not accept home path with My Documents" do
13
+ @user.stubs(:find_home).returns File.join('C:', 'foo', 'My Documents')
14
+ assert_equal File.join('C:', 'foo'), @user.home
15
+ end
16
+
17
+ should "return env_path" do
18
+ @user.stubs(:env_path).returns "a;b;c;"
19
+ assert_equal ['a', 'b', 'c'], @user.get_paths
20
+ end
21
+
22
+ should "execute with correct implementation" do
23
+ @echochamber = File.join fixtures, 'remote_file_target', 'bin', 'echochamber'
24
+ # Don't actually call the win32 execute function:
25
+ r = StringIO.new
26
+ w = StringIO.new
27
+ e = StringIO.new
28
+ pid = nil
29
+ Sprout::ProcessRunner.any_instance.expects(:io_popen_block).returns([pid, w, r, e])
30
+ @user.stubs(:clean_path).returns @echochamber
31
+ @user.execute @echochamber
32
+ end
33
+
34
+ context "with home already set" do
35
+
36
+ setup do
37
+ @user.stubs(:home).returns 'C:\Documents and Settings\Some System'
38
+ end
39
+
40
+ should "find library" do
41
+ File.stubs(:exists?).returns true
42
+ assert_matches /Local Settings\/Application Data/, @user.library
43
+ end
44
+
45
+ should "find library outside home" do
46
+ File.stubs(:exists?).returns false
47
+ assert "Shouldn't use app data if it doesn't exist", (@user.library =~ /Application Data/).nil?
48
+ end
49
+
50
+ should "wrap paths that have spaces with escaped quotes" do
51
+ assert_equal "\"foo bar\"", @user.clean_path("foo bar")
52
+ end
53
+
54
+ should "not modify paths that have no spaced" do
55
+ assert_equal "foobar", @user.clean_path("foobar")
56
+ end
57
+ end
58
+
59
+ end
60
+ end
61
+