@@ -5,6 +5,185 @@ def exe_path
5
5
root_dir . join ( "bin" ) . join ( "rundoc" )
6
6
end
7
7
8
+ def test_help
9
+ output = run! ( "#{ exe_path } --help" )
10
+ assert output . include? ( "Usage:" )
11
+ end
12
+
13
+ def test_force_fail_dir_protection
14
+ Dir . mktmpdir do |dir |
15
+ key = SecureRandom . hex
16
+ dir = Pathname ( dir )
17
+ rundoc = dir . join ( "RUNDOC.md" )
18
+ rundoc . write "Done"
19
+
20
+ not_empty = dir . join ( "tmp" ) . tap ( &:mkpath ) . join ( "not_empty.txt" )
21
+ not_empty . write ( "Not empty" )
22
+
23
+ run! ( "#{ exe_path } #{ rundoc } " , raise_on_nonzero_exit : false )
24
+ assert !$?. success?
25
+
26
+ assert not_empty . exist?
27
+
28
+ run! ( "#{ exe_path } #{ rundoc } --force" , raise_on_nonzero_exit : false )
29
+ assert $?. success?
30
+ assert !not_empty . exist?
31
+ end
32
+ end
33
+
34
+ def test_force_success_dir_protection
35
+ Dir . mktmpdir do |dir |
36
+ key = SecureRandom . hex
37
+ dir = Pathname ( dir )
38
+
39
+ rundoc = dir . join ( "RUNDOC.md" )
40
+ rundoc . write "Done"
41
+
42
+ not_empty = dir . join ( "project" ) . tap ( &:mkpath ) . join ( "not_empty.txt" )
43
+ not_empty . write ( "Not empty" )
44
+
45
+ run! ( "#{ exe_path } #{ rundoc } " , raise_on_nonzero_exit : false )
46
+ assert !$?. success?
47
+
48
+ assert not_empty . exist?
49
+
50
+ run! ( "#{ exe_path } #{ rundoc } --force" , raise_on_nonzero_exit : false )
51
+ assert $?. success?
52
+ assert !not_empty . exist?
53
+ end
54
+ end
55
+
56
+ def test_dotenv
57
+ Dir . mktmpdir do |dir |
58
+ key = SecureRandom . hex
59
+ dir = Pathname ( dir )
60
+ dotenv = dir . join ( "another" ) . join ( "directory" ) . tap ( &:mkpath ) . join ( ".env" )
61
+
62
+ dotenv . write <<~EOF
63
+ FLORP="#{ key } "
64
+ EOF
65
+
66
+ rundoc = dir . join ( "RUNDOC.md" )
67
+ rundoc . write <<~EOF
68
+ ```
69
+ :::>> $ echo $FLORP
70
+ ```
71
+ EOF
72
+
73
+ run! ( "#{ exe_path } #{ rundoc } --dotenv-path #{ dotenv } " )
74
+
75
+ readme = dir . join ( "project" )
76
+ . tap { |p | assert p . exist? }
77
+ . join ( "README.md" )
78
+ . tap { |p | assert p . exist? }
79
+
80
+ actual = strip_autogen_warning ( readme . read )
81
+ expected = <<~EOF
82
+ ```
83
+ $ echo $FLORP
84
+ #{ key }
85
+ ```
86
+ EOF
87
+ assert_equal expected . strip , actual . strip
88
+ end
89
+ end
90
+
91
+ def test_screenshots_dir
92
+ Dir . mktmpdir do |dir |
93
+ dir = Pathname ( dir )
94
+ rundoc = dir . join ( "RUNDOC.md" )
95
+ screenshots_dirname = "lol_screenshots"
96
+ rundoc . write <<~EOF
97
+ ```
98
+ :::>> website.visit(name: "example", url: "http://example.com")
99
+ :::>> website.screenshot(name: "example")
100
+ ```
101
+ EOF
102
+
103
+ run! ( "#{ exe_path } #{ rundoc } --screenshots-dir #{ screenshots_dirname } " )
104
+
105
+ screenshots_dir = dir . join ( "project" )
106
+ . tap { |p | assert p . exist? }
107
+ . join ( screenshots_dirname )
108
+ . tap { |p | assert p . exist? }
109
+
110
+
111
+ readme = dir . join ( "project" ) . join ( "README.md" ) . read
112
+ actual = strip_autogen_warning ( readme )
113
+
114
+ expected = ""
115
+ assert_equal expected , actual . strip
116
+ end
117
+ end
118
+
119
+ def test_output_filename
120
+ Dir . mktmpdir do |dir |
121
+ dir = Pathname ( dir )
122
+ rundoc = dir . join ( "RUNDOC.md" )
123
+ failure_dir = dir . join ( "lol" )
124
+ rundoc . write "Done"
125
+
126
+ assert !failure_dir . exist?
127
+
128
+ run! ( "#{ exe_path } #{ rundoc } --output-filename tutorial.md" )
129
+
130
+ tutorial_md = dir . join ( "project" )
131
+ . tap { |p | assert p . exist? }
132
+ . join ( "tutorial.md" )
133
+ . tap { |p | assert p . exist? }
134
+
135
+ actual = strip_autogen_warning ( tutorial_md . read )
136
+ expected = "Done"
137
+
138
+ assert_equal expected . strip , actual . strip
139
+ end
140
+ end
141
+
142
+ def test_on_failure_dir
143
+ Dir . mktmpdir do |dir |
144
+ dir = Pathname ( dir )
145
+ rundoc = dir . join ( "RUNDOC.md" )
146
+ failure_dir = dir . join ( "lol" )
147
+ rundoc . write <<~EOF
148
+ ```
149
+ :::>> $ touch lol.txt
150
+ :::>> $ echo "hello world" && exit 1
151
+ ```
152
+ EOF
153
+
154
+ assert !failure_dir . exist?
155
+
156
+ run! ( "#{ exe_path } #{ rundoc } --on-failure-dir #{ failure_dir } " , raise_on_nonzero_exit : false )
157
+ assert !$?. success?
158
+
159
+ assert failure_dir . exist?
160
+ assert !Dir . exist? ( dir . join ( "tmp" ) )
161
+ assert failure_dir . join ( "lol.txt" ) . exist?
162
+ end
163
+ end
164
+
165
+ def test_on_success_dir
166
+ Dir . mktmpdir do |dir |
167
+ dir = Pathname ( dir )
168
+ rundoc = dir . join ( "RUNDOC.md" )
169
+ success_dir = dir . join ( "lol" )
170
+ rundoc . write "Done"
171
+
172
+ assert !success_dir . exist?
173
+ run! ( "#{ exe_path } #{ rundoc } --on-success-dir #{ success_dir } " )
174
+
175
+ assert success_dir . exist?
176
+ assert !Dir . exist? ( dir . join ( "project" ) )
177
+
178
+ readme = success_dir . join ( "README.md" )
179
+ actual = strip_autogen_warning ( readme . read )
180
+ expected = "Done"
181
+
182
+ assert_equal expected . strip , actual . strip
183
+ end
184
+ end
185
+
186
+
8
187
def test_simple_file
9
188
Dir . mktmpdir do |dir |
10
189
dir = Pathname ( dir )
0 commit comments