rubotium 0.0.4 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/bin/rubotium +4 -2
  4. data/lib/rubotium/adb/commands/command.rb +55 -0
  5. data/lib/rubotium/adb/commands/install_command.rb +19 -0
  6. data/lib/rubotium/adb/commands/instrument_command.rb +27 -0
  7. data/lib/rubotium/adb/commands/memory_command.rb +19 -0
  8. data/lib/rubotium/adb/commands/pull_command.rb +19 -0
  9. data/lib/rubotium/adb/commands/shell_command.rb +21 -0
  10. data/lib/rubotium/adb/commands/uninstall_command.rb +19 -0
  11. data/lib/rubotium/adb/commands.rb +7 -0
  12. data/lib/rubotium/adb/devices.rb +15 -6
  13. data/lib/rubotium/adb/parsers/procrank.rb +51 -0
  14. data/lib/rubotium/adb/parsers/single_test_result_parser.rb +61 -0
  15. data/lib/rubotium/adb/parsers/test_results_parser.rb +69 -0
  16. data/lib/rubotium/adb/parsers.rb +3 -0
  17. data/lib/rubotium/adb/test_result_parser.rb +5 -4
  18. data/lib/rubotium/adb.rb +3 -5
  19. data/lib/rubotium/apk/android_apk.rb +102 -0
  20. data/lib/rubotium/apk.rb +2 -2
  21. data/lib/rubotium/cmd.rb +1 -1
  22. data/lib/rubotium/device.rb +19 -33
  23. data/lib/rubotium/devices.rb +27 -14
  24. data/lib/rubotium/formatters/junit_formatter.rb +10 -11
  25. data/lib/rubotium/memory/data_point.rb +63 -0
  26. data/lib/rubotium/memory/monitor.rb +65 -0
  27. data/lib/rubotium/memory.rb +8 -0
  28. data/lib/rubotium/package.rb +7 -4
  29. data/lib/rubotium/runnable_test.rb +13 -0
  30. data/lib/rubotium/test_cases_reader.rb +32 -0
  31. data/lib/rubotium/test_result.rb +52 -0
  32. data/lib/rubotium/test_results.rb +18 -0
  33. data/lib/rubotium/test_runners/instrumentation_test_runner.rb +24 -0
  34. data/lib/rubotium/tests_runner.rb +80 -0
  35. data/lib/rubotium/version.rb +1 -1
  36. data/lib/rubotium.rb +54 -41
  37. data/rubotium.gemspec +0 -1
  38. data/spec/fixtures/adb_raw_result.rb +138 -0
  39. data/spec/fixtures/adb_raw_results.rb +153 -0
  40. data/spec/fixtures/adb_results.rb +4 -0
  41. data/spec/lib/rubotium/adb/adb_devices_spec.rb +43 -12
  42. data/spec/lib/rubotium/adb/adb_result_parser_spec.rb +22 -7
  43. data/spec/lib/rubotium/adb/adb_shell_spec.rb +11 -6
  44. data/spec/lib/rubotium/adb/parsers/procrank_spec.rb +61 -0
  45. data/spec/lib/rubotium/adb/parsers/single_test_result_parser_spec.rb +116 -0
  46. data/spec/lib/rubotium/adb/parsers/test_results_parser_spec.rb +108 -0
  47. data/spec/lib/rubotium/apk/android_apk_spec.rb +37 -0
  48. data/spec/lib/rubotium/apk/mock/BarcodeScanner4.2.apk +0 -0
  49. data/spec/lib/rubotium/apk/mock/UECExpress.apk +0 -0
  50. data/spec/lib/rubotium/apk/mock/dummy.apk +1 -0
  51. data/spec/lib/rubotium/apk/mock/sample.apk +0 -0
  52. data/spec/lib/rubotium/device_spec.rb +38 -0
  53. data/spec/lib/rubotium/devices_spec.rb +41 -24
  54. data/spec/lib/rubotium/memory/data_point_spec.rb +42 -0
  55. data/spec/lib/rubotium/memory/monitor_spec.rb +6 -0
  56. data/spec/lib/rubotium/tests_runner_spec.rb +47 -0
  57. data/spec/spec_helper.rb +2 -0
  58. data/test.rb +11 -0
  59. metadata +62 -41
  60. data/lib/rubotium/adb/command.rb +0 -21
  61. data/lib/rubotium/adb/install_command.rb +0 -17
  62. data/lib/rubotium/adb/instrumentation.rb +0 -36
  63. data/lib/rubotium/adb/uninstall_command.rb +0 -17
  64. data/lib/rubotium/apk/converter.rb +0 -22
  65. data/lib/rubotium/grouper.rb +0 -40
  66. data/lib/rubotium/jar_reader.rb +0 -70
  67. data/lib/rubotium/runable_test.rb +0 -11
  68. data/lib/rubotium/test_case.rb +0 -6
  69. data/lib/rubotium/test_suite.rb +0 -12
  70. data/spec/lib/rubotium/adb/adb_instrumentation_spec.rb +0 -32
  71. data/spec/lib/rubotium/grouper_spec.rb +0 -56
  72. data/spec/lib/rubotium/jar_reader_spec.rb +0 -58
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8d2713d08a8ec60ecaa7277615c145a5bbe436b
4
- data.tar.gz: 2ea6a4ca2872a4337a6ea47b34c54e00c6088550
3
+ metadata.gz: 72623c02c54541abecf0431da8b66994b1404a95
4
+ data.tar.gz: 25d93c5df3c122e59a6fe66f9d848c5be3744556
5
5
  SHA512:
