summaryrefslogtreecommitdiff
path: root/spec/unit/tools_spec.lua
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2024-02-26 17:47:28 -0300
committerHisham Muhammad <hisham@gobolinux.org>2024-02-27 13:28:33 -0300
commit5cba4b83f60966045b86ac615df2692c953ebba7 (patch)
tree445d1f58e589b53e4ee8cda5984f430f54fd2b36 /spec/unit/tools_spec.lua
parent6bc6ede826843c3692971c14c27c3d27714b2126 (diff)
downloadluarocks-5cba4b83f60966045b86ac615df2692c953ebba7.tar.gz
luarocks-5cba4b83f60966045b86ac615df2692c953ebba7.tar.bz2
luarocks-5cba4b83f60966045b86ac615df2692c953ebba7.zip
fix(fs): make current_dir always return 1 arg only
Diffstat (limited to 'spec/unit/tools_spec.lua')
-rw-r--r--spec/unit/tools_spec.lua253
1 files changed, 253 insertions, 0 deletions
diff --git a/spec/unit/tools_spec.lua b/spec/unit/tools_spec.lua
new file mode 100644
index 00000000..29e21740
--- /dev/null
+++ b/spec/unit/tools_spec.lua
@@ -0,0 +1,253 @@
1local test_env = require("spec.util.test_env")
2local get_tmp_path = test_env.get_tmp_path
3local testing_paths = test_env.testing_paths
4local write_file = test_env.write_file
5
6test_env.unload_luarocks()
7local fs = require("luarocks.fs")
8local cfg = require("luarocks.core.cfg")
9local patch = require("luarocks.tools.patch")
10
11local lao =
12[[The Nameless is the origin of Heaven and Earth;
13The named is the mother of all things.
14
15Therefore let there always be non-being,
16 so we may see their subtlety,
17And let there always be being,
18 so we may see their outcome.
19The two are the same,
20But after they are produced,
21 they have different names.
22They both may be called deep and profound.
23Deeper and more profound,
24The door of all subtleties!]]
25
26local tzu =
27[[The Way that can be told of is not the eternal Way;
28The name that can be named is not the eternal name.
29The Nameless is the origin of Heaven and Earth;
30The Named is the mother of all things.
31Therefore let there always be non-being,
32 so we may see their subtlety,
33And let there always be being,
34 so we may see their outcome.
35The two are the same,
36But after they are produced,
37 they have different names.]]
38
39local valid_patch1 =
40[[--- lao 2002-02-21 23:30:39.942229878 -0800
41+++ tzu 2002-02-21 23:30:50.442260588 -0800
42@@ -1,7 +1,6 @@
43-The Way that can be told of is not the eternal Way;
44-The name that can be named is not the eternal name.
45 The Nameless is the origin of Heaven and Earth;
46-The Named is the mother of all things.
47+The named is the mother of all things.
48+
49 Therefore let there always be non-being,
50 so we may see their subtlety,
51 And let there always be being,
52@@ -9,3 +8,6 @@
53 The two are the same,
54 But after they are produced,
55 they have different names.
56+They both may be called deep and profound.
57+Deeper and more profound,
58+The door of all subtleties!]]
59
60local valid_patch2 =
61[[--- /dev/null 1969-02-21 23:30:39.942229878 -0800
62+++ tzu 2002-02-21 23:30:50.442260588 -0800
63@@ -1,7 +1,6 @@
64-The Way that can be told of is not the eternal Way;
65-The name that can be named is not the eternal name.
66 The Nameless is the origin of Heaven and Earth;
67-The Named is the mother of all things.
68+The named is the mother of all things.
69+
70 Therefore let there always be non-being,
71 so we may see their subtlety,
72 And let there always be being,
73@@ -9,3 +8,6 @@
74 The two are the same,
75 But after they are produced,
76 they have different names.
77+They both may be called deep and profound.
78+Deeper and more profound,
79+The door of all subtleties!]]
80
81local invalid_patch1 =
82[[--- lao 2002-02-21 23:30:39.942229878 -0800
83+++ tzu 2002-02-21 23:30:50.442260588 -0800
84@@ -1,7 +1,6 @@
85-The Way that can be told of is not the eternal Way;
86-The name that can be named is not the eternal name.
87 The Nameless is the origin of Heaven and Earth;
88-The Named is the mother of all things.
89--- Extra
90+The named is the mother of all things.
91+
92 Therefore let there always be non-being,
93 so we may see their subtlety,
94 And let there always be being,
95--- Extra
96@@ -9,3 +8,7 @@
97 The two are the same,
98 But after they are produced,
99 they have different names.
100+They both may be called deep and profound.
101+Deeper and more profound,
102+The door of all subtleties!]]
103
104local invalid_patch2 =
105[[--- lao 2002-02-21 23:30:39.942229878 -0800
106+++ tzu 2002-02-21 23:30:50.442260588 -0800
107@@ -1,7 +1,6 @@
108-The Way that can be told of is not the eternal Way;
109-The name that can be named is not the eternal name.
110 The Nameless is the origin of Heaven and Earth;
111-The Named is the mother of all things.
112+The named is the mother of all things.
113+
114 Therefore let there always be non-being,
115 so we may see their subtlety,
116 And let there always be being,
117@@ -9,3 +8,6 @@
118 The two are the same,
119 But after they are produced,
120 they have different names.
121+They both may be called deep and profound.
122+Deeper and more profound,
123? ...
124+The door of all subtleties!]]
125
126local invalid_patch3 =
127[[--- lao 2002-02-21 23:30:39.942229878 -0800
128+++ tzu 2002-02-21 23:30:50.442260588 -0800
129@@ -1,7 +1,6 @@
130-The Way that can be told of is not the eternal Way;
131-The name that can be named is not the eternal name.
132 The Nameless is the origin of Heaven and Earth;
133-The Named is the mother of all things.
134+The named is the mother of all things.
135+
136 Therefore let there always be non-being,
137 so we may see their subtlety,
138 And let there always be being,
139@@ -9,3 +8,6 @@
140 The two are the same,
141 But after they are produced,
142 they have different names.
143+They both may be called deep and profound.
144+Deeper and more profound,
145? ...
146+The door of all subtleties!]]
147
148describe("Luarocks patch test #unit", function()
149 local runner
150
151 setup(function()
152 cfg.init()
153 fs.init()
154 runner = require("luacov.runner")
155 runner.init(testing_paths.testrun_dir .. "/luacov.config")
156 runner.tick = true
157 end)
158
159 teardown(function()
160 runner.shutdown()
161 end)
162
163 describe("patch.read_patch", function()
164 it("returns a table with the patch file info and the result of parsing the file", function()
165 local t, result
166
167 write_file("test.patch", valid_patch1, finally)
168 t, result = patch.read_patch("test.patch")
169 assert.truthy(result)
170 assert.truthy(t)
171
172 write_file("test.patch", invalid_patch1, finally)
173 t, result = patch.read_patch("test.patch")
174 assert.falsy(result)
175 assert.truthy(t)
176
177 write_file("test.patch", invalid_patch2, finally)
178 t, result = patch.read_patch("test.patch")
179 assert.falsy(result)
180 assert.truthy(t)
181
182 write_file("test.patch", invalid_patch3, finally)
183 t, result = patch.read_patch("test.patch")
184 assert.falsy(result)
185 assert.truthy(t)
186 end)
187 end)
188
189 describe("patch.apply_patch", function()
190 local tmpdir
191 local olddir
192
193 before_each(function()
194 tmpdir = get_tmp_path()
195 olddir = lfs.currentdir()
196 lfs.mkdir(tmpdir)
197 lfs.chdir(tmpdir)
198
199 write_file("lao", tzu, finally)
200 write_file("tzu", lao, finally)
201 end)
202
203 after_each(function()
204 if olddir then
205 lfs.chdir(olddir)
206 if tmpdir then
207 lfs.rmdir(tmpdir)
208 end
209 end
210 end)
211
212 it("applies the given patch and returns the result of patching", function()
213 write_file("test.patch", valid_patch1, finally)
214 local p = patch.read_patch("test.patch")
215 local result = patch.apply_patch(p)
216 assert.truthy(result)
217 end)
218
219 it("applies the given patch with custom arguments and returns the result of patching", function()
220 write_file("test.patch", valid_patch2, finally)
221 local p = patch.read_patch("test.patch")
222 local result = patch.apply_patch(p, nil, true)
223 assert.truthy(result)
224 end)
225
226 it("fails if the patch file is invalid", function()
227 write_file("test.patch", invalid_patch1, finally)
228 local p = patch.read_patch("test.patch")
229 local result = pcall(patch.apply_patch, p)
230 assert.falsy(result)
231 end)
232
233 it("returns false if the files from the patch doesn't exist", function()
234 os.remove("lao")
235 os.remove("tzu")
236
237 write_file("test.patch", valid_patch1, finally)
238 local p = patch.read_patch("test.patch")
239 local result = patch.apply_patch(p)
240 assert.falsy(result)
241 end)
242
243 it("returns false if the target file was already patched", function()
244 write_file("test.patch", valid_patch1, finally)
245 local p = patch.read_patch("test.patch")
246 local result = patch.apply_patch(p)
247 assert.truthy(result)
248
249 result = patch.apply_patch(p)
250 assert.falsy(result)
251 end)
252 end)
253end)