rundoc 3.0.1 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/rundoc/cli.rb +3 -1
- data/lib/rundoc/code_section.rb +16 -0
- data/lib/rundoc/version.rb +1 -1
- data/test/integration/failure_test.rb +46 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87495a9fcbdf3fa9a146b633d84f62294bd400b32f806d975db0b372ce6c4f31
|
4
|
+
data.tar.gz: c50e2b6dbcbb2e313753d1341a17b56208118b10bd20462768348cae56cb3dda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e34467cf37d802daf82bb6fd8e81a4ecb4af426bc1645151e7d420dec131e4493b4e5f8ba78de3393bdc84a4de97dbc908434f4e1f06a895fc9002ca72611a5
|
7
|
+
data.tar.gz: 6971fa4915f79d81d1b6e6dd05f10e45e116f7388ae4c5ffd8b8ad1e9dc28be9c7882b11c6f315934b210281508fc17edb722969497fd951780befcb1d66eef2
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
## HEAD
|
2
2
|
|
3
|
+
## 3.0.2
|
4
|
+
|
5
|
+
- Fix: Partial output of the document is now written to disk in a `RUNDOC_FAILED.md` file (https://github.com/zombocom/rundoc/pull/69)
|
6
|
+
|
3
7
|
## 3.0.1
|
4
8
|
|
5
9
|
- Fix: Save in-progress work in the "failure" directory when the rundoc command is interrupted via a signal such as `SIGTERM` (https://github.com/zombocom/rundoc/pull/67)
|
data/lib/rundoc/cli.rb
CHANGED
@@ -152,7 +152,7 @@ module Rundoc
|
|
152
152
|
output = begin
|
153
153
|
parser.to_md
|
154
154
|
rescue StandardError, SignalException => e
|
155
|
-
|
155
|
+
io.puts "Received exception: #{e.inspect}, cleaning up before re-raise"
|
156
156
|
on_fail
|
157
157
|
raise e
|
158
158
|
end
|
@@ -190,6 +190,8 @@ module Rundoc
|
|
190
190
|
from: execution_context.output_dir,
|
191
191
|
to: on_failure_dir
|
192
192
|
)
|
193
|
+
|
194
|
+
on_failure_dir.join("RUNDOC_FAILED.md").write(Rundoc::CodeSection.partial_result_to_doc)
|
193
195
|
end
|
194
196
|
|
195
197
|
private def on_success(output)
|
data/lib/rundoc/code_section.rb
CHANGED
@@ -30,6 +30,9 @@ module Rundoc
|
|
30
30
|
AUTOGEN_WARNING = "\n<!-- STOP. This document is autogenerated. Do not manually modify. See the top of the doc for more details. -->"
|
31
31
|
attr_accessor :original, :fence, :lang, :code, :commands, :keyword
|
32
32
|
|
33
|
+
PARTIAL_RESULT = []
|
34
|
+
PARTIAL_ENV = {}
|
35
|
+
|
33
36
|
def initialize(match, keyword:, context:)
|
34
37
|
@original = match.to_s
|
35
38
|
@commands = []
|
@@ -40,6 +43,8 @@ module Rundoc
|
|
40
43
|
@lang = match[:lang]
|
41
44
|
@code = match[:contents]
|
42
45
|
parse_code_command
|
46
|
+
PARTIAL_RESULT.clear
|
47
|
+
PARTIAL_ENV.clear
|
43
48
|
end
|
44
49
|
|
45
50
|
def render
|
@@ -69,10 +74,21 @@ module Rundoc
|
|
69
74
|
tmp_result << code_output if code_command.render_result?
|
70
75
|
|
71
76
|
result << tmp_result unless code_command.hidden?
|
77
|
+
|
78
|
+
PARTIAL_RESULT.replace(result)
|
79
|
+
PARTIAL_ENV.replace(env)
|
72
80
|
end
|
73
81
|
|
74
82
|
return "" if hidden?
|
75
83
|
|
84
|
+
self.class.to_doc(result: result, env: env)
|
85
|
+
end
|
86
|
+
|
87
|
+
def self.partial_result_to_doc
|
88
|
+
to_doc(result: PARTIAL_RESULT, env: PARTIAL_ENV)
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.to_doc(result:, env:)
|
76
92
|
array = [env[:before]]
|
77
93
|
|
78
94
|
result.flatten!
|
data/lib/rundoc/version.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class IntegrationFailureTest < Minitest::Test
|
4
|
+
def test_writes_to_dir_on_failure
|
5
|
+
Dir.mktmpdir do |dir|
|
6
|
+
Dir.chdir(dir) do
|
7
|
+
dir = Pathname(dir)
|
8
|
+
|
9
|
+
source_path = dir.join("RUNDOC.md")
|
10
|
+
source_path.write <<~EOF
|
11
|
+
```
|
12
|
+
:::>> $ mkdir lol
|
13
|
+
:::>> $ touch lol/rofl.txt
|
14
|
+
:::>> $ touch does/not/exist.txt
|
15
|
+
```
|
16
|
+
EOF
|
17
|
+
|
18
|
+
io = StringIO.new
|
19
|
+
|
20
|
+
error = nil
|
21
|
+
begin
|
22
|
+
Rundoc::CLI.new(
|
23
|
+
io: io,
|
24
|
+
source_path: source_path,
|
25
|
+
on_success_dir: dir.join(SUCCESS_DIRNAME)
|
26
|
+
).call
|
27
|
+
rescue => e
|
28
|
+
error = e
|
29
|
+
end
|
30
|
+
|
31
|
+
assert error
|
32
|
+
assert_includes error.message, "exited with non zero status"
|
33
|
+
|
34
|
+
refute dir.join(SUCCESS_DIRNAME).join("lol").exist?
|
35
|
+
refute dir.join(SUCCESS_DIRNAME).join("lol").join("rofl.txt").exist?
|
36
|
+
|
37
|
+
assert dir.join(FAILURE_DIRNAME).join("lol").exist?
|
38
|
+
assert dir.join(FAILURE_DIRNAME).join("lol").join("rofl.txt").exist?
|
39
|
+
|
40
|
+
doc = dir.join(FAILURE_DIRNAME).join("RUNDOC_FAILED.md").read
|
41
|
+
assert_includes doc, "$ mkdir lol"
|
42
|
+
assert_includes doc, "$ touch lol/rofl.txt"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rundoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Schneeman
|
@@ -261,6 +261,7 @@ files:
|
|
261
261
|
- test/fixtures/screenshot/rundoc.md
|
262
262
|
- test/fixtures/simple_git/rundoc.md
|
263
263
|
- test/integration/after_build_test.rb
|
264
|
+
- test/integration/failure_test.rb
|
264
265
|
- test/integration/print_test.rb
|
265
266
|
- test/integration/require_test.rb
|
266
267
|
- test/integration/website_test.rb
|