From 35251f7c416affaf3ef24ca146d7457856ce1e51 Mon Sep 17 00:00:00 2001 From: Matthew Endsley Date: Tue, 28 May 2024 10:10:15 -0700 Subject: [PATCH] Properly filter .NET build events for configuration Fixes #2214 --- .../tests/cs2005/test_build_events.lua | 26 +++++++++++++++---- modules/vstudio/vs2005_dotnetbase.lua | 13 +++++----- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/modules/vstudio/tests/cs2005/test_build_events.lua b/modules/vstudio/tests/cs2005/test_build_events.lua index ec9035c44e..9a04839ee9 100644 --- a/modules/vstudio/tests/cs2005/test_build_events.lua +++ b/modules/vstudio/tests/cs2005/test_build_events.lua @@ -45,7 +45,7 @@ prebuildcommands { "command1" } prepare() test.capture [[ - + command1 ]] @@ -55,7 +55,7 @@ postbuildcommands { "command1" } prepare() test.capture [[ - + command1 ]] @@ -66,13 +66,29 @@ postbuildcommands { "command2" } prepare() test.capture [[ - + command1 command2 ]] end + function suite.onMultipleConfigs() + configurations {"Debug", "Release"} + filter "configurations:Debug" + prebuildcommands { "command1" } + filter "configurations:Release" + prebuildcommands { "command2" } + prepare() + test.capture [[ + + command1 + + + command2 + + ]] + end -- -- Multiple commands should be separated with un-escaped EOLs. @@ -81,7 +97,7 @@ function suite.splits_onMultipleCommands() postbuildcommands { "command1", "command2" } prepare() - test.capture ("\t\n\t\tcommand1\r\ncommand2\n\t\n") + test.capture ("\t\n\t\tcommand1\r\ncommand2\n\t\n") end @@ -94,7 +110,7 @@ postbuildcommands { '\' " < > &' } prepare() test.capture [[ - + ' " < > & ]] diff --git a/modules/vstudio/vs2005_dotnetbase.lua b/modules/vstudio/vs2005_dotnetbase.lua index d0f45003ae..110d2e4d64 100644 --- a/modules/vstudio/vs2005_dotnetbase.lua +++ b/modules/vstudio/vs2005_dotnetbase.lua @@ -233,12 +233,13 @@ end end - local cfg = project.getfirstconfig(prj) - if #cfg.prebuildcommands > 0 or #cfg.postbuildcommands > 0 then - _p(1,'') - output("Pre", cfg.prebuildcommands) - output("Post", cfg.postbuildcommands) - _p(1,'') + for cfg in project.eachconfig(prj) do + if #cfg.prebuildcommands > 0 or #cfg.postbuildcommands > 0 then + _p(1,'', dotnetbase.condition(cfg)) + output("Pre", cfg.prebuildcommands) + output("Post", cfg.postbuildcommands) + _p(1,'') + end end end