121 lines
2.6 KiB
Lua
Executable File
121 lines
2.6 KiB
Lua
Executable File
--
|
|
-- tests/config/test_links.lua
|
|
-- Test the list of linked objects retrieval function.
|
|
-- Copyright (c) 2012 Jason Perkins and the Premake project
|
|
--
|
|
|
|
T.config_links = { }
|
|
local suite = T.config_links
|
|
local project = premake5.project
|
|
local config = premake5.config
|
|
|
|
|
|
--
|
|
-- Setup and teardown
|
|
--
|
|
|
|
local sln, prj, cfg
|
|
|
|
function suite.setup()
|
|
_ACTION = "test"
|
|
sln, prj = test.createsolution()
|
|
system "macosx"
|
|
end
|
|
|
|
local function prepare(kind, part)
|
|
cfg = project.getconfig(prj, "Debug")
|
|
return config.getlinks(cfg, kind, part)
|
|
end
|
|
|
|
|
|
--
|
|
-- If no links are present, should return an empty table.
|
|
--
|
|
|
|
function suite.emptyResult_onNoLinks()
|
|
local r = prepare("all", "object")
|
|
test.isequal(0, #r)
|
|
end
|
|
|
|
|
|
--
|
|
-- System libraries which include path information are made project relative.
|
|
--
|
|
|
|
function suite.pathMadeRelative_onSystemLibWithPath()
|
|
location "build"
|
|
links { "../libs/z" }
|
|
local r = prepare("all", "fullpath")
|
|
test.isequal({ "../../libs/z" }, r)
|
|
end
|
|
|
|
|
|
--
|
|
-- On Windows, system libraries get the ".lib" file extensions.
|
|
--
|
|
|
|
function suite.libAdded_onWindowsSystemLibs()
|
|
system "windows"
|
|
links { "user32" }
|
|
local r = prepare("all", "fullpath")
|
|
test.isequal({ "user32.lib" }, r)
|
|
end
|
|
|
|
function suite.libAdded_onWindowsSystemLibs()
|
|
system "windows"
|
|
links { "user32.lib" }
|
|
local r = prepare("all", "fullpath")
|
|
test.isequal({ "user32.lib" }, r)
|
|
end
|
|
|
|
|
|
--
|
|
-- Check handling of shell variables in library paths.
|
|
--
|
|
|
|
function suite.variableMaintained_onLeadingVariable()
|
|
system "windows"
|
|
location "build"
|
|
links { "$(SN_PS3_PATH)/sdk/lib/PS3TMAPI" }
|
|
local r = prepare("all", "fullpath")
|
|
test.isequal({ "$(SN_PS3_PATH)/sdk/lib/PS3TMAPI.lib" }, r)
|
|
end
|
|
|
|
function suite.variableMaintained_onQuotedVariable()
|
|
system "windows"
|
|
location "build"
|
|
links { '"$(SN_PS3_PATH)/sdk/lib/PS3TMAPI.lib"' }
|
|
local r = prepare("all", "fullpath")
|
|
test.isequal({ '"$(SN_PS3_PATH)/sdk/lib/PS3TMAPI.lib"' }, r)
|
|
end
|
|
|
|
|
|
--
|
|
-- If fetching directories, the libdirs should be included in the result.
|
|
--
|
|
|
|
function suite.includesLibDirs_onDirectories()
|
|
libdirs { "../libs" }
|
|
local r = prepare("all", "directory")
|
|
test.isequal({ "../libs" }, r)
|
|
end
|
|
|
|
|
|
--
|
|
-- References to external projects should not appear in any results that
|
|
-- use file paths, since there is no way to know what the actual library
|
|
-- path might be. It is okay to return project objects though (right?)
|
|
--
|
|
|
|
function suite.skipsExternalProjectRefs()
|
|
links { "MyProject2" }
|
|
|
|
external "MyProject2"
|
|
kind "StaticLib"
|
|
language "C++"
|
|
|
|
local r = prepare("all", "fullpath")
|
|
test.isequal({}, r)
|
|
end
|
|
|