superbara 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
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