seeing_is_believing 0.0.19 → 0.0.20

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
  SHA1:
3
- metadata.gz: c10c0902071eb7d3040e445ffe14eb65b4add43d
4
- data.tar.gz: db2421790aa48eb53f3f4e79168392835e1a52c4
3
+ metadata.gz: c9ba8a14985e629d8a7aa7f9f850bbbe9b720563
4
+ data.tar.gz: 562f431d621620445ab1387c8a20f781f0cfb26c
5
5
  SHA512:
6
- metadata.gz: 2fe36a0cfefd4b0c7f378094e9ffc8f3f5324a1ab9c370c47beee66abf45811e2b6af9a919c9d84abb3470e6629cfb866372745ff8b70cbeb1aacdddaac0fae3
7
- data.tar.gz: 36ff482a6a34c232276633d8193665f20ec3fdbe29310d7d6cee9a5195c4e08781d450e4e79bf4575daa6e41d88514aa823130ceb4ed2482801b2dd7daea285e
6
+ metadata.gz: b1c475f28d6b6125acdcd00c42393a623d72f3a89fa07b31619b484fa18e427bbdce098386e23ab3d4add181be07ed513aa5b4caeb41e48ff002e4f130520cb6
7
+ data.tar.gz: 61fd93446e41d472e1d4afd745e7d5bd981af84c7bf139154fec8dfcf5416330374f87e91759be6f21c64f369d60c0628f1f055e359cf7377167d99cc7e3a921
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  proving_grounds/*
2
2
  *.gem
3
+ Gemfile.lock
@@ -5,7 +5,6 @@ Feature: Running the binary unsuccessfully
5
5
 
6
6
  # show that it displalys next to the first place in the file
7
7
  # and should maybe print the stacktrace at the bottom
8
- @wip
9
8
  Scenario: Raising exceptions
10
9
  Given the file "raises_exception.rb":
11
10
  """
@@ -30,7 +29,7 @@ Feature: Running the binary unsuccessfully
30
29
  """
31
30
  def first_defined
32
31
  second_defined
33
- end # => nil
32
+ end # => nil
34
33
 
35
34
  def second_defined
36
35
  require_relative 'raises_exception' # ~> RuntimeError: ZOMG!
@@ -46,26 +45,26 @@ Feature: Running the binary unsuccessfully
46
45
  """
47
46
  When I run "seeing_is_believing invalid_syntax.rb"
48
47
  Then stderr includes "1: unterminated string meets end of file"
49
- And the exit status is 1
48
+ And the exit status is 2
50
49
  And stdout is empty
51
50
 
52
51
  Scenario: Passing a nonexistent file
53
52
  When I run "seeing_is_believing this_file_does_not_exist.rb"
54
53
  Then stderr is "this_file_does_not_exist.rb does not exist!"
55
- And the exit status is 1
54
+ And the exit status is 2
56
55
  And stdout is empty
57
56
 
58
57
  Scenario: Passing unknown options
59
58
  Given the file "some_file" "1"
60
59
  When I run "seeing_is_believing --unknown-option"
61
60
  Then stderr is 'Unknown option: "--unknown-option"'
62
- And the exit status is 1
61
+ And the exit status is 2
63
62
  And stdout is empty
64
63
 
65
64
  Scenario: Passing an unknown option with a value but forgetting the filename
66
65
  When I run "seeing_is_believing --unknown-option some-value"
67
66
  Then stderr is 'Unknown option: "--unknown-option"'
68
- And the exit status is 1
67
+ And the exit status is 2
69
68
  And stdout is empty
70
69
 
71
70
  Scenario: Stack overflow
@@ -64,16 +64,16 @@ Feature: Running the binary successfully
64
64
  """
65
65
  # iteration
66
66
  5.times do |i|
67
- i * 2 # => 0, 2, 4, 6, 8
68
- end # => 5
67
+ i * 2 # => 0, 2, 4, 6, 8
68
+ end # => 5
69
69
 
70
70
  # method and invocations
71
71
  def meth(n)
72
- n # => "12", "34"
73
- end # => nil
72
+ n # => "12", "34"
73
+ end # => nil
74
74
 
75
- meth "12" # => "12"
76
- meth "34" # => "34"
75
+ meth "12" # => "12"
76
+ meth "34" # => "34"
77
77
 
78
78
  # block style comments
79
79
  =begin
@@ -83,9 +83,9 @@ Feature: Running the binary successfully
83
83
 
84
84
  # multilinezzz
85
85
  "a
86
- b" # => "a\n b"
86
+ b" # => "a\n b"
87
87
  /a
88
- b/x # => /a\n b/x
88
+ b/x # => /a\n b/x
89
89
 
90
90
  # don't record heredocs b/c they're just too fucking different
91
91
  <<HERE
@@ -94,7 +94,7 @@ Feature: Running the binary successfully
94
94
 
95
95
  # method invocation that occurs entirely on the next line
96
96
  [*1..10]
97
- .select(&:even?) # => [2, 4, 6, 8, 10]
97
+ .select(&:even?) # => [2, 4, 6, 8, 10]
98
98
 
99
99
  # mutliple levels of nesting
100
100
  class User
@@ -103,12 +103,12 @@ Feature: Running the binary successfully
103
103
  end # => nil
104
104
 
105
105
  def name
106
- @name # => "Josh", "Rick"
107
- end # => nil
108
- end # => nil
106
+ @name # => "Josh", "Rick"
107
+ end # => nil
108
+ end # => nil
109
109
 
110
- User.new("Josh").name # => "Josh"
111
- User.new("Rick").name # => "Rick"
110
+ User.new("Josh").name # => "Josh"
111
+ User.new("Rick").name # => "Rick"
112
112
  """
113
113
 
114
114
  Scenario: Passing previous output back into input
@@ -9,7 +9,7 @@ Feature: Using flags
9
9
  2
10
10
  3
11
11
  """
12
- When I run "seeing_is_believing --start-line 2 start_line.rb"
12
+ When I run "seeing_is_believing -s file --start-line 2 start_line.rb"
13
13
  Then stderr is empty
14
14
  And the exit status is 0
15
15
  And stdout is:
@@ -18,6 +18,20 @@ Feature: Using flags
18
18
  2 # => 2
19
19
  3 # => 3
20
20
  """
21
+ When I run "seeing_is_believing -s chunk --start-line 2 start_line.rb"
22
+ Then stdout is:
23
+ """
24
+ 1 + 1
25
+ 2 # => 2
26
+ 3 # => 3
27
+ """
28
+ When I run "seeing_is_believing -s line --start-line 2 start_line.rb"
29
+ Then stdout is:
30
+ """
31
+ 1 + 1
32
+ 2 # => 2
33
+ 3 # => 3
34
+ """
21
35
 
22
36
  Scenario: --end-line
23
37
  Given the file "end_line.rb":
@@ -26,7 +40,7 @@ Feature: Using flags
26
40
  2
27
41
  3 + 3
28
42
  """
29
- When I run "seeing_is_believing --end-line 2 end_line.rb"
43
+ When I run "seeing_is_believing -s file --end-line 2 end_line.rb"
30
44
  Then stderr is empty
31
45
  And the exit status is 0
32
46
  And stdout is:
@@ -35,6 +49,20 @@ Feature: Using flags
35
49
  2 # => 2
36
50
  3 + 3
37
51
  """
52
+ When I run "seeing_is_believing -s chunk --end-line 2 end_line.rb"
53
+ Then stdout is:
54
+ """
55
+ 1 # => 1
56
+ 2 # => 2
57
+ 3 + 3
58
+ """
59
+ When I run "seeing_is_believing -s line --end-line 2 end_line.rb"
60
+ Then stdout is:
61
+ """
62
+ 1 # => 1
63
+ 2 # => 2
64
+ 3 + 3
65
+ """
38
66
 
39
67
  Scenario: --start-line and --end-line
40
68
  Given the file "start_and_end_line.rb":
@@ -44,7 +72,7 @@ Feature: Using flags
44
72
  3
45
73
  4 + 4
46
74
  """
47
- When I run "seeing_is_believing --start-line 2 --end-line 3 start_and_end_line.rb"
75
+ When I run "seeing_is_believing -s file --start-line 2 --end-line 3 start_and_end_line.rb"
48
76
  Then stderr is empty
49
77
  And the exit status is 0
50
78
  And stdout is:
@@ -54,6 +82,22 @@ Feature: Using flags
54
82
  3 # => 3
55
83
  4 + 4
56
84
  """
85
+ When I run "seeing_is_believing -s chunk --start-line 2 --end-line 3 start_and_end_line.rb"
86
+ Then stdout is:
87
+ """
88
+ 1 + 1
89
+ 2 # => 2
90
+ 3 # => 3
91
+ 4 + 4
92
+ """
93
+ When I run "seeing_is_believing -s line --start-line 2 --end-line 3 start_and_end_line.rb"
94
+ Then stdout is:
95
+ """
96
+ 1 + 1
97
+ 2 # => 2
98
+ 3 # => 3
99
+ 4 + 4
100
+ """
57
101
 
58
102
  Scenario: --result-length sets the length of the portion including and after the # =>
59
103
  Given the file "result_lengths.rb":
@@ -68,7 +112,7 @@ Feature: Using flags
68
112
 
69
113
  raise "a"*100
70
114
  """
71
- When I run "seeing_is_believing --result-length 10 result_lengths.rb"
115
+ When I run "seeing_is_believing -s file --result-length 10 result_lengths.rb"
72
116
  Then stderr is empty
73
117
  And stdout is:
74
118
  """
@@ -98,7 +142,7 @@ Feature: Using flags
98
142
 
99
143
  raise "a"*100
100
144
  """
101
- When I run "seeing_is_believing --line-length 32 line_lengths.rb"
145
+ When I run "seeing_is_believing -s file --line-length 32 line_lengths.rb"
102
146
  Then stderr is empty
103
147
  And stdout is:
104
148
  """
@@ -247,7 +291,7 @@ Feature: Using flags
247
291
  Given the file "example.rb" "sleep 1"
248
292
  When I run "seeing_is_believing --timeout 0.1 example.rb"
249
293
  Then stdout is empty
250
- And the exit status is 1
294
+ And the exit status is 2
251
295
  And stderr is "Timeout Error after 0.1 seconds!"
252
296
 
253
297
  Scenario: --timeout
@@ -6,6 +6,10 @@ require 'timeout'
6
6
 
7
7
  class SeeingIsBelieving
8
8
  class Binary
9
+ SUCCESS_STATUS = 0
10
+ DISPLAYABLE_ERROR_STATUS = 1 # e.g. there was an error, but the output is legit (we can display exceptions)
11
+ NONDISPLAYABLE_ERROR_STATUS = 2 # e.g. an error like incorrect invocation or syntax that can't be displayed in the input program
12
+
9
13
  attr_accessor :argv, :stdin, :stdout, :stderr, :timeout_error
10
14
 
11
15
  def initialize(argv, stdin, stdout, stderr)
@@ -16,14 +20,16 @@ class SeeingIsBelieving
16
20
  end
17
21
 
18
22
  def call
19
- @exitstatus ||= if flags_have_errors? then print_errors ; 1
20
- elsif should_print_help? then print_help ; 0
21
- elsif should_print_version? then print_version ; 0
22
- elsif has_filename? && file_dne? then print_file_dne ; 1
23
- elsif should_clean? then print_cleaned_program ; 0
24
- elsif invalid_syntax? then print_syntax_error ; 1
25
- elsif program_timedout? then print_timeout_error ; 1
26
- else print_program ; (results.has_exception? ? 1 : 0)
23
+ @exitstatus ||= if flags_have_errors? then print_errors ; NONDISPLAYABLE_ERROR_STATUS
24
+ elsif should_print_help? then print_help ; SUCCESS_STATUS
25
+ elsif should_print_version? then print_version ; SUCCESS_STATUS
26
+ elsif has_filename? && file_dne? then print_file_dne ; NONDISPLAYABLE_ERROR_STATUS
27
+ elsif should_clean? then print_cleaned_program ; SUCCESS_STATUS
28
+ elsif invalid_syntax? then print_syntax_error ; NONDISPLAYABLE_ERROR_STATUS
29
+ elsif program_timedout? then print_timeout_error ; NONDISPLAYABLE_ERROR_STATUS
30
+ else print_program ; (results.has_exception? ?
31
+ DISPLAYABLE_ERROR_STATUS :
32
+ SUCCESS_STATUS)
27
33
  end
28
34
  end
29
35
 
@@ -22,7 +22,9 @@ class SeeingIsBelieving
22
22
  .reject { |line, index| SyntaxAnalyzer.ends_in_comment? line }
23
23
  .slice_before { |line, index| line == '' }
24
24
  .map { |slice|
25
- max_chunk_length = 2 + slice.map { |line, index| line.length }.max
25
+ max_chunk_length = 2 + slice.select { |line, index| start_line <= index && index <= end_line }
26
+ .map { |line, index| line.length }
27
+ .max
26
28
  slice.map { |line, index| [index, max_chunk_length] }
27
29
  }
28
30
  .flatten(1)
@@ -77,7 +77,7 @@ class SeeingIsBelieving
77
77
  errors: [],
78
78
  require: [],
79
79
  load_path: [],
80
- alignment_strategy: AlignFile,
80
+ alignment_strategy: AlignChunk,
81
81
  }
82
82
  end
83
83
 
@@ -124,9 +124,9 @@ class SeeingIsBelieving
124
124
 
125
125
  def ArgParser.help_screen
126
126
  <<HELP_SCREEN
127
- Usage: #{$0} [options] [filename]
127
+ Usage: seeing_is_believing [options] [filename]
128
128
 
129
- #{$0} is a program and library that will evaluate a Ruby file and capture/display the results.
129
+ seeing_is_believing is a program and library that will evaluate a Ruby file and capture/display the results.
130
130
 
131
131
  If no filename is provided, the binary will read the program from standard input.
132
132
 
@@ -135,8 +135,8 @@ Usage: #{$0} [options] [filename]
135
135
  -d, --line-length n # max length of the entire line (only truncates results, not source lines)
136
136
  -D, --result-length n # max length of the portion after the "# => "
137
137
  -s, --alignment-strategy # select the alignment strategy:
138
- file (DEFAULT) => the entire file is at the same alignment
139
- chunk => each chunk of code is at the same alignment
138
+ chunk (DEFAULT) => each chunk of code is at the same alignment
139
+ file => the entire file is at the same alignment
140
140
  line => each line is at its own alignment
141
141
  -t, --timeout n # timeout limit in seconds when evaluating source file (ex. -t 0.3 or -t 3)
142
142
  -I, --load-path dir # a dir that should be added to the $LOAD_PATH
@@ -1,3 +1,3 @@
1
1
  class SeeingIsBelieving
2
- VERSION = '0.0.19'
2
+ VERSION = '0.0.20'
3
3
  end
@@ -290,8 +290,8 @@ describe SeeingIsBelieving::Binary::ArgParser do
290
290
  AlignChunk = SeeingIsBelieving::Binary::AlignChunk
291
291
 
292
292
  # maybe change the default?
293
- it 'defaults to AlignFile' do
294
- parse([])[:alignment_strategy].should == AlignFile
293
+ it 'defaults to AlignChunk' do
294
+ parse([])[:alignment_strategy].should == AlignChunk
295
295
  end
296
296
 
297
297
  specify '-s and --alignment-strategy sets the alignment strategy' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seeing_is_believing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Cheek