diff options
| author | ruki <[email protected]> | 2019-07-16 17:28:30 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-07-16 17:28:30 +0800 |
| commit | 0724fda9aa61ee9d2b39198559a08cd22064d7a3 (patch) | |
| tree | 1dc6c47bc57d31c41fd11fa9d82ebe166a7cd9c5 | |
| parent | d6be8e7effeca32a035ce89f1d02c28501b6a839 (diff) | |
| parent | 18714381a6257fd93c93344cb559fc409f6b1017 (diff) | |
Merge pull request #486 from OpportunityLiu/dev
Improve dump & fix vsxmake
| -rw-r--r-- | .appveyor.yml | 2 | ||||
| -rw-r--r-- | tests/cli/utils/test.lua | 4 | ||||
| -rw-r--r-- | tests/plugins/project/test.lua | 59 | ||||
| -rw-r--r-- | tests/runner.lua | 2 | ||||
| -rw-r--r-- | xmake/core/base/dump.lua | 47 | ||||
| -rw-r--r-- | xmake/core/base/utils.lua | 8 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua | 6 | ||||
| -rw-r--r-- | xmake/plugins/project/vsxmake/vsproj/Xmake.props | 16 | ||||
| -rw-r--r-- | xmake/plugins/project/vsxmake/vsproj/Xmake.targets | 4 | ||||
| -rw-r--r-- | xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln | 6 | ||||
| -rw-r--r-- | xmake/themes/dark/xmake.lua | 8 | ||||
| -rw-r--r-- | xmake/themes/default/xmake.lua | 8 | ||||
| -rw-r--r-- | xmake/themes/emoji/xmake.lua | 8 | ||||
| -rw-r--r-- | xmake/themes/plain/xmake.lua | 6 |
14 files changed, 136 insertions, 48 deletions
diff --git a/.appveyor.yml b/.appveyor.yml index 760cd6834..11d509f0b 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -112,6 +112,8 @@ test_script: xmake lua --verbose --diagnosis runner.lua $_.fullname >stdout_file 2>stderr_file $outcome = if ($?) { "Passed" } else { $all_success = $false; "Failed" } } + Get-Content stdout_file | Out-Host + Get-Content stderr_file | Out-Host Update-AppveyorTest -Name $testname -Framework "xmake-test" -FileName $filename -Outcome $outcome -Duration $time.TotalMilliseconds -StdOut (Get-Content -Raw stdout_file) -StdErr (Get-Content -Raw stderr_file) } - ps: Pop-Location diff --git a/tests/cli/utils/test.lua b/tests/cli/utils/test.lua index f06a303a9..e54f5d0e6 100644 --- a/tests/cli/utils/test.lua +++ b/tests/cli/utils/test.lua @@ -6,7 +6,7 @@ end function test_help(t) import("core.base.task") - for _, t in ipairs(task.names()) do - os.execv("xmake", {t, "--help"}) + for _, taskname in ipairs(task.names()) do + os.runv("xmake", {taskname, "--help"}) end end diff --git a/tests/plugins/project/test.lua b/tests/plugins/project/test.lua new file mode 100644 index 000000000..c6e1069d9 --- /dev/null +++ b/tests/plugins/project/test.lua @@ -0,0 +1,59 @@ +import("detect.sdks.find_vstudio") +import("core.project.config") +import("core.platform.platform") +import("core.platform.environment") + +function test_vsxmake(t) + + if os.host() ~= "windows" then + return t:skip("wrong host platform") + end + + local projname = "testproj" + + local tempdir = os.tmpfile() + os.mkdir(tempdir) + os.cd(tempdir) + + -- create project + os.runv("xmake", {"create", projname}) + os.cd(projname) + + -- set config + local arch = os.getenv("platform") or "x86" + config.set("arch", arch, {readonly = true, force = true}) + config.check() + platform.load(config.plat()) + local vs = config.get("vs") + environment.enter("toolchains") + + local vstype = "vsxmake" .. vs + -- create sln & vcxproj + os.execv("xmake", {"project", "-k", vstype, "-a", arch}) + os.cd(vstype) + + -- run msbuild + try + { + function () + os.exec("msbuild /P:XmakeDiagnosis=true /P:XmakeVerbose=true") + end, + catch + { + function () + io.write("--- sln file ---\n") + io.cat(projname .. "_" .. vstype .. ".sln") + io.write("--- vcx file ---\n") + io.cat(projname .. "/" .. projname .. ".vcxproj") + io.write("--- filter file ---\n") + io.cat(projname .. "/" .. projname .. ".vcxproj.filters") + raise("msbuild failed") + end + } + } + environment.leave("toolchains") + + -- clean up + os.cd(os.scriptdir()) + os.tryrm(tempdir) +end diff --git a/tests/runner.lua b/tests/runner.lua index 227e66a7f..c99142170 100644 --- a/tests/runner.lua +++ b/tests/runner.lua @@ -44,6 +44,8 @@ function main(script) local result = try { function () + -- set workdir for each test + os.cd(root) return v(context) end, catch diff --git a/xmake/core/base/dump.lua b/xmake/core/base/dump.lua index cfa25918b..dd5492879 100644 --- a/xmake/core/base/dump.lua +++ b/xmake/core/base/dump.lua @@ -23,7 +23,6 @@ local dump = dump or {} -- load modules local colors = require("base/colors") -local table = require("base/table") -- format string with theme colors function dump._format(fmtkey, fmtdefault, ...) @@ -37,7 +36,12 @@ end -- translate string with theme formats function dump._translate(str) - return colors.translate(str, { patch_reset = false, ignore_unknown = true }) + local theme = colors.theme() + if theme then + return colors.translate(str, { patch_reset = false, ignore_unknown = true }) + else + return colors.ignore(str) + end end -- print string @@ -82,17 +86,17 @@ end -- print value with default format function dump._print_default(value) - io.write(dump._translate("${reset}${color.dump.default}"), dump._format("text.dump.default_format", "<%s>", value), dump._translate("${reset}")) + io.write(dump._translate("${reset}${color.dump.default}"), dump._format("text.dump.default_format", "%s", value), dump._translate("${reset}")) end -- print udata value with scalar format function dump._print_udata_scalar(value) - io.write(dump._translate("${reset}${color.dump.udata}"), dump._format("text.dump.udata_format", "[%s]", value), dump._translate("${reset}")) + io.write(dump._translate("${reset}${color.dump.udata}"), dump._format("text.dump.udata_format", "%s", value), dump._translate("${reset}")) end -- print table value with scalar format function dump._print_table_scalar(value) - io.write(dump._translate("${reset}${color.dump.table}"), dump._format("text.dump.table_format", "{%s}", value), dump._translate("${reset}")) + io.write(dump._translate("${reset}${color.dump.table}"), dump._format("text.dump.table_format", "%s", value), dump._translate("${reset}")) end -- print scalar value @@ -205,10 +209,26 @@ function dump._print_metatable(value, metatable, inner_indent, printed_set, prin return has_record end +-- returns printed_set, is_first_level +function dump._init_printed_set(printed_set) + local first_level = not printed_set + if type(printed_set) ~= "table" then + printed_set = { len = 0 } + end + return printed_set, first_level +end + -- print udata -function dump._print_udata(value, first_indent, remain_indent) +function dump._print_udata(value, first_indent, remain_indent, printed_set) + local first_level + printed_set, first_level = dump._init_printed_set(printed_set) io.write(first_indent) + + if not first_level then + return dump._print_udata_scalar(value) + end + local metatable = getmetatable(value) local inner_indent = remain_indent .. " " @@ -216,7 +236,7 @@ function dump._print_udata(value, first_indent, remain_indent) io.write(dump._translate("${reset}${color.dump.udata}[${reset}")) -- print metatable - local no_value = not dump._print_metatable(value, metatable, inner_indent, { len = 0 }, false) + local no_value = not dump._print_metatable(value, metatable, inner_indent, printed_set, false) -- print close brackets if no_value then @@ -229,7 +249,8 @@ end -- print table function dump._print_table(value, first_indent, remain_indent, printed_set) - local first_level = not printed_set + local first_level + printed_set, first_level = dump._init_printed_set(printed_set) io.write(first_indent) local metatable = getmetatable(value) local tostringmethod = metatable and rawget(metatable, "__tostring") @@ -239,7 +260,7 @@ function dump._print_table(value, first_indent, remain_indent, printed_set) return dump._print_table_scalar(strrep) end end - printed_set = printed_set or { len = 0 } + local inner_indent = remain_indent .. " " local first_value = true @@ -260,7 +281,7 @@ function dump._print_table(value, first_indent, remain_indent, printed_set) end -- print array items - local is_arr = table.is_array(value) and (table.maxn(value) < 2 * #value) + local is_arr = (value[1] ~= nil) and (table.maxn(value) < 2 * #value) if is_arr then for i = 1,table.maxn(value) do print_newline() @@ -306,12 +327,12 @@ function dump._print_table(value, first_indent, remain_indent, printed_set) end -- print value -function dump._print(value, indent) +function dump._print(value, indent, verbose) indent = tostring(indent or "") if type(value) == "table" then - dump._print_table(value, indent, indent:gsub(".", " "), nil) + dump._print_table(value, indent, indent:gsub(".", " "), not verbose) elseif type(value) == "userdata" then - dump._print_udata(value, indent, indent:gsub(".", " ")) + dump._print_udata(value, indent, indent:gsub(".", " "), not verbose) else io.write(indent) dump._print_scalar(value) diff --git a/xmake/core/base/utils.lua b/xmake/core/base/utils.lua index d8f1ec7c2..5b0c68a5e 100644 --- a/xmake/core/base/utils.lua +++ b/xmake/core/base/utils.lua @@ -35,8 +35,10 @@ function utils.dump(...) return ... end + local diagnosis = option.get("diagnosis") + -- show caller info - if option.get("diagnosis") then + if diagnosis then local info = debug.getinfo(2) local line = info.currentline if not line or line < 0 then line = info.linedefined end @@ -58,11 +60,11 @@ function utils.dump(...) end if values_count == 1 then - dump(values[1], indent or "") + dump(values[1], indent or "", diagnosis) io.write("\n") else for i = 1, values_count do - dump(values[i], indent or string.format("%2d: ", i)) + dump(values[i], indent or string.format("%2d: ", i), diagnosis) io.write("\n") end end diff --git a/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua b/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua index 5aa55a0c6..a6f19f93d 100644 --- a/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua +++ b/xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua @@ -30,14 +30,16 @@ local utils = require("base/utils") local table = require("base/table") local history = require("project/history") local dump = require("base/dump") +local option = require("base/option") -- print variables for interactive mode function sandbox_core_sandbox._interactive_dump(...) + local diagnosis = option.get("diagnosis") local values = table.pack(...) -- do not use #values since nil might be included local n = values.n if n <= 1 then - dump(values[1], "< ") + dump(values[1], "< ", diagnosis) io.write("\n") else local fmt = "< %d: " @@ -50,7 +52,7 @@ function sandbox_core_sandbox._interactive_dump(...) fmt = "< %2d: " end for i = 1, n do - dump(values[i], string.format(fmt, i)) + dump(values[i], string.format(fmt, i), diagnosis) io.write("\n") end end diff --git a/xmake/plugins/project/vsxmake/vsproj/Xmake.props b/xmake/plugins/project/vsxmake/vsproj/Xmake.props index 0198714f3..20432fec3 100644 --- a/xmake/plugins/project/vsxmake/vsproj/Xmake.props +++ b/xmake/plugins/project/vsxmake/vsproj/Xmake.props @@ -49,14 +49,14 @@ <XmakeRunDir Condition="!$([System.IO.Path]::IsPathRooted('$(XmakeRunDir)'))">$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)\$(XmakeRunDir)'))</XmakeRunDir> <!-- normalize paths --> - <XmakeProgramDir>$([MSBuild]::NormalizeDirectory('$(XmakeProgramDir)'))</XmakeProgramDir> - <XmakeProjectDir>$([MSBuild]::NormalizeDirectory('$(XmakeProjectDir)'))</XmakeProjectDir> - <XmakeScriptDir>$([MSBuild]::NormalizeDirectory('$(XmakeScriptDir)'))</XmakeScriptDir> - <XmakeBuilDir>$([MSBuild]::NormalizeDirectory('$(XmakeBuilDir)'))</XmakeBuilDir> - <XmakeTargetDir>$([MSBuild]::NormalizeDirectory('$(XmakeTargetDir)'))</XmakeTargetDir> - <XmakeConfigDir>$([MSBuild]::NormalizeDirectory('$(XmakeConfigDir)'))</XmakeConfigDir> - <XmakeConfigFileDir>$([MSBuild]::NormalizeDirectory('$(XmakeConfigFileDir)'))</XmakeConfigFileDir> - <XmakeRunDir>$([MSBuild]::NormalizeDirectory('$(XmakeRunDir)'))</XmakeRunDir> + <XmakeProgramDir>$([System.IO.Path]::GetFullPath('$(XmakeProgramDir)/'))</XmakeProgramDir> + <XmakeProjectDir>$([System.IO.Path]::GetFullPath('$(XmakeProjectDir)/'))</XmakeProjectDir> + <XmakeScriptDir>$([System.IO.Path]::GetFullPath('$(XmakeScriptDir)/'))</XmakeScriptDir> + <XmakeBuilDir>$([System.IO.Path]::GetFullPath('$(XmakeBuilDir)/'))</XmakeBuilDir> + <XmakeTargetDir>$([System.IO.Path]::GetFullPath('$(XmakeTargetDir)/'))</XmakeTargetDir> + <XmakeConfigDir>$([System.IO.Path]::GetFullPath('$(XmakeConfigDir)/'))</XmakeConfigDir> + <XmakeConfigFileDir>$([System.IO.Path]::GetFullPath('$(XmakeConfigFileDir)/'))</XmakeConfigFileDir> + <XmakeRunDir>$([System.IO.Path]::GetFullPath('$(XmakeRunDir)/'))</XmakeRunDir> </PropertyGroup> <PropertyGroup Label="XmakeFlagsFallback"> diff --git a/xmake/plugins/project/vsxmake/vsproj/Xmake.targets b/xmake/plugins/project/vsxmake/vsproj/Xmake.targets index 947251b97..05102ab40 100644 --- a/xmake/plugins/project/vsxmake/vsproj/Xmake.targets +++ b/xmake/plugins/project/vsxmake/vsproj/Xmake.targets @@ -19,7 +19,7 @@ <_XmakeBuilDir>$([MSBuild]::MakeRelative('$(XmakeProjectDir)', '$(XmakeBuilDir)').TrimEnd('/\'.ToCharArray()))</_XmakeBuilDir> <_XmakeConfigFlags>$(XmakeConfigFlags.Trim())</_XmakeConfigFlags> - <_XmakeConfigFlags>$(_XmakeConfigFlags) -p $(XmakePlat) -m $(XmakeMode) -a $(XmakeArch) -o "$(_XmakeBuilDir)"</_XmakeConfigFlags> + <_XmakeConfigFlags>-p $(XmakePlat) -m $(XmakeMode) -a $(XmakeArch) -o "$(_XmakeBuilDir)" $(_XmakeConfigFlags)</_XmakeConfigFlags> <_XmakeBuildFlags>$(XmakeBuildFlags.Trim())</_XmakeBuildFlags> <_XmakeBuildFlags Condition="$(XmakeWarning)">$(_XmakeBuildFlags) -w</_XmakeBuildFlags> @@ -86,10 +86,12 @@ MSBuild Properties: XmakeDefines: $(XmakeDefines) XmakeLanguages: $(XmakeLanguages) Xmake Path: + XmakeProgramDir: $(XmakeProgramDir) XmakeProjectDir: $(XmakeProjectDir) XmakeScriptDir: $(XmakeScriptDir) XmakeBuilDir: $(XmakeBuilDir) XmakeConfigDir: $(XmakeConfigDir) + XmakeConfigFileDir: $(XmakeConfigFileDir) XmakeIncludeDir: $(XmakeIncludeDir) XmakeLinkDir: $(XmakeLinkDir) Xmake Flags: diff --git a/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln b/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln index bc2872afe..fa719dfff 100644 --- a/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln +++ b/xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln @@ -20,11 +20,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Properties", "Properties", EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution -#Import(SlnConfig)# - EndGlobalSection +#Import(SlnConfig)# EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution -#Import(ProjConfig)# - EndGlobalSection +#Import(ProjConfig)# EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection diff --git a/xmake/themes/dark/xmake.lua b/xmake/themes/dark/xmake.lua index cb9c6a093..df6689401 100644 --- a/xmake/themes/dark/xmake.lua +++ b/xmake/themes/dark/xmake.lua @@ -52,14 +52,14 @@ theme("dark") set_color("build.target", "magenta") -- color dump - set_text("dump.default_format", "<%s>") - set_text("dump.udata_format", "[%s]") - set_text("dump.table_format", "{%s}") + set_text("dump.default_format", "%s") + set_text("dump.udata_format", "%s") + set_text("dump.table_format", "%s") set_text("dump.anchor", "&%s") set_text("dump.reference", "*%s") set_color("dump.anchor", "yellow") set_color("dump.reference", "yellow") - set_color("dump.default", "bright") + set_color("dump.default", "red") set_color("dump.udata", "yellow") set_color("dump.table", "bright") set_color("dump.string", "magenta bright") diff --git a/xmake/themes/default/xmake.lua b/xmake/themes/default/xmake.lua index 568e351e2..02acd816e 100644 --- a/xmake/themes/default/xmake.lua +++ b/xmake/themes/default/xmake.lua @@ -52,14 +52,14 @@ theme("default") set_color("build.target", "magenta") -- color dump - set_text("dump.default_format", "<%s>") - set_text("dump.udata_format", "[%s]") - set_text("dump.table_format", "{%s}") + set_text("dump.default_format", "%s") + set_text("dump.udata_format", "%s") + set_text("dump.table_format", "%s") set_text("dump.anchor", "&%s") set_text("dump.reference", "*%s") set_color("dump.anchor", "yellow") set_color("dump.reference", "yellow") - set_color("dump.default", "bright") + set_color("dump.default", "red") set_color("dump.udata", "yellow") set_color("dump.table", "bright") set_color("dump.string", "magenta bright") diff --git a/xmake/themes/emoji/xmake.lua b/xmake/themes/emoji/xmake.lua index da189e23f..8dc5a3ee5 100644 --- a/xmake/themes/emoji/xmake.lua +++ b/xmake/themes/emoji/xmake.lua @@ -52,14 +52,14 @@ theme("emoji") set_color("build.target", "magenta") -- color dump - set_text("dump.default_format", "<%s>") - set_text("dump.udata_format", "[%s]") - set_text("dump.table_format", "{%s}") + set_text("dump.default_format", "%s") + set_text("dump.udata_format", "%s") + set_text("dump.table_format", "%s") set_text("dump.anchor", "${anchor} %s") set_text("dump.reference", "${sailboat} %s") set_color("dump.anchor", "yellow") set_color("dump.reference", "yellow") - set_color("dump.default", "bright") + set_color("dump.default", "red") set_color("dump.udata", "yellow") set_color("dump.table", "bright") set_color("dump.string", "magenta bright") diff --git a/xmake/themes/plain/xmake.lua b/xmake/themes/plain/xmake.lua index 057d2ddf0..85ec56ee6 100644 --- a/xmake/themes/plain/xmake.lua +++ b/xmake/themes/plain/xmake.lua @@ -52,9 +52,9 @@ theme("plain") set_color("build.target", "") -- color dump - set_text("dump.default_format", "<%s>") - set_text("dump.udata_format", "[%s]") - set_text("dump.table_format", "{%s}") + set_text("dump.default_format", "%s") + set_text("dump.udata_format", "%s") + set_text("dump.table_format", "%s") set_text("dump.anchor", "&%s") set_text("dump.reference", "*%s") set_color("dump.anchor", "") |
