aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-04-18 01:16:39 +0200
committerGitHub <noreply@github.com>2023-04-18 01:16:39 +0200
commita0604613f5887ba14722d710e2b9290b3894e8db (patch)
tree46995dde77d00b96b24dbfe4212583e2e745f02f /tests
parentfeat: add require("mason").has_setup flag (#1226) (diff)
downloadmason-a0604613f5887ba14722d710e2b9290b3894e8db.tar
mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.gz
mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.bz2
mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.lz
mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.xz
mason-a0604613f5887ba14722d710e2b9290b3894e8db.tar.zst
mason-a0604613f5887ba14722d710e2b9290b3894e8db.zip
refactor(expr): remove redundant core filters and always stringify reduced value (#1227)
The removed filters are not used by mason-registry and are too Lua-specific in nature.
Diffstat (limited to 'tests')
-rw-r--r--tests/mason-core/functional/relation_spec.lua13
-rw-r--r--tests/mason-core/installer/registry/expr_spec.lua101
2 files changed, 114 insertions, 0 deletions
diff --git a/tests/mason-core/functional/relation_spec.lua b/tests/mason-core/functional/relation_spec.lua
index a8207b55..8f60b7a6 100644
--- a/tests/mason-core/functional/relation_spec.lua
+++ b/tests/mason-core/functional/relation_spec.lua
@@ -14,6 +14,19 @@ describe("functional: relation", function()
assert.is_false(is_42(32))
end)
+ it("should check non-equality", function()
+ local tbl = {}
+ local is_not_tbl = _.not_equals(tbl)
+ local is_not_a = _.not_equals "a"
+ local is_not_42 = _.not_equals(42)
+
+ assert.is_false(is_not_tbl(tbl))
+ assert.is_false(is_not_a "a")
+ assert.is_false(is_not_42(42))
+ assert.is_true(is_not_a "b")
+ assert.is_true(is_not_42(32))
+ end)
+
it("should check property equality", function()
local fn_key = function() end
local tbl = { a = "a", b = "b", number = 42, [fn_key] = "fun" }
diff --git a/tests/mason-core/installer/registry/expr_spec.lua b/tests/mason-core/installer/registry/expr_spec.lua
index a84500ce..f17e49ee 100644
--- a/tests/mason-core/installer/registry/expr_spec.lua
+++ b/tests/mason-core/installer/registry/expr_spec.lua
@@ -1,4 +1,5 @@
local Result = require "mason-core.result"
+local _ = require "mason-core.functional"
local expr = require "mason-core.installer.registry.expr"
local match = require "luassert.match"
@@ -27,6 +28,7 @@ describe("registry expressions", function()
Result.success "Hello, JOHNDOE JR.!",
expr.interpolate("Hello, {{greeting.firstname .. greeting.lastname .. tostring(tbl) | to_upper}}!", {
greeting = { firstname = "John", lastname = "Doe" },
+ tostring = tostring,
tbl = setmetatable({}, {
__tostring = function()
return " Jr."
@@ -48,6 +50,7 @@ describe("registry expressions", function()
Result.success "Hello, MR. John!",
expr.interpolate("Hello, {{prefix|to_upper}} {{ name | trim }}!", {
prefix = "Mr.",
+ trim = _.trim,
name = " John ",
})
)
@@ -55,6 +58,8 @@ describe("registry expressions", function()
assert.same(
Result.success "Hello, Sir MR. John!",
expr.interpolate("Hello, {{prefix|to_upper | format 'Sir %s'}} {{ name | trim }}!", {
+ format = _.format,
+ trim = _.trim,
prefix = "Mr.",
name = " John ",
})
@@ -87,6 +92,102 @@ describe("registry expressions", function()
end)
end)
+describe("expr filters :: equals/not_equals", function()
+ it("should equals", function()
+ assert.same(
+ Result.success "true",
+ expr.interpolate("{{equals('Hello, world!', value)}}", {
+ value = "Hello, world!",
+ })
+ )
+
+ assert.same(
+ Result.success "true",
+ expr.interpolate("{{ value | equals('Hello, world!') }}", {
+ value = "Hello, world!",
+ })
+ )
+
+ assert.same(
+ Result.success "false",
+ expr.interpolate("{{ value | equals('Hello, John!') }}", {
+ value = "Hello, world!",
+ })
+ )
+ end)
+
+ it("should not equals", function()
+ assert.same(
+ Result.success "true",
+ expr.interpolate("{{not_equals('Hello, John!', value)}}", {
+ value = "Hello, world!",
+ })
+ )
+
+ assert.same(
+ Result.success "true",
+ expr.interpolate("{{ value | not_equals('Hello, John!') }}", {
+ value = "Hello, world!",
+ })
+ )
+
+ assert.same(
+ Result.success "false",
+ expr.interpolate("{{ value | not_equals('Hello, world!') }}", {
+ value = "Hello, world!",
+ })
+ )
+ end)
+end)
+
+describe("expr filters :: take_if{_not}", function()
+ it("should take if value matches", function()
+ assert.same(
+ Result.success "Hello, world!",
+ expr.interpolate("Hello, {{ take_if(equals('world!'), value) }}", {
+ value = "world!",
+ })
+ )
+
+ assert.same(
+ Result.success "Hello, world!",
+ expr.interpolate("Hello, {{ value | take_if(equals('world!')) }}", {
+ value = "world!",
+ })
+ )
+
+ assert.same(
+ Result.success "",
+ expr.interpolate("{{ take_if(equals('Hello John!'), greeting) }}", {
+ greeting = "Hello World!",
+ })
+ )
+ end)
+
+ it("should not take if value matches", function()
+ assert.same(
+ Result.success "Hello, world!",
+ expr.interpolate("Hello, {{ take_if_not(equals('John!'), value) }}", {
+ value = "world!",
+ })
+ )
+
+ assert.same(
+ Result.success "Hello, world!",
+ expr.interpolate("Hello, {{ value | take_if_not(equals('john!')) }}", {
+ value = "world!",
+ })
+ )
+
+ assert.same(
+ Result.success "",
+ expr.interpolate("{{ take_if_not(equals('Hello World!'), greeting) }}", {
+ greeting = "Hello World!",
+ })
+ )
+ end)
+end)
+
describe("table interpolation", function()
it("should interpolate nested values", function()
assert.same(