rundoc 1.0.0 → 1.1.3

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/check_changelog.yml +13 -0
  3. data/.gitignore +7 -0
  4. data/CHANGELOG.md +27 -0
  5. data/Dockerfile +24 -0
  6. data/README.md +221 -100
  7. data/bin/rundoc +4 -68
  8. data/lib/rundoc.rb +1 -0
  9. data/lib/rundoc/cli.rb +84 -0
  10. data/lib/rundoc/code_command.rb +3 -2
  11. data/lib/rundoc/code_command/background/process_spawn.rb +30 -4
  12. data/lib/rundoc/code_command/background/start.rb +2 -0
  13. data/lib/rundoc/code_command/bash.rb +3 -2
  14. data/lib/rundoc/code_command/bash/cd.rb +20 -2
  15. data/lib/rundoc/code_command/no_such_command.rb +4 -0
  16. data/lib/rundoc/code_command/pipe.rb +17 -4
  17. data/lib/rundoc/code_command/rundoc/depend_on.rb +37 -0
  18. data/lib/rundoc/code_command/rundoc/require.rb +41 -0
  19. data/lib/rundoc/code_command/rundoc_command.rb +4 -1
  20. data/lib/rundoc/code_command/website.rb +7 -0
  21. data/lib/rundoc/code_command/website/driver.rb +111 -0
  22. data/lib/rundoc/code_command/website/navigate.rb +29 -0
  23. data/lib/rundoc/code_command/website/screenshot.rb +28 -0
  24. data/lib/rundoc/code_command/website/visit.rb +47 -0
  25. data/lib/rundoc/code_section.rb +13 -4
  26. data/lib/rundoc/parser.rb +4 -3
  27. data/lib/rundoc/peg_parser.rb +1 -1
  28. data/lib/rundoc/version.rb +1 -1
  29. data/rundoc.gemspec +7 -2
  30. data/test/fixtures/build_logs/rundoc.md +56 -0
  31. data/test/fixtures/depend_on/dependency/rundoc.md +5 -0
  32. data/test/fixtures/depend_on/main/rundoc.md +10 -0
  33. data/test/fixtures/java/rundoc.md +9 -0
  34. data/test/fixtures/rails_4/rundoc.md +8 -5
  35. data/test/fixtures/rails_5/rundoc.md +17 -7
  36. data/test/fixtures/{rails_5_beta → rails_6}/rundoc.md +97 -88
  37. data/test/fixtures/require/dependency/rundoc.md +5 -0
  38. data/test/fixtures/require/main/rundoc.md +10 -0
  39. data/test/fixtures/screenshot/rundoc.md +10 -0
  40. data/test/rundoc/code_commands/background_test.rb +26 -0
  41. data/test/rundoc/code_commands/bash_test.rb +7 -0
  42. data/test/rundoc/code_commands/pipe_test.rb +11 -1
  43. data/test/rundoc/parser_test.rb +0 -1
  44. data/test/rundoc/peg_parser_test.rb +43 -0
  45. metadata +90 -11
@@ -0,0 +1,5 @@
1
+ ```
2
+ :::>> $ mkdir foo
3
+ :::>> $ cd foo
4
+ :::>> $ echo "hello" >> hello.txt
5
+ ```
@@ -0,0 +1,10 @@
1
+ # Hello
2
+
3
+ ```
4
+ :::-- rundoc.require "../dependency/rundoc.md"
5
+ ```
6
+
7
+ ```
8
+ :::>> $ ruby -e "raise 'nope' unless File.read('hello.txt').chomp == 'hello'"
9
+ ```
10
+
@@ -0,0 +1,10 @@
1
+ # Hello
2
+
3
+ ```
4
+ :::>> website.visit(name: "google", url: "https://www.google.com")
5
+ # session.visit("https://www.codetriage.com")
6
+ :::>> website.screenshot(name: "google", upload: "s3")
7
+ ```
8
+
9
+
10
+ ## There
@@ -1,6 +1,32 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class BackgroundTest < Minitest::Test
4
+ def test_process_spawn_gc
5
+ Dir.mktmpdir do |dir|
6
+ Dir.chdir(dir) do
7
+ file = "foo.txt"
8
+ `echo 'foo' >> #{file}`
9
+
10
+ background_start = Rundoc::CodeCommand::Background::Start.new("tail -f #{file}",
11
+ name: "tail2",
12
+ wait: "f"
13
+ )
14
+
15
+ GC.start
16
+
17
+ output = background_start.call
18
+
19
+ assert_match("foo", output)
20
+ assert_equal(true, background_start.alive?)
21
+
22
+ background_stop = Rundoc::CodeCommand::Background::Stop.new(name: "tail2")
23
+ background_stop.call
24
+
25
+ assert_equal(false, background_start.alive?)
26
+ end
27
+ end
28
+ end
29
+
4
30
  def test_background_start
