superbara 0.12.0 → 0.13.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2238d76a17abb6017288ec127e19d7e38da5a3a450aab924ccab843358408b82
4
- data.tar.gz: d197b4816a25d7af7d3846bfd46410091e6aa6dceb3d513991868ea995f51f8f
3
+ metadata.gz: ab8bf36370219d9cdc7b4519eee57b6a8fed48128f0d41b0e98a450c4cd88357
4
+ data.tar.gz: d89410c70aca07dc35dbe3696e53e7c7901f9206a1bcfa438749cb362b0a4547
5
5
  SHA512:
6
- metadata.gz: b9519813335ccff5a615278d1cc00c838af1855d32fa78df72c741b13c8d3893a8eb8e940daa8d4a67a4fb3a32d41b807fa71d09735c147e25efdd9d513a71fd
7
- data.tar.gz: bfc6174d941af1012e1361a24bf3531cc3ef841d0ad6d3aaf582df0ec19f15fc0eb06afaf86c6639e9bf8642324d84109fa3aa3ab8941f305ae0867e74a0cb42
6
+ metadata.gz: eb4124bad9f79400663e58eba62389c0b7e6dca4fe692dd43703ed90c6890289f0af7f8160e39028138009cebd01f46ac2650287e9e1a91b4b6375e45305355a
7
+ data.tar.gz: 0cec8306e977a827ddc049b013c31e89fb1216697e0ca1bc42c070c5ece5f4445a75b93fc3cdd7a685f510286c20b6c2f33e765889e2190ebffd939583a28486
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- superbara (0.12.0)
4
+ superbara (0.13.0)
5
+ astrolabe (~> 1.3, >= 1.3.1)
5
6
  binding_of_caller (~> 0.8, >= 0.8.0)
6
7
  capybara (~> 3.1, >= 3.1.0)
7
8
  colorize (~> 0.8, >= 0.8.1)
@@ -15,6 +16,9 @@ GEM
15
16
  specs:
16
17
  addressable (2.5.2)
17
18
  public_suffix (>= 2.0.2, < 4.0)
19
+ ast (2.4.0)
20
+ astrolabe (1.3.1)
21
+ parser (~> 2.2)
18
22
  binding_of_caller (0.8.0)
19
23
  debug_inspector (>= 0.0.1)
20
24
  byebug (10.0.2)
@@ -44,6 +48,8 @@ GEM
44
48
  mustermann (1.0.2)
45
49
  nokogiri (1.8.2)
46
50
  mini_portile2 (~> 2.3.0)
51
+ parser (2.5.1.0)
52
+ ast (~> 2.4.0)
47
53
  pry (0.11.3)
48
54
  coderay (~> 1.1.0)
49
55
  method_source (~> 0.9.0)
@@ -52,7 +58,7 @@ GEM
52
58
  pry (~> 0.10)
53
59
  public_suffix (3.0.2)
54
60
  rack (2.0.5)
55
- rack-protection (2.0.2)
61
+ rack-protection (2.0.3)
56
62
  rack
57
63
  rack-test (1.0.0)
58
64
  rack (>= 1.0, < 3)
@@ -74,10 +80,10 @@ GEM
74
80
  selenium-webdriver (3.12.0)
75
81
  childprocess (~> 0.5)
76
82
  rubyzip (~> 1.2)
77
- sinatra (2.0.2)
83
+ sinatra (2.0.3)
78
84
  mustermann (~> 1.0)
79
85
  rack (~> 2.0)
80
- rack-protection (= 2.0.2)
86
+ rack-protection (= 2.0.3)
81
87
  tilt (~> 2.0)
82
88
  tilt (2.0.8)
83
89
  xpath (3.1.0)
data/README.md CHANGED
@@ -74,10 +74,10 @@ find "h1"
74
74
  run "vars"
75
75
 
76
76
  # possible to run just once per session (superbara start) to speed up
77
- run "login", once: true
77
+ run "login", {}, once: true
78
78
 
79
79
  # ..and do something when already ran
80
- run "login", once: true do
80
+ run "login", {}, once: true do
81
81
  # when already logged in
82
82
  visit "http://www.example.com/main"
