BuildMaster 1.1.9 → 1.1.12

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.
Files changed (149) hide show
  1. data/lib/buildmaster/algorithms.rb +2 -2
  2. data/lib/buildmaster/auto.rb +27 -0
  3. data/lib/buildmaster/auto/classpath.rb +86 -0
  4. data/lib/buildmaster/auto/git.rb +38 -0
  5. data/lib/buildmaster/auto/java.rb +23 -0
  6. data/lib/buildmaster/auto/java_project.rb +185 -0
  7. data/lib/buildmaster/auto/javac_ant.rb +64 -0
  8. data/lib/buildmaster/auto/junit_ant.rb +226 -0
  9. data/lib/buildmaster/auto/mysql_server.rb +30 -0
  10. data/lib/buildmaster/auto/package_ant.rb +60 -0
  11. data/lib/buildmaster/auto/ruby_platform.rb +51 -0
  12. data/lib/buildmaster/common.rb +3 -3
  13. data/lib/buildmaster/cotta.rb +8 -3
  14. data/lib/buildmaster/cotta/command_runner.rb +19 -3
  15. data/lib/buildmaster/cotta/cotta.rb +42 -12
  16. data/lib/buildmaster/cotta/cotta_dir.rb +18 -14
  17. data/lib/buildmaster/cotta/cotta_file.rb +5 -8
  18. data/lib/buildmaster/cotta/in_memory_system.rb +15 -4
  19. data/lib/buildmaster/cotta/physical_system.rb +13 -7
  20. data/lib/buildmaster/project.rb +3 -9
  21. data/lib/buildmaster/project/ant_driver.rb +11 -7
  22. data/lib/buildmaster/project/ci.rb +2 -2
  23. data/lib/buildmaster/project/pscp_driver.rb +0 -4
  24. data/lib/buildmaster/project/ruby_forge_project.rb +0 -3
  25. data/lib/buildmaster/project/svn_admin_driver.rb +0 -4
  26. data/lib/buildmaster/project/svn_driver.rb +0 -6
  27. data/lib/buildmaster/project/svn_helper.rb +0 -6
  28. data/lib/buildmaster/project/svn_server_driver.rb +0 -5
  29. data/lib/buildmaster/project/windows/iis_driver.rb +0 -4
  30. data/lib/buildmaster/project/windows/sql_server_driver.rb +0 -1
  31. data/lib/buildmaster/site.rb +16 -4
  32. data/lib/buildmaster/site/about_handler.rb +0 -4
  33. data/lib/buildmaster/site/content_engine_repository.rb +0 -2
  34. data/lib/buildmaster/site/element_processor_by_name.rb +0 -4
  35. data/lib/buildmaster/site/file_processor.rb +0 -4
  36. data/lib/buildmaster/site/site.rb +0 -4
  37. data/lib/buildmaster/site/site_server.rb +1 -4
  38. data/lib/buildmaster/site/site_spec.rb +4 -15
  39. data/lib/buildmaster/site/source_file_handler.rb +0 -3
  40. data/lib/buildmaster/site/template_error.rb +0 -2
  41. data/lib/buildmaster/site/template_runner.rb +0 -4
  42. data/lib/buildmaster/site/templatelets.rb +9 -10
  43. data/lib/buildmaster/site/templatelets/href.rb +0 -5
  44. data/lib/buildmaster/site/templatelets/when.rb +0 -4
  45. data/lib/buildmaster/site/xtemplate.rb +0 -3
  46. data/lib/buildmaster/version +1 -1
  47. data/lib/buildmaster/win32/auto_it.rb +4 -0
  48. data/lib/buildmaster/win32/auto_it_driver.rb +45 -0
  49. data/lib/buildmaster/win32/auto_it_window.rb +82 -0
  50. data/lib/buildmaster/win32/autoit/AutoItX3.dll +0 -0
  51. data/lib/buildmaster/win32/autoit/README +1 -0
  52. data/lib/buildmaster/windows.rb +3 -3
  53. data/test/buildmaster/algorithms/tc_opn_compare.rb +2 -2
  54. data/test/buildmaster/auto/javac/src/org/rubyforge/buildmaster/javac/One.java +5 -0
  55. data/test/buildmaster/auto/javac/src/resource.txt +1 -0
  56. data/test/buildmaster/auto/javac/src2/org/rubyforge/buildmaster/javac/Two.java +9 -0
  57. data/test/buildmaster/auto/tc_classpath.rb +79 -0
  58. data/test/buildmaster/auto/tc_git.rb +32 -0
  59. data/test/buildmaster/auto/tc_java.rb +12 -0
  60. data/test/buildmaster/auto/tc_java_project.rb +78 -0
  61. data/test/buildmaster/auto/tc_java_project_slow.rb +89 -0
  62. data/test/buildmaster/auto/tc_javac_ant.rb +38 -0
  63. data/test/buildmaster/auto/tc_junit_ant.rb +187 -0
  64. data/test/buildmaster/auto/tc_package_ant.rb +29 -0
  65. data/test/buildmaster/auto/tc_ruby_platform.rb +10 -0
  66. data/test/buildmaster/common/tc_properties.rb +1 -3
  67. data/test/buildmaster/common/tc_tree_to_object.rb +1 -3
  68. data/test/buildmaster/cotta/cotta_dir_behaviors.rb +46 -8
  69. data/test/buildmaster/cotta/cotta_file_behaviors.rb +6 -6
  70. data/test/buildmaster/cotta/cotta_specifications.rb +1 -6
  71. data/test/buildmaster/cotta/file_system_behaviors.rb +1 -3
  72. data/test/buildmaster/cotta/physical_system_stub.rb +22 -3
  73. data/test/buildmaster/cotta/system_file_specifications.rb +1 -3
  74. data/test/buildmaster/cotta/tc_command_interface.rb +1 -3
  75. data/test/buildmaster/cotta/tc_command_runner.rb +1 -4
  76. data/test/buildmaster/cotta/tc_cotta.rb +5 -8
  77. data/test/buildmaster/cotta/tc_cotta_dir_in_memory.rb +6 -9
  78. data/test/buildmaster/cotta/tc_cotta_dir_physical.rb +3 -6
  79. data/test/buildmaster/cotta/tc_cotta_file_in_memory.rb +3 -7
  80. data/test/buildmaster/cotta/tc_cotta_file_physical.rb +4 -4
  81. data/test/buildmaster/cotta/tc_cotta_zip_support.rb +1 -5
  82. data/test/buildmaster/cotta/tc_in_memory_system.rb +3 -7
  83. data/test/buildmaster/cotta/tc_io_chain.rb +3 -8
  84. data/test/buildmaster/cotta/tc_pathname.rb +1 -3
  85. data/test/buildmaster/cotta/tc_physical_system.rb +7 -8
  86. data/test/buildmaster/project/tc_ant_driver.rb +1 -4
  87. data/test/buildmaster/project/tc_build_number_file.rb +1 -6
  88. data/test/buildmaster/project/tc_cvs_driver.rb +1 -5
  89. data/test/buildmaster/project/tc_java_manifest.rb +1 -5
  90. data/test/buildmaster/project/tc_release.rb +1 -3
  91. data/test/buildmaster/project/tc_server_manager.rb +1 -4
  92. data/test/buildmaster/project/tc_svn_driver.rb +1 -5
  93. data/test/buildmaster/project/tc_svn_status_info.rb +1 -3
  94. data/test/buildmaster/project/tc_version_number_file.rb +1 -6
  95. data/test/buildmaster/project/windows/tc_iis_driver.rb +2 -3
  96. data/test/buildmaster/project/windows/tc_sql_server_driver.rb +2 -5
  97. data/test/buildmaster/site/content/tc_content_engine_repository.rb +1 -5
  98. data/test/buildmaster/site/tc_element_processor_by_name.rb +1 -4
  99. data/test/buildmaster/site/tc_file_processor.rb +1 -7
  100. data/test/buildmaster/site/tc_site.rb +1 -6
  101. data/test/buildmaster/site/tc_site_server.rb +2 -8
  102. data/test/buildmaster/site/tc_site_spec.rb +8 -5
  103. data/test/buildmaster/site/tc_source_file_handler.rb +1 -4
  104. data/test/buildmaster/site/tc_template_builder.rb +1 -4
  105. data/test/buildmaster/site/tc_template_error.rb +1 -3
  106. data/test/buildmaster/site/tc_template_runner.rb +2 -7
  107. data/test/buildmaster/site/tc_templatelets.rb +2 -6
  108. data/test/buildmaster/site/tc_xtemplate.rb +1 -5
  109. data/test/buildmaster/site/templatelets/common_templatelet_test.rb +1 -8
  110. data/test/buildmaster/site/templatelets/tc_attribute.rb +3 -3
  111. data/test/buildmaster/site/templatelets/tc_code.rb +2 -2
  112. data/test/buildmaster/site/templatelets/tc_each.rb +3 -3
  113. data/test/buildmaster/site/templatelets/tc_href.rb +3 -3
  114. data/test/buildmaster/site/templatelets/tc_include.rb +3 -3
  115. data/test/buildmaster/site/templatelets/tc_link.rb +3 -3
  116. data/test/buildmaster/site/templatelets/tc_text.rb +3 -3
  117. data/test/buildmaster/site/templatelets/tc_when.rb +4 -4
  118. data/test/buildmaster/site/test.rb +1 -0
  119. data/test/buildmaster/test.rb +21 -0
  120. data/test/buildmaster/win32/tc_auto_it.rb +18 -0
  121. data/test/buildmaster/win32/tc_auto_it_window.rb +17 -0
  122. data/test/manual/bms.rb +2 -4
  123. data/test/tmp/svn_test/repository/conf/authz +14 -3
  124. data/test/tmp/svn_test/repository/conf/svnserve.conf +21 -4
  125. data/test/tmp/svn_test/repository/db/current +1 -1
  126. data/test/tmp/svn_test/repository/db/format +2 -1
  127. data/test/tmp/svn_test/repository/db/revprops/0/0 +5 -0
  128. data/test/tmp/svn_test/repository/db/revprops/{1 → 0/1} +1 -1
  129. data/test/tmp/svn_test/repository/db/revprops/{2 → 0/2} +1 -1
  130. data/test/tmp/svn_test/repository/db/revprops/{3 → 0/3} +1 -1
  131. data/test/tmp/svn_test/repository/db/revprops/{4 → 0/4} +1 -1
  132. data/test/tmp/svn_test/repository/db/revs/{0 → 0/0} +0 -0
  133. data/test/tmp/svn_test/repository/db/revs/0/1 +25 -0
  134. data/test/tmp/svn_test/repository/db/revs/{2 → 0/2} +9 -9
  135. data/test/tmp/svn_test/repository/db/revs/0/3 +33 -0
  136. data/test/tmp/svn_test/repository/db/revs/{4 → 0/4} +0 -0
  137. data/test/tmp/svn_test/repository/db/txn-current +1 -0
  138. data/{lib/buildmaster/project/java/class_path.rb → test/tmp/svn_test/repository/db/txn-current-lock} +0 -0
  139. data/test/tmp/svn_test/repository/db/uuid +1 -1
  140. data/test/tmp/svn_test/repository/hooks/post-revprop-change.tmpl +1 -1
  141. data/test/tmp/svn_test/repository/hooks/pre-unlock.tmpl +1 -0
  142. data/test/tmp/svn_test/repository/hooks/start-commit.tmpl +13 -2
  143. data/test/ts_buildmaster.rb +2 -2
  144. metadata +100 -46
  145. data/lib/buildmaster/project/java.rb +0 -4
  146. data/lib/buildmaster/project/java/javac.rb +0 -9
  147. data/test/tmp/svn_test/repository/db/revprops/0 +0 -5
  148. data/test/tmp/svn_test/repository/db/revs/1 +0 -25
  149. data/test/tmp/svn_test/repository/db/revs/3 +0 -33