5
31
  Dir.mktmpdir do |dir|
6
32
  Dir.chdir(dir) do
@@ -11,6 +11,13 @@ class BashTest < Minitest::Test
11
11
  Dir.chdir(original_dir.strip)
12
12
  end
13
13
 
14
+ def test_bash_stderr_with_or_is_capture
15
+
16
+ command = "1>&2 echo 'msg to STDERR 1' || 1>&2 echo 'msg to STDERR 2'"
17
+ bash = Rundoc::CodeCommand::Bash.new(command)
18
+ assert_equal "$ #{command}", bash.to_md
19
+ assert_equal "msg to STDERR 1\n", bash.call
20
+ end
14
21
 
15
22
  def test_bash_shells_and_shows_correctly
16
23
  ["pwd", "ls"].each do |command|
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class PipeTest < Minitest::Test
4
-
5
4
  def test_pipe
6
5
  pipe_cmd = "tail -n 2"
7
6
  cmd = "ls"
@@ -12,4 +11,15 @@ class PipeTest < Minitest::Test
12
11
  expected = `#{cmd} | #{pipe_cmd}`
13
12
  assert_equal expected, actual
14
13
  end
14
+
15
+ def test_moar_pipe_with_dollar
16
+ pipe_cmd = "tail -n 2"
17
+ cmd = "ls"
18
+ out = `#{cmd}`
19
+ pipe = Rundoc::CodeCommand::Pipe.new("$ #{pipe_cmd}")
20
+ actual = pipe.call(commands: [{command: cmd, output: out}])
21
+
22
+ expected = `#{cmd} | #{pipe_cmd}`
23
+ assert_equal expected, actual
24
+ end
15
25
  end
