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

Reply via email to