@@ -1,10 +1,4 @@
1
- $:.unshift File.join(File.dirname(__FILE__), 'project')
1
+ # This file is now deprecated in favor of a more suitable name 'auto'
2
+ dir = File.dirname(__FILE__)
2
3
 
3
- require 'build_number_file'
4
- require 'java_manifest'
5
- require 'ant_driver'
6
- require 'cvs_driver'
7
- require 'pscp_driver'
8
- require 'svn_driver'
9
- require 'version_number_file'
10
- require 'release'
4
+ require dir + '/auto'
@@ -1,21 +1,21 @@
1
1
  module BuildMaster
2
2
 
3
+ # ANT launcher class to run targets on an ANT build file.
3
4
  class AntDriver
5
+
6
+ # Create the instance given a CottaFile instance
4
7
  def AntDriver.from_file(ant_file)
5
8
  return AntDriver.new(ant_file)
6
9
  end
7
10
 
11
+ # Create the instance given a CottaFile
8
12
  def initialize(ant_file = nil)
9
13
  @cotta = Cotta.new(ant_file.system)
10
14
  @ant_file = ant_file
11
15
  ant_path = @cotta.environment!('ANT_HOME')
12
16
  @ant_home = @cotta.dir(ant_path)
13
17
  raise 'ANT_HOME need to point to ANT home directory' unless @ant_home.exists?
