fedux_org-stdlib 0.3.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/.simplecov +7 -6
- data/Gemfile +33 -28
- data/README.md +1 -1
- data/Rakefile +8 -1
- data/doc/colors.md +2 -2
- data/doc/commands.md +2 -2
- data/doc/logic_converters.md +5 -5
- data/doc/models.md +5 -5
- data/fedux_org-stdlib.gemspec +3 -7
- data/lib/fedux_org_stdlib.rb +13 -0
- data/lib/fedux_org_stdlib/app_config.rb +247 -0
- data/lib/fedux_org_stdlib/ci.rb +6 -0
- data/lib/fedux_org_stdlib/colors/html_color.rb +18 -0
- data/lib/fedux_org_stdlib/command.rb +10 -0
- data/lib/fedux_org_stdlib/command/command_result.rb +13 -0
- data/lib/fedux_org_stdlib/command/run_command.rb +55 -0
- data/lib/fedux_org_stdlib/command/which.rb +60 -0
- data/lib/fedux_org_stdlib/core_ext/array.rb +6 -0
- data/lib/fedux_org_stdlib/core_ext/string.rb +3 -0
- data/lib/fedux_org_stdlib/environment.rb +32 -0
- data/lib/fedux_org_stdlib/filesystem.rb +248 -0
- data/lib/fedux_org_stdlib/filesystem/exceptions.rb +12 -0
- data/lib/fedux_org_stdlib/logging.rb +12 -0
- data/lib/fedux_org_stdlib/logging/logger.rb +79 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logging/severity.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters.rb +11 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logic_converters/exceptions.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters/logic_converter.rb +39 -0
- data/lib/fedux_org_stdlib/logic_converters/on_off_converter.rb +35 -0
- data/lib/fedux_org_stdlib/logic_converters/true_false_converter.rb +34 -0
- data/lib/fedux_org_stdlib/logic_converters/y_n_converter.rb +34 -0
- data/lib/fedux_org_stdlib/logic_converters/yes_no_converter.rb +34 -0
- data/lib/fedux_org_stdlib/models.rb +5 -0
- data/lib/fedux_org_stdlib/models/base_model.rb +129 -0
- data/lib/fedux_org_stdlib/models/class_based_model.rb +67 -0
- data/lib/fedux_org_stdlib/models/exceptions.rb +40 -0
- data/lib/fedux_org_stdlib/models/filesystem_based_model.rb +98 -0
- data/lib/fedux_org_stdlib/project.rb +6 -0
- data/lib/fedux_org_stdlib/project/generators/taskjuggler.rb +35 -0
- data/lib/fedux_org_stdlib/project/logger.rb +12 -0
- data/lib/fedux_org_stdlib/project/plan.rb +26 -0
- data/lib/fedux_org_stdlib/project/report.rb +63 -0
- data/lib/fedux_org_stdlib/rake.rb +8 -0
- data/lib/fedux_org_stdlib/rake/exceptions.rb +9 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/rake/project.rb +4 -4
- data/lib/fedux_org_stdlib/rake/project_task.rb +29 -0
- data/lib/fedux_org_stdlib/rake/shell_task.rb +45 -0
- data/lib/fedux_org_stdlib/rake/sub_task.rb +26 -0
- data/lib/fedux_org_stdlib/rake/task.rb +118 -0
- data/lib/fedux_org_stdlib/rake/version_bump_task.rb +56 -0
- data/lib/fedux_org_stdlib/rake_tasks.rb +8 -0
- data/lib/fedux_org_stdlib/rake_tasks/console.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/documentation.rb +2 -0
- data/lib/fedux_org_stdlib/rake_tasks/documentation/yard.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems.rb +3 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems/bundler.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems/package.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/project.rb +1 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report.rb +3 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/generate.rb +10 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open_shortcut.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa.rb +4 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa/rubocop.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa/travis.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/terminal.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests.rb +4 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/cucumber.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/rspec.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/travis.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/version.rb +6 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/bump.rb +8 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/restore.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/show.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/show_shortcut.rb +9 -0
- data/lib/fedux_org_stdlib/require_files.rb +27 -0
- data/lib/fedux_org_stdlib/version.rb +5 -0
- data/lib/fedux_org_stdlib/version_management/exceptions.rb +9 -0
- data/lib/fedux_org_stdlib/version_management/library_builder.rb +12 -0
- data/lib/fedux_org_stdlib/version_management/ruby_library.rb +13 -0
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file.rb +78 -0
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file_parser.rb +22 -0
- data/lib/fedux_org_stdlib/version_management/version.rb +25 -0
- data/lib/fedux_org_stdlib/version_management/version_builder.rb +12 -0
- data/lib/fedux_org_stdlib/versionable.rb +18 -0
- data/rakefiles/default.rake +8 -1
- data/rakefiles/travis.rake +1 -1
- data/script/console +1 -1
- data/script/terminal +3 -2
- data/spec/app_config_spec.rb +7 -0
- data/spec/colors/html_color_spec.rb +7 -14
- data/spec/command/run_command_spec.rb +9 -10
- data/spec/command/which_spec.rb +8 -9
- data/spec/environment_spec.rb +12 -11
- data/spec/logger/logger_spec.rb +17 -16
- data/spec/logic_converters/on_off_converter_spec.rb +8 -7
- data/spec/logic_converters/true_false_converter_spec.rb +8 -7
- data/spec/logic_converters/y_n_converter_spec.rb +8 -7
- data/spec/logic_converters/yes_no_converter_spec.rb +8 -7
- data/spec/models/base_model_spec.rb +7 -7
- data/spec/models/class_based_model_spec.rb +37 -39
- data/spec/models/filesystem_based_model_spec.rb +24 -24
- data/spec/project/plan_spec.rb +6 -5
- data/spec/project/report_spec.rb +35 -29
- data/spec/project/taskjuggler_spec.rb +13 -12
- data/spec/spec_helper.rb +15 -38
- data/spec/support/environment.rb +16 -0
- data/spec/support/filesystem.rb +19 -0
- data/spec/support/reporting.rb +2 -0
- data/spec/support/rspec.rb +5 -0
- data/spec/support/string.rb +2 -0
- data/spec/version_management/library_builder_spec.rb +5 -4
- data/spec/version_management/ruby_library_spec.rb +5 -4
- data/spec/version_management/rubygem_version_file_parser_spec.rb +27 -16
- data/spec/version_management/rubygem_version_file_spec.rb +56 -54
- data/spec/version_management/version_builder_spec.rb +5 -4
- data/spec/version_management/version_spec.rb +16 -16
- metadata +104 -110
- data/lib/fedux_org/stdlib.rb +0 -15
- data/lib/fedux_org/stdlib/colors/html_color.rb +0 -19
- data/lib/fedux_org/stdlib/command.rb +0 -11
- data/lib/fedux_org/stdlib/command/command_result.rb +0 -14
- data/lib/fedux_org/stdlib/command/run_command.rb +0 -55
- data/lib/fedux_org/stdlib/command/which.rb +0 -67
- data/lib/fedux_org/stdlib/environment.rb +0 -31
- data/lib/fedux_org/stdlib/filesystem.rb +0 -247
- data/lib/fedux_org/stdlib/filesystem/exceptions.rb +0 -13
- data/lib/fedux_org/stdlib/logging.rb +0 -13
- data/lib/fedux_org/stdlib/logging/logger.rb +0 -79
- data/lib/fedux_org/stdlib/logic_converters.rb +0 -12
- data/lib/fedux_org/stdlib/logic_converters/logic_converter.rb +0 -40
- data/lib/fedux_org/stdlib/logic_converters/on_off_converter.rb +0 -36
- data/lib/fedux_org/stdlib/logic_converters/true_false_converter.rb +0 -35
- data/lib/fedux_org/stdlib/logic_converters/y_n_converter.rb +0 -35
- data/lib/fedux_org/stdlib/logic_converters/yes_no_converter.rb +0 -35
- data/lib/fedux_org/stdlib/models.rb +0 -4
- data/lib/fedux_org/stdlib/models/base_model.rb +0 -129
- data/lib/fedux_org/stdlib/models/class_based_model.rb +0 -76
- data/lib/fedux_org/stdlib/models/exceptions.rb +0 -41
- data/lib/fedux_org/stdlib/models/filesystem_based_model.rb +0 -99
- data/lib/fedux_org/stdlib/project.rb +0 -5
- data/lib/fedux_org/stdlib/project/generators/taskjuggler.rb +0 -41
- data/lib/fedux_org/stdlib/project/logger.rb +0 -13
- data/lib/fedux_org/stdlib/project/plan.rb +0 -15
- data/lib/fedux_org/stdlib/project/report.rb +0 -67
- data/lib/fedux_org/stdlib/rake.rb +0 -7
- data/lib/fedux_org/stdlib/rake/console.rb +0 -3
- data/lib/fedux_org/stdlib/rake/documentation.rb +0 -1
- data/lib/fedux_org/stdlib/rake/documentation/yard.rb +0 -14
- data/lib/fedux_org/stdlib/rake/gems.rb +0 -2
- data/lib/fedux_org/stdlib/rake/gems/bundler.rb +0 -12
- data/lib/fedux_org/stdlib/rake/gems/package.rb +0 -7
- data/lib/fedux_org/stdlib/rake/library.rb +0 -8
- data/lib/fedux_org/stdlib/rake/terminal.rb +0 -9
- data/lib/fedux_org/stdlib/rake/tests.rb +0 -3
- data/lib/fedux_org/stdlib/rake/tests/cucumber.rb +0 -6
- data/lib/fedux_org/stdlib/rake/tests/rspec.rb +0 -6
- data/lib/fedux_org/stdlib/rake/tests/travis.rb +0 -15
- data/lib/fedux_org/stdlib/rake/travis.rb +0 -1
- data/lib/fedux_org/stdlib/rake/travis/lint.rb +0 -10
- data/lib/fedux_org/stdlib/rake/version.rb +0 -4
- data/lib/fedux_org/stdlib/rake/version/base.rb +0 -7
- data/lib/fedux_org/stdlib/rake/version/bump.rb +0 -78
- data/lib/fedux_org/stdlib/rake/version/restore.rb +0 -9
- data/lib/fedux_org/stdlib/rake/version/show.rb +0 -9
- data/lib/fedux_org/stdlib/rake/version/show_shortcut.rb +0 -6
- data/lib/fedux_org/stdlib/version.rb +0 -6
- data/lib/fedux_org/stdlib/version_management/library_builder.rb +0 -15
- data/lib/fedux_org/stdlib/version_management/ruby_library.rb +0 -14
- data/lib/fedux_org/stdlib/version_management/rubygem_version_file.rb +0 -90
- data/lib/fedux_org/stdlib/version_management/rubygem_version_file_parser.rb +0 -18
- data/lib/fedux_org/stdlib/version_management/version.rb +0 -33
- data/lib/fedux_org/stdlib/version_management/version_builder.rb +0 -15
@@ -0,0 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/core_ext/array'
|
3
|
+
|
4
|
+
module FeduxOrgStdlib
|
5
|
+
module RequireFiles
|
6
|
+
def require_library(libraries, message_template = 'You need to install %s to make "%s" work.')
|
7
|
+
libraries = Array(libraries)
|
8
|
+
|
9
|
+
begin
|
10
|
+
libraries.each { |l| require l }
|
11
|
+
rescue LoadError => e
|
12
|
+
$stderr.puts format(message_template, libraries.map { |l| l.split(%r{/}).first }.uniq.to_list, klass.to_s, caller[1].split(/:/)[0,2].join(':'))
|
13
|
+
$stderr.puts
|
14
|
+
$stderr.puts e.message
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def require_installed_gem(gems, message_template = 'You need to install %s to make "%s" work.')
|
20
|
+
gems = Array(gems)
|
21
|
+
|
22
|
+
raise LoadError, JSON.dump(gems: gems) if gems.any? { |name| Gem::Specification.find_all_by_name(name).blank? }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
include FeduxOrgStdlib::RequireFiles
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/require_files'
|
3
|
+
require_library %w{ erubis forwardable active_support/core_ext/string/strip active_support/core_ext/object/blank }
|
4
|
+
|
5
|
+
require 'fedux_org_stdlib/version_management/rubygem_version_file_parser'
|
6
|
+
require 'fedux_org_stdlib/version_management/version_builder'
|
7
|
+
require 'fedux_org_stdlib/version_management/library_builder'
|
8
|
+
require 'fedux_org_stdlib/version_management/exceptions'
|
9
|
+
|
10
|
+
module FeduxOrgStdlib
|
11
|
+
module VersionManagement
|
12
|
+
class RubygemVersionFile
|
13
|
+
extend Forwardable
|
14
|
+
|
15
|
+
def_delegators :@version, :bump
|
16
|
+
|
17
|
+
def initialize(version, library)
|
18
|
+
@version = version
|
19
|
+
@library = library
|
20
|
+
end
|
21
|
+
|
22
|
+
def version
|
23
|
+
@version.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def version=(v)
|
27
|
+
@version.update(v)
|
28
|
+
end
|
29
|
+
|
30
|
+
def write(path)
|
31
|
+
File.write(path, to_s)
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.read(path, parser = RubygemVersionFileParser.new, version_builder = VersionBuilder.new, library_builder = LibraryBuilder.new)
|
35
|
+
parser.parse(path)
|
36
|
+
|
37
|
+
version = version_builder.build_from(parser.version)
|
38
|
+
library = library_builder.build_from(parser.modules)
|
39
|
+
|
40
|
+
RubygemVersionFile.new(version, library)
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_s
|
44
|
+
klass = Class.new do
|
45
|
+
attr_reader :version, :library
|
46
|
+
|
47
|
+
def initialize(version, module_names)
|
48
|
+
@version = version
|
49
|
+
@module_names = module_names
|
50
|
+
end
|
51
|
+
|
52
|
+
def prefix(n)
|
53
|
+
' ' * 2 * n
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
Erubis::Eruby.new(template).evaluate(klass.new(@version, @library.module_names))
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def template
|
63
|
+
<<-EOF.strip_heredoc
|
64
|
+
# encoding: utf-8
|
65
|
+
# <%= @module_names.first %>
|
66
|
+
<% @module_names.each_with_index do |m,i| -%>
|
67
|
+
<%= prefix(i) %>module <%= m %>
|
68
|
+
<% end -%>
|
69
|
+
<%= prefix(@module_names.size) %>VERSION = '<%= @version %>'
|
70
|
+
<% (@module_names.size - 1).downto(0) do |i| -%>
|
71
|
+
<%= prefix(i) %>end
|
72
|
+
<% end -%>
|
73
|
+
EOF
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'json'
|
3
|
+
require 'fedux_org_stdlib/version_management/exceptions'
|
4
|
+
|
5
|
+
module FeduxOrgStdlib
|
6
|
+
module VersionManagement
|
7
|
+
class RubygemVersionFileParser
|
8
|
+
|
9
|
+
attr_reader :version, :modules
|
10
|
+
|
11
|
+
def parse(file)
|
12
|
+
data = File.read(file)
|
13
|
+
|
14
|
+
@version = data.match(/(?:VERSION|Version)\s+=\s+["']([^'"]+)["']/) { $1 }
|
15
|
+
@modules = data.scan( /^\s*module\s+([A-Z][A-Za-z0-9]+(?:::[A-Z][A-Z0-9a-z]+)*)$/x ).flatten
|
16
|
+
|
17
|
+
raise Exceptions::VersionFileInvalid, JSON.dump(file: file) if self.version.blank?
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/require_files'
|
3
|
+
require_library %w{ versionomy forwardable }
|
4
|
+
|
5
|
+
module FeduxOrgStdlib
|
6
|
+
module VersionManagement
|
7
|
+
class Version
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
def_delegators :@version, :to_s
|
11
|
+
|
12
|
+
def initialize(version)
|
13
|
+
@version = Versionomy.parse(version)
|
14
|
+
end
|
15
|
+
|
16
|
+
def update( *args )
|
17
|
+
initialize( *args )
|
18
|
+
end
|
19
|
+
|
20
|
+
def bump(type)
|
21
|
+
@version = @version.bump(type)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'fedux_org_stdlib/rake/exceptions'
|
3
|
+
|
4
|
+
module FeduxOrgStdlib
|
5
|
+
module Versionable
|
6
|
+
def version_file(working_directory = Dir.getwd)
|
7
|
+
paths = []
|
8
|
+
paths << File.join(working_directory, 'lib', '*', 'version.rb')
|
9
|
+
paths << File.join(working_directory, 'lib', '*', '*', 'version.rb')
|
10
|
+
|
11
|
+
file = Dir.glob(paths.shift).first while !paths.blank? and file.blank?
|
12
|
+
|
13
|
+
raise Exceptions::VersionFileNotFound, JSON.dump(message: 'Cannot find version file') unless file
|
14
|
+
|
15
|
+
file
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/rakefiles/default.rake
CHANGED
data/rakefiles/travis.rake
CHANGED
data/script/console
CHANGED
data/script/terminal
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
2
3
|
|
3
4
|
require 'tmrb'
|
4
5
|
|
@@ -6,7 +7,7 @@ tmux = TmRb::Multiplexer.new
|
|
6
7
|
#creates an empty window
|
7
8
|
tmux.new_session(:session_name => "fedux_org-stdlib")
|
8
9
|
|
9
|
-
tmux.new_window(:name => 'models', :command => 'vim -c \"NERDTree lib/
|
10
|
-
tmux.new_window(:name => 'logging', :command => 'vim -c \"NERDTree lib/
|
10
|
+
tmux.new_window(:name => 'models', :command => 'vim -c \"NERDTree lib/fedux_org_stdlib/models\"')
|
11
|
+
tmux.new_window(:name => 'logging', :command => 'vim -c \"NERDTree lib/fedux_org_stdlib/logging\"')
|
11
12
|
tmux.new_window(:name => 'spec', :command => 'vim -c \"NERDTree spec\"')
|
12
13
|
tmux.start
|
@@ -1,31 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'spec_helper'
|
2
|
-
require '
|
3
|
+
require 'fedux_org_stdlib/colors/html_color'
|
3
4
|
|
4
|
-
describe
|
5
|
+
RSpec.describe FeduxOrgStdlib::Colors::HtmlColor do
|
5
6
|
context '#valid?' do
|
6
7
|
|
7
8
|
it 'suceeds if string is valid html color' do
|
8
|
-
expect(
|
9
|
-
FeduxOrg::Stdlib::Colors::HtmlColor.new( '#11aa11' ).valid?
|
10
|
-
).to be_true
|
9
|
+
expect(FeduxOrgStdlib::Colors::HtmlColor.new('#11aa11')).to be_valid
|
11
10
|
end
|
12
11
|
|
13
12
|
it 'fails if color does not start with #' do
|
14
|
-
expect(
|
15
|
-
FeduxOrg::Stdlib::Colors::HtmlColor.new( '111111' ).valid?
|
16
|
-
).to be_false
|
13
|
+
expect(FeduxOrgStdlib::Colors::HtmlColor.new('111111')).not_to be_valid
|
17
14
|
end
|
18
15
|
|
19
16
|
it 'fails if length is invalid' do
|
20
|
-
expect(
|
21
|
-
FeduxOrg::Stdlib::Colors::HtmlColor.new( '#111111111' ).valid?
|
22
|
-
).to be_false
|
17
|
+
expect(FeduxOrgStdlib::Colors::HtmlColor.new('#111111111')).not_to be_valid
|
23
18
|
end
|
24
19
|
|
25
20
|
it 'fails if no hex number is given' do
|
26
|
-
expect(
|
27
|
-
FeduxOrg::Stdlib::Colors::HtmlColor.new( '#ZZAAZZ' ).valid?
|
28
|
-
).to be_false
|
21
|
+
expect(FeduxOrgStdlib::Colors::HtmlColor.new('#ZZAAZZ')).not_to be_valid
|
29
22
|
end
|
30
23
|
|
31
24
|
end
|
@@ -1,30 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'spec_helper'
|
3
|
+
require 'fedux_org_stdlib/command/run_command'
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
describe Command::RunCommand do
|
6
|
-
|
5
|
+
RSpec.describe Command::RunCommand do
|
7
6
|
context '#run_command' do
|
8
7
|
klass = Class.new do
|
9
8
|
include Command::RunCommand
|
10
9
|
end
|
11
10
|
|
12
11
|
it 'captures stdout' do
|
13
|
-
result = klass.new.run_command(
|
12
|
+
result = klass.new.run_command('echo hello_world')
|
14
13
|
|
15
|
-
expect(
|
14
|
+
expect(result.stdout.chomp).to eq('hello_world')
|
16
15
|
end
|
17
16
|
|
18
17
|
it 'captures stderr' do
|
19
|
-
result = klass.new.run_command(
|
18
|
+
result = klass.new.run_command('echo hello_world >&2')
|
20
19
|
|
21
|
-
expect(
|
20
|
+
expect(result.stderr.chomp).to eq('hello_world')
|
22
21
|
end
|
23
22
|
|
24
23
|
it 'captures exit status' do
|
25
|
-
result = klass.new.run_command(
|
24
|
+
result = klass.new.run_command('echo hello_world >&2')
|
26
25
|
|
27
|
-
expect(
|
26
|
+
expect(result.status.exitstatus).to eq(0)
|
28
27
|
end
|
29
28
|
end
|
30
29
|
end
|
data/spec/command/which_spec.rb
CHANGED
@@ -1,28 +1,27 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'spec_helper'
|
3
|
+
require 'fedux_org_stdlib/command/which'
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
describe Command::Which do
|
6
|
-
|
5
|
+
RSpec.describe Command::Which do
|
7
6
|
context '#which' do
|
8
7
|
klass = Class.new do
|
9
8
|
include Command::Which
|
10
9
|
end
|
11
10
|
|
12
11
|
it 'returns full path for a valid command' do
|
13
|
-
expect(klass.new.which(
|
12
|
+
expect(klass.new.which('which')).to eq('/usr/bin/which')
|
14
13
|
end
|
15
14
|
|
16
15
|
it 'returns full path for a valid command although a full path is given' do
|
17
|
-
expect(klass.new.which(
|
16
|
+
expect(klass.new.which('/usr/bin/which')).to eq('/usr/bin/which')
|
18
17
|
end
|
19
18
|
|
20
19
|
it 'returns nil for a invalid command if a full path is given' do
|
21
|
-
expect(klass.new.which(
|
20
|
+
expect(klass.new.which('/usr/bin/which1')).to eq(nil)
|
22
21
|
end
|
23
22
|
|
24
23
|
it 'returns nil if no executable can be found in path' do
|
25
|
-
expect(klass.new.which('asdfasdf')).to eq(
|
24
|
+
expect(klass.new.which('asdfasdf')).to eq(nil)
|
26
25
|
end
|
27
26
|
|
28
27
|
it 'uses paths string to search for command' do
|
@@ -38,7 +37,7 @@ describe Command::Which do
|
|
38
37
|
end
|
39
38
|
|
40
39
|
it 'uses pathexts array to search for command' do
|
41
|
-
expect(klass.new.which(
|
40
|
+
expect(klass.new.which('which', paths: ['/usr/bin'], pathexts: [''])).to eq('/usr/bin/which')
|
42
41
|
end
|
43
42
|
end
|
44
43
|
end
|
data/spec/environment_spec.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
|
-
describe
|
4
|
+
RSpec.describe FeduxOrgStdlib::Environment do
|
4
5
|
context '#isolated_environment' do
|
5
6
|
it 'runs command in isolated environment' do
|
6
7
|
klass = Class.new do
|
7
|
-
include
|
8
|
+
include FeduxOrgStdlib::Environment
|
8
9
|
|
9
10
|
def test_env
|
10
11
|
isolated_environment 'TEST_VAR' => 'this is a test' do
|
@@ -13,37 +14,37 @@ describe FeduxOrg::Stdlib::Environment do
|
|
13
14
|
end
|
14
15
|
end
|
15
16
|
|
16
|
-
expect(
|
17
|
+
expect(klass.new.test_env).to eq('this is a test')
|
17
18
|
end
|
18
19
|
|
19
20
|
it 'let you define an environment before running a command' do
|
20
21
|
klass = Class.new do
|
21
|
-
include
|
22
|
+
include FeduxOrgStdlib::Environment
|
22
23
|
|
23
24
|
def test_env
|
24
|
-
isolated_environment(
|
25
|
+
isolated_environment({}, { clear: true }) do
|
25
26
|
|
26
27
|
#are set by the terminal and can hardly be cleared
|
27
|
-
ENV.delete(
|
28
|
-
ENV.delete(
|
28
|
+
ENV.delete('COLUMNS')
|
29
|
+
ENV.delete('LINES')
|
29
30
|
|
30
31
|
ENV.to_hash
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
|
-
expect(
|
36
|
+
expect(klass.new.test_env).to eq({})
|
36
37
|
end
|
37
38
|
|
38
39
|
it 'restores environment although an exception occured' do
|
39
40
|
klass = Class.new do
|
40
|
-
include
|
41
|
+
include FeduxOrgStdlib::Environment
|
41
42
|
|
42
43
|
def test_env
|
43
44
|
ENV['TEST_VAR'] = 'TEST'
|
44
45
|
|
45
46
|
begin
|
46
|
-
isolated_environment(
|
47
|
+
isolated_environment({}, { clear: true }) do
|
47
48
|
raise
|
48
49
|
end
|
49
50
|
rescue
|
@@ -53,7 +54,7 @@ describe FeduxOrg::Stdlib::Environment do
|
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
56
|
-
expect(
|
57
|
+
expect(klass.new.test_env).to eq('TEST')
|
57
58
|
end
|
58
59
|
end
|
59
60
|
end
|