83
83
  end
@@ -103,7 +103,7 @@ Pry::Commands.command /^help$/, "help" do
103
103
  end
104
104
 
105
105
  Pry::Commands.command /^q$/, "abort" do
106
- exit 1
106
+ exit 0
107
107
  end
108
108
 
109
109
  Pry::Commands.command /^r$/, "retry" do
@@ -11,8 +11,6 @@ require_relative "selenium_monkey"
11
11
  require_relative "capybara_monkey"
12
12
  require_relative "pry_monkey"
13
13
 
14
- ::Kernel.send :undef_method, :p
15
-
16
14
  require_relative "superbara/config"
17
15
 
18
16
  module Superbara
@@ -24,16 +22,6 @@ module Superbara
24
22
  @@project_path = Dir.pwd
25
23
  @@config = Superbara::Config.new
26
24
  @@errored_runs = []
27
- @@main = nil
28
-
29
- def self.main=(main)
30
- @@main=main
31
- end
32
-
33
- def self.main
34
- @@main
35
- end
36
-
37
25
 
38
26
  def self.start!
39
27
  @@started_at = Time.now
@@ -96,6 +84,14 @@ module Superbara
96
84
  @@current_context
97
85
  end
98
86
 
87
+ @@last_context_return_value = nil
88
+ def self.last_context_return_value=(value)
89
+ @@last_context_return_value = value
90
+ end
91
+ def self.last_context_return_value
92
+ @@last_context_return_value
93
+ end
94
+
99
95
  def self.output(str)
100
96
  if Superbara.shell? || Superbara.seconds_since_start.nil?
101
97
  puts str
@@ -152,6 +148,19 @@ module Superbara
152
148
  end
153
149
  end
154
150
 
151
+ def self.print_error(ex)
152
+ puts ""
153
+ print "Error: ".colorize(:red)
154
+ puts ex.message.split(" for #<Superbara::Context").first
155
+ puts " in #{ex.backtrace_locations.first.path}:#{ex.backtrace_locations.first.lineno}"
156
+ end
157
+
158
+ def self.print_tag_skip(ex)
159
+ test_tags = Marshal.load(ex.message).join(",")
160
+ allowed_tags = Superbara.config.tags.join(",")
161
+ Superbara.output " ..skipped due to test tags (#{test_tags}) not found in current tags: #{allowed_tags}"
162
+ end
163
+
155
164
  def self.errored_runs
156
165
  @@errored_runs
157
166
  end
@@ -160,6 +169,14 @@ module Superbara
160
169
  @@config
161
170
  end
162
171
 
172
+ def self.start_did_open_debug
173
+ @@start_did_open_debug
174
+ end
175
+
176
+ def self.start_did_open_debug=(value)
177
+ @@start_did_open_debug = value
178
+ end
179
+
163
180
  def self.toast(text, duration: 1, delay: nil)
164
181
  return unless Superbara.visual?
165
182
 