14
- #ISSUE: what java wants to split up classpath varies from platform to platform
15
- #and ruby, following perl, is not too hot at hinting which box it is on.
16
- #here I assume ":" except on win32, dos, and netware. Add extra tests here as needed.
17
- #This is the only way I know how to check if on windows
18
- if File.directory?('C:')
18
+ if RUBY_PLATFORM =~ /[^r]win/ # Windows and not darwin
19
19
  @class_path_delimiter = ';'
20
20
  @path_seperator='\\'
21
21
  else
@@ -47,7 +47,7 @@ class AntDriver
47
47
  launch(name)
48
48
  end
49
49
 
50
- def launch(arguments)
50
+ def launch(arguments, &block)
51
51
  local_path = "#{@ant_home.path}/lib/ant-launcher.jar"
52
52
  if (@classpath and @classpath.length() > 0)
53
53
  local_path = "#{local_path}#{@class_path_delimiter}#{@classpath}"
@@ -60,7 +60,11 @@ class AntDriver
60
60
  all_arguments.push('-f', @ant_file.path) if @ant_file
61
61
  all_arguments.push(arguments)
62
62
  command_line = "#{@java_command} #{all_arguments.join(' ')}"
63
- @cotta.shell(command_line)
63
+ @cotta.shell(command_line, &block)
64
+ end
65
+
66
+ def respond_to?(*args)
67
+ super(args)
64
68
  end
