oats 0.0.3 → 0.0.4

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/.rvmrc ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
+ # development environment upon cd'ing into the directory
5
+
6
+ # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
7
+ # Only full ruby name is supported here, for short names use:
8
+ # echo "rvm use 1.8.7" > .rvmrc
9
+ environment_id="ruby-1.8.7-p358@oats"
10
+
11
+ # Uncomment the following lines if you want to verify rvm version per project
12
+ # rvmrc_rvm_version="1.13.4 (stable)" # 1.10.1 seams as a safe start
13
+ # eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
14
+ # echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
15
+ # return 1
16
+ # }
17
+
18
+ # First we attempt to load the desired environment directly from the environment
19
+ # file. This is very fast and efficient compared to running through the entire
20
+ # CLI and selector. If you want feedback on which environment was used then
21
+ # insert the word 'use' after --create as this triggers verbose mode.
22
+ if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
23
+ && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
24
+ then
25
+ \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
26
+ [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
27
+ \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
28
+ if [[ $- == *i* ]] # check for interactive shells
29
+ then echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)" # show the user the ruby and gemset they are using in green
30
+ else echo "Using: $GEM_HOME" # don't use colors in non-interactive shells
31
+ fi
32
+ else
33
+ # If the environment file has not yet been created, use the RVM CLI to select.
34
+ rvm --create use "$environment_id" || {
35
+ echo "Failed to create RVM environment '${environment_id}'."
36
+ return 1
37
+ }
38
+ fi
39
+
40
+ # # If you use bundler, this might be useful to you:
41
+ # if [[ -s Gemfile ]] && {
42
+ # ! builtin command -v bundle >/dev/null ||
43
+ # builtin command -v bundle | GREP_OPTIONS= \grep $rvm_path/bin/bundle >/dev/null
44
+ # }
45
+ # then
46
+ # printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
47
+ # gem install bundler
48
+ # fi
49
+ # if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null
50
+ # then
51
+ # bundle install | GREP_OPTIONS= \grep -vE '^Using|Your bundle is complete'
52
+ # fi
data/lib/oats/keywords.rb CHANGED
@@ -2,86 +2,85 @@
2
2
  module Oats
3
3
 
4
4
  # Process keyword driven testing
5
- class Keywords
6
- class << self
5
+ module Keywords
7
6
 
8
- # Same as selenium.wait_and_type, but maps key via OatsX.locator, and uses
9
- # OatsX.data[key] for value
10
- def wait_and_type(key, *args)
11
- selenium.wait_and_type(locator(key), oats_data[key], *args)
12
- end
7
+ # Same as selenium.wait_and_type, but maps key via OatsX.locator, and uses
8
+ # OatsX.data[key] for value
9
+ def wait_and_type(key, *args)
10
+ selenium.wait_and_type(locator(key), oats_data[key], *args)
11
+ end
13
12
 
14
- # Same as selenium.wait_for_element, but maps key via OatsX.locator first
15
- def wait_and_click(key)
16
- selenium.wait_and_click(locator(key))
17
- end
13
+ # Same as selenium.wait_for_element, but maps key via OatsX.locator first
14
+ def wait_and_click(key)
15
+ selenium.wait_and_click(locator(key))
16
+ end
18
17
 
19
- # Same as selenium.wait_for_element, maps key via OatsX.locator first
20
- def wait_and_text(key)
21
- selenium.wait_for_element(locator(key)).text
22
- end
18
+ # Same as selenium.wait_for_element, maps key via OatsX.locator first
19
+ def wait_and_text(key)
20
+ selenium.wait_for_element(locator(key)).text
21
+ end
23
22
 
24
- # Returned the key or mappings if defined in the <class>::LOCATOR_MAP
25
- def locator(key)
26
- self::LOCATOR_MAP[key] || key
27
- end
23
+ # Returned the key or mappings if defined in the <class>::LOCATOR_MAP
24
+ def locator(key)
25
+ self::LOCATOR_MAP[key] || key
26
+ end
28
27
 
29
28
 
30
- # Return data from XL spreadsheet entries via Oats.data('xl.data')
31
- # OatsX.oats_data(key_string) or OatsX.oats_data[key_string]
32
- def oats_data(cell = nil, clas = self)
33
- xl_root = $oats[clas.name]
34
- list = xl_root['list'] || Oats.data('keywords.list')
35
- if list
36
- xl_root_list = xl_root[list]
37
- else
38
- xl_root_list = xl_root
39
- end
40
- # Oats.assert list, "Oats.data keywords.list is not defined."
41
- val = cell ? xl_root_list[cell] : xl_root_list
42
- Oats.assert( val, "No keywords are defined for #{clas}" + (list ? ".#{list}" : '') ) if cell == 'keywords'
43
- Marshal.load(Marshal.dump(val)) # Protect Oats.data from modification
29
+ # Return data from XL spreadsheet entries via Oats.data('xl.data')
30
+ # OatsX.oats_data(key_string) or OatsX.oats_data[key_string]
31
+ def oats_data(cell = nil, clas = self)
32
+ xl_root = $oats[clas.name]
33
+ list = xl_root['list'] || Oats.data('keywords.list')
34
+ if list
35
+ xl_root_list = xl_root[list]
36
+ else
37
+ xl_root_list = xl_root
44
38
  end
