summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/modules/project_depend/test.lua19
-rw-r--r--xmake/modules/core/project/depend.lua3
2 files changed, 22 insertions, 0 deletions
diff --git a/tests/modules/project_depend/test.lua b/tests/modules/project_depend/test.lua
new file mode 100644
index 000000000..2df79ba16
--- /dev/null
+++ b/tests/modules/project_depend/test.lua
@@ -0,0 +1,19 @@
+import("core.project.depend")
+
+function test_nested_values_append(t)
+ local dependinfo = {values = {{"clang", "-m64"}}}
+ local changed = depend.is_changed(dependinfo, {values = {{"clang", "-m64", "-DFEATURE_ON"}}})
+ t:require(changed)
+end
+
+function test_nested_values_remove(t)
+ local dependinfo = {values = {{"clang", "-m64", "-DFEATURE_ON"}}}
+ local changed = depend.is_changed(dependinfo, {values = {{"clang", "-m64"}}})
+ t:require(changed)
+end
+
+function test_nested_values_unchanged(t)
+ local dependinfo = {values = {{"clang", "-m64", "-DFEATURE_ON"}}}
+ local changed = depend.is_changed(dependinfo, {values = {{"clang", "-m64", "-DFEATURE_ON"}}})
+ t:require_not(changed)
+end
diff --git a/xmake/modules/core/project/depend.lua b/xmake/modules/core/project/depend.lua
index 511e6fde6..40d6ba757 100644
--- a/xmake/modules/core/project/depend.lua
+++ b/xmake/modules/core/project/depend.lua
@@ -167,6 +167,9 @@ function is_changed(dependinfo, opt)
end
return true
elseif deptype == "table" then
+ if #depvalue ~= #optvalue then
+ return true
+ end
for subidx, subvalue in ipairs(depvalue) do
if subvalue ~= optvalue[subidx] then
if _is_show_diagnosis_info() then