65
69
 
66
70
  def method_missing(method, *args)
@@ -1,3 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
1
+ dir = File.dirname(__FILE__)
2
2
 
3
- require 'ci/server'
3
+ require dir + '/../ci/server'
@@ -1,7 +1,3 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..')
2
-
3
- require 'cotta'
4
-
5
1
  module BuildMaster
6
2
  class PscpDriver
7
3
  def initialize(server_url, cotta = Cotta.new())
@@ -1,6 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require 'svn_driver'
3
-
4
1
  module BuildMaster
5
2
  class RubyForgeProject
6
3
  attr_reader :source_repository, :svn, :name, :group_id
@@ -1,7 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'svn_driver'
4
-
5
1
  module BuildMaster
6
2
  class SvnAdminDriver
7
3
  def initialize(path)
@@ -1,9 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'stringio'
4
- require 'rexml/document'
5
- require 'svn_status_info'
6
-
7
1
  module BuildMaster
8
2
 
9
3
  class SvnDriver
@@ -1,9 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'cotta'
4
- require 'svn_driver'
5
- require 'svn_status_info'
6
-
7
1
  module BuildMaster
8
2
 
9
3
  =begin
@@ -1,8 +1,3 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..')
2
-
3
- require '../cotta'
4
- require '../cotta/in_memory_system'
5
-
6
1
  module BuildMaster
7
2
  class SvnServerDriver
8
3
  def initialize(server, repository)
@@ -1,7 +1,3 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..')
2
- require 'cotta/cotta'
3
- require 'cotta/in_memory_system'
4
-
5
1
  module BuildMaster
6
2
  class IisDriver
7
3
  def initialize(cotta=Cotta.new)
@@ -1,4 +1,3 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', 'cotta')
2
1
  module BuildMaster
3
2
 
4
3
  class SqlServerDriver
@@ -1,5 +1,17 @@
1
- $:.unshift(File.dirname(__FILE__))
1
+ dir = File.dirname(__FILE__)
2
2
 
3
- require 'cotta'
4
- require 'site/site_spec'
5
- require 'site/site'
3
+ require dir + '/cotta'
4
+ require dir + '/common'
5
+ require dir + '/site/file_processor'
6
+ require dir + '/site/site_spec'
7
+ require dir + '/site/site'
8
+ require dir + '/site/source_content'
9
+ require dir + '/site/source_file_handler'
10
+ require dir + '/site/content_engine_repository'
11
+ require dir + '/site/site_server'
12
+ require dir + '/site/templatelets'
13
+ require dir + '/site/template_builder'
14
+ require dir + '/site/template_error'
15
+ require dir + '/site/template_runner'
16
+ require dir + '/site/element_processor_by_name'
17
+ require dir + '/site/xtemplate'
@@ -1,8 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
1
  require 'webrick'