@@ -83,7 +83,6 @@ puts b
83
83
  ```
84
84
  RUBY
85
85
 
86
-
87
86
  Dir.mktmpdir do |dir|
88
87
  Dir.chdir(dir) do
89
88
 
@@ -116,6 +116,16 @@ class PegParserTest < Minitest::Test
116
116
  assert_equal false, actual.result?
117
117
  end
118
118
 
119
+ def test_blerg_method_call
120
+ input = %Q{$ cat foo.rb}
121
+ parser = Rundoc::PegParser.new.method_call
122
+ tree = parser.parse_with_debug(input)
123
+
124
+ actual = @transformer.apply(tree)
125
+ assert_equal :"$", actual.keyword
126
+ assert_equal("cat foo.rb", actual.original_args)
127
+ end
128
+
119
129
  def test_command
120
130
  input = %Q{:::>> $ cat foo.rb\n}
121
131
  parser = Rundoc::PegParser.new.command
@@ -261,6 +271,39 @@ class PegParserTest < Minitest::Test
261
271
  assert_equal("email = ENV['HEROKU_EMAIL'] || `heroku auth:whoami`", actual.original_args)
262
272
  end
263
273
 
274
+ def test_rundoc_sub_commands_no_quotes
275
+ input = String.new
276
+ input << %Q{:::-- rundoc.depend_on ../foo/bar.md\n}
277
+
278
+ parser = Rundoc::PegParser.new.command_with_stdin
279
+ tree = parser.parse_with_debug(input)
280
+
281
+ actual = @transformer.apply(tree)
282
+ assert_equal :"rundoc.depend_on", actual.keyword
283
+ end
284
+
285
+ def test_seattle_style_method_call
286
+ input = String.new
287
+ input << %Q{rundoc.depend_on '../foo/bar.md'}
288
+ parser = Rundoc::PegParser.new.method_call
289
+ tree = parser.parse_with_debug(input)
290
+
291
+ actual = @transformer.apply(tree)
292
+
293
+ assert_equal :"rundoc.depend_on", actual.keyword
294
+ end
295
+
296
+ def test_rundoc_seattle_sub_command
297
+ input = String.new
298
+ input << %Q{:::>> rundoc.depend_on '../foo/bar.md'\n}
299
+
300
+ parser = Rundoc::PegParser.new.command
301
+ tree = parser.parse_with_debug(input)
302
+
303
+ actual = @transformer.apply(tree)
304
+
305
+ assert_equal :"rundoc.depend_on", actual.keyword
306
+ end
264
307
 
265
308
  def test_positional_args
266
309
  input = +""
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rundoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Schneeman
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-05 00:00:00.000000000 Z
11
+ date: 2020-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -52,6 +52,62 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: capybara
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: selenium-webdriver
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3'
83
+ - !ruby/object:Gem::Dependency
84
+ name: aws-sdk-s3
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: dotenv
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
55
111
  - !ruby/object:Gem::Dependency
56
112
  name: rake
57
113
  requirement: !ruby/object:Gem::Requirement
@@ -94,7 +150,7 @@ dependencies:
94
150
  - - ">="
95
151
  - !ruby/object:Gem::Version
96
152
  version: '0'
97
- description: runDOC turns docs to runable code
153
+ description: RunDOC turns docs to runable code
98
154
  email:
99
155
  - richard.schneeman+rubygems@gmail.com
100
156
  executables:
@@ -102,14 +158,17 @@ executables:
102
158
  extensions: []
103
159
  extra_rdoc_files: []
104
160
  files:
161
+ - ".github/workflows/check_changelog.yml"
105
162
  - ".gitignore"
106
163
  - ".travis.yml"
107
164
  - CHANGELOG.md
165
+ - Dockerfile
108
166
  - Gemfile
109
167
  - README.md
110
168
  - Rakefile
111
169
  - bin/rundoc
112
170
  - lib/rundoc.rb
171
+ - lib/rundoc/cli.rb
113
172
  - lib/rundoc/code_command.rb
114
173
  - lib/rundoc/code_command/background.rb
115
174
  - lib/rundoc/code_command/background/log/clear.rb
@@ -126,17 +185,31 @@ files:
126
185
  - lib/rundoc/code_command/pipe.rb
127
186
  - lib/rundoc/code_command/raw.rb
128
187
  - lib/rundoc/code_command/repl.rb
188
+ - lib/rundoc/code_command/rundoc/depend_on.rb
189
+ - lib/rundoc/code_command/rundoc/require.rb
129
190
  - lib/rundoc/code_command/rundoc_command.rb
191
+ - lib/rundoc/code_command/website.rb
192
+ - lib/rundoc/code_command/website/driver.rb
193
+ - lib/rundoc/code_command/website/navigate.rb
194
+ - lib/rundoc/code_command/website/screenshot.rb
195
+ - lib/rundoc/code_command/website/visit.rb
130
196
  - lib/rundoc/code_command/write.rb
131
197
  - lib/rundoc/code_section.rb
132
198
  - lib/rundoc/parser.rb
133
199
  - lib/rundoc/peg_parser.rb
134
200
  - lib/rundoc/version.rb
135
201
  - rundoc.gemspec
202
+ - test/fixtures/build_logs/rundoc.md
203
+ - test/fixtures/depend_on/dependency/rundoc.md
204
+ - test/fixtures/depend_on/main/rundoc.md
205
+ - test/fixtures/java/rundoc.md
136
206
  - test/fixtures/play/source.md
137
207
  - test/fixtures/rails_4/rundoc.md
138
208
  - test/fixtures/rails_5/rundoc.md
139
- - test/fixtures/rails_5_beta/rundoc.md
209
+ - test/fixtures/rails_6/rundoc.md
210
+ - test/fixtures/require/dependency/rundoc.md
211
+ - test/fixtures/require/main/rundoc.md
212
+ - test/fixtures/screenshot/rundoc.md
140
213
  - test/rundoc/code_commands/append_file_test.rb
141
214
  - test/rundoc/code_commands/background_test.rb
142
215
  - test/rundoc/code_commands/bash_test.rb
@@ -152,7 +225,7 @@ homepage: https://github.com/schneems/rundoc
152
225
  licenses:
153
226
  - MIT
154
227
  metadata: {}
155
- post_install_message:
228
+ post_install_message:
156
229
  rdoc_options: []
157
230
  require_paths:
158
231
  - lib
@@ -167,16 +240,22 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
240
  - !ruby/object:Gem::Version
168
241
  version: '0'
169
242
  requirements: []
170
- rubyforge_project:
171
- rubygems_version: 2.7.6
172
- signing_key:
243
+ rubygems_version: 3.0.3
244
+ signing_key:
173
245
  specification_version: 4
174
- summary: runDOC generates runable code from docs
246
+ summary: RunDOC generates runable code from docs
175
247
  test_files:
248
+ - test/fixtures/build_logs/rundoc.md
249
+ - test/fixtures/depend_on/dependency/rundoc.md
250
+ - test/fixtures/depend_on/main/rundoc.md
251
+ - test/fixtures/java/rundoc.md
176
252
  - test/fixtures/play/source.md
177
253
  - test/fixtures/rails_4/rundoc.md
178
254
  - test/fixtures/rails_5/rundoc.md
179
- - test/fixtures/rails_5_beta/rundoc.md
255
+ - test/fixtures/rails_6/rundoc.md
256
+ - test/fixtures/require/dependency/rundoc.md
257
+ - test/fixtures/require/main/rundoc.md
258
+ - test/fixtures/screenshot/rundoc.md
180
259
  - test/rundoc/code_commands/append_file_test.rb
181
260
  - test/rundoc/code_commands/background_test.rb
182
261
  - test/rundoc/code_commands/bash_test.rb