• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nightconcept / almandine / 14717913225

28 Apr 2025 09:08PM UTC coverage: 97.573% (+1.6%) from 95.996%
14717913225

push

github

nightconcept
test: Increase coverage for update command

106 of 107 new or added lines in 2 files covered. (99.07%)

3 existing lines in 2 files now uncovered.

1005 of 1030 relevant lines covered (97.57%)

2.15 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

99.26
/src/spec/modules/update_spec.lua
1
--[[
2
  Update Module Specification
3

4
  Busted test suite for update_dependencies in src/modules/update.lua.
5
  - Verifies update to latest allowed and absolute latest versions.
6
  - Uses stubs/mocks for manifest, downloader, and resolver.
7
]]
8
--
9

10
-- luacheck: globals describe it assert
11
-- local busted = require("busted")  -- unused
12

13
--- Update module specification for Busted.
14
-- @module update_spec
15

16
describe("update_module.update_dependencies", function()
2✔
17
  local update_module = require("modules.update")
1✔
18

19
  it("updates dependency to latest allowed version", function()
2✔
20
    local manifest = { dependencies = { foo = "https://example.com/foo.lua" } }
1✔
21
    local function load()
22
      return manifest
1✔
23
    end
24
    local function save(_) -- luacheck: ignore
25
      manifest = _
1✔
26
    end
27
    local function ensure_lib_dir1() end
2✔
28
    local utils = { downloader = {
1✔
29
      download = function()
30
        return true
1✔
31
      end,
32
    } }
1✔
33
    local function resolve_latest_version(_name)
34
      return "1.3.4"
1✔
35
    end
36
    update_module.update_dependencies(load, save, ensure_lib_dir1, utils, resolve_latest_version)
1✔
37
    -- After update, manifest.dependencies.foo should be a table with version and url
38
    assert.are.equal(manifest.dependencies.foo.version, "1.3.4")
1✔
39
    assert.are.equal(manifest.dependencies.foo.url, "https://example.com/foo.lua")
1✔
40
  end)
41

42
  it("updates dependency to absolute latest version", function()
2✔
43
    local manifest = { dependencies = { foo = "https://example.com/foo.lua" } }
1✔
44
    local function load()
45
      return manifest
1✔
46
    end
47
    local function save(_) -- luacheck: ignore
48
    end
49
    local function ensure_lib_dir2() end
2✔
50
    local utils = { downloader = {
1✔
51
      download = function()
52
        return true
1✔
53
      end,
54
    } }
1✔
55
    local function resolve_latest_version(_name)
56
      return "latest"
1✔
57
    end
58
    update_module.update_dependencies(load, save, ensure_lib_dir2, utils, resolve_latest_version, true)
1✔
59
    assert.are.equal(manifest.dependencies.foo.version, "latest")
1✔
60
    assert.are.equal(manifest.dependencies.foo.url, "https://example.com/foo.lua")
1✔
61
  end)
62

63
  it("updates dependency versions in manifest", function()
2✔
64
    local manifest = {
1✔
65
      dependencies = {
1✔
66
        foo = {
1✔
67
          version = "1.0.0",
1✔
68
          url = "https://example.com/foo.lua",
1✔
69
        },
1✔
70
      },
1✔
71
    }
72
    local function load()
73
      return manifest
1✔
74
    end
75
    local function save(_) -- luacheck: ignore
76
      manifest = _
1✔
77
    end
78
    local function ensure_lib_dir3() end
2✔
79
    local utils = { downloader = {
1✔
80
      download = function()
81
        return true
1✔
82
      end,
83
    } }
1✔
84
    local function resolve_latest_version(_name)
85
      return "2.0.0"
1✔
86
    end
87
    update_module.update_dependencies(load, save, ensure_lib_dir3, utils, resolve_latest_version)
1✔
88
    assert.are.equal(manifest.dependencies.foo.version, "2.0.0")
1✔
89
    assert.are.equal(manifest.dependencies.foo.url, "https://example.com/foo.lua")
1✔
90
  end)
91

92
  it("prints error and returns if manifest fails to load", function()
2✔
93
    local function load()
94
      return nil, "manifest error!"
1✔
95
    end
96
    local function save(_) -- luacheck: ignore
NEW
97
      error("should not save on manifest load error")
×
98
    end
99
    local ensure_lib_dir = function() end
2✔
100
    local utils = { downloader = { download = function() error("should not download") end } }
1✔
101
    local resolve_latest_version = function() error("should not resolve") end
1✔
102
    local printed = {}
1✔
103
    local printer = function(...)
104
      local args = {...}
1✔
105
      for i = 1, #args do args[i] = tostring(args[i]) end
1✔
106
      table.insert(printed, table.concat(args, " "))
1✔
107
    end
108
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version, nil, printer)
1✔
109
    local output = table.concat(printed, "\n")
1✔
110
    assert.is_true(output:find("manifest error!", 1, true) ~= nil)
1✔
111
  end)
112

113
  it("does not update or save if dependency already up-to-date", function()
2✔
114
    local manifest = { dependencies = { foo = { version = "1.3.4", url = "https://example.com/foo.lua" } } }
1✔
115
    local function load() return manifest end
2✔
116
    local function save(_) -- luacheck: ignore
117
    end
118
    local ensure_lib_dir = function() end
2✔
119
    local utils = { downloader = { download = function() error("should not download if up-to-date") end } }
1✔
120
    local resolve_latest_version = function(_name) return "1.3.4" end
2✔
121
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version)
1✔
122
    assert.are.equal(manifest.dependencies.foo.version, "1.3.4")