4
- require 'file_processor'
5
-
6
2
  module BuildMaster
7
3
 
8
4
  class AboutHandler < WEBrick::HTTPServlet::AbstractServlet
@@ -1,5 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
1
  module BuildMaster
4
2
  class ContentEngineRepository
5
3
 
@@ -1,7 +1,3 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..')
2
-
3
- require 'site/template_error'
4
-
5
1
  module BuildMaster
6
2
 
7
3
  class ElementProcessorByName
@@ -1,7 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'site_spec'
4
- require 'source_content'
5
1
  require 'pathname'
6
2
 
7
3
  module BuildMaster
@@ -1,8 +1,4 @@
1
- $:.unshift File.join(File.dirname(__FILE__))
2
-
3
1
  require 'fileutils'
4
- require 'file_processor'
5
- require 'site_server'
6
2
 
7
3
  module BuildMaster
8
4
  class NullLogger
@@ -1,8 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
1
  require 'webrick'
4
- require 'source_file_handler'
5
- require 'about_handler'
6
2
  require 'net/http'
7
3
 
8
4
  module BuildMaster
@@ -42,6 +38,7 @@ class SiteServer
42
38
  url = URI.parse("http://localhost:#{@port_number}/")
43
39
  request = Net::HTTP::Get.new(url.path)
44
40
  begin
