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

nightconcept / almandine / 14715174283

28 Apr 2025 06:32PM UTC coverage: 37.748%. First build
14715174283

push

github

web-flow
Merge 789647aa5 into 78f97e22e

477 of 566 new or added lines in 14 files covered. (84.28%)

1693 of 4485 relevant lines covered (37.75%)

11.33 hits per line

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

98.08
/src/spec/remove_spec.lua
1
--[[
2
  Remove Command Specification
3

4
  Busted test suite for the remove command in src/modules/remove.lua.
5
  - Verifies dependencies are removed from project.lua and files are deleted.
6
  - Handles both existing and non-existent dependencies.
7
]]--
8

9
-- luacheck: globals describe it after_each assert
10

11
--- Remove module specification for Busted.
12
-- @module remove_spec
13

14
local remove_module = require("modules.remove")
1✔
15
local manifest_loader = require("utils.manifest")
1✔
16

17
local TEST_DEP_NAME = "testdep"
1✔
18
local TEST_DEP_PATH = "src/lib/testdep.lua"
1✔
19
local MANIFEST_FILE = "project.lua"
1✔
20

21
describe("remove_module.remove_dependency", function()
2✔
22
  local function write_manifest(deps)
23
    local file = assert(io.open(MANIFEST_FILE, "w"))
3✔
24
    file:write("return {\n")
3✔
25
    file:write("  name = \"testproj\",\n")
3✔
26
    file:write("  type = \"application\",\n")
3✔
27
    file:write("  version = \"0.1.0\",\n")
3✔
28
    file:write("  license = \"MIT\",\n")
3✔
29
    file:write("  description = \"Test manifest\",\n")
3✔
30
    file:write("  scripts = {},\n")
3✔
31
    file:write("  dependencies = {\n")
3✔
32
    for k, v in pairs(deps) do
4✔
33
      file:write(string.format("    [%q] = %q,\n", k, v))
1✔
34
    end
35
    file:write("  }\n")
3✔
36
    file:write("}\n")
3✔
37
    file:close()
3✔
38
  end
39

40
  local function file_exists(path)
41
    local f = io.open(path, "r")
2✔
42
    if f then f:close() return true end
2✔
43
    return false
1✔
44
  end
45

46
  local function cleanup()
47
    os.remove(MANIFEST_FILE)
2✔
48
    os.remove(TEST_DEP_PATH)
2✔
49
  end
50

51
  after_each(cleanup)
1✔
52

53
  it("removes existing dependency and deletes file", function()
2✔
54
    write_manifest({ [TEST_DEP_NAME] = "dummy_source" })
1✔
55
    os.execute("mkdir -p src/lib >nul 2>&1 || true")
1✔
56
    local f = assert(io.open(TEST_DEP_PATH, "w"))
1✔
57
    f:write("dummy content")
1✔
58
    f:close()
1✔
59
    assert.is_true(file_exists(TEST_DEP_PATH))
1✔
60
    local function save_manifest(m)
61
      m.name = "testproj"
1✔
62
      m.type = "application"
1✔
63
      m.version = "0.1.0"
1✔
64
      m.license = "MIT"
1✔
65
      m.description = "Test manifest"
1✔
66
      m.scripts = m.scripts or {}
1✔
67
      local deps = m.dependencies or {}
1✔
68
      write_manifest(deps)
1✔
69
      return true, nil
1✔
70
    end
71
    remove_module.remove_dependency(TEST_DEP_NAME, manifest_loader.safe_load_project_manifest, save_manifest)
1✔
72
    local manifest = manifest_loader.safe_load_project_manifest()
1✔
73
    -- TODO: Check for nil value before using result
74
    assert.is_not_nil(manifest)
1✔
75
    assert.is_nil((manifest.dependencies or {})[TEST_DEP_NAME])
1✔
76
    assert.is_false(file_exists(TEST_DEP_PATH))
1✔
77
  end)
78

79
  it("does not error when removing nonexistent dependency", function()
2✔
80
    write_manifest({})
1✔
81
    assert.has_no.errors(function()
2✔
82
      remove_module.remove_dependency("doesnotexist", manifest_loader.safe_load_project_manifest, function(m)
2✔
NEW
83
        return write_manifest(m.dependencies or {})
×
84
      end)
85
    end)
86
  end)
87
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