-- -- 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 suite = test.declare("vstudio_cs2005_assembly_refs") local cs2005 = premake.vstudio.cs2005 -- -- Setup and teardown -- local wks, prj function suite.setup() premake.action.set("vs2010") wks = test.createWorkspace() language "C#" end local function prepare(platform) prj = test.getproject(wks, 1) cs2005.references(prj) end -- -- Block should be empty if the project has no links. -- function suite.emptyGroup_onNoLinks() prepare() test.capture [[ ]] end -- -- Check handling of system assemblies. -- function suite.assemblyRef_onSystemAssembly() links { "System" } prepare() test.capture [[ ]] end -- -- Assemblies referenced by a path should get a hint. -- function suite.assemblyRef_onPath() links { "../Libraries/nunit.framework" } prepare() test.capture [[ ..\Libraries\nunit.framework.dll ]] 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 [[ ..\Libraries\nunit.framework.dll ]] 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 [[ ..\Libraries\nunit.framework.dll False ]] 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 [[ ..\Libraries\nunit.framework.dll False ]] end function suite.notMarkedPrivate_onCopyLocalListInclusion() links { "../Libraries/nunit.framework" } copylocal { "../Libraries/nunit.framework" } prepare() test.capture [[ ..\Libraries\nunit.framework.dll ]] end -- -- NuGet packages should get references. -- function suite.nuGetPackages_net45() dotnetframework "4.5" nuget { "Newtonsoft.Json:10.0.2" } prepare() test.capture [[ packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll True ]] end function suite.nuGetPackages_net30() dotnetframework "3.0" nuget { "Newtonsoft.Json:10.0.2" } prepare() test.capture [[ packages\Newtonsoft.Json.10.0.2\lib\net20\Newtonsoft.Json.dll True ]] end -- -- If there are multiple assemblies in the NuGet package, they all should be -- referenced. -- function suite.nuGetPackages_multipleAssemblies() dotnetframework "2.0" nuget { "NUnit:3.6.1" } prepare() test.capture [[ packages\NUnit.3.6.1\lib\net20\nunit.framework.dll True packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll True ]] end -- -- NuGet packages should respect copylocal() and the NoCopyLocal flag. -- function suite.nugetPackages_onNoCopyLocal() dotnetframework "2.0" nuget { "NUnit:3.6.1" } flags { "NoCopyLocal" } prepare() test.capture [[ packages\NUnit.3.6.1\lib\net20\nunit.framework.dll False packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll False ]] end function suite.nugetPackages_onCopyLocalListExclusion() dotnetframework "2.0" nuget { "NUnit:3.6.1" } copylocal { "SomeOtherProject" } prepare() test.capture [[ packages\NUnit.3.6.1\lib\net20\nunit.framework.dll False packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll False ]] end function suite.nugetPackages_onCopyLocalListInclusion() dotnetframework "2.0" nuget { "NUnit:3.6.1" } copylocal { "NUnit:3.6.1" } prepare() test.capture [[ packages\NUnit.3.6.1\lib\net20\nunit.framework.dll True packages\NUnit.3.6.1\lib\net20\NUnit.System.Linq.dll True ]] end