6
- metadata.gz: 68954818a9d17051921527e42dbed48bd43ea3cdbd2ffe9559d7537098db79e96d016c710cbac99d0220b64378a82a65b5ee55f876b44cd92dfa3656e62c262f
7
- data.tar.gz: e9250e52f6aba83e0ec5c650a36a82a6e8cbeaa12ff05efe62dc74798e9d81bf7e23f7d1d4b0c73ff6ebfbee57019c03c6916f5e1dc06eac18c8184cdd7ce7b2
6
+ metadata.gz: f42c5267c1aba6a11a8d6e2b5b7d8c813a1690e3479544294847b4c91474e30ae65ec8407685e7bd0fa7c679c146d6cedb5787d5bbc28fefb71b28f2b5341926
7
+ data.tar.gz: edd630a22f94aa3004f3287b031a40bf3ada2de15e5db653c488016941d868cc44dd9f0e983eba2b5e1a8db96da9b1e8a512dd6e59c84c5e0c7e5d8d91bc3060
data/.gitignore CHANGED
@@ -11,6 +11,10 @@ doc/
11
11
  lib/bundler/man
12
12
  pkg
13
13
  rdoc
14
+ results
15
+ screens
16
+ logs
17
+ report.xml
14
18
  spec/reports
15
19
  test/tmp
16
20
  test/version_tmp
data/bin/rubotium CHANGED
@@ -10,7 +10,8 @@ opts = Trollop::options do
10
10
  opt :rerun, 'Retries count', :default => 0, :short => '-R'
11
11
  opt :out, 'Report file', :default => 'report.xml', :short => '-o'
12
12
  opt :device, 'Match devices', :type => :string, :short => '-d'
13
- opt :runner, 'Test runner', :type => :string, :short => 'r'
13
+ opt :runner, 'Test runner', :type => :string, :short => '-r'
14
+ opt :annotation, 'Run annotated tests', :type => :string, :short => '-n'
14
15
  end
15
16
 
