seeing_is_believing 0.0.20 → 0.0.21

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
  SHA1:
3
- metadata.gz: c9ba8a14985e629d8a7aa7f9f850bbbe9b720563
4
- data.tar.gz: 562f431d621620445ab1387c8a20f781f0cfb26c
3
+ metadata.gz: b04673605b79a81c7e47cd26c98a9b10fba50193
4
+ data.tar.gz: 3e98d95b8e19b3aca8087584218f21bfe7492e68
5
5
  SHA512:
6
- metadata.gz: b1c475f28d6b6125acdcd00c42393a623d72f3a89fa07b31619b484fa18e427bbdce098386e23ab3d4add181be07ed513aa5b4caeb41e48ff002e4f130520cb6
7
- data.tar.gz: 61fd93446e41d472e1d4afd745e7d5bd981af84c7bf139154fec8dfcf5416330374f87e91759be6f21c64f369d60c0628f1f055e359cf7377167d99cc7e3a921
6
+ metadata.gz: 12d197241dabb6a700cfd2b241d2c88a1713d0ee2dc3ae3de359ea8364fdb9718758784ac5e7ca25a92137c23c14a486c440b9e5ec9fabda8899b0ce992ae733
7
+ data.tar.gz: 0da562f2291215aea0710cd1bd99575041d6de741c11cfdca692b2392645669e06d96e6441301cf216474c81f489896810758024919ff686879c80078140bbf3
data/Readme.md CHANGED
@@ -130,10 +130,15 @@ Known Issues
130
130
 
131
131
  * `BEGIN/END` breaks things and I probably won't take the time to fix it, becuase it's nontrivial and its really meant for command-line scripts, but there is currently a cuke for it
132
132
  * Heredocs aren't recorded. It might actually be possible if the ExpressionList were to get smarter
133
- * Return statements and other control-flow changing keywords (next/break/redo/retry) are dealt with poorly, causing some situations where you could capture and display a value to not capture
134
133
  * errors come out really shitty if you're calling them from another program like TextMate, would be better to put a line in that shows where the error is.
135
- * Add a time limit to auto-kill it if it gets stuck or something (e.g. stack overflow is painful to wait for)
136
- * Doesn't handle # ~> -:5: stack level too deep (SystemStackError) gracefully
134
+ * "1\\\n.even?" just fucks everything
135
+
136
+ Todo
137
+ ====
138
+ * Don't blow up on "a\\\n.b"
139
+ * Record results with "a\n.b.\nc"
140
+ * Record results with "a + \n b"
141
+ * Refactor ExpressionList/SeeingIsBelieving to store lines in an array instead of as a string, so everyone doesn't magically need to know when to chomp
137
142
 
138
143
  License
139
144
  =======
@@ -42,6 +42,7 @@ Feature: Running the binary successfully
42
42
  # method invocation that occurs entirely on the next line
43
43
  [*1..10]
44
44
  .select(&:even?)
45
+ .map { |n| n * 2 }
45
46
 
46
47
  # mutliple levels of nesting
47
48
  class User
@@ -93,8 +94,9 @@ Feature: Running the binary successfully
93
94
  HERE
94
95
 
95
96
  # method invocation that occurs entirely on the next line
96
- [*1..10]
97
- .select(&:even?) # => [2, 4, 6, 8, 10]
97
+ [*1..10] # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
98
+ .select(&:even?) # => [2, 4, 6, 8, 10]
99
+ .map { |n| n * 2 } # => [4, 8, 12, 16, 20]
98
100
 
99
101
  # mutliple levels of nesting
100
102
  class User
@@ -254,11 +256,3 @@ Feature: Running the binary successfully
254
256
  Then stderr is empty
255
257
  And the exit status is 0
256
258
  And stdout is "1 + 1 # => 2"
257
-
258
- Scenario: Regression: A program containing a single comment
259
- Given I have the stdin content "# single comment"
260
- When I run "seeing_is_believing"
261
- Then stderr is empty
262
- And the exit status is 0
263
- And stdout is "# single comment"
264
-
@@ -3,6 +3,13 @@ Feature:
3
3
  As the dev who wrote SeeingIsBelieving
4
4
  I want to have tests on those bugs that I found and could not have predicted
5
5
 
6
+ Scenario: A program containing a single comment
7
+ Given I have the stdin content "# single comment"
8
+ When I run "seeing_is_believing"
9
+ Then stderr is empty
10
+ And the exit status is 0
11
+ And stdout is "# single comment"
12
+
6
13
  Scenario: No method error just fucks everything
7
14
  Given the file "no_method_error.rb":