41
+ puts "getting #{url}"
45
42
  res = Net::HTTP.start(url.host, url.port) {|http|
46
43
  http.read_timeout=5
47
44
  http.request(request)
@@ -1,21 +1,9 @@
1
1
  require 'pathname'
2
- $:.unshift File.join(File.dirname(__FILE__), '..', '..')
3
- require 'common'
4
- require 'cotta'
5
-
6
- $:.unshift File.dirname(__FILE__)
7
- require 'templatelets'
8
- require 'template_builder'
9
- require 'element_processor_by_name'
10
- require 'xtemplate'
11
- require 'project/build_number_file'
12
- require 'content_engine_repository'
13
-
14
2
 
15
3
  module BuildMaster
16
4
 
17
5
  class SiteSpec
18
- attr_reader :output_dir, :content_engines, :cotta
6
+ attr_reader :output_dir, :content_engines, :cotta, :properties
19
7
  attr_accessor :content_dir, :template, :template_file, :content_format, :txt_format
20
8
 
21
9
  def initialize(file_at_root = nil, cotta = Cotta.new())
@@ -103,11 +91,12 @@ module BuildMaster
103
91
  from = path_name(@content_dir.path.to_s)
104
92
  return to.relative_path_from(from)
105
93
  end
106
-
94
+
95
+ # deprecated, use properties
107
96
  def add_property(name, value)
108
97
  properties()[name] = value
109
98
  end
110
-
99
+
111
100
  def center_class(content_path)
112
101
  if index_file? content_path
113
102
  return 'Content3Column'
@@ -1,7 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
1
  require 'webrick'
4
- require 'file_processor'
5
2
 
6
3
  module BuildMaster
7
4
 
@@ -1,5 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
1
  module BuildMaster
4
2
 
5
3
  class TemplateError < StandardError
@@ -1,7 +1,3 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
- require 'site/template_error'
4
-
5
1
  module BuildMaster
6
2
  class TemplateRunner
7
3
  @@NAMESPACE = 'http://buildmaster.rubyforge.org/xtemplate/1.0'
@@ -1,14 +1,13 @@
1
- $:.unshift(File.dirname(__FILE__))
1
+ dir = File.dirname(__FILE__) + '/templatelets'
2
2
 
3
- require 'templatelets/href'
4
- require 'templatelets/attribute'
5
- require 'templatelets/each'
6
- require 'templatelets/include'
7
- require 'templatelets/link'
8
- require 'templatelets/text'
9
- require 'templatelets/when'
10
- require 'templatelets/code'
11
- require 'site/template_error'
3
+ require dir + '/href'
4
+ require dir + '/attribute'
5
+ require dir + '/each'
6
+ require dir + '/include'
7
+ require dir + '/link'
8
+ require dir + '/text'
9
+ require dir + '/when'
10
+ require dir + '/code'
12
11
 
13
12
  module REXML
14
13
  class Element
@@ -1,10 +1,5 @@
1
- $:.unshift(File.join('..', File.dirname(__FILE__)))
2
-
3
1
  require 'uri'
4
2
 
5
- require 'site/template_error'
6
- require 'template_runner'
7
-
8
3
  module BuildMaster
9
4
 
10
5
  class Href
@@ -1,7 +1,3 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..')
2
-
3
- require 'template_runner'
4
-
5
1
  module BuildMaster
6
2
  class When
7
3
  def initialize(site_spec, expression_evaluator)
@@ -1,7 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
-
3
1
  require 'rexml/document'
4
- require 'template_runner'
5
2
 
6
3
  module BuildMaster
7
4
  class XTemplate
@@ -1 +1 @@
1
- 1.1.9
1
+ 1.1.12
@@ -0,0 +1,4 @@
1
+ require 'win32ole'
2
+ require 'selenium/auto_it_driver'
3
+ require 'selenium/auto_it_window'
4
+ require 'selenium/file_upload'
@@ -0,0 +1,45 @@
1
+ module Selenium
2
+ class AutoIt
3
+ @@autoit = nil
4
+
5
+ def self.load
6
+ begin
7
+ @@autoit = load_instance
8
+ rescue WIN32OLERuntimeError
9
+ registerAutoItDll
10
+ @@autoit = load_instance
11
+ end
12
+ @@autoit
13
+ end
14
+
15
+ def self.load_instance
16
+ @@autoit = WIN32OLE.new('AutoItX3.Control') unless @@autoit
17
+ @@autoit
18
+ end
19
+
20
+ def self.reset
21
+ if @@autoit
22
+ @@autoit.ole_free
23
+ @@autoit =nil
24
+ system("regsvr32.exe /s /u #{dll}")
25
+ end
26
+ end
27
+
28
+ def self.registerAutoItDll
29
+ system("regsvr32.exe /s #{dll}")
30
+ end
31
+
32
+ def self.dll
33
+ File.join(File.dirname(__FILE__), 'autoit', 'AutoItX3.dll')
34
+ end
35
+
36
+ def initialize
37
+ @autoit = AutoIt.load
38
+ end
39
+
40
+ def on_window_active(title, text = nil)
41
+ @autoit.WinWaitActive(title, text, 30)
42
+ yield @@autoit
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,82 @@
1
+ class AutoItWindow
2
+ def initialize(autoit, title, text=nil)
3
+ @autoit = autoit
4
+ @title = title
5
+ @text = text
6
+ end
7
+
8
+ def self.wait_for(autoit, title, text = nil)
9
+ window = self.new(autoit, title, text)
10
+ window.wait_for_appear
11
+ window
12
+ end
13
+
14
+ def self.on_activation(autoit, title, text = nil)
15
+ window = wait_for(autoit, title, text)
16
+ yield window
17
+ end
18
+
19
+ def wait_for_activation
20
+ @autoit.WinWaitActive(@title, @text, 30)
21
+ end
22
+
23
+ def wait_for_appear
24
+ @autoit.WinWait(@title, @text, 30)
25
+ end
26
+
27
+ def activate
28
+ @autoit.WinActivate(@title, @text)
29
+ end
30
+
31
+ def active?
32
+ 1 == @autoit.WinActive(@title, @text)
33
+ end
34
+
35
+ def state
36
+ AutoItWindowState.new(@autoit.WinGetState(@title, @text))
37
+ end
38
+
39
+ def send_keys(keys)
40
+ activate_if_needed
41
+ @autoit.Send(keys)
42
+ end
43
+
44
+ def close
45
+ @autoit.WinClose(@title)
46
+ end
47
+
48
+ def activate_if_needed
49
+ winstate = state
50
+ activate unless winstate.active?
51
+ end
52
+ end
53
+
54
+ class AutoItWindowState
55
+ def initialize(state)
56
+ @state = state
57
+ end
58
+
59
+ def exists?
60
+ @state & 1 > 0
61
+ end
62
+
63
+ def visible?
64
+ @state & 2 > 0
65
+ end
66
+
67
+ def enabled?
68
+ @state & 4 > 0
69
+ end
70
+
71
+ def active?
72
+ @state & 8 > 0
73
+ end
74
+
75
+ def minimized?
76
+ @state & 16 > 0
77
+ end
78
+
79
+ def maxmized?
80
+ @state & 32 > 0
81
+ end
82
+ end