16
17
  params = {
@@ -20,7 +21,8 @@ params = {
20
21
  :rerun_count => opts[:rerun],
21
22
  :report => opts[:out],
22
23
  :device_matcher => opts[:device],
23
- :runner => opts[:runner]
24
+ :runner => opts[:runner],
25
+ :annotation => opts[:annotation]
24
26
  }
25
27
 
26
28
  Rubotium.new(params)
@@ -0,0 +1,55 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Commands
4
+ class Command
5
+ def initialize(device_serial)
6
+ @device_serial = device_serial
7
+ end
8
+
9
+ def install(apk_path)
10
+ execute(install_command(apk_path))
11
+ end
12
+
13
+ def uninstall(package_name)
14
+ execute(uninstall_command(package_name))
15
+ end
16
+
17
+ def pull(files_glob)
18
+ execute(pull_command(files_glob))
19
+ end
20
+
21
+ def shell(command)
22
+ execute(shell_command(command))
23
+ end
24
+
25
+ def execute(command_to_run)
26
+ puts "EXECUTING_COMMAND: #{adb_command} #{command_to_run.executable_command}"
27
+ CMD.run_command(adb_command + " " + command_to_run.executable_command)
28
+ end
29
+
30
+ private
31
+ attr_reader :device_serial
32
+
33
+ def adb_command
34
+ "adb -s #{device_serial} "
35
+ end
36
+
37
+ def install_command(apk_path)
38
+ Rubotium::Adb::Commands::InstallCommand.new(apk_path)
39
+ end
40
+
41
+ def uninstall_command(package_name)
42
+ Rubotium::Adb::Commands::UninstallCommand.new(package_name)
43
+ end
44
+
45
+ def pull_command(files_glob)
46
+ Rubotium::Adb::Commands::PullCommand.new(files_glob)
47
+ end
48
+
49
+ def shell_command(command)
50
+ Rubotium::Adb::Commands::ShellCommand.new(command)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,19 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Commands
4
+ class InstallCommand
5
+ COMMAND = 'install'
6
+ def initialize(apk_path)
7
+ @apk_path = apk_path
8
+ end
9
+
10
+ def executable_command
11
+ "#{COMMAND} #{apk_path}"
12
+ end
13
+
14
+ private
15
+ attr_reader :apk_path
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,27 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Commands
4
+ class InstrumentCommand
5
+ COMMAND = 'am instrument -w -e class'
6
+ def initialize(package_name, test_name, test_package_name, test_runner)
7
+ @package_name = package_name
8
+ @test_name = test_name
9
+ @test_package_name = test_package_name
10
+ @test_runner = test_runner
11
+ end
12
+
13
+ def executable_command
14
+ [COMMAND, ].join(' ')
15
+ end
16
+
17
+ private
18
+
19
+ attr_reader :package_name
20
+
21
+ def test_case
22
+ [package_name, test_name].join('#')
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Commands
4
+ class MemoryCommand
5
+ COMMAND = 'procrank'
6
+ def initialize(application_package_name)
7
+ @application_package_name = application_package_name
8
+ end
9
+
10
+ def executable_command
11
+ "#{COMMAND} | grep #{application_package_name}"
12
+ end
13
+
14
+ private
15
+ attr_reader :application_package_name
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Commands
4
+ class PullCommand
5
+ COMMAND = 'pull'
6
+ def initialize(path)
7
+ @path = path
8
+ end
9
+
10
+ def executable_command
11
+ "#{COMMAND} #{path}"
12
+ end
13
+
14
+ private
15
+ attr_reader :path
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Commands
4
+ class ShellCommand
5
+ COMMAND = 'shell'
6
+
7
+ def initialize(command)
8
+ @command = command
9
+ end
10
+
11
+ def executable_command
12
+ "#{COMMAND} #{command}"
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :command
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Commands
4
+ class UninstallCommand
5
+ COMMAND = 'uninstall'
6
+ def initialize(package_name)
7
+ @package_name = package_name
8
+ end
9
+
10
+ def executable_command
11
+ "#{COMMAND} #{package_name}"
12
+ end
13
+
14
+ private
15
+ attr_reader :package_name
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ require_relative 'commands/command'
2
+ require_relative 'commands/install_command'
3
+ require_relative 'commands/instrument_command'
4
+ require_relative 'commands/memory_command'
5
+ require_relative 'commands/pull_command'
6
+ require_relative 'commands/shell_command'
7
+ require_relative 'commands/uninstall_command'
@@ -1,15 +1,24 @@
1
1
  module Rubotium
2
2
  module Adb
3
3
  class Devices
4
- attr_reader :list
5
4
 
6
- def initialize
7
- @list = parse(CMD.run_command('adb devices',{ :timeout => 5 } ))
5
+ def attached
6
+ parse.map{|device_serial|
7
+ create_device(device_serial)
8
+ }
8
9
  end
9
10
 
10
11
  private
11
- def parse result
12
- list = result.split("\n")
12
+ def create_device(device_serial)
13
+ Device.new(device_serial)
14
+ end
15
+
16
+ def adb_devices_command
17
+ CMD.run_command('adb devices', { :timeout => 5 } )
18
+ end
19
+
20
+ def parse
21
+ list = adb_devices_command.split("\n")
13
22
  list.shift
14
23
  attached_devices list
15
24
  end
@@ -22,4 +31,4 @@ module Rubotium
22
31
  end
23
32
  end
24
33
  end
25
- end
34
+ end
@@ -0,0 +1,51 @@
1
+ require 'ostruct'
2
+ module Rubotium
3
+ module Adb
4
+ module Parsers
5
+ class Procrank
6
+
7
+ DEFAULT_RESULT = [0, 0, 0, 0, 0, '']
8
+
9
+ def initialize(result)
10
+ @result = result
11
+ end
12
+
13
+ def parse
14
+ OpenStruct.new(:pid => pid, :vss => vss, :rss => rss, :pss => pss, :uss => uss, :cmdline => cmdline)
15
+ end
16
+
17
+ private
18
+
19
+ attr_reader :result
20
+ def pid
21
+ split.first.to_i
22
+ end
23
+
24
+ def vss
25
+ split[1].to_i
26
+ end
27
+
28
+ def rss
29
+ split[2].to_i
30
+ end
31
+
32
+ def pss
33
+ split[3].to_i
34
+ end
35
+
36
+ def uss
37
+ split[4].to_i
38
+ end
39
+
40
+ def cmdline
41
+ split[-1]
42
+ end
43
+
44
+ def split
45
+ @split ||= result.empty? ? DEFAULT_RESULT : result.split
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,61 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Parsers
4
+ class SingleTestResultParser
5
+ STATUS_CODE_PATTERN = Regexp.new('.*INSTRUMENTATION_STATUS_CODE: (-?\d)$', Regexp::MULTILINE)
6
+ STACK_TRACE__PATTERN = Regexp.new('INSTRUMENTATION_STATUS: stack=(.*)INSTRUMENTATION_STATUS:', Regexp::MULTILINE)
7
+ TEST_NAME_PATTERN = Regexp.new('INSTRUMENTATION_STATUS: test=(.*)$')
8
+ CLASS_NAME_PATTERN = Regexp.new('INSTRUMENTATION_STATUS: class=(.*)$')
9
+ ERROR_STATUS = 'ERROR'
10
+ FAIL_STATUS = 'FAIL'
11
+ OK_STATUS = 'OK'
12
+
13
+ attr_reader :result, :stack_trace, :time, :error_message, :status, :package_name
14
+
15
+ def initialize(test_result)
16
+ @result = test_result
17
+ end
18
+
19
+ def class_name
20
+ match_class_name.strip
21
+ end
22
+
23
+ def test_name
24
+ match_test_name.strip
25
+ end
26
+
27
+ def failed?
28
+ result[STATUS_CODE_PATTERN, 1] == '-2'
29
+ end
30
+
31
+ def passed?
32
+ result[STATUS_CODE_PATTERN, 1] == '0'
33
+ end
34
+
35
+ def errored?
36
+ result[STATUS_CODE_PATTERN, 1] == '-1'
37
+ end
38
+
39
+ def stack_trace
40
+ match_stack_trace.strip
41
+ end
42
+
43
+ private
44
+
45
+ attr_reader :result
46
+
47
+ def match_class_name
48
+ result[CLASS_NAME_PATTERN, 1]
49
+ end
50
+
51
+ def match_test_name
52
+ result[TEST_NAME_PATTERN, 1]
53
+ end
54
+
55
+ def match_stack_trace
56
+ result[STACK_TRACE__PATTERN, 1] || ''
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,69 @@
1
+ module Rubotium
2
+ module Adb
3
+ module Parsers
4
+ class TestResultsParser
5
+ PATTERN = Regexp.new('(INSTRUMENTATION_STATUS_CODE: 1.*?INSTRUMENTATION_STATUS_CODE: -?\d)', Regexp::MULTILINE)
6
+ TIME_PATTERN = Regexp.new('Time: (.*)')
7
+ SHORT_MESSAGE_PATTERN = Regexp.new('INSTRUMENTATION_RESULT: shortMsg=(.*)')
8
+ LONG_MESSAGE_PATTERN = Regexp.new('INSTRUMENTATION_RESULT: longMsg=(.*)')
9
+ ERROR_MESSAGE_PATTERN = Regexp.new('INSTRUMENTATION_STATUS: Error=(.*)')
10
+
11
+ def initialize(results)
12
+ @results = results
13
+ end
14
+
15
+ def test_results
16
+ tests.map{|result|
17
+ create_single_test_result_parser(result)
18
+ }
19
+ end
20
+
21
+ def count
22
+ tests.count
23
+ end
24
+
25
+ def failed?
26
+ count == 0
27
+ end
28
+
29
+ def successful?
30
+ count > 0
31
+ end
32
+
33
+ def time
34
+ match_time.strip
35
+ end
36
+
37
+ def message
38
+ [error_message, short_message, long_message].compact.join("\n")
39
+ end
40
+
41
+ private
42
+ attr_reader :results
43
+ def tests
44
+ @tests ||= results.scan(PATTERN).flatten
45
+ end
46
+
47
+ def match_time
48
+ results[TIME_PATTERN, 1] || '0'
49
+ end
50
+
51
+ def error_message
52
+ results[ERROR_MESSAGE_PATTERN, 1]
53
+ end
54
+
55
+ def short_message
56
+ results[SHORT_MESSAGE_PATTERN, 1]
57
+ end
58
+
59
+ def long_message
60
+ results[LONG_MESSAGE_PATTERN, 1]
61
+ end
62
+
63
+ def create_single_test_result_parser(result)
64
+ Rubotium::Adb::Parsers::SingleTestResultParser.new(result)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,3 @@
1
+ require_relative 'parsers/procrank'
2
+ require_relative 'parsers/test_results_parser'
3
+ require_relative 'parsers/single_test_result_parser'
@@ -7,10 +7,11 @@ module Rubotium
7
7
 
8
8
  attr_reader :result, :stack_trace, :time, :error_message, :status, :package_name, :test_name
9
9
 
10
- def initialize(result, package_name, test_name)
10
+ def initialize(result, runnable, device_name)
11
+ @device = device_name
11
12
  @result = result
12
- @package_name = package_name
13
- @test_name = test_name
13
+ @package_name = runnable.package_name
14
+ @test_name = runnable.test_name
14
15
  parse
15
16
  end
16
17
 
@@ -84,4 +85,4 @@ module Rubotium
84
85
  end
85
86
  end
86
87
  end
87
- end
88
+ end
data/lib/rubotium/adb.rb CHANGED
@@ -1,13 +1,11 @@
1
- require_relative 'adb/command'
2
- require_relative 'adb/install_command'
3
- require_relative 'adb/uninstall_command'
1
+ require_relative 'adb/commands'
4
2
  require_relative 'adb/devices'
5
3
  require_relative 'adb/test_result_parser'
6
4
  require_relative 'adb/shell'
7
- require_relative 'adb/instrumentation'
5
+ require_relative 'adb/parsers'
8
6
 
9
7
  module Rubotium
10
8
  module Adb
11
9
 
12
10
  end
13
- end
11
+ end
@@ -0,0 +1,102 @@
1
+ require "tmpdir"
2
+ require "pp"
3
+ module Rubotium
4
+ module Apk
5
+ require "tmpdir"
6
+ require "pp"
7
+ class AndroidApk
8
+ attr_accessor :results,:label,:labels,:icon,:icons,:package_name,:version_code,:version_name,:sdk_version,:target_sdk_version,:filepath
9
+ def initialize(path_to_apk)
10
+ @path = path_to_apk
11
+ raise(Errno::ENOENT, "File does not exist") unless File.exist?(@path)
12
+ end
13
+
14
+ def package_name
15
+ parsed_aapt['package']['name']
16
+ end
17
+
18
+ def icon
19
+
20
+ end
21
+
22
+ def results
23
+ command = "aapt dump badging \"" + @path + "\" 2>&1"
24
+ results = `#{command}`
25
+ if $?.exitstatus != 0 or results.index("ERROR: dump failed")
26
+ raise(RuntimeError, results)
27
+ end
28
+ @results ||= results
29
+ end
30
+
31
+ def parsed_aapt
32
+ vars = Hash.new
33
+ results.split("\n").each do |line|
34
+ key, value = _parse_line(line)
35
+ next if key.nil?
36
+ if vars.key?(key)
37
+ if (vars[key].is_a?(Hash) and value.is_a?(Hash))
38
+ vars[key].merge(value)
39
+ else
40
+ vars[key] = [vars[key]] unless (vars[key].is_a?(Array))
41
+ if (value.is_a?(Array))
42
+ vars[key].concat(value)
43
+ else
44
+ vars[key].push(value)
45
+ end
46
+ end
47
+ else
48
+ vars[key] = value.nil? ? nil :
49
+ (value.is_a?(Hash) ? value :
50
+ (value.length > 1 ? value : value[0]))
51
+ end
52
+ end
53
+ return vars
54
+ end
55
+
56
+ def _parse_values(str)
57
+ return nil if str.nil?
58
+ if str.index("='")
59
+ # key-value hash
60
+ vars = Hash[str.scan(/(\S+)='((?:\\'|[^'])*)'/)]
61
+ vars.each_value {|v| v.gsub(/\\'/, "'")}
62
+ else
63
+ # values array
64
+ vars = str.scan(/'((?:\\'|[^'])*)'/).map{|v| v[0].gsub(/\\'/, "'")}
65
+ end
66
+ return vars
67
+ end
68
+
69
+ def _parse_line(line)
70
+ return nil if line.nil?
71
+ info = line.split(":", 2)
72
+ return info[0], _parse_values( info[1] )
73
+ end
74
+
75
+ def self._parse_aapt(results)
76
+ vars = Hash.new
77
+ results.split("\n").each do |line|
78
+ key, value = _parse_line(line)
79
+ next if key.nil?
80
+ if vars.key?(key)
81
+ if (vars[key].is_a?(Hash) and value.is_a?(Hash))
82
+ vars[key].merge(value)
83
+ else
84
+ vars[key] = [vars[key]] unless (vars[key].is_a?(Array))
85
+ if (value.is_a?(Array))
86
+ vars[key].concat(value)
87
+ else
88
+ vars[key].push(value)
89
+ end
90
+ end
91
+ else
92
+ vars[key] = value.nil? ? nil :
93
+ (value.is_a?(Hash) ? value :
94
+ (value.length > 1 ? value : value[0]))
95
+ end
96
+ end
97
+ return vars
98
+ end
99
+ end
100
+
101
+ end
102
+ end
data/lib/rubotium/apk.rb CHANGED
@@ -1,7 +1,7 @@
1
- require_relative 'apk/converter'
1
+ require_relative 'apk/android_apk'
2
2
 
3
3
  module Rubotium
4
4
  module Apk
5
5
 
6
6
  end
7
- end
7
+ end
data/lib/rubotium/cmd.rb CHANGED
@@ -5,7 +5,7 @@ module Rubotium
5
5
  def run_command(command_to_run, opts = {})
6
6
  begin
7
7
  Timeout::timeout(opts[:timeout] || 10 * 60) {
8
- puts "[EXECUTING]: #{command_to_run}" if ENV['DEBUG']
8
+ Rubotium.logger.debug "[EXECUTING]: #{command_to_run}"
9
9
  `#{command_to_run}`
10
10
  }
11
11
  rescue Timeout::Error