8
15
  """
@@ -133,7 +133,7 @@ class SeeingIsBelieving
133
133
  end
134
134
 
135
135
  def notify_user_of_error
136
- error_stream.puts "It blew up. Not too surprising given that seeing_is_believing is pretty rough around the edges, but still this shouldn't happen."
136
+ error_stream.puts "It blew up because SeeingIsBelieving isn't good enough >.<"
137
137
  error_stream.puts "Please log an issue at: https://github.com/JoshCheek/seeing_is_believing/issues"
138
138
  error_stream.puts
139
139
  error_stream.puts "Program: #{program.inspect}"
@@ -29,7 +29,13 @@ class SeeingIsBelieving
29
29
  pending_expression = generate
30
30
  debug { "GENERATED: #{pending_expression.expression.inspect}, ADDING IT TO #{inspected_expressions expressions}" }
31
31
  expressions << pending_expression
32
- expression = reduce expressions, offset unless next_line_modifies_current?
32
+
33
+ expression = reduce expressions, offset
34
+
35
+ if next_line_modifies_current?
36
+ expressions << PendingExpression.new(expression.chomp, []) # chomp b/c on_complete callback prob adds newline, but we do to when joining
37
+ end
38
+
33
39
  offset += 1
34
40
  end until expressions.empty?
35
41
  return expression, offset
@@ -1,3 +1,3 @@
1
1
  class SeeingIsBelieving
2
- VERSION = '0.0.20'
2
+ VERSION = '0.0.21'
3
3
  end
@@ -181,19 +181,38 @@ describe SeeingIsBelieving::ExpressionList do
181
181
  example "example: method invocations on next line" do
182
182
  # example 1: consume the expression with lines after
183
183
  list = list_for ['a', '.b', ' .c', 'irrelevant'] do |*expressions, offset|
184
- offset.should == 2
185
- expressions.flatten.join('').should == 'a.b .c'
186
- 'a.b.c'
184
+ flat_expressions = expressions.flatten.join('')
185
+ case offset
186
+ when 0
187
+ flat_expressions.should == 'a'
188
+ 'A'
189
+ when 1
190
+ flat_expressions.should == 'A.b'
191
+ 'A.B'
192
+ when 2
193
+ flat_expressions.should == 'A.B .c'
194
+ 'A.B.C'
195
+ else
196
+ raise "O.o"
197
+ end
187
198
  end
188
- list.call.should == ['a.b.c', 3]
199
+ list.call.should == ['A.B.C', 3]
189
200
 
190
201
  # example 2: consume the expression with no lines after
191
202
  list = list_for ['a', '.b'] do |*expressions, offset|
192
- offset.should == 1
193
- expressions.flatten.join('').should == 'a.b'
194
- 'result'
203
+ flat_expressions = expressions.flatten.join('')
204
+ case offset
205
+ when 0
206
+ flat_expressions.should == 'a'
207
+ 'A'
208
+ when 1
209
+ flat_expressions.should == 'A.b'
210
+ 'A.B'
211
+ else
212
+ raise "O.o"
213
+ end
195
214
  end
196
- list.call.should == ['result', 2]
215
+ list.call.should == ['A.B', 2]
197
216
  end
198
217
 
199
218
  example "example: smoke test debug option" do
@@ -269,8 +269,8 @@ describe SeeingIsBelieving do
269
269
  end
270
270
 
271
271
  it 'can deal with methods that are invoked entirely on the next line' do
272
- values_for("1\n.even?").should == [[], ['false']]
273
- values_for("1\n.even?\n__END__").should == [[], ['false']]
272
+ values_for("1\n.even?").should == [['1'], ['false']]
273
+ values_for("1\n.even?\n__END__").should == [['1'], ['false']]
274
274
  end
275
275
 
276
276
  it 'does not record leading comments' do
@@ -284,4 +284,23 @@ describe SeeingIsBelieving do
284
284
  expect { invoke "sleep 0.2", timeout: 0.1 }.to raise_error Timeout::Error
285
285
  end
286
286
 
287
+ it 'can record the middle of a chain of calls', t:true do
288
+ values_for("[*1..5]
289
+ .select(&:even?)
290
+ .map { |n| n * 3 }").should == [['[1, 2, 3, 4, 5]'],
291
+ ['[2, 4]'],
292
+ ['[6, 12]']]
293
+ # values_for("[*1..5]
294
+ # .select(&:even)
295
+ # .map { |n| n * 2 }.
296
+ # map { |n| n / 2 }\
297
+ # .map { |n| n * 3 }").should == [['[1, 2, 3, 4, 5]'],
298
+ # ['[2, 4]'],
299
+ # ['[4, 8]'],
300
+ # ['[2, 4]'],
301
+ # ['[6, 12]']]
302
+ # values_for("1 +\n2").should == [['1'], ['3']]
303
+ # values_for("1\\\n+ 2").should == [['1'], ['3']]
304
+ end
305
+
287
306
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seeing_is_believing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.20
4
+ version: 0.0.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Cheek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-04-26 00:00:00.000000000 Z
11
+ date: 2013-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake