omniscient 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +1 -1
- data/README.markdown +7 -3
- data/bin/omniscient +2 -1
- data/lib/omniscient/adapters/mysql.rb +9 -2
- data/lib/omniscient/command.rb +43 -8
- data/lib/omniscient/command/clone.rb +38 -32
- data/lib/omniscient/configuration.rb +29 -11
- data/lib/omniscient/version.rb +1 -1
- data/lib/shell/shell.rb +5 -4
- data/test/lib/omniscient/adapters/test_mysql.rb +24 -3
- data/test/lib/omniscient/command/test_clone.rb +32 -2
- data/test/lib/omniscient/test_configuration.rb +47 -0
- data/test/lib/omniscient/test_ssh.rb +6 -2
- data/test/resources/configurations/omniscient_conf.yml +17 -0
- data/test/set_test_environment.rb +1 -0
- metadata +9 -3
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -8,14 +8,18 @@ don't want to dump and clone data manually all the time.
|
|
8
8
|
Getting Started
|
9
9
|
===============
|
10
10
|
|
11
|
-
In your console
|
11
|
+
In your console:
|
12
|
+
|
13
|
+
$ gem install omniscient
|
14
|
+
|
15
|
+
Then, type the following, where _aliasname_ is a name you choose
|
12
16
|
(i.e. home_computer, work etc):
|
13
17
|
|
14
18
|
$ omniscient clone aliasname
|
15
19
|
|
16
|
-
A setup will begin. The
|
20
|
+
A setup will begin. The configuration will be saved to ~/.omni_config.yml.
|
17
21
|
|
18
|
-
Now that Omniscient knows where to connect, run the following command again
|
22
|
+
Now that Omniscient knows where to connect, run the following command again:
|
19
23
|
|
20
24
|
$ omniscient clone aliasname
|
21
25
|
|
data/bin/omniscient
CHANGED
@@ -11,10 +11,11 @@ command = Shell::Parser::get_command ARGV
|
|
11
11
|
unless command.empty? then
|
12
12
|
command_file = File.expand_path('../../lib/omniscient/command/'+command+'.rb', __FILE__)
|
13
13
|
|
14
|
-
# checks if class file exists
|
15
14
|
if File.exists? command_file then
|
16
15
|
require command_file
|
17
16
|
command = command.capitalize
|
18
17
|
command_obj = Omniscient::Command.const_get(command).new(ARGV)
|
19
18
|
end
|
19
|
+
else
|
20
|
+
command_obj = Omniscient::Command::Run.new(ARGV)
|
20
21
|
end
|
@@ -19,16 +19,22 @@ module Omniscient
|
|
19
19
|
nil
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
|
+
def valid_configuration?
|
24
|
+
return false unless database && user
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
23
28
|
def access_statements
|
24
29
|
str = ''
|
25
30
|
str << ' -u '+self.user unless self.user.nil?
|
26
|
-
str << ' '+self.database unless self.database.nil?
|
27
31
|
str << ' -p'+self.password unless self.password.empty?
|
32
|
+
str << ' '+self.database unless self.database.nil?
|
28
33
|
str
|
29
34
|
end
|
30
35
|
|
31
36
|
def dump
|
37
|
+
return false unless valid_configuration?
|
32
38
|
str = 'mysqldump'
|
33
39
|
str << access_statements
|
34
40
|
str << ' '+self.table unless self.database.nil? || self.table.nil?
|
@@ -38,6 +44,7 @@ module Omniscient
|
|
38
44
|
end
|
39
45
|
|
40
46
|
def import
|
47
|
+
return false unless valid_configuration?
|
41
48
|
str = 'mysql'
|
42
49
|
str << access_statements
|
43
50
|
str << ' < '+Omniscient::DUMP_LOCAL_PATH
|
data/lib/omniscient/command.rb
CHANGED
@@ -1,28 +1,63 @@
|
|
1
|
+
require "version"
|
2
|
+
require "configuration"
|
3
|
+
|
1
4
|
module Omniscient
|
2
5
|
|
3
6
|
module Command
|
4
|
-
|
7
|
+
|
5
8
|
class Run
|
9
|
+
|
10
|
+
attr_accessor :argv, :configurations
|
11
|
+
|
6
12
|
def initialize argv = ''
|
7
13
|
@argv = argv
|
8
14
|
|
9
|
-
@configurations = Omniscient::Configuration.
|
15
|
+
@configurations = Omniscient::Configuration.load
|
10
16
|
|
11
|
-
|
17
|
+
unless (["h", "help"] & Shell::Parser.get_options(argv)).empty?
|
12
18
|
help if self.respond_to?('help')
|
13
19
|
exit
|
14
20
|
end
|
21
|
+
unless (["v", "version"] & Shell::Parser.get_options(argv)).empty?
|
22
|
+
version if self.respond_to?('version')
|
23
|
+
exit
|
24
|
+
end
|
15
25
|
|
16
|
-
if
|
17
|
-
run
|
18
|
-
elsif
|
26
|
+
if self.respond_to?('run')
|
27
|
+
run unless defined? TESTING
|
28
|
+
elsif self.respond_to?('help')
|
19
29
|
help
|
20
30
|
end
|
21
|
-
|
22
31
|
end
|
23
32
|
|
24
33
|
def request_configuration
|
25
|
-
@configurations
|
34
|
+
@configurations = Omniscient::Configuration::questions(:alias_name => @alias_name)
|
35
|
+
end
|
36
|
+
|
37
|
+
def help
|
38
|
+
print "Usage:\n"
|
39
|
+
print "\s\somniscient COMMAND [options]"
|
40
|
+
print "\n\n"
|
41
|
+
print "Commands available:"
|
42
|
+
print "\n"
|
43
|
+
print "\s\sclone\t\tClones a database from a remote server"
|
44
|
+
print "\n\n"
|
45
|
+
print "Examples:"
|
46
|
+
print "\n"
|
47
|
+
print "\s\somniscient clone alias_server_name"
|
48
|
+
print "\n"
|
49
|
+
print "\tClones a database from a remote server. If \n"
|
50
|
+
print "\talias_server_name is unknown to Ominiscient, \n"
|
51
|
+
print "\tit'll ask you all connection information."
|
52
|
+
print "\n\n"
|
53
|
+
print "For more information, try:\n"
|
54
|
+
print "\s\somniscient COMMAND -h"
|
55
|
+
print "\n"
|
56
|
+
end
|
57
|
+
|
58
|
+
def version
|
59
|
+
print "Omniscient v" + Omniscient::VERSION
|
60
|
+
print "\n"
|
26
61
|
end
|
27
62
|
|
28
63
|
end
|
@@ -1,29 +1,23 @@
|
|
1
1
|
require 'yaml'
|
2
|
+
require 'ssh'
|
3
|
+
require 'scp'
|
4
|
+
require 'adapters/mysql'
|
2
5
|
|
3
6
|
module Omniscient
|
4
|
-
|
5
7
|
module Command
|
6
|
-
|
7
8
|
class Clone < Omniscient::Command::Run
|
8
|
-
|
9
|
+
|
10
|
+
attr_accessor :ssh, :scp, :mysql, :alias_name
|
11
|
+
|
9
12
|
def run
|
10
|
-
|
11
13
|
@alias_name = Shell::Parser.get_arguments(@argv).first || ""
|
12
14
|
|
13
|
-
|
14
|
-
unless has_conf
|
15
|
-
request_configuration
|
16
|
-
end
|
15
|
+
(help; exit) if @alias_name.empty?
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
require 'scp'
|
23
|
-
require 'adapters/mysql'
|
24
|
-
@ssh = Omniscient::Ssh.new(@configurations['ssh'])
|
25
|
-
@scp = Omniscient::Scp.new(@configurations['ssh'])
|
26
|
-
@mysql = Omniscient::Adapter::MySQL.new(@configurations['mysql'])
|
17
|
+
request_configuration unless configurations_exist? @alias_name
|
18
|
+
load_configurations
|
19
|
+
set_custom_variables
|
20
|
+
instantiate_adapters
|
27
21
|
|
28
22
|
# Dumps remotely
|
29
23
|
command_to_issue = "#{@ssh.connect} '#{@mysql.dump}'"
|
@@ -39,26 +33,38 @@ module Omniscient
|
|
39
33
|
command_to_issue = "#{@mysql.import}"
|
40
34
|
puts "Running => #{command_to_issue}"
|
41
35
|
exit unless system command_to_issue
|
42
|
-
|
43
36
|
end
|
44
|
-
|
45
|
-
def
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
@configurations = existing_configurations[alias_name]
|
53
|
-
true
|
54
|
-
else
|
55
|
-
false
|
56
|
-
end
|
37
|
+
|
38
|
+
def configurations_exist? alias_name
|
39
|
+
Omniscient::Configuration::load alias_name
|
40
|
+
end
|
41
|
+
|
42
|
+
def set_custom_variables argv = false
|
43
|
+
database = Shell::Parser.get_option_value('d', (argv || @argv)) || nil
|
44
|
+
@configurations['mysql']['database'] = database unless database.empty?
|
57
45
|
|
46
|
+
address = Shell::Parser.get_option_value('host', (argv || @argv)) || nil
|
47
|
+
@configurations['ssh']['address'] = address unless address.empty?
|
48
|
+
end
|
49
|
+
|
50
|
+
def instantiate_adapters
|
51
|
+
@ssh = Omniscient::Ssh.new @configurations['ssh']
|
52
|
+
@scp = Omniscient::Scp.new @configurations['ssh']
|
53
|
+
@mysql = Omniscient::Adapter::MySQL.new @configurations['mysql']
|
54
|
+
end
|
55
|
+
|
56
|
+
def load_configurations alias_name = false
|
57
|
+
@configurations = Omniscient::Configuration.load(alias_name || @alias_name)
|
58
58
|
end
|
59
59
|
|
60
60
|
def help
|
61
|
-
|
61
|
+
print "Usage:\n"
|
62
|
+
print "\s\somniscient clone ALIAS_NAME [options]"
|
63
|
+
print "\n\n"
|
64
|
+
print "Options:"
|
65
|
+
print "\n"
|
66
|
+
print "\s\s-d\t\tSelect a different database\n"
|
67
|
+
print "\s\s--host\tSelect a different SSH address, e.g. foo@192.168.0.1\n"
|
62
68
|
end
|
63
69
|
|
64
70
|
end
|
@@ -2,19 +2,32 @@ require 'yaml'
|
|
2
2
|
|
3
3
|
module Omniscient
|
4
4
|
class Configuration
|
5
|
-
|
6
|
-
|
5
|
+
|
6
|
+
@PATH = File.expand_path('~/.omniscient_conf.yml')
|
7
|
+
@configuration = {}
|
8
|
+
|
9
|
+
class << self
|
10
|
+
attr_accessor :PATH, :configuration
|
7
11
|
end
|
8
12
|
|
9
|
-
def
|
10
|
-
|
11
|
-
|
13
|
+
def self.load alias_name = false
|
14
|
+
return false unless File.exist? @PATH
|
15
|
+
|
16
|
+
config_file = File.new @PATH, 'r'
|
17
|
+
existing_configurations = YAML::load config_file.read
|
18
|
+
if existing_configurations.kind_of? Hash
|
19
|
+
@configuration = existing_configurations
|
20
|
+
if alias_name
|
21
|
+
return @configuration[alias_name.to_s] unless @configuration[alias_name.to_s].nil?
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
@configuration
|
12
25
|
else
|
13
|
-
|
26
|
+
false
|
14
27
|
end
|
15
28
|
end
|
16
29
|
|
17
|
-
def questions informations
|
30
|
+
def self.questions informations
|
18
31
|
|
19
32
|
custom_alias = informations[:alias_name].nil? ? nil : informations[:alias_name]
|
20
33
|
|
@@ -49,10 +62,15 @@ module Omniscient
|
|
49
62
|
end
|
50
63
|
|
51
64
|
unless @configuration[custom_alias]['mysql'].has_key?('password')
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
65
|
+
begin
|
66
|
+
system "stty -echo"
|
67
|
+
print "Database's password [leave it blank if none is needed]: "
|
68
|
+
mysql_password = Shell::Input.text
|
69
|
+
system "stty echo"
|
70
|
+
rescue NoMethodError, Interrupt
|
71
|
+
system "stty echo"
|
72
|
+
exit
|
73
|
+
end
|
56
74
|
print "\n"
|
57
75
|
@configuration[custom_alias]['mysql']['password'] = mysql_password.empty? ? '' : mysql_password
|
58
76
|
end
|
data/lib/omniscient/version.rb
CHANGED
data/lib/shell/shell.rb
CHANGED
@@ -76,9 +76,10 @@ module Shell
|
|
76
76
|
|
77
77
|
end # get_command
|
78
78
|
|
79
|
-
# get only options in ARGV (arguments starting with
|
80
|
-
def self.get_options argv
|
81
|
-
|
79
|
+
# get only options in ARGV (arguments starting with - or --)
|
80
|
+
def self.get_options argv = []
|
81
|
+
return [] if argv.empty?
|
82
|
+
@options = []
|
82
83
|
|
83
84
|
argv.each {
|
84
85
|
|e|
|
@@ -92,7 +93,7 @@ module Shell
|
|
92
93
|
@options
|
93
94
|
end # get_options
|
94
95
|
|
95
|
-
def self.get_option_value option, argv =
|
96
|
+
def self.get_option_value option, argv = []
|
96
97
|
next_item, option_value = false
|
97
98
|
argv.each { |e|
|
98
99
|
if next_item
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require "test/unit"
|
2
|
-
require "omniscient"
|
3
|
-
require "adapters/mysql"
|
2
|
+
require "omniscient/adapters/mysql"
|
4
3
|
|
5
4
|
class MySQLTest < Test::Unit::TestCase
|
6
5
|
|
@@ -18,20 +17,42 @@ class MySQLTest < Test::Unit::TestCase
|
|
18
17
|
def test_initialization
|
19
18
|
assert_equal 'omniscient', @mysql.database
|
20
19
|
assert_equal 'root', @mysql.user
|
20
|
+
assert_equal 'pw', @mysql.password
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_valid_configuration?
|
24
|
+
@mysql = Omniscient::Adapter::MySQL.new( :database => 'omniscient', :user => 'root', :password => 'pw' )
|
25
|
+
assert @mysql.valid_configuration?
|
26
|
+
@mysql = Omniscient::Adapter::MySQL.new( :database => 'omniscient', :user => 'root' )
|
27
|
+
assert @mysql.valid_configuration?
|
28
|
+
@mysql = Omniscient::Adapter::MySQL.new( :user => 'root', :password => 'pw' )
|
29
|
+
assert !@mysql.valid_configuration?
|
21
30
|
end
|
22
31
|
|
23
32
|
def test_dump
|
24
33
|
assert_equal %Q{mysqldump -u root -ppw omniscient --single-transaction > .omni_dump.sql}, @mysql.dump()
|
25
34
|
end
|
26
35
|
|
36
|
+
def test_dump_if_not_valid_configuration
|
37
|
+
@mysql = Omniscient::Adapter::MySQL.new( :user => 'root', :password => 'pw' )
|
38
|
+
assert !@mysql.dump
|
39
|
+
end
|
40
|
+
|
27
41
|
def test_dump_a_specific_table
|
28
42
|
@mysql.attributes[:table] = 'mytable'
|
29
43
|
assert_equal %Q{mysqldump -u root -ppw omniscient mytable --single-transaction > .omni_dump.sql}, @mysql.dump()
|
30
44
|
end
|
31
45
|
|
32
|
-
def
|
46
|
+
def test_importation
|
33
47
|
assert_equal %Q{mysql -u root -ppw omniscient < }+Omniscient::DUMP_LOCAL_PATH, @mysql.import()
|
34
48
|
end
|
35
49
|
|
50
|
+
def test_importation_if_not_valid_configuration
|
51
|
+
@mysql = Omniscient::Adapter::MySQL.new( :user => 'root', :password => 'pw' )
|
52
|
+
assert !@mysql.import()
|
53
|
+
@mysql = Omniscient::Adapter::MySQL.new( :database => 'anydb' )
|
54
|
+
assert !@mysql.import()
|
55
|
+
end
|
56
|
+
|
36
57
|
|
37
58
|
end
|
@@ -1,13 +1,43 @@
|
|
1
1
|
require "test/unit"
|
2
|
+
require File.expand_path("../../../../set_test_environment.rb", __FILE__)
|
2
3
|
require "omniscient"
|
3
4
|
require "command/clone"
|
4
5
|
|
5
6
|
class CloneTest < Test::Unit::TestCase
|
6
7
|
def setup
|
7
|
-
|
8
|
+
test_path = File.expand_path("../../../../resources/configurations/omniscient_conf.yml", __FILE__)
|
9
|
+
Omniscient::Configuration.PATH = test_path
|
10
|
+
@obj = Omniscient::Command::Clone.new
|
11
|
+
@obj.configurations = Omniscient::Configuration.load :foo
|
12
|
+
@obj.alias_name = "foo"
|
8
13
|
end
|
9
14
|
|
10
|
-
def
|
15
|
+
def test_has_conf
|
16
|
+
assert @obj.configurations_exist? :foo
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_load_configurations
|
20
|
+
assert @obj.load_configurations.kind_of? Hash
|
21
|
+
assert @obj.load_configurations.has_key? "ssh"
|
22
|
+
assert @obj.configurations.has_key? "ssh"
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_set_custom_database
|
26
|
+
assert_equal @obj.configurations['mysql']['database'], "foo"
|
27
|
+
@obj.set_custom_variables ["-d", "custom_database"]
|
28
|
+
assert_equal @obj.configurations['mysql']['database'], "custom_database"
|
29
|
+
end
|
11
30
|
|
31
|
+
def test_set_custom_address
|
32
|
+
assert_equal @obj.configurations['ssh']['address'], "foo@192.168.0.100"
|
33
|
+
@obj.set_custom_variables ["--host", "custom_address"]
|
34
|
+
assert_equal "custom_address", @obj.configurations['ssh']['address']
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_instantiate_adapters
|
38
|
+
@obj.instantiate_adapters
|
39
|
+
assert @obj.ssh.kind_of? Omniscient::Ssh
|
40
|
+
assert @obj.scp.kind_of? Omniscient::Scp
|
41
|
+
assert @obj.mysql.kind_of? Omniscient::Adapter::MySQL
|
12
42
|
end
|
13
43
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "omniscient"
|
3
|
+
require "configuration"
|
4
|
+
|
5
|
+
class ConfigurationTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@right_path = File.expand_path('~/.omniscient_conf.yml')
|
9
|
+
@test_path = File.expand_path("../../../resources/configurations/omniscient_conf.yml", __FILE__)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_right_path
|
13
|
+
Omniscient::Configuration.PATH = @right_path
|
14
|
+
assert_equal @right_path, Omniscient::Configuration.PATH
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_change_path
|
18
|
+
Omniscient::Configuration.PATH = @test_path
|
19
|
+
assert_equal Omniscient::Configuration.PATH, @test_path
|
20
|
+
Omniscient::Configuration.PATH = @right_path
|
21
|
+
assert_equal Omniscient::Configuration.PATH, @right_path
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_load_configuration
|
25
|
+
original_path = Omniscient::Configuration.PATH
|
26
|
+
Omniscient::Configuration.PATH = @test_path
|
27
|
+
conf = Omniscient::Configuration::load
|
28
|
+
assert conf.kind_of? Hash
|
29
|
+
assert conf["foo"]["ssh"]["address"] == "foo@192.168.0.100"
|
30
|
+
assert Omniscient::Configuration.configuration.kind_of? Hash
|
31
|
+
assert Omniscient::Configuration.configuration["foo"]["ssh"]["address"] == "foo@192.168.0.100"
|
32
|
+
conf = Omniscient::Configuration::load "foo"
|
33
|
+
assert conf.kind_of? Hash
|
34
|
+
assert conf["ssh"]["address"] == "foo@192.168.0.100"
|
35
|
+
conf = Omniscient::Configuration::load :foo
|
36
|
+
assert conf.kind_of? Hash
|
37
|
+
assert conf["ssh"]["address"] == "foo@192.168.0.100"
|
38
|
+
|
39
|
+
# inexistent key
|
40
|
+
conf = Omniscient::Configuration::load :lolwut
|
41
|
+
assert conf.kind_of? FalseClass
|
42
|
+
assert !conf
|
43
|
+
|
44
|
+
Omniscient::Configuration.PATH = original_path
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -15,14 +15,18 @@ class SshTest < Test::Unit::TestCase
|
|
15
15
|
def test_initialization
|
16
16
|
assert_equal 'user@localhost', @ssh.address
|
17
17
|
end
|
18
|
+
|
19
|
+
def test_invalid_initialization
|
20
|
+
@ssh = Omniscient::Ssh.new :address => 'user@localhost'
|
21
|
+
end
|
18
22
|
|
19
23
|
def test_address
|
20
|
-
assert_equal 'user@localhost', @ssh.get_address
|
24
|
+
assert_equal 'user@localhost', @ssh.get_address
|
21
25
|
end
|
22
26
|
|
23
27
|
def test_address_without_user
|
24
28
|
@ssh = Omniscient::Ssh.new :address => 'localhost'
|
25
|
-
assert_equal 'localhost', @ssh.get_address
|
29
|
+
assert_equal 'localhost', @ssh.get_address
|
26
30
|
end
|
27
31
|
|
28
32
|
def test_address_with_port
|
@@ -0,0 +1 @@
|
|
1
|
+
TESTING = true
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Alexandre de Oliveira
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-05-18 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -47,8 +47,11 @@ files:
|
|
47
47
|
- test/lib/omniscient/adapters/test_mysql.rb
|
48
48
|
- test/lib/omniscient/command/test_clone.rb
|
49
49
|
- test/lib/omniscient/test_command.rb
|
50
|
+
- test/lib/omniscient/test_configuration.rb
|
50
51
|
- test/lib/omniscient/test_connection.rb
|
51
52
|
- test/lib/omniscient/test_ssh.rb
|
53
|
+
- test/resources/configurations/omniscient_conf.yml
|
54
|
+
- test/set_test_environment.rb
|
52
55
|
has_rdoc: true
|
53
56
|
homepage: http://github.com/kurko/omniscient
|
54
57
|
licenses: []
|
@@ -85,5 +88,8 @@ test_files:
|
|
85
88
|
- test/lib/omniscient/adapters/test_mysql.rb
|
86
89
|
- test/lib/omniscient/command/test_clone.rb
|
87
90
|
- test/lib/omniscient/test_command.rb
|
91
|
+
- test/lib/omniscient/test_configuration.rb
|
88
92
|
- test/lib/omniscient/test_connection.rb
|
89
93
|
- test/lib/omniscient/test_ssh.rb
|
94
|
+
- test/resources/configurations/omniscient_conf.yml
|
95
|
+
- test/set_test_environment.rb
|