Hi Erich, 1) I know about the COMPLUS_VERSION "trick", but instead I was planning on including versions of NUnit that have been built specifically for each support target framework.
We already do this right now for NUnit, but we're just not including nunit-console yet. That way you don't need this "trick", and you have a version of NUnit that really matches the current target framework; meaning it can also uses specific constructs / API's of the current target framework. 2) Nope, we don't need this because we have versions of NUnit built specifically for the supported target frameworks. That being said, the COMPLUS_VERSION trick might be useful for other managed applications that are executed using the exec task (and for which there's no specific version targeting the current framework version). I'll also consider adding a arguments or runtimearguments node to the framework node in the NAnt application configuration file. Question is: does everyone that uses the exec task (or any other task deriving from ExternalProgramBase) for launching managed applications want (to force) the managed app to run on the CLR matching the current target framework ? I (finally) understand your intentions. I shouldn't do anything NOT-workrelated until I'm fully awake :-) Gert ----- Original Message ----- From: "Erich Eichinger" <[EMAIL PROTECTED]> To: "Gert Driesen" <[EMAIL PROTECTED]>; "SPEAR, Adrian, GBM" <[EMAIL PROTECTED]>; "Bob Archer" <[EMAIL PROTECTED]>; <nant-users@lists.sourceforge.net> Sent: Friday, May 04, 2007 11:31 AM Subject: RE: [NAnt-users] NUnit NAnt task roadmap No prob ;-) While looking for an easy solution to launch the nunit-console.exe using the right clr runtime, I found that at least on windows (unfort. I don't have a linux box) one needs the following 1) using MS CLR: Set COMPLUS_VERSION environment variable e.g. c:\set COMPLUS_VERSION=v2.0.507272 c:\nunit-console.exe <args> 2) using Mono: pass --runtime=<clrversion> argument to mono.exe e.g. "mono.exe --runtime=v2.0.50727 nunit-console.exe" A dedicated <nunit-console> task is fine, but would basically need the same mechanisms: specify the right clr version and launch the executable. When doing a nant.settings.currentframework='mono-2.0' I would expect an <exec program='some.exe' managed='true' > to launch some.exe using the Mono 2.0 runtime - which is not the case atm. E.g. on my machine the "DefaultCLRVersion" of mono is set to 1.1.4322 - thus if <exec> launches the process with "mono.exe some.exe" it will execute using the default clr version. Only "mono.exe --runtime=2.0 some.exe" will produce the expected result. It is easy to define the enviroment variable in the <nant/frameworks/platform/framework/environment> section of nant.exe.config, which causes the enviroment variable be set automatically by ExternalProgramBase.PrepareProcess(). But it is impossible to define additional arguments to be passed to the runtimeengine (e.g. "mono.exe") My suggestion is to introduce a "RuntimeEngineArguments:string" property on class NAnt.Core.FrameworkInfo which allows for specifying additional arguments and in NAnt.Core.Tasks.ExternalProgramBase.PrepareProcess() change the line 425 (in the current nightly) to process.StartInfo.Arguments = string.Format(CultureInfo.InvariantCulture, "{0} \"{1}\" {2}", Project.TargetFramework.RuntimeEngineArguments, ProgramFileName, CommandLine); Could I put some more light on this now? cheers, Erich ________________________________ From: Gert Driesen [mailto:[EMAIL PROTECTED] Sent: Fri 2007-05-04 10:28 To: Erich Eichinger; 'SPEAR, Adrian, GBM'; 'Bob Archer'; nant-users@lists.sourceforge.net Subject: RE: [NAnt-users] NUnit NAnt task roadmap and what would the exec task do with this ? how will this ensure that the correct version of nunit-console is executed ? please enlighten me ;-) ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Erich Eichinger Sent: vrijdag 4 mei 2007 10:20 To: Gert Driesen; SPEAR, Adrian, GBM; Bob Archer; nant-users@lists.sourceforge.net Subject: Re: [NAnt-users] NUnit NAnt task roadmap Maybe my proposal is misleading: the "--runtime==" argument from my example is only passed to the runtimeengine - and only if it is specified in the framework configuration in nant.exe.config. Erich ________________________________ From: Gert Driesen [mailto:[EMAIL PROTECTED] Sent: Fri 2007-05-04 10:17 To: Erich Eichinger; 'SPEAR, Adrian, GBM'; 'Bob Archer'; nant-users@lists.sourceforge.net Subject: RE: [NAnt-users] NUnit NAnt task roadmap Eric, Not everyone program you start using <exec> will like the --runtime=.... argument. Configuring it on the framework level would also give the impression that it applies to all tasks. I'd still prefer an <nunit-console> task, but if there's no interest in this .... and if there is, feel free to beat me to it ;-) Gert ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Erich Eichinger Sent: vrijdag 4 mei 2007 10:09 To: Gert Driesen; SPEAR, Adrian, GBM; Bob Archer; nant-users@lists.sourceforge.net Subject: Re: [NAnt-users] NUnit NAnt task roadmap After playing around a little bit, I found that using <exec> would be a convenient solution. "would" because unfortunately it is not possible to pass arguments to the runtimeengine. Otherwise the solution would be rather easy by configuring the frameworks within nant.exe.config. E.g.: [NAnt.exe.config] ... <framework name="net-2.0" family="net" version="2.0" description="Microsoft .NET Framework 2.0" runtimeengine="" clrversion="2.0.50727" > .... <environment> <env name="COMPLUS_VERSION" value="v2.0.50727" /> </environment> .... </framework> <framework name="mono-2.0" family="mono" version="2.0" description="Mono 2.0 Profile" runtimeengine="${runtimeEngine}" runtimeengineargs="--runtime=v2.0.50727" <-- New Attribute clrversion="2.0.50727" > ... </framework> ... Having the frameworks configured like this would cause any exec task to be started within the right runtime engine + version and allows for simply writing <target name="test"> <exec useruntimeengine="true" workingdir="${build.outputdir}/${nant.settings.currentframework}" program="${nunit.exe}" > <arg value="${project::get-name()}.Tests.dll" /> </exec> </target> to test an assembly against the current ${nant.settings.currentframework} cheers, Erich P.S.: Of course <exec> can't guarantee the clr version if the executable uses a <startup> section. ________________________________ From: Gert Driesen [mailto:[EMAIL PROTECTED] Sent: Thu 2007-05-03 18:32 To: 'SPEAR, Adrian, GBM'; 'Bob Archer'; Erich Eichinger; nant-users@lists.sourceforge.net Subject: RE: [NAnt-users] NUnit NAnt task roadmap You're wrong on this. Unless if you're sure that your build file will allow you to run your unit tests on Mono or a specific version of the MS CLR ... -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of SPEAR, Adrian, GBM Sent: donderdag 3 mei 2007 16:03 To: 'Gert Driesen'; Bob Archer; Erich Eichinger; nant-users@lists.sourceforge.net Subject: Re: [NAnt-users] NUnit NAnt task roadmap To be honest - I don't see the need for a task to wrap nunit-console and the like (e.g. ncover.console.exe). As Bob states - just use an exec task to invoke the console application. I have created a simple .build file which depending upon parameters supplied will use exec to invoke typemock and ncover with the correct params to also call nunit for a combined unit test / code coverage profile run - this script also adapts the command line whether typemock is linked or not.... This works well for me and I only have to supply directories for nunit/ncover and typemock if I am not using PATH. <project name="integration.codecoverage" default="codecoverage"> <!-- required property values --> <property name="integration.codecoverage.workingdirectory" value="" overwrite="false"/> <!-- required property values --> <!-- overridable property values --> <property name="integration.codecoverage.typemock.path" value="C:\Program Files\TypeMock\TypeMock.Net\" overwrite="false"/> <property name="integration.codecoverage.typemock.console" value="tmockrunner.exe" overwrite="false"/> <property name="integration.codecoverage.typemock.profilername" value="NCover1.5.7" /> <property name="integration.codecoverage.typemock.islinked" value="true" overwrite="false"/> <property name="integration.codecoverage.ncover.path" value="C:\Program Files\NCover\" overwrite="false"/> <property name="integration.codecoverage.ncover.console" value="ncover.console.exe" overwrite="false"/> <property name="integration.codecoverage.ncover.console.assemblies" value="SCLtd.NAnt.Extensions.Tasks" overwrite="false"/> <property name="integration.codecoverage.nunitproject" value="SCLtd.NAnt.Extensions" overwrite="false"/> <property name="integration.codecoverage.nunitconfig" value="Debug" overwrite="false"/> <property name="integration.codecoverage.nunit.path" value="C:\Program Files\Nunit 2.2.9\bin\" overwrite="false"/> <property name="integration.codecoverage.nunit.console" value="nunit-console.exe" overwrite="false"/> <!-- overridable property values --> <!-- explicit property values --> <!-- explicit property values --> <target name="codecoverage" depends="integration.codecoverage" /> <target name="integration.codecoverage" description=""> <echo message="integration.codecoverage.typemock.islinked=${integration.codecovera ge.typemock.islinked}" /> <if test="${property::get-value('integration.codecoverage.typemock.islinked') == 'true'}"> <echo message="workingdir=${integration.codecoverage.workingdirectory}" /> <echo message="program=${integration.codecoverage.ncover.path}${integration.codeco verage.ncover.console}" /> <echo message="commandline=//w ${integration.codecoverage.workingdirectory} //x ${integration.codecoverage.nunitproject}.NCoverResults.xml ${integration.codecoverage.nunit.path}${integration.codecoverage.nunit.conso le} ${integration.codecoverage.nunitproject}.nunit /config=${integration.codecoverage.nunitconfig} /xml=${integration.codecoverage.nunitproject}.NUnitResults.xml //a ${integration.codecoverage.ncover.console.assemblies}" /> <exec workingdir="${integration.codecoverage.workingdirectory}" program="${integration.codecoverage.ncover.path}${integration.codecoverage.n cover.console}" commandline="//w ${integration.codecoverage.workingdirectory} //x ${integration.codecoverage.nunitproject}.NCoverResults.xml ${integration.codecoverage.nunit.path}${integration.codecoverage.nunit.conso le} ${integration.codecoverage.nunitproject}.nunit /config=${integration.codecoverage.nunitconfig} /xml=${integration.codecoverage.nunitproject}.NUnitResults.xml //a ${integration.codecoverage.ncover.console.assemblies}" /> </if> <if test="${property::get-value('integration.codecoverage.typemock.islinked') == 'false'}"> <echo message="workingdir=${integration.codecoverage.workingdirectory}" /> <echo message="program=${integration.codecoverage.typemock.path}${integration.code coverage.typemock.console}" /> <echo message="commandline=-link ${integration.codecoverage.typemock.profilername} ${integration.codecoverage.ncover.path}${integration.codecoverage.ncover.con sole} //w ${integration.codecoverage.workingdirectory} //x ${integration.codecoverage.nunitproject}.NCoverResults.xml ${integration.codecoverage.nunit.path}${integration.codecoverage.nunit.conso le} ${integration.codecoverage.nunitproject}.nunit /config=${integration.codecoverage.nunitconfig} /xml=${integration.codecoverage.nunitproject}.NUnitResults.xml //a ${integration.codecoverage.ncover.console.assemblies}" /> <exec workingdir="${integration.codecoverage.workingdirectory}" program="${integration.codecoverage.typemock.path}${integration.codecoverage ..typemock.console}" commandline="-link ${integration.codecoverage.typemock.profilername} ${integration.codecoverage.ncover.path}${integration.codecoverage.ncover.con sole} //w ${integration.codecoverage.workingdirectory} //x ${integration.codecoverage.nunitproject}.NCoverResults.xml ${integration.codecoverage.nunit.path}${integration.codecoverage.nunit.conso le} ${integration.codecoverage.nunitproject}.nunit /config=${integration.codecoverage.nunitconfig} /xml=${integration.codecoverage.nunitproject}.NUnitResults.xml //a ${integration.codecoverage.ncover.console.assemblies}" /> </if> </target> </project> -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gert Driesen Sent: 03 May 2007 14:52 To: Bob Archer; Erich Eichinger; nant-users@lists.sourceforge.net Subject: Re: [NAnt-users] NUnit NAnt task roadmap Hi Bob, I've been planning on adding an nunit-console task would be basically just be wrapper around nunit-console.exe. The only advantage would be that the nunit-console task can automatically invoke the nunit-console assembly and set the environment for the current target framework. Would something like this be useful ? Gert ----- Original Message ----- From: "Bob Archer" <[EMAIL PROTECTED]> To: "Erich Eichinger" <[EMAIL PROTECTED]>; <nant-users@lists.sourceforge.net> Sent: Thursday, May 03, 2007 3:22 PM Subject: Re: [NAnt-users] NUnit NAnt task roadmap Nothing against Nant. But, this is the reason a lot of people recommend running NUnit with the exec task. ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Erich Eichinger Sent: Thursday, May 03, 2007 1:56 AM To: nant-users@lists.sourceforge.net Subject: [NAnt-users] NUnit NAnt task roadmap Hi, Since NUnit 2.4 is already out, I'd like to know if there are any concrete plans to upgrade/extend the nunit task to the new version. As far as I could see, the nunit task is still compiled against 2.2.8. cheers, Erich ---------------------------------------------------------------------------- ---- > ---------------------------------------------------------------------- > --- This SF.net email is sponsored by DB2 Express Download DB2 Express > C - the FREE version of DB2 express and take control of your XML. No > limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ ---------------------------------------------------------------------------- ---- > _______________________________________________ > NAnt-users mailing list > NAnt-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/nant-users > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users **************************************************************************** ******* The Royal Bank of Scotland plc. Registered in Scotland No 90312. Registered Office: 36 St Andrew Square, Edinburgh EH2 2YB. Authorised and regulated by the Financial Services Authority This e-mail message is confidential and for use by the addressee only. If the message is received by anyone other than the addressee, please return the message to the sender by replying to it and then delete the message from your computer. Internet e-mails are not necessarily secure. The Royal Bank of Scotland plc does not accept responsibility for changes made to this message after it was sent. Whilst all reasonable care has been taken to avoid the transmission of viruses, it is the responsibility of the recipient to ensure that the onward transmission, opening or use of this message and any attachments will not adversely affect its systems or data. No responsibility is accepted by The Royal Bank of Scotland plc in this regard and the recipient should carry out such virus and other checks as it considers appropriate. Visit our websites at: www.rbs.com www.rbsgc.com www.rbsmarkets.com **************************************************************************** ******* ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ NAnt-users mailing list NAnt-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nant-users