420 lines
12 KiB
Lua
420 lines
12 KiB
Lua
--
|
|
-- tests/actions/vstudio/cs2005/test_assembly_refs.lua
|
|
-- Test the assembly linking block of a Visual Studio 2005+ C# project.
|
|
-- Copyright (c) 2012-2015 Jason Perkins and the Premake project
|
|
--
|
|
|
|
local p = premake
|
|
local suite = test.declare("vstudio_cs2005_assembly_refs")
|
|
local dn2005 = p.vstudio.dotnetbase
|
|
|
|
|
|
--
|
|
-- Setup and teardown
|
|
--
|
|
|
|
local wks, prj
|
|
|
|
function suite.setup()
|
|
p.action.set("vs2010")
|
|
wks = test.createWorkspace()
|
|
language "C#"
|
|
end
|
|
|
|
local function prepare(platform)
|
|
prj = test.getproject(wks, 1)
|
|
|
|
dn2005.references(prj)
|
|
end
|
|
|
|
|
|
--
|
|
-- Block should be empty if the project has no links.
|
|
--
|
|
|
|
function suite.emptyGroup_onNoLinks()
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
|
|
--
|
|
-- Check handling of system assemblies.
|
|
--
|
|
|
|
function suite.assemblyRef_onSystemAssembly()
|
|
links { "System" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="System" />
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="System" />
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
|
|
--
|
|
-- Assemblies referenced by a path should get a hint.
|
|
--
|
|
|
|
function suite.assemblyRef_onPath()
|
|
links { "../Libraries/nunit.framework" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
|
|
--
|
|
-- Assemblies referenced via a token that expands to an absolute
|
|
-- path should still end up with a relative hint path.
|
|
--
|
|
|
|
function suite.assemblyRef_onAbsoluteToken()
|
|
links { "%{path.getdirectory(os.getcwd())}/Libraries/nunit.framework" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
|
|
--
|
|
-- Add configuration condition to VS csproj references ItemGroup
|
|
--
|
|
|
|
function suite.assemblyRef_onConfigurationCondition()
|
|
links { "%{path.getdirectory(os.getcwd())}/Libraries/%{cfg.buildcfg}/nunit.framework" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\Debug\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\Release\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
|
|
--
|
|
-- The assembly should not be copied to the target directory if the
|
|
-- NoCopyLocal flag has been set for the configuration.
|
|
--
|
|
|
|
function suite.markedPrivate_onNoCopyLocal()
|
|
links { "../Libraries/nunit.framework" }
|
|
flags { "NoCopyLocal" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
|
|
--
|
|
-- If there are entries in the copylocal() list, then only those
|
|
-- specific libraries should be copied.
|
|
--
|
|
|
|
function suite.markedPrivate_onCopyLocalListExclusion()
|
|
links { "../Libraries/nunit.framework" }
|
|
copylocal { "SomeOtherProject" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
function suite.notMarkedPrivate_onCopyLocalListInclusion()
|
|
links { "../Libraries/nunit.framework" }
|
|
copylocal { "../Libraries/nunit.framework" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>..\Libraries\nunit.framework.dll</HintPath>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
|
|
--
|
|
-- NuGet packages should get references.
|
|
--
|
|
|
|
if _OPTIONS["test-all"] then
|
|
function suite.nuGetPackages_net45()
|
|
dotnetframework "4.5"
|
|
nuget { "Newtonsoft.Json:10.0.2" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="Newtonsoft.Json">
|
|
<HintPath>packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="Newtonsoft.Json">
|
|
<HintPath>packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
function suite.nuGetPackages_net30()
|
|
dotnetframework "3.0"
|
|
nuget { "Newtonsoft.Json:10.0.2" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="Newtonsoft.Json">
|
|
<HintPath>packages\Newtonsoft.Json.10.0.2\lib\net20\Newtonsoft.Json.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="Newtonsoft.Json">
|
|
<HintPath>packages\Newtonsoft.Json.10.0.2\lib\net20\Newtonsoft.Json.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
end
|
|
|
|
|
|
--
|
|
-- If there are multiple assemblies in the NuGet package, they all should be
|
|
-- referenced.
|
|
--
|
|
|
|
if _OPTIONS["test-all"] then
|
|
function suite.nuGetPackages_multipleAssemblies()
|
|
dotnetframework "2.0"
|
|
nuget { "NUnit:3.6.1" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
end
|
|
|
|
|
|
--
|
|
-- NuGet packages should respect copylocal() and the NoCopyLocal flag.
|
|
--
|
|
|
|
if _OPTIONS["test-all"] then
|
|
function suite.nugetPackages_onNoCopyLocal()
|
|
dotnetframework "2.0"
|
|
nuget { "NUnit:3.6.1" }
|
|
flags { "NoCopyLocal" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
function suite.nugetPackages_onCopyLocalListExclusion()
|
|
dotnetframework "2.0"
|
|
nuget { "NUnit:3.6.1" }
|
|
copylocal { "SomeOtherProject" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>False</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
|
|
function suite.nugetPackages_onCopyLocalListInclusion()
|
|
dotnetframework "2.0"
|
|
nuget { "NUnit:3.6.1" }
|
|
copylocal { "NUnit:3.6.1" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="nunit.framework">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\nunit.framework.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="NUnit.System.Linq">
|
|
<HintPath>packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
end
|
|
|
|
|
|
--
|
|
-- NuGet packages with unconventional folder structures should be handled
|
|
-- properly.
|
|
--
|
|
|
|
if _OPTIONS["test-all"] then
|
|
function suite.nuGetPackages_netFolder()
|
|
dotnetframework "4.5"
|
|
nuget { "MetroModernUI:1.4.0" }
|
|
prepare()
|
|
test.capture [[
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
<Reference Include="MetroFramework.Design">
|
|
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Design.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="MetroFramework">
|
|
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="MetroFramework.Fonts">
|
|
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Fonts.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
<ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
<Reference Include="MetroFramework.Design">
|
|
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Design.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="MetroFramework">
|
|
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
<Reference Include="MetroFramework.Fonts">
|
|
<HintPath>packages\MetroModernUI.1.4.0.0\lib\net\MetroFramework.Fonts.dll</HintPath>
|
|
<Private>True</Private>
|
|
</Reference>
|
|
</ItemGroup>
|
|
]]
|
|
end
|
|
end
|