39
+ # Oats.assert list, "Oats.data keywords.list is not defined."
40
+ val = cell ? xl_root_list[cell] : xl_root_list
41
+ Oats.assert( val, "No keywords are defined for #{clas}" + (list ? ".#{list}" : '') ) if cell == 'keywords'
42
+ Marshal.load(Marshal.dump(val)) # Protect Oats.data from modification
43
+ end
44
+ module_function :oats_data
45
45
 
46
- # Handles keyword processing.
47
- # Used by OATS framework to run XL driven test suites.
48
- # Users can also call this from yaml_handlers.
49
- def process
50
- # Class name comes from Oats.data oats_keywords_cleass, or in the case of XL files from TestCase ID
51
- class_name = Oats.data('keywords.class') || File.basename(File.dirname(File.dirname(Oats.test.id)))
52
- class_file = nil
46
+ # Handles keyword processing.
47
+ # Used by OATS framework to run XL driven test suites.
48
+ # Users can also call this from yaml_handlers.
49
+ def self.process
50
+ # Class name comes from Oats.data oats_keywords_cleass, or in the case of XL files from TestCase ID
51
+ class_name = Oats.data('keywords.class') || File.basename(File.dirname(File.dirname(Oats.test.id)))
52
+ class_file = nil
53
+ begin
54
+ keywords_class = Kernel.const_get class_name
55
+ rescue NameError
56
+ class_file = Oats.data('keywords.class_file')
57
+ unless class_file # Try standard ruby conventions
58
+ class_file = class_name.dup
59
+ class_file.gsub!(/::/, '/')
60
+ class_file.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
61
+ class_file.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
62
+ class_file.tr!("-", "_")
63
+ class_file.downcase!
64
+ end
53
65
  begin
54
- keywords_class = Kernel.const_get class_name
55
- rescue NameError
56
- class_file = Oats.data('keywords.class_file')
57
- unless class_file # Try standard ruby conventions
58
- class_file = class_name.dup
59
- class_file.gsub!(/::/, '/')
60
- class_file.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
61
- class_file.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
62
- class_file.tr!("-", "_")
63
- class_file.downcase!
64
- end
66
+ Oats.info "Loading: '#{class_file}' for #{class_name}"
67
+ require class_file
65
68
  begin
66
- Oats.info "Loading: '#{class_file}' for #{class_name}"
67
- require class_file
68
- begin
69
- keywords_class = Kernel.const_get class_name
70
- rescue NameError
71
- raise OatsTestError, "Can not find class '#{class_name}' in class file: '#{class_file}'"
72
- end
73
- rescue LoadError
74
- Oats.assert class_file.nil?, "Could not load Oats.data keywords.class_file '#{class_file}' for class '#{class_name}'."
69
+ keywords_class = Kernel.const_get class_name
70
+ rescue NameError
71
+ raise OatsTestError, "Can not find class '#{class_name}' in class file: '#{class_file}'"
75
72
  end
76
- end
77
- oats_data('keywords',keywords_class).each do |action|
78
- Oats.assert keywords_class.respond_to?(action),
79
- "There is no method defined in #{class_name} to the handle keyword 'a#{action}'."
80
- Oats.info "Performing " + action
81
- keywords_class.send action
73
+ rescue LoadError
74
+ Oats.assert class_file.nil?, "Could not load Oats.data keywords.class_file '#{class_file}' for class '#{class_name}'."
82
75
  end
83
76
  end
84
-
77
+ oats_data('keywords',keywords_class).each do |action|
78
+ Oats.assert keywords_class.respond_to?(action),
79
+ "There is no method defined in #{class_name} to the handle keyword 'a#{action}'."
80
+ Oats.info "Performing " + action
81
+ keywords_class.send action
82
+ end
85
83
  end
84
+
86
85
  end
87
86
  end
data/lib/oats/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Oats
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/oats.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
 
22
22
  # s.extra_rdoc_files = ["CHANGELOG", "COPYING", "lib/oats/oats.rb", "LICENSE", "README"]
23
23
  # s.has_rdoc = true
24
- # s.homepage = %q{http://oats .org}
24
+ # s.homepage = %q{http://oats.org}
25
25
  # s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Oats", "--main", "README"
26
26
  s.date = %q{2012-05-22}
27
27
  s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
@@ -6,19 +6,20 @@ require 'net/imap'
6
6
  #require 'openssl'
7
7
  #require 'nokogiri'
8
8
 
9
- class SampleXlLists < Oats::Keywords
9
+ module SampleXlLists
10
10
 
11
- # Maps entries to be accessed by 'locator' function for Proactiv
11
+ # Maps entries to be accessed by 'locator' method below
12
12
  self::LOCATOR_MAP = {
13
13
  'url' => "url_locator"
14
14
  }
15
15
 
16
16
  class << self
17
+ include Oats::Keywords
17
18
 
18
19
  def action1
19
20
  data = oats_data
20
21
  data.delete('keywords')
21
- Oats.info "Data:" + data.inspect
22
+ Oats.info "URL: #{locator('url')} Data:" + data.inspect
22
23
  end
23
24
 
24
25
  def action2
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oats
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Levent Atasoy
@@ -85,6 +85,7 @@ extra_rdoc_files: []
85
85
 
86
86
  files:
87
87
  - .gitignore
88
+ - .rvmrc
88
89
  - Gemfile
89
90
  - README.txt
90
91
  - Rakefile