@@ -222,8 +239,6 @@ if (window.document.body) {
222
239
  end
223
240
  end
224
241
 
225
- Superbara.main = self
226
-
227
242
  require_relative "superbara/version"
228
243
  require_relative "superbara/helpers"
229
244
  require_relative "superbara/chrome"
@@ -231,7 +246,6 @@ require_relative "superbara/cli"
231
246
  require_relative "superbara/context"
232
247
  require_relative "superbara/web"
233
248
  require_relative "superbara/errors/not_desired_tag_error"
234
- require_relative "superbara/errors/export_stops_error"
235
249
 
236
250
  trap "SIGINT" do
237
251
  puts "
@@ -110,109 +110,89 @@ scroll 50
110
110
  end
111
111
 
112
112
  Pry.start if ENV['SUPERBARA_DEBUG']
113
- ctx = nil
114
113
  webapp_thread = nil
115
114
  puts "== superbara #{Superbara::VERSION} =="
115
+
116
116
  loop do
117
- Superbara.current_context = Superbara::Context.new
117
+ case main_command
118
+ when "web"
119
+ webapp = Superbara::Web.new port: (ENV['SUPERBARA_WEB_PORT'] || 4567)
120
+ webapp.run!
121
+ exit 0
122
+ when "shell"
123
+ Superbara.visual_enable!
124
+ Superbara.shell_enable!
125
+
126
+ unless webapp_thread
127
+ webapp_thread = Thread.new do
128
+ webapp = Superbara::Web.new access_log: false
129
+ webapp.run!
130
+ end
131
+ end
132
+
133
+
134
+ Superbara::Context::Shell.new "visit 'localhost:4567'"
135
+ when "run", "start"
136
+ puts "project: #{Superbara.project_name}"
137
+ puts ""
138
+ puts "t action".colorize(:light_black)
139
+
140
+ Superbara.start!
141
+
142
+ Superbara.visual_disabled do
143
+ Superbara::Context::Eval.new "visit 'about:blank'"
144
+ end
118
145
 
119
- begin
120
146
  case main_command
121
- when "web"
122
- webapp = Superbara::Web.new port: (ENV['SUPERBARA_WEB_PORT'] || 4567)
123
- webapp.run!
124
- exit 0
125
- when "shell"
147
+ when "start"
126
148
  Superbara.visual_enable!
127
- Superbara.shell_enable!
128
149
 
129
- unless webapp_thread
130
- webapp_thread = Thread.new do
131
- webapp = Superbara::Web.new access_log: false
132
- webapp.run!
133
- end
150
+ Superbara.start_did_open_debug = false
151
+ Superbara::Context::Start.new File.join(Superbara.project_path, project_entrypoint)
152
+ unless Superbara.start_did_open_debug
153
+ puts
154
+ print "WARNING: ".colorize(:yellow)
155
+ puts "your script had a return statement - local variables NOT available in debugger"
156
+ Superbara::Context::Shell.new
134
157
  end
135
- # to make debugger work (TODO)
136
- extend Capybara::DSL
137
- extend Superbara::DSL
138
- Superbara.current_context.__superbara_eval "visit 'localhost:4567'"
139
- Superbara.current_context.__superbara_debug # <-- ONLY WORKS WITH THIS??? TODO
140
- exit 0
141
- when "run", "start"
142
- puts "project: #{Superbara.project_name}"
143
- puts ""
144
- puts "t action".colorize(:light_black)
145
-
146
- Superbara.start!
147
- Superbara.visual_disabled do
148
- Superbara.current_context.__superbara_eval "visit 'about:blank'"
158
+ when "run"
159
+ begin
160
+ Superbara::Context::Run.new File.join(Superbara.project_path, project_entrypoint)
161
+ rescue Superbara::Errors::NotDesiredTagError => ex
162
+ test_tags = Marshal.load(ex.message).join(",")
163
+ allowed_tags = Superbara.config.tags.join(",")
164
+ Superbara.output " ..skipped due to test tags (#{test_tags}) not found in current tags: #{allowed_tags}"
165
+ rescue => ex
166
+ Superbara.print_error ex
167
+ exit 1
168
+ else
169
+ puts """
170
+ 🏁 🏁 🏁 done."""
149
171
  end
150
172
 
151
- case main_command
152
- when "start"
153
- Superbara.visual_enable!
154
- end
155
-
156
- Superbara.current_context.__superbara_load File.join(Superbara.project_path, project_entrypoint)
157
- puts """
158
- 🏁 🏁 🏁 done."""
159
-
160
- case main_command
161
- when "run"
162
- if Superbara.errored_runs.any?
163
- puts ""
164
- error_or_errors = if Superbara.errored_runs.size > 1
165
- "errors"
166
- else
167
- "error"
168
- end
169
-
170
- puts "Run had #{Superbara.errored_runs.size} #{error_or_errors}!".colorize(:red)
171
- puts ""
172
- puts "Following runs errored:"
173
- for errored_run in Superbara.errored_runs
174
- puts " #{errored_run}"
175
- end
176
-
177
- exit! 1 #TODO: at_exit handler instead?
173
+ if Superbara.errored_runs.any?
174
+ puts ""
175
+ error_or_errors = if Superbara.errored_runs.size > 1
176
+ "errors"
178
177
  else
179
- exit 0
178
+ "error"
180
179
  end
181
- when "start"
182
- Superbara.current_context.__superbara_eval """
183
- debug disable_whereami: true, help: false;
184
- sleep 0.0001
185
- """
186
- end
187
- else
188
- puts "Unknown command: #{main_command}"
189
- exit 1
190
- end
191
- rescue Exception => ex
192
- return if ex.class == SystemExit
193
-
194
- begin
195
- offending_file_path_and_line_in_this = ex.backtrace.detect { |line| line.end_with?("`<top (required)>'") }
196
- offending_file_path, offending_line, _ = offending_file_path_and_line_in_this.split(":")
197
- offending_code = IO.readlines(offending_file_path)[offending_line.to_i-1]
198
- rescue Exception => ex_while_parsing
199
- raise ex
200
- end
201
- puts """
202
- == Exception ==""".colorize(:red)
203
- puts """#{ex.class}
204
- #{ex.message}
205
- in #{offending_file_path}:#{offending_line}
206
- #{offending_line}: #{offending_code}""".colorize(:light_black)
207
180
 
208
- case main_command
209
- when "start"
210
- Superbara.current_context.instance_eval """debug disable_whereami: true, help: false
211
- sleep 0.001
212
- """
213
- else
214
- exit 1
181
+ puts "Run had #{Superbara.errored_runs.size} #{error_or_errors}!".colorize(:red)
182
+ puts ""
183
+ puts "Following runs errored:"
184
+ for errored_run in Superbara.errored_runs
185
+ puts " #{errored_run}"
186
+ end
187
+
188
+ exit 1
189
+ else
190
+ exit 0
191
+ end
215
192
  end
193
+ else
194
+ puts "Unknown command: #{main_command}"
195
+ exit 1
216
196
  end
217
197
  end
218
198
  end
@@ -1,89 +1,10 @@
1
- module Superbara; class Context
2
- require_relative "dsl"
3
- include Capybara::DSL
4
- include Superbara::DSL
5
-
6
- def initialize
7
- @__superbara_binding = binding
8
- end
9
-
10
- def __superbara_debug
11
- __superbara_eval """
12
- debug disable_whereami: true, help: false
13
- sleep 0.0001
14
- """
15
- end
16
-
17
- def __superbara_load(path, params={})
18
- params.each_pair do |k,v|
19
- eval = "@#{k} = "
20
- eval << "'" if v.class == String
21
- eval << v
22
- eval << "'" if v.class == String
23
- Superbara.main.instance_eval "@#{k} = #{eval}"
24
- end
25
-
26
- not_desired_tag_error_occurred = false
27
- export_stops_error = nil
28
- begin
29
- load path, true
30
- rescue Superbara::Errors::ExportStopsError => ex
31
- export_stops_error = ex
32
- rescue Superbara::Errors::NotDesiredTagError => ex
33
- not_desired_tag_error_occurred = true
34
- test_tags = Marshal.load(ex.message).join(",")
35
- allowed_tags = Superbara.config.tags.join(",")
36
- Superbara.output " ..skipped due to test tags (#{test_tags}) not found in current tags: #{allowed_tags}"
37
- ensure
38
- params.each_pair do |k,v|
39
- Superbara.main.instance_eval "remove_instance_variable '@#{k}'"
40
- end
41
- end
42
-
43
- if export_stops_error
44
- # sending it forward for run to return what's inside
45
- raise export_stops_error
46
- end
47
-
48
- if not_desired_tag_error_occurred
49
- # FAKENEWS: sending it forward for run to return false
50
- raise Superbara::Errors::NotDesiredTagError
51
- end
52
- end
53
-
54
- def __superbara_eval(str)
55
- @__superbara_binding.eval str
56
- end
57
-
58
- def method_missing(m, *args, &block)
59
- super unless Superbara.shell?
60
-
61
- selector = m.to_s
62
- finder_args = args[0] if args.any?
63
-
64
- would_find_size = evaluate_script "document.querySelectorAll('#{m}').length"
65
- if would_find_size > 50
66
- puts "tried to find with selector '#{m}', but would return over 50 elements (#{would_find_size}) and hang."
67
- return false
68
- end
69
-
70
- print "finding all '#{m}'"
71
-
72
- results = if finder_args
73
- puts " #{finder_args}"
74
- all selector, finder_args
75
- else
76
- puts ""
77
- all selector
78
- end
79
-
80
- if results.size == 1
81
- results.first.show
82
- elsif results.size > 1
83
- results.show(styles: [{"border" => "20px dashed Red"}])
84
- else
85
- []
86
- end
1
+ module Superbara
2
+ module Context
87
3
  end
4
+ end
88
5
 
89
- end; end
6
+ require_relative "context/base"
7
+ require_relative "context/shell"
8
+ require_relative "context/start"
9
+ require_relative "context/run"
10
+ require_relative "context/eval"
@@ -0,0 +1,15 @@
1
+ module Superbara
2
+ module Context
3
+ class Base
4
+ require_relative "../dsl"
5
+ include Capybara::DSL
6
+ include Superbara::DSL
7
+
8
+ def initialize(path_or_contents, params = {})
9
+ params.each_pair do |k,v|
10
+ instance_variable_set "@#{k}", v
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module Superbara
2
+ module Context
3
+ class Eval < Base
4
+ def initialize(__SUPERBARA_CONTENTS__, __SUPERBARA_PARAMS__={})
5
+ super __SUPERBARA_CONTENTS__, __SUPERBARA_PARAMS__
6
+ lambda do
7
+ instance_eval __SUPERBARA_CONTENTS__
8
+ end.call
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ module Superbara
2
+ module Context
3
+ class Run < Base
4
+ def initialize(__SUPERBARA_FILE__, __SUPERBARA_PARAMS__={})
5
+ super __SUPERBARA_FILE__, __SUPERBARA_PARAMS__
6
+
7
+ Superbara.last_context_return_value = lambda do
8
+ instance_eval """
9
+ #{File.read(File.realpath(__SUPERBARA_FILE__))}
10
+ """, File.realpath(__SUPERBARA_FILE__), 1
11
+ end.call
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ module Superbara
2
+ module Context
3
+ class Shell < Base
4
+ def initialize(__SUPERBARA_CONTENTS__="", __SUPERBARA_PARAMS__={})
5
+ super __SUPERBARA_CONTENTS__, __SUPERBARA_PARAMS__
6
+ lambda do
7
+ instance_eval """
8
+ #{__SUPERBARA_CONTENTS__}
9
+ debug disable_whereami: true, help: false
10
+ sleep 0.001
11
+ """
12
+ end.call
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ module Superbara
2
+ module Context
3
+ class Start < Base
4
+ def initialize(__SUPERBARA_FILE__, __SUPERBARA_PARAMS__={})
5
+ super __SUPERBARA_FILE__, __SUPERBARA_PARAMS__
6
+
7
+ lambda do
8
+ instance_eval """
9
+ begin
10
+ #{File.read(File.realpath(__SUPERBARA_FILE__))}
11
+ rescue Superbara::Errors::NotDesiredTagError
12
+ Superbara.print_tag_skip $!
13
+ rescue
14
+ Superbara.print_error $!
15
+ else
16
+ puts '
17
+ 🏁 🏁 🏁 done.'
18
+ end
19
+
20
+ debug disable_whereami: true, help: false
21
+ sleep 0.001
22
+ """,
23
+ File.realpath(__SUPERBARA_FILE__),
24
+ 1
25
+ end.call
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+
@@ -17,9 +17,9 @@ module Superbara; module DSL
17
17
  return unless failed
18
18
 
19
19
  if message
20
- Superbara.output ("FAIL: ".colorize(:red) + message)
20
+ Superbara.output ("FAIL: ".colorize(:red) + message.inspect)
21
21
  else
22
- Superbara.output "FAIL: ".colorize(:red)
22
+ Superbara.output "FAIL".colorize(:red)
23
23
  end
24
24
 
25
25
  exit 1
@@ -86,19 +86,18 @@ return Array.from(
86
86
  e.click
87
87
  end
88
88
 
89
- def export(e)
90
- raise Superbara::Errors::ExportStopsError, Marshal.dump(e)
91
- end
92
-
93
89
  @@once_runs = []
94
- def run(what, once: false, **params, &block)
95
- if once
90
+ def run(what, params={}, args={}, &block)
91
+ Superbara.last_context_return_value = nil
92
+
93
+ if args[:once] == true
96
94
  if @@once_runs.include? what
97
95
  if block
98
96
  value = block.call
99
97
  return value
100
98
  else
101
- return false
99
+ Superbara.output "run #{what} skip"
100
+ return nil
102
101
  end
103
102
  else
104
103
  @@once_runs << what
@@ -121,13 +120,10 @@ return Array.from(
121
120
  Superbara.project_path = File.dirname(better_what)
122
121
  end
123
122
 
124
- export_object = nil
125
123
  begin
126
- Superbara.current_context.__superbara_load(better_what, params)
124
+ Superbara::Context::Run.new better_what, params
127
125
  rescue Superbara::Errors::NotDesiredTagError
128
- rescue Superbara::Errors::ExportStopsError => ex
129
- export_object = Marshal.load ex.message
130
- rescue Exception => ex
126
+ rescue => ex
131
127
  if ENV["SUPERBARA_ON_ERROR"] == "continue"
132
128
  colored_output = " ERROR: ".colorize(:red)
133
129
  colored_output << ex.message
@@ -141,8 +137,7 @@ return Array.from(
141
137
  end
142
138
 
143
139
  Superbara.project_path = old_project_path
144
-
145
- export_object
140
+ Superbara.last_context_return_value
146
141
  end
147
142
 
148
143
  def visit(visit_uri_or_domain_or_path)
@@ -242,6 +237,8 @@ return Array.from(
242
237
  end
243
238
 
244
239
  def wait(seconds=5, &block)
240
+ raise "block not given" unless block
241
+
245
242
  def wait_formatted_output(status, took_delta)
246
243
  word, color = if status
247
244
  ["ok", :green]
@@ -370,6 +367,3 @@ return Array.from(
370
367
  Pry.start(binding.of_caller(1))
371
368
  end
372
369
  end; end
373
-
374
- extend Capybara::DSL
375
- extend Superbara::DSL # override Capybara methods
@@ -1,3 +1,3 @@
1
1
  module Superbara
2
- VERSION = "0.12.0"
2
+ VERSION = "0.13.0"
3
3
  end
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency 'selenium-webdriver', '~> 3.12', '>= 3.12.0'
31
31
  spec.add_dependency 'faker', '~> 1.8', '>= 1.8.7'
32
32
  spec.add_dependency 'sinatra', '~> 2.0', '>= 2.0.1'
33
+ spec.add_dependency 'astrolabe', '~> 1.3', '>= 1.3.1'
33
34
 
34
35
  spec.add_development_dependency 'bundler', '~> 1.15', '>= 1.15.0'
35
36
  spec.add_development_dependency 'rake', '~> 10.0', '>= 10.0.0'
@@ -1,4 +1,4 @@
1
- run "../common", once: true
1
+ run "../common", {}, once: true
2
2
 
3
3
  wait "3" do
4
4
  has_text? "Superbara"
@@ -1,4 +1,4 @@
1
1
  run "vars"
2
- run "webapp", once: true
2
+ run "webapp", {}, once: true
3
3
 
4
4
  visit "#{$test_host}:4567"
@@ -2,14 +2,14 @@ first = run "first_failing"
2
2
  second = run "second_ok"
3
3
  third = run "third_failing"
4
4
 
5
- assert "first" do
5
+ assert first do
6
6
  first == nil
7
7
  end
8
8
 
9
- assert "second" do
9
+ assert second do
10
10
  second == "second"
11
11
  end
12
12
 
13
- assert "third" do
13
+ assert third do
14
14
  third == nil
15
15
  end
@@ -1 +1 @@
1
- export "second"
1
+ return "second"
@@ -1,6 +1,9 @@
1
1
  run "../common"
2
2
 
3
- h1 = find "h1"
3
+ h1 = wait do
4
+ find "h1"
5
+ end
6
+
4
7
  assert h1.text do
5
8
  h1.text == "Superbara"
6
9
  end
@@ -1,3 +1,8 @@
1
- run "../common", once: true do
1
+ run "../common", {}, once: true do
2
2
  puts "common already loaded"
3
3
  end
4
+
5
+ value = run "minimal"
6
+ assert value do
7
+ value == "hello from minimal.rb"
8
+ end
@@ -0,0 +1,12 @@
1
+ hello = "local hello"
2
+ @hello = "instance hello"
3
+
4
+ assert local_variables.inspect do
5
+ local_variables == [:hello, :__SUPERBARA_FILE__, :__SUPERBARA_PARAMS__]
6
+ end
7
+
8
+ assert "instance" do
9
+ instance_variables == [:@hello]
10
+ end
11
+
12
+ "hello from minimal.rb"
@@ -1,2 +1,27 @@
1
1
  run "has_instance_variables", first: "hello", second: "world"
2
+
3
+ assert "first" do
4
+ @first.nil?
5
+ end
6
+
7
+ assert "second" do
8
+ @first.nil?
9
+ end
10
+
2
11
  run "has_no_instance_variables"
12
+
13
+ value = run "value"
14
+
15
+ assert "value" do
16
+ value == "hello"
17
+ end
18
+
19
+
20
+ values = []
21
+ 3.times do
22
+ values << (run "once", {}, once: true)
23
+ end
24
+
25
+ assert "once" do
26
+ values == ["once", nil, nil]
27
+ end
@@ -0,0 +1 @@
1
+ return "once"
@@ -0,0 +1 @@
1
+ "hello"
@@ -2,4 +2,4 @@ tag "example", "block" do
2
2
  visit "example.com"
3
3
  end
4
4
 
5
- export "block"
5
+ return "block"
@@ -1,3 +1,3 @@
1
1
  visit "example.com"
2
2
 
3
- export "notags"
3
+ return "notags"
@@ -2,5 +2,5 @@ tag "example", "simple"
2
2
 
3
3
  visit "example.com"
4
4
 
5
- export "simple"
5
+ return "simple"
6
6
  asdf # must not reach here
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superbara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matti Paksula
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-07 00:00:00.000000000 Z
11
+ date: 2018-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -150,6 +150,26 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: 2.0.1
153
+ - !ruby/object:Gem::Dependency
154
+ name: astrolabe
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.3'
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: 1.3.1
163
+ type: :runtime
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - "~>"
168
+ - !ruby/object:Gem::Version
169
+ version: '1.3'
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 1.3.1
153
173
  - !ruby/object:Gem::Dependency
154
174
  name: bundler
155
175
  requirement: !ruby/object:Gem::Requirement
@@ -327,8 +347,12 @@ files:
327
347
  - lib/superbara/cli.rb
328
348
  - lib/superbara/config.rb
329
349
  - lib/superbara/context.rb
350
+ - lib/superbara/context/base.rb
351
+ - lib/superbara/context/eval.rb
352
+ - lib/superbara/context/run.rb
353
+ - lib/superbara/context/shell.rb
354
+ - lib/superbara/context/start.rb
330
355
  - lib/superbara/dsl.rb
331
- - lib/superbara/errors/export_stops_error.rb
332
356
  - lib/superbara/errors/not_desired_tag_error.rb
333
357
  - lib/superbara/helpers.rb
334
358
  - lib/superbara/rspec.rb
@@ -352,9 +376,12 @@ files:
352
376
  - tests/features/type.rb
353
377
  - tests/features/wait.rb
354
378
  - tests/minimal/main.rb
379
+ - tests/minimal/minimal.rb
355
380
  - tests/run/has_instance_variables.rb
356
381
  - tests/run/has_no_instance_variables.rb
357
382
  - tests/run/main.rb
383
+ - tests/run/once.rb
384
+ - tests/run/value.rb
358
385
  - tests/tags/block.rb
359
386
  - tests/tags/fails.rb
360
387
  - tests/tags/main.rb
@@ -1,6 +0,0 @@
1
- module Superbara
2
- module Errors
3
- class ExportStopsError < StandardError
4
- end
5
- end
6
- end