From aa044b383447ddf8e01ad2e502174483e88813ef Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 11 Jun 2009 21:35:20 +0000 Subject: [PATCH] Support running unit tests in .NET 4.0 projects. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/dotnet4@4278 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Src/UnitTestApplicationStartHelper.cs | 36 ++++--- src/Automated.proj | 26 ++--- .../Core/Test/ICSharpCode.Core.Tests.csproj | 3 +- src/Setup/SharpDevelop.Setup.wixproj.user | 2 +- src/Tools/NUnit/buildnunitconsole.bat | 2 + src/Tools/NUnit/nunit-console-dotnet4-x86.exe | Bin 0 -> 32768 bytes .../nunit-console-dotnet4-x86.exe.config | 91 ++++++++++++++++++ src/Tools/NUnit/nunit-console-dotnet4.exe | Bin 0 -> 32768 bytes .../NUnit/nunit-console-dotnet4.exe.config | 91 ++++++++++++++++++ src/Tools/Tools.build | 11 +-- src/Tools/UpdateAssemblyInfo/Main.cs | 7 ++ .../UpdateAssemblyInfo.csproj | 2 - src/Tools/UpdateAssemblyInfo/app.manifest | 21 ---- .../bin/Debug/UpdateAssemblyInfo.exe | Bin 20480 -> 20480 bytes 14 files changed, 234 insertions(+), 58 deletions(-) create mode 100644 src/Tools/NUnit/nunit-console-dotnet4-x86.exe create mode 100644 src/Tools/NUnit/nunit-console-dotnet4-x86.exe.config create mode 100644 src/Tools/NUnit/nunit-console-dotnet4.exe create mode 100644 src/Tools/NUnit/nunit-console-dotnet4.exe.config delete mode 100644 src/Tools/UpdateAssemblyInfo/app.manifest diff --git a/src/AddIns/Misc/UnitTesting/Src/UnitTestApplicationStartHelper.cs b/src/AddIns/Misc/UnitTesting/Src/UnitTestApplicationStartHelper.cs index f4f7e81e41..f51abedeba 100644 --- a/src/AddIns/Misc/UnitTesting/Src/UnitTestApplicationStartHelper.cs +++ b/src/AddIns/Misc/UnitTesting/Src/UnitTestApplicationStartHelper.cs @@ -31,17 +31,21 @@ namespace ICSharpCode.UnitTesting return Path.Combine(FileUtility.ApplicationRootPath, @"bin\Tools\NUnit"); } } - + /// - /// returns full/path/to/Tools/NUnit/nunit-console.exe or nunit-console-x86.exe if the - /// project platform target is x86. + /// returns full/path/to/Tools/NUnit/nunit-console.exe (or whichever nunit-console exe is right + /// for the project - there are different .exes for .NET 4.0 and for x86-only projects. /// public string UnitTestApplication { get { - string exe = "nunit-console.exe"; + string exe = "nunit-console"; + if (IsDotNet40Project(project)) { + exe += "-dotnet4"; + } if (IsPlatformTarget32Bit(project)) { - exe = "nunit-console-x86.exe"; + exe += "-x86"; } + exe += ".exe"; return Path.Combine(UnitTestApplicationDirectory, exe); } } @@ -66,12 +70,12 @@ namespace ICSharpCode.UnitTesting /// /// Use /labels directive. /// - public bool Labels = false; + public bool Labels = false; /// /// Use /nodots directive. /// - public bool NoDots = false; + public bool NoDots = false; /// /// File to write xml output to. Default = null. @@ -94,7 +98,7 @@ namespace ICSharpCode.UnitTesting public string Results; /// - /// The namespace that tests need to be a part of if they are to + /// The namespace that tests need to be a part of if they are to /// be run. /// public string NamespaceFilter; @@ -131,7 +135,7 @@ namespace ICSharpCode.UnitTesting return project; } } - + /// /// Gets the full command line to run the unit test application. /// This is the combination of the UnitTestApplication and @@ -161,9 +165,9 @@ namespace ICSharpCode.UnitTesting b.Append(" /nothread"); if (NoLogo) b.Append(" /nologo"); - if (Labels) + if (Labels) b.Append(" /labels"); - if (NoDots) + if (NoDots) b.Append(" /nodots"); if (XmlOutputFile != null) { b.Append(" /xml=\""); @@ -207,5 +211,15 @@ namespace ICSharpCode.UnitTesting } return false; } + + bool IsDotNet40Project(IProject project) + { + MSBuildBasedProject msbuildProject = project as MSBuildBasedProject; + if (msbuildProject != null) { + string targetFrameworkVersion = msbuildProject.GetEvaluatedProperty("TargetFrameworkVersion"); + return String.Compare(targetFrameworkVersion, "v4.0", true) == 0; + } + return false; + } } } diff --git a/src/Automated.proj b/src/Automated.proj index f0c239bacf..695b24193c 100644 --- a/src/Automated.proj +++ b/src/Automated.proj @@ -21,7 +21,7 @@ (but this works using the command line) --> - "$(MSBuildBinPath)\..\v3.5\msbuild.exe" + "$(MSBuildBinPath)\..\v4.0.20506\msbuild.exe" /p:Configuration=Release $(BuildProperties) "/p:SharpDevelopBinPath=$(SharpDevelopBin)" $(BuildProperties) "/p:BooBinPath=$(SharpDevelopSrc)\AddIns\BackendBindings\Boo\RequiredLibraries" @@ -67,14 +67,14 @@ - - + - @@ -92,20 +92,20 @@ - - - + - - - + diff --git a/src/Main/Core/Test/ICSharpCode.Core.Tests.csproj b/src/Main/Core/Test/ICSharpCode.Core.Tests.csproj index 450dae3f57..85220ab775 100644 --- a/src/Main/Core/Test/ICSharpCode.Core.Tests.csproj +++ b/src/Main/Core/Test/ICSharpCode.Core.Tests.csproj @@ -1,4 +1,4 @@ - + Debug AnyCPU @@ -21,6 +21,7 @@ False AnyCPU false + v4.0 true diff --git a/src/Setup/SharpDevelop.Setup.wixproj.user b/src/Setup/SharpDevelop.Setup.wixproj.user index 12f38fb5bd..80d9e85abb 100644 --- a/src/Setup/SharpDevelop.Setup.wixproj.user +++ b/src/Setup/SharpDevelop.Setup.wixproj.user @@ -1,6 +1,6 @@  - 1 + 4260 PRODUCTBUILDVERSION=$(SetupProductBuildVersion) \ No newline at end of file diff --git a/src/Tools/NUnit/buildnunitconsole.bat b/src/Tools/NUnit/buildnunitconsole.bat index be9cc0b66a..bd33224f4b 100644 --- a/src/Tools/NUnit/buildnunitconsole.bat +++ b/src/Tools/NUnit/buildnunitconsole.bat @@ -2,6 +2,8 @@ copy nunit-console.exe nunit-console-x86.exe "%programfiles%\Microsoft.net\sdk\v2.0\bin\corflags" /32bit+ nunit-console-x86.exe @IF %ERRORLEVEL% NEQ 0 GOTO err +copy nunit-console.exe nunit-console-dotnet4.exe +copy nunit-console-x86.exe nunit-console-dotnet4-x86.exe @exit /B 0 :err @PAUSE diff --git a/src/Tools/NUnit/nunit-console-dotnet4-x86.exe b/src/Tools/NUnit/nunit-console-dotnet4-x86.exe new file mode 100644 index 0000000000000000000000000000000000000000..7e7a6d8b7f3b5f4a89b8f2d66e4ec811cbd1d617 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/src/Tools/NUnit/nunit-console-dotnet4-x86.exe.config b/src/Tools/NUnit/nunit-console-dotnet4-x86.exe.config new file mode 100644 index 0000000000..5c4cb25579 --- /dev/null +++ b/src/Tools/NUnit/nunit-console-dotnet4-x86.exe.config @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Tools/NUnit/nunit-console-dotnet4.exe b/src/Tools/NUnit/nunit-console-dotnet4.exe new file mode 100644 index 0000000000000000000000000000000000000000..2c644a9a0de728143d616c4f383061164d33ecca GIT binary patch literal 32768 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Tools/Tools.build b/src/Tools/Tools.build index 4dcc2ffcee..9fe4bf0d15 100644 --- a/src/Tools/Tools.build +++ b/src/Tools/Tools.build @@ -13,7 +13,7 @@ - + @@ -59,15 +59,8 @@ - - - - - - - - + diff --git a/src/Tools/UpdateAssemblyInfo/Main.cs b/src/Tools/UpdateAssemblyInfo/Main.cs index 6adb46c53a..ab075076ef 100644 --- a/src/Tools/UpdateAssemblyInfo/Main.cs +++ b/src/Tools/UpdateAssemblyInfo/Main.cs @@ -60,6 +60,13 @@ namespace UpdateAssemblyInfo string versionNumber = GetMajorVersion() + "." + revisionNumber; UpdateStartup(); UpdateRedirectionConfig(versionNumber); + foreach (string arg in args) { + if (arg == "--REVISION") { + using (StreamWriter writer = new StreamWriter("REVISION")) { + writer.Write(revisionNumber); + } + } + } return 0; } } catch (Exception ex) { diff --git a/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj b/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj index 799d4d846e..63121d2731 100644 --- a/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj +++ b/src/Tools/UpdateAssemblyInfo/UpdateAssemblyInfo.csproj @@ -20,7 +20,6 @@ false 1607 v2.0 - app.manifest C:\Users\Daniel\AppData\Roaming\ICSharpCode/SharpDevelop3.0\Settings.SourceAnalysis @@ -44,7 +43,6 @@ - diff --git a/src/Tools/UpdateAssemblyInfo/app.manifest b/src/Tools/UpdateAssemblyInfo/app.manifest deleted file mode 100644 index 81400d66f5..0000000000 --- a/src/Tools/UpdateAssemblyInfo/app.manifest +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - diff --git a/src/Tools/UpdateAssemblyInfo/bin/Debug/UpdateAssemblyInfo.exe b/src/Tools/UpdateAssemblyInfo/bin/Debug/UpdateAssemblyInfo.exe index b804d3b95931b2c7c6a5aa188b62c42b5d645bea..22ab66c5e265707b20c2d5b220732791d56790c1 100755 GIT binary patch delta 2766 zcmbVOZ%iD=6@N3cd$)HS>)Ts6z<|9R1kOGV&H-Z*1I8_hbB;(57#kE3`(j_wC78o| zI4vInZW>z-QJv6<^2dr4TdveLY9c43t*jcF&2Qe!y!UR8ongn$u;)&S%lRz}&(!h_JqxexH7|A(?IV<4B12!O zvqJ}nLYTKhQ6vA(n&l{K;td<*ldO>&`r>PBujx<^5GePda?+`C6ToFe0&_;>!@86l z2y5&OIUMd20V^P130IdHpQfR8cMwg*u}9EWiVwr_HuT8=1>#`{L2)x8Sw`+TwZu}| zO56DKPr%4}Yxf*+I~cV~5+hd7DmiWIWa;h>2B-~a^afKKB-_ayhO7Ylg0_z=->jcV z%a?n5EtOfmvSpxQ`SMXEy#ju#q+-M_u}ZAqsoV|CBRUNZd@ENSR#&I?H1bjThe+?7#c$8B$AIJcqEXLa>>1U(&b_`ehJguIQM6G3ZZ&cB z41$)9tRDW6HK!+6t-B4wK?VQtw!RIt{Kme2ZeGw-aP2E}{tItI?kUJijX>T3r>$99 z6n^Hn{K+;lHpVP1kgtPcq+%o=Qvlsq6^WLKUrawq4LVR|34BqU4wkMyq-nnljV0Ey2TMA$`RG+*F1*sY56-~K*)f5 zp;wWt5IoV$*Iarj1&kHniUd|^0`RVl(RTA6u-$WnAo*ZHCR*N8^imZDji4}98-A*iJ>~B6GKQF3Kwrtuwv(arP5rf!ndNKLJBRc^~JYfFblkvw99Vz zV1Tc1Cq&1TC_%F--DvqXNE%nYd(C~)Qgw*jCLF@Zx65}cDw;fc_^}u6%}z1u)$=x& zd1D+4me}%}ipHk@6a(i)Toe%p;^V*;w#xe|9Y>?k%=(T6XXOLg;#((s*UwEyh>6-kq>PK@4G2noYUZA%r$`J_& zFro#zKsB7x`Q_RB6yqAbg!odrkEs!}iw(uu7nI;Sb;1Xfu9mf8_VMy;J4g%if#O9 zdQd#eXXt(L6Mg}h*D?N`_yvE@Ltdh<#30YmKgDnOZ)v^ufyeM6B=y=Av;$Y zPw*=Cyxz#`n8Ivg@9O;`1pGsyj$P6-B0!JogM16L^YVC2YvOyNg{o;Dtxewt+YoCL zyTZbGm)E~k)3spJmn0^ zYfk^-zB)rRmM1AmgLDt=r8NFr)AS%cK+L*DvN+bTUki^;zccgZ#$WZnddInQdoyUvD9?5DWhrNxA62A`Mu)LBuz=maa z^ESjIKFfA1CsCgOM^Fdw0XBfNF*wvWlzyy#^u+l;@BZm8Ke=m6G;Y=8+2;M`H6T`s z*(1&5dQLqHb!CfpCPQ4BsT2H5w)jFSAo?7qD^nyN>xeoiU4`tyqb?{sv69Ho z+jZG`I8M!EB+>9s5pZqL5wYQ2MS`H+$r0wlJMNG~nhQ&rM{Z8=@S+sipwr(Ni|2J2~;cEZ@ delta 2977 zcmbVOYitzP6+ZXgnb{d*FWv`h8)KNYgBfhEy#(_p*kLV*C>UG|Fp3qWWU%+J?>2%H^x)CE1kQtEyzqIVH z)>xMusNN+)k&wJlT^~2z`3(U64n%j5qavmZKdE-oSW^~RPBoPGAW{+Xzph*&%32#U z=8wzf$lg=}T%#Gk%~Y6F$n;P^1zn5j6w#fy;_HAQiWn_D`(!wp*Z?Kth`$Z@HQWi* z8pXPJL8Nsc4sMh}F*zQ!XI3DTa1?bCAc@eCv12M*Xjirv9z zqEHLNG75QhSSx70I)p;2tW+peDw7QVEN~}7M4Go!f&5F5gT5dIpj#=>RNocKaO&l% z*vj<6UeQeDlyFudK%oJol1#%}4Tg|YHAm${Yvf2QlY8$z3){(Qf|rUK0v{CBw%mVX zkw<~8tY)D`1-Pfg!7#^v4#7ioGZZ4@JdPEysFb{f-FjkO%W-*w|tfVi(bNCo?_j=Ekc;I(w*7xWFilPJPb->OOokI58vd^di>e7zn=P9$VQAh1D4^2B z++f9X3lO}ujhFSfiY#++Xrk6q7z<-_DbbnzDQXX%a0MA&6T(!z^C@)MSOOZQnO5_@ z7WRdc>NJBT{|3D8Qb=u4LH?f=zfNXq>?mF#>g>QK;j#~U%>RnN#Z0#Ua=m14!hLZ+!(!_a7#p1UOBr^&d zpgN^gtrS?i2cc;GpyNvO^_Aq`LA|E85g=!|BEc((<`H2Y&2idgwl*GBPq!@|oNVj@ z#nj8EYn#{Is|GGONeP@J1b<9NpF8C*Yi(QYnq$8wKN~cK+Jiu+)XSn}HFq}2c%9ST zr4coqB>D!{_jT|Gi+(OYT0p1hIc)EO(hVG>G~Q+Eb=I_dV9zeB83-@Q>ALM~ll*So z7di*UZZc>*pi|;HH|UE2e^q=9{Eq{AOWYI&>6+3+LFI{+&(5qB{Wjv!d3uEsoY4&& zC!$$;l~!?158(VL>2+%48dYL&l=L<=L)wa|RMH=*mFsjFL!+by)&Xf320%&MSt~aw zvu;7^XN{0fV@imgsvTupxEZ0^lJQI0YGKloj(nm1TQjrdiY@#seMFq*)AWKk&%a5R z#Rc%+7ccRbX_Q^zuhOr?0iLDn;uX-#;s^XS`lt92e+$+(_%EnIy8?Za_G{2q?a_e$ zJ?LibUHE3S13VJ=ewp@wSGgMbZ|O1ZU;N#DG^J_cZwR!7zlXn~2L)q0^v%LzPv~8u zj?L(;ypBDmH}fP@nDy+czFSlRKOmCqE&Wkp(G&Usz5&)NvZkS<)feqlPp3g+^a(`k zWhs#f=vjV=|BT<{x40#CiesWr9&hN?R)|k(bFViX5wbUVaG5u8uqT5E(E?uyB}*5aXK7SXj4tI2_ht4Tmw7(QL>DfJd`t zNDD^?qppIP3T6sZflYH6qDKeA;KJMr>52!;Al48auR;*U0MX&QUw*aiakgLHY1@*( zN6cO|3hM9tIPP=!TshY!`%($UrJFhubxNNo3iOcT?b&34r@QC=o{IBl`P(v_eu{rv z%$-kLf?4tp8#hNRtE=D+P5S86Lsb=)Wyy}t%nVkmE160K8p}F#%(W+cx8UZ7T-zJ5 zi;x?A_xPk+D7wQBKZyXvoR{C{o^Zz+?YuYa+Ecl)F?%>y$Q~VYOHoF0W3HXe58J*w znky9jY5PRZFRG{X@vL&U@jDDdwtc4LQCbEH?n273g#_6m&iv8IBD9`em~e-3Bhvu@ zK;P~e8uBLdMSG{0FZ$k?9XM?(g|f1RJ^2&f$ABxly6rwh_OVBAe4=QN%y_=-!Y?Rm z(Npa==es?_F80(h zH*e3N2|hY&ADy