Skip to content

Commit 6f24d29

Browse files
committed
Spec refactoring
- Grouped some specs into separate describe() blocks that should make it easier for us to see the coverage for each specific chunk of functionality - added a helper script in bin/coverage that runs busted in coverage-collecting mode and filters the LuaCov output to only include our source files
1 parent a68e8ea commit 6f24d29

File tree

4 files changed

+176
-140
lines changed

4 files changed

+176
-140
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/luacov.report.out
2+
/luacov.stats.out

bin/coverage

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
3+
# Run busted and collect spec coverage using LuaCov.
4+
# Output will be found at /luacov.report.out.
5+
#
6+
# Usage:
7+
#
8+
# $ ./bin/coverage
9+
# $ cat luacov.report.out
10+
11+
busted -c
12+
luacov src/cliargs.lua
13+
rm luacov.stats.out

spec/cliargs_methods_spec.lua

Lines changed: 102 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -121,78 +121,109 @@ describe("Testing cliargs library methods/functions", function()
121121
assert.are.equal(cli.required[1].desc, desc)
122122
end)
123123

124-
it("tests add_opt() with short-key", function()
125-
-- takes: key, descr, default
126-
local key, desc, default = "-i", "thedescription", "default"
127-
cli:add_opt(key, desc, default)
128-
assert.are.equal(cli.optional[1].key, "i")
129-
--assert.are.equal(cli.optional[1].expanded_key, "")
130-
assert.are.equal(cli.optional[1].desc, desc)
131-
assert.are.equal(cli.optional[1].flag, true)
132-
assert.are.equal(cli.optional[1].default, false) -- no value = flag type option, hence false
133-
end)
134-
135-
it("tests add_opt() with short-key & value", function()
136-
-- takes: key, descr, default
137-
local key, desc, default = "-i VALUE", "thedescription", "default"
138-
cli:add_opt(key, desc, default)
139-
assert.are.equal(cli.optional[1].key, "i")
140-
--assert.are.equal(cli.optional[1].expanded_key, "")
141-
assert.are.equal(cli.optional[1].desc, desc)
142-
assert.are.equal(cli.optional[1].flag, false)
143-
assert.are.equal(cli.optional[1].default, default)
144-
end)
145-
146-
it("tests add_opt() with short + expanded-key", function()
147-
-- takes: key, descr, default
148-
local key, desc, default = "-i, --insert", "thedescription", "default"
149-
cli:add_opt(key, desc, default)
150-
assert.are.equal(cli.optional[1].key, "i")
151-
assert.are.equal(cli.optional[1].expanded_key, "insert")
152-
assert.are.equal(cli.optional[1].desc, desc)
153-
assert.are.equal(cli.optional[1].flag, true)
154-
assert.are.equal(cli.optional[1].default, false) -- no value = flag type option, hence false
155-
end)
156-
157-
it("tests add_opt() with short + expanded-key & value", function()
158-
-- takes: key, descr, default
159-
local key, desc, default = "-i, --insert=VALUE", "thedescription", "default"
160-
cli:add_opt(key, desc, default)
161-
assert.are.equal(cli.optional[1].key, "i")
162-
assert.are.equal(cli.optional[1].expanded_key, "insert")
163-
assert.are.equal(cli.optional[1].desc, desc)
164-
assert.are.equal(cli.optional[1].flag, false)
165-
assert.are.equal(cli.optional[1].default, default)
166-
end)
167-
168-
it("tests add_opt() with only expanded-key", function()
169-
-- takes: key, descr, default
170-
local key, desc, default = "--insert", "thedescription", "default"
171-
cli:add_opt(key, desc, default)
172-
--assert.are.equal(cli.optional[1].key, "")
173-
assert.are.equal(cli.optional[1].expanded_key, "insert")
174-
assert.are.equal(cli.optional[1].desc, desc)
175-
assert.are.equal(cli.optional[1].flag, true)
176-
assert.are.equal(cli.optional[1].default, false) -- no value = flag type option, hence false
177-
end)
178-
179-
it("tests add_opt() with only expanded-key & value", function()
180-
-- takes: key, descr, default
181-
local key, desc, default = "--insert=VALUE", "thedescription", "default"
182-
cli:add_opt(key, desc, default)
183-
--assert.are.equal(cli.optional[1].key, "")
184-
assert.are.equal(cli.optional[1].expanded_key, "insert")
185-
assert.are.equal(cli.optional[1].desc, desc)
186-
assert.are.equal(cli.optional[1].flag, false)
187-
assert.are.equal(cli.optional[1].default, default)
188-
end)
124+
describe("#add_opt()", function()
125+
describe("given a value indicator", function()
126+
it("should work with only a short-key", function()
127+
-- takes: key, descr, default
128+
local key, desc, default = "-i VALUE", "thedescription", "default"
129+
cli:add_opt(key, desc, default)
130+
assert.are.equal(cli.optional[1].key, "i")
131+
--assert.are.equal(cli.optional[1].expanded_key, "")
132+
assert.are.equal(cli.optional[1].desc, desc)
133+
assert.are.equal(cli.optional[1].flag, false)
134+
assert.are.equal(cli.optional[1].default, default)
135+
end)
136+
137+
it("should work with a short-key that is longer than 1 character", function()
138+
local key, desc, default = "-Xassembler OPTIONS", "Pass <arg> on to the assembler", ""
139+
140+
cli:add_opt(key, desc, default)
141+
142+
assert.are.equal(cli.optional[1].key, "Xassembler")
143+
assert.are.equal(cli.optional[1].desc, desc)
144+
assert.are.equal(cli.optional[1].flag, false)
145+
assert.are.equal(cli.optional[1].default, default)
146+
end)
147+
148+
it("should work with only expanded-key", function()
149+
-- takes: key, descr, default
150+
local key, desc, default = "--insert=VALUE", "thedescription", "default"
151+
cli:add_opt(key, desc, default)
152+
--assert.are.equal(cli.optional[1].key, "")
153+
assert.are.equal(cli.optional[1].expanded_key, "insert")
154+
assert.are.equal(cli.optional[1].desc, desc)
155+
assert.are.equal(cli.optional[1].flag, false)
156+
assert.are.equal(cli.optional[1].default, default)
157+
end)
158+
159+
it("should work with combined short + expanded-key", function()
160+
-- takes: key, descr, default
161+
local key, desc, default = "-i, --insert=VALUE", "thedescription", "default"
162+
cli:add_opt(key, desc, default)
163+
assert.are.equal(cli.optional[1].key, "i")
164+
assert.are.equal(cli.optional[1].expanded_key, "insert")
165+
assert.are.equal(cli.optional[1].desc, desc)
166+
assert.are.equal(cli.optional[1].flag, false)
167+
assert.are.equal(cli.optional[1].default, default)
168+
end)
169+
170+
it("should work with combined short + expanded-key, no comma between them", function()
171+
-- takes: key, descr, default
172+
local key, desc, default = "-i --insert=VALUE", "thedescription", "default"
173+
cli:add_opt(key, desc, default)
174+
assert.are.equal(cli.optional[1].key, "i")
175+
assert.are.equal(cli.optional[1].expanded_key, "insert")
176+
end)
177+
end)
189178

190-
it("tests add_opt() with short and expanded-key, no comma between them", function()
191-
-- takes: key, descr, default
192-
local key, desc, default = "-i --insert=VALUE", "thedescription", "default"
193-
cli:add_opt(key, desc, default)
194-
assert.are.equal(cli.optional[1].key, "i")
195-
assert.are.equal(cli.optional[1].expanded_key, "insert")
179+
describe("given no value indicator (implicit flags)", function()
180+
it("should work with a short-key", function()
181+
-- takes: key, descr, default
182+
local key, desc, default = "-i", "thedescription", "default"
183+
cli:add_opt(key, desc, default)
184+
assert.are.equal(cli.optional[1].key, "i")
185+
--assert.are.equal(cli.optional[1].expanded_key, "")
186+
assert.are.equal(cli.optional[1].desc, desc)
187+
assert.are.equal(cli.optional[1].flag, true)
188+
assert.are.equal(cli.optional[1].default, false) -- no value = flag type option, hence false
189+
end)
190+
191+
it("should work with a short-key that is longer than 1 character", function()
192+
pending("https://github.com/amireh/lua_cliargs/issues/36")
193+
194+
-- takes: key, descr, default
195+
local key, desc, default = "-Wno-unsigned", "thedescription"
196+
cli:add_opt(key, desc, default)
197+
dump(cli.optional[1])
198+
assert.are.equal(cli.optional[1].key, "Wno-unsigned")
199+
--assert.are.equal(cli.optional[1].expanded_key, "")
200+
assert.are.equal(cli.optional[1].desc, desc)
201+
assert.are.equal(cli.optional[1].flag, true)
202+
assert.are.equal(cli.optional[1].default, false) -- no value = flag type option, hence false
203+
end)
204+
205+
it("should work with only expanded-key", function()
206+
-- takes: key, descr, default
207+
local key, desc, default = "--insert", "thedescription", "default"
208+
cli:add_opt(key, desc, default)
209+
--assert.are.equal(cli.optional[1].key, "")
210+
assert.are.equal(cli.optional[1].expanded_key, "insert")
211+
assert.are.equal(cli.optional[1].desc, desc)
212+
assert.are.equal(cli.optional[1].flag, true)
213+
assert.are.equal(cli.optional[1].default, false) -- no value = flag type option, hence false
214+
end)
215+
216+
it("should work with combined short + expanded-key", function()
217+
-- takes: key, descr, default
218+
local key, desc, default = "-i, --insert", "thedescription", "default"
219+
cli:add_opt(key, desc, default)
220+
assert.are.equal(cli.optional[1].key, "i")
221+
assert.are.equal(cli.optional[1].expanded_key, "insert")
222+
assert.are.equal(cli.optional[1].desc, desc)
223+
assert.are.equal(cli.optional[1].flag, true)
224+
assert.are.equal(cli.optional[1].default, false) -- no value = flag type option, hence false
225+
end)
226+
end)
196227
end)
197228

198229
it("tests add_flag() for setting default value", function()

0 commit comments

Comments
 (0)