1✔
123
  end)
124

125
  it("prints download failure and continues", function()
2✔
126
    local manifest = { dependencies = { foo = "https://example.com/foo.lua", bar = {
1✔
127
      url = "https://example.com/bar.lua"
1✔
128
    } } }
1✔
129
    local function load() return manifest end
2✔
130
    local function save(_) -- luacheck: ignore
131
    end
132
    local ensure_lib_dir = function() end
2✔
133
    local utils = { downloader = { download = function(url, _)
1✔
134
      if url:find("foo") then return false, "network fail" end
2✔
135
      return true
1✔
136
    end } }
1✔
137
    local resolve_latest_version = function(_) return "2.0.0" end
3✔
138
    local printed = {}
1✔
139
    local printer = function(...)
140
      local args = {...}
2✔
141
      for i = 1, #args do args[i] = tostring(args[i]) end
2✔
142
      table.insert(printed, table.concat(args, " "))
2✔
143
    end
144
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version, nil, printer)
1✔
145
    local output = table.concat(printed, "\n")
1✔
146
    assert.is_true(output:find("Failed to download foo: network fail", 1, true) ~= nil)
1✔
147
    assert.are.equal(manifest.dependencies.foo.version, "2.0.0")
1✔
148
    assert.are.equal(manifest.dependencies.bar.version, "2.0.0")
1✔
149
  end)
150

151
  it("handles empty dependencies table", function()
2✔
152
    local manifest = { dependencies = {} }
1✔
153
    local function load() return manifest end
2✔
154
    local function save(_) -- luacheck: ignore
155
    end
156
    local ensure_lib_dir = function() end
2✔
157
    local utils = { downloader = { download = function() error("should not download if empty") end } }
1✔
158
    local resolve_latest_version = function() error("should not resolve if empty") end
1✔
159
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version)
1✔
160
    assert.are.same({}, manifest.dependencies)
1✔
161
  end)
162

163
  it("converts string dependency to table and updates version", function()
2✔
164
    local manifest = { dependencies = { foo = "https://example.com/foo.lua" } }
1✔
165
    local function load() return manifest end
2✔
166
    local function save(_) -- luacheck: ignore
167
      manifest = _
1✔
168
    end
169
    local ensure_lib_dir = function() end
2✔
170
    local utils = { downloader = { download = function() return true end } }
2✔
171
    local resolve_latest_version = function(_) return "9.9.9" end
2✔
172
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version)
1✔
173
    assert.are.same({ version = "9.9.9", url = "https://example.com/foo.lua" }, manifest.dependencies.foo)
1✔
174
  end)
175

176
  it("writes to default out_path if not specified in dependency table", function()
2✔
177
    local manifest = { dependencies = { foo = { version = "1.0.0", url = "https://example.com/foo.lua" } } }
1✔
178
    local function load() return manifest end
2✔
179
    local function save(_) -- luacheck: ignore
180
      manifest = _
1✔
181
    end
182
    local ensure_lib_dir = function() end
2✔
183
    local called_out_path
184
    local utils = { downloader = { download = function(_, out_path) called_out_path = out_path; return true end } }
2✔
185
    local resolve_latest_version = function(_) return "2.0.0" end
2✔
186
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version)
1✔
187
    assert.are.equal("src/lib/foo.lua", called_out_path)
1✔
188
  end)
189

190
  it("writes to specified out_path if present in dependency table", function()
2✔
191
    local manifest = { dependencies = { foo = { version = "1.0.0", url = "https://example.com/foo.lua",
1✔
192
      path = "custom/foo.lua" } } }
1✔
193
    local function load() return manifest end
2✔
194
    local function save(_) -- luacheck: ignore
195
      manifest = _
1✔
196
    end
197
    local ensure_lib_dir = function() end
2✔
198
    local called_out_path
199
    local utils = { downloader = { download = function(_, out_path) called_out_path = out_path; return true end } }
2✔
200
    local resolve_latest_version = function(_) return "2.0.0" end
2✔
201
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version)
1✔
202
    assert.are.equal("custom/foo.lua", called_out_path)
1✔
203
  end)
204

205
  it("prints update message when dependency is updated", function()
2✔
206
    local manifest = { dependencies = { foo = "https://example.com/foo.lua" } }
1✔
207
    local function load() return manifest end
2✔
208
    local function save(_) -- luacheck: ignore
209
      manifest = _
1✔
210
    end
211
    local ensure_lib_dir = function() end
2✔
212
    local utils = { downloader = { download = function() return true end } }
2✔
213
    local resolve_latest_version = function(_) return "3.1.4" end
2✔
214
    local printed = {}
1✔
215
    local printer = function(...)
216
      local args = {...}
1✔
217
      for i = 1, #args do args[i] = tostring(args[i]) end
1✔
218
      table.insert(printed, table.concat(args, " "))
1✔
219
    end
220
    update_module.update_dependencies(load, save, ensure_lib_dir, utils, resolve_latest_version, nil, printer)
1✔
221
    local output = table.concat(printed, "\n")
1✔
222
    assert.is_true(output:find("Updating foo from", 1, true) ~= nil)
1✔
223
    assert.is_true(output:find("3.1.4", 1, true) ~= nil)
1✔
224
    assert.are.equal(manifest.dependencies.foo.version, "3.1.4")
1✔
225
  end)
226
end)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc