summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-07-16 17:28:30 +0800
committerGitHub <[email protected]>2019-07-16 17:28:30 +0800
commit0724fda9aa61ee9d2b39198559a08cd22064d7a3 (patch)
tree1dc6c47bc57d31c41fd11fa9d82ebe166a7cd9c5
parentd6be8e7effeca32a035ce89f1d02c28501b6a839 (diff)
parent18714381a6257fd93c93344cb559fc409f6b1017 (diff)
Merge pull request #486 from OpportunityLiu/dev
Improve dump & fix vsxmake
-rw-r--r--.appveyor.yml2
-rw-r--r--tests/cli/utils/test.lua4
-rw-r--r--tests/plugins/project/test.lua59
-rw-r--r--tests/runner.lua2
-rw-r--r--xmake/core/base/dump.lua47
-rw-r--r--xmake/core/base/utils.lua8
-rw-r--r--xmake/core/sandbox/modules/import/core/sandbox/sandbox.lua6
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/Xmake.props16
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/Xmake.targets4
-rw-r--r--xmake/plugins/project/vsxmake/vsproj/templates/sln/vsxmake.sln6
-rw-r--r--xmake/themes/dark/xmake.lua8
-rw-r--r--xmake/themes/default/xmake.lua8
-rw-r--r--xmake/themes/emoji/xmake.lua8
-rw-r--r--xmake/themes/plain/xmake.lua6
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", "")