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.
- data/CHANGELOG.md +10 -0
- data/Gemfile +28 -0
- data/MIT-LICENSE +3 -2
- data/POSTINSTALL.rdoc +28 -0
- data/README.textile +152 -0
- data/bin/sprout +1 -131
- data/bin/sprout-generator +10 -0
- data/bin/sprout-library +11 -0
- data/bin/sprout-tool +10 -0
- data/lib/sprout.rb +4 -500
- data/lib/sprout/archive_unpacker.rb +122 -206
- data/lib/sprout/base.rb +90 -0
- data/lib/sprout/concern.rb +30 -0
- data/lib/sprout/dir.rb +23 -0
- data/lib/sprout/errors.rb +94 -0
- data/lib/sprout/executable.rb +496 -0
- data/lib/sprout/executable/boolean.rb +35 -0
- data/lib/sprout/executable/collection_param.rb +53 -0
- data/lib/sprout/executable/file_param.rb +53 -0
- data/lib/sprout/executable/files.rb +26 -0
- data/lib/sprout/executable/number.rb +10 -0
- data/lib/sprout/executable/param.rb +222 -0
- data/lib/sprout/executable/parameter_factory.rb +28 -0
- data/lib/sprout/executable/path.rb +21 -0
- data/lib/sprout/executable/paths.rb +21 -0
- data/lib/sprout/executable/string_param.rb +15 -0
- data/lib/sprout/executable/strings.rb +11 -0
- data/lib/sprout/executable/url.rb +10 -0
- data/lib/sprout/executable/urls.rb +10 -0
- data/lib/sprout/file_target.rb +76 -0
- data/lib/sprout/generator/base.rb +233 -0
- data/lib/sprout/generator/command.rb +67 -0
- data/lib/sprout/generator/directory_manifest.rb +49 -0
- data/lib/sprout/generator/file_manifest.rb +55 -0
- data/lib/sprout/generator/manifest.rb +13 -0
- data/lib/sprout/generator/template_manifest.rb +13 -0
- data/lib/sprout/generators/generator/generator_generator.rb +48 -0
- data/lib/sprout/generators/generator/templates/generator_class.rb +17 -0
- data/lib/sprout/generators/generator/templates/generator_executable +9 -0
- data/lib/sprout/generators/generator/templates/generator_template +1 -0
- data/lib/sprout/generators/generator/templates/generator_test.rb +37 -0
- data/lib/sprout/generators/generator/templates/generator_test_helper.rb +16 -0
- data/lib/sprout/generators/library/library_generator.rb +20 -0
- data/lib/sprout/generators/library/templates/library.gemspec +19 -0
- data/lib/sprout/generators/library/templates/library.rb +15 -0
- data/lib/sprout/generators/ruby/ruby_generator.rb +59 -0
- data/lib/sprout/generators/ruby/templates/ruby_base.rb +10 -0
- data/lib/sprout/generators/ruby/templates/ruby_executable +6 -0
- data/lib/sprout/generators/ruby/templates/ruby_gemfile +4 -0
- data/lib/sprout/generators/ruby/templates/ruby_input.rb +7 -0
- data/lib/sprout/generators/tool/templates/Gemfile +4 -0
- data/lib/sprout/generators/tool/templates/tool.gemspec +22 -0
- data/lib/sprout/generators/tool/templates/tool.rb +38 -0
- data/lib/sprout/generators/tool/tool_generator.rb +36 -0
- data/lib/sprout/library.rb +111 -0
- data/lib/sprout/log.rb +1 -0
- data/lib/sprout/platform.rb +71 -0
- data/lib/sprout/process_runner.rb +80 -40
- data/lib/sprout/progress_bar.rb +341 -0
- data/lib/sprout/rdoc_parser.rb +91 -0
- data/lib/sprout/remote_file_loader.rb +72 -50
- data/lib/sprout/remote_file_target.rb +44 -152
- data/lib/sprout/ruby_feature.rb +167 -0
- data/lib/sprout/specification.rb +197 -0
- data/lib/sprout/string.rb +19 -0
- data/lib/sprout/system.rb +35 -0
- data/lib/sprout/system/base_system.rb +225 -0
- data/lib/sprout/system/java_system.rb +9 -0
- data/lib/sprout/system/osx_system.rb +26 -0
- data/lib/sprout/system/unix_system.rb +72 -0
- data/lib/sprout/system/vista_system.rb +16 -0
- data/lib/sprout/system/win_nix_system.rb +41 -0
- data/lib/sprout/system/win_system.rb +76 -0
- data/lib/sprout/test/sprout_test_case.rb +211 -0
- data/lib/sprout/version.rb +9 -4
- data/rakefile.rb +85 -144
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/sprout.gemspec +26 -0
- data/test/fixtures/archive_unpacker/copyable/some_file.exe +0 -0
- data/test/fixtures/archive_unpacker/copyable/some_file.rb +0 -0
- data/test/fixtures/archive_unpacker/copyable/some_file.swc +0 -0
- data/test/fixtures/archive_unpacker/tgz/some folder.tgz +0 -0
- data/test/fixtures/archive_unpacker/tgz/some_file.tgz +0 -0
- data/test/fixtures/archive_unpacker/zip/some folder.zip +0 -0
- data/test/fixtures/archive_unpacker/zip/some_file.zip +0 -0
- data/test/fixtures/examples/app_generator.rb +127 -0
- data/test/fixtures/examples/echo_inputs.rb +151 -0
- data/test/fixtures/executable/echochamber_gem/bin/echochamber +3 -0
- data/test/fixtures/executable/echochamber_gem/echo_chamber.rb +10 -0
- data/test/fixtures/executable/flex3sdk_gem/flex3sdk.rb +11 -0
- data/test/fixtures/executable/flex3sdk_gem/mxmlc +3 -0
- data/test/fixtures/executable/flex3sdk_gem/mxmlc.bat +3 -0
- data/test/fixtures/executable/mxmlc.rb +805 -0
- data/test/fixtures/executable/params/input.as +0 -0
- data/test/fixtures/executable/params/input2.as +0 -0
- data/test/fixtures/executable/params/input3.as +0 -0
- data/test/fixtures/executable/params/mxmlc +5 -0
- data/test/fixtures/executable/path with spaces/input.as b/data/test/fixtures/executable/path with → spaces/input.as +0 -0
- data/test/fixtures/executable/path with spaces/input2.as b/data/test/fixtures/executable/path with → spaces/input2.as +0 -0
- data/test/fixtures/executable/path with spaces/input3.as b/data/test/fixtures/executable/path with → spaces/input3.as +0 -0
- data/test/fixtures/executable/paths/folder1/file1 +0 -0
- data/test/fixtures/executable/paths/folder1/file2 +0 -0
- data/test/fixtures/executable/paths/folder1/file3 +0 -0
- data/test/fixtures/executable/paths/folder2/file4 +0 -0
- data/test/fixtures/executable/paths/folder2/file5 +0 -0
- data/test/fixtures/executable/paths/folder3/file6 +0 -0
- data/test/fixtures/executable/src/Main.as +0 -0
- data/test/fixtures/executable/windows_line_endings +47 -0
- data/test/fixtures/generators/song_generator.rb +11 -0
- data/test/fixtures/generators/song_subclass/least_favorite.rb +10 -0
- data/test/fixtures/generators/song_subclass/templates/Song.txt +3 -0
- data/test/fixtures/generators/temp_generator.rb +24 -0
- data/test/fixtures/generators/templates/Main.as +9 -0
- data/test/fixtures/generators/templates/OtherFileTemplate +1 -0
- data/test/fixtures/generators/templates/SomeFile +1 -0
- data/test/fixtures/generators/templates/SomeSubclassFile +2 -0
- data/test/fixtures/generators/templates/Song.txt +3 -0
- data/test/fixtures/generators/templates/destroy +0 -0
- data/test/fixtures/generators/templates/generate +0 -0
- data/test/fixtures/library/archive/Archive.swc +0 -0
- data/test/fixtures/library/sources/lib/a/A.as +0 -0
- data/test/fixtures/library/sources/lib/b/B.as +0 -0
- data/test/fixtures/library/sources/src/Source.as +0 -0
- data/test/fixtures/process_runner/chmod_script.sh +3 -0
- data/test/fixtures/process_runner/dir with spaces/chmod_script.sh +3 -0
- data/test/fixtures/process_runner/failure +5 -0
- data/test/fixtures/process_runner/success +4 -0
- data/test/fixtures/remote_file_loader/md5/echochamber-test.zip +0 -0
- data/test/fixtures/remote_file_loader/md5/file_with_known_md5 +0 -0
- data/test/fixtures/remote_file_target/bin/echochamber +3 -0
- data/test/fixtures/remote_file_target/bin/echochamber.bat +3 -0
- data/test/fixtures/remote_file_target/echochamber-test.zip +0 -0
- data/test/fixtures/specification/asunit4.rb +25 -0
- data/test/fixtures/specification/ext/AsUnit-4.1.pre.swc +0 -0
- data/test/fixtures/specification/flashplayer.rb +30 -0
- data/test/fixtures/specification/flex4sdk.rb +72 -0
- data/test/fixtures/specification/flexunit4.sproutspec +17 -0
- data/test/fixtures/specification/lib/as3reflection/Reflection.as +0 -0
- data/test/fixtures/specification/src/AsUnit.as +0 -0
- data/test/fixtures/user/mxmlc_crlf +3 -0
- data/test/unit/archive_unpacker_test.rb +108 -0
- data/test/unit/boolean_param_test.rb +38 -0
- data/test/unit/executable_option_parser_test.rb +142 -0
- data/test/unit/executable_param_test.rb +76 -0
- data/test/unit/executable_test.rb +237 -0
- data/test/unit/fake_executable_task.rb +22 -0
- data/test/unit/fake_other_executable.rb +20 -0
- data/test/unit/fake_process_runner.rb +29 -0
- data/test/unit/file_param_test.rb +61 -0
- data/test/unit/file_target_test.rb +42 -0
- data/test/unit/files_param_test.rb +72 -0
- data/test/unit/generator_generator_test.rb +85 -0
- data/test/unit/generator_test.rb +333 -0
- data/test/unit/library_generator_test.rb +41 -0
- data/test/unit/library_test.rb +88 -0
- data/test/unit/osx_system_test.rb +20 -0
- data/test/unit/path_param_test.rb +43 -0
- data/test/unit/paths_param_test.rb +53 -0
- data/test/unit/platform_test.rb +76 -0
- data/test/unit/process_runner_test.rb +104 -0
- data/test/unit/rdoc_parser_test.rb +15 -0
- data/test/unit/remote_file_loader_test.rb +34 -0
- data/test/unit/remote_file_target_test.rb +105 -0
- data/test/unit/ruby_feature_test.rb +108 -0
- data/test/unit/ruby_generator_test.rb +70 -0
- data/test/unit/specification_test.rb +73 -0
- data/test/unit/sprout_test.rb +170 -0
- data/test/unit/sprout_test_helper.rb +18 -0
- data/test/unit/string_param_test.rb +19 -0
- data/test/unit/string_test.rb +20 -0
- data/test/unit/strings_param_test.rb +27 -0
- data/test/unit/test_helper.rb +1 -0
- data/test/unit/tool_generator_test.rb +43 -0
- data/test/unit/unix_system_test.rb +52 -0
- data/test/unit/user_test.rb +147 -0
- data/test/unit/vista_system_test.rb +40 -0
- data/test/unit/win_nix_system_test.rb +26 -0
- data/test/unit/win_system_test.rb +61 -0
- metadata +318 -113
- data/doc/Bundle +0 -14
- data/doc/Generator +0 -35
- data/doc/Library +0 -63
- data/doc/Task +0 -21
- data/doc/Tool +0 -20
- data/lib/platform.rb +0 -113
- data/lib/progress_bar.rb +0 -354
- data/lib/sprout/builder.rb +0 -51
- data/lib/sprout/bundle_resolver.rb +0 -349
- data/lib/sprout/commands/generate.rb +0 -9
- data/lib/sprout/dynamic_accessors.rb +0 -40
- data/lib/sprout/general_tasks.rb +0 -6
- data/lib/sprout/generator.rb +0 -7
- data/lib/sprout/generator/base_mixins.rb +0 -186
- data/lib/sprout/generator/named_base.rb +0 -227
- data/lib/sprout/project_model.rb +0 -278
- data/lib/sprout/simple_resolver.rb +0 -88
- data/lib/sprout/tasks/erb_resolver.rb +0 -118
- data/lib/sprout/tasks/gem_wrap_task.rb +0 -214
- data/lib/sprout/tasks/git_task.rb +0 -134
- data/lib/sprout/tasks/library_task.rb +0 -118
- data/lib/sprout/tasks/sftp_task.rb +0 -248
- data/lib/sprout/tasks/ssh_task.rb +0 -153
- data/lib/sprout/tasks/tool_task.rb +0 -836
- data/lib/sprout/tasks/zip_task.rb +0 -158
- data/lib/sprout/tool_task_model.rb +0 -19
- data/lib/sprout/user.rb +0 -415
- data/lib/sprout/version_file.rb +0 -89
- data/lib/sprout/zip_util.rb +0 -61
- 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
|
+
|