*** Issue 3: analysis ***
The problem is that the unit test code in the files VssTest.cs,
NUnitTaskExecutionTest.cs and MksTest.cs all depend on SystemPath.cs.
On Vista x64 the OS user temp path (e.g. C:\Users\<user>\AppData\Local\Temp)
does not contain any spaces, while it in many other Windows versions do
(e.g. C:\Document and Settings\<user>\Local Settings\Temp). Therefore, the
ProcessArgumentBuilder.AddArgument(string arg, string separator, string
value) behaves differently due to its call to
StringUtil.AutoDoubleQuoteString() that will double quote only strings that
contains any space character. I guess in this case it would be best to
update the unit test code, since I can see no problems with the core source
code behaviour. Any comments?

2009/2/3 P-J <[email protected]>

> I have downloaded the source code for the official 1.4.2 release
> (build 1.4.2.14) and it builds fine with b.bat on my Win2003 server
> machine. However, on my Vista x64 machine I experience three problems
> when running b.bat:
>
> *** Issue 1 ***
> I need to register tools\ncover\coverlib.dll manually before running
> b.bat, else I get the error "Profiled process terminated. Profiler
> connection not established.". Can the ccnet.build file be updated so
> that this manual step is not necessary? How?
>
>
> *** Issue 2 ***
> 15 unit tests for
> ThoughtWorks.CruiseControl.UnitTests.Core.Config.PreprocessorTest fail
> with the exception pasted below. If I change the method
>
> ThoughtWorks.CruiseControl.Core.Config.Preprocessor.GetAssemblyResourceStream
> () to call GetExecutingAssembly() instead of GetCallingAssembly() all
> the 15 unit tests succeed. This may indicate that the function
> GetAssemblyResourceStream() gets inlined on my Vista x64 system,
> causing the exception, but not on my Win2003 server system. The MSDN
> documentation states "To ensure that a method that calls the
> GetCallingAssembly method is not inlined by the compiler, you can
> apply the MethodImplAttribute attribute with
> MethodImplOptions..::.NoInlining. ". Could this be a correct solution?
>
> ----------------------------------------
> [exec] 1)
> ThoughtWorks.CruiseControl.UnitTests.Core.Config.PreprocessorTest.TestCycle2
> :
> System.ArgumentNullException : Value cannot be null.
>     [exec] Parameter name: input
>     [exec]    at System.Xml.XmlReader.CreateReaderImpl(Stream input,
> XmlReaderSettings settings, Uri baseUri, String baseUriStr,
> XmlParserContext inputContext, Boolean closeInput)
>     [exec]    at System.Xml.XmlReader.Create(Stream input)
>     [exec]    at
>
> ThoughtWorks.CruiseControl.Core.Config.Preprocessor.ConfigPreprocessor.PreProcess
> (XmlReader input, XmlWriter output, PreprocessorUrlResolver resolver,
> Uri input_uri) in d:\work\CruiseControl.NET-1.4.2.3924\project\core
> \configuration\preprocessor\ConfigPreprocessor.cs:line 43
>     [exec]    at
>
> ThoughtWorks.CruiseControl.UnitTests.Core.Config.PreprocessorTest._Preprocess
> (String filename) in d:\work\CruiseControl.NET-1.4.2.3924\project
> \UnitTests\Core\Config\PreprocessorTest.cs:line 214
>     [exec]    at
>
> ThoughtWorks.CruiseControl.UnitTests.Core.Config.PreprocessorTest.TestCycle2
> () in d:\work\CruiseControl.NET-1.4.2.3924\project\UnitTests\Core
> \Config\PreprocessorTest.cs:line 149
> ----------------------------------------
>
> *** Issue 3 ***
> 9 unit tests for SourceControl.MksTest fails with the exception below,
> because some quotes in a string seem to be missing. How can this issue
> be solved? I have no experience of the NMock objects used in these
> tests:
>
> ----------------------------------------
>     [exec] 1)
> ThoughtWorks.CruiseControl.UnitTests.Core.Sourcecontrol.MksTest.CheckpointSourceOnSuccessfulBuild
> :
> NMock.VerifyException :
>     [exec]  MockProcessExecutor.Execute
> (ThoughtWorks.CruiseControl.Core.Util.ProcessInfo) called with
> incorrect parameter (1)
>     [exec]  expected:<FileName: [..\bin\si.exe] -- Arguments:
> [checkpoint -d "Cruise Control.Net Build - 20" -L "Build - 20" -R -S
> "C:\Users\pkack\AppData\Local\Temp\MksSandBox\myproject.pj" --
> user=CCNetUser --password=CCNetPassword --quiet] -- WorkingDirectory:
> [] -- StandardInputContent: [] -- Timeout: [600000]>
>     [exec]   but was:<FileName: [..\bin\si.exe] -- Arguments:
> [checkpoint -d "Cruise Control.Net Build - 20" -L "Build - 20" -R -S C:
> \Users\pkack\AppData\Local\Temp\MksSandBox\myproject.pj --
> user=CCNetUser --password=CCNetPassword --quiet] -- WorkingDirectory:
> [] -- StandardInputContent: [] -- Timeout: [600000]>
>     [exec]    at NMock.MockCall.checkArguments(Object[] actualArgs)
>     [exec]    at NMock.MockCall.Call(String methodName, Object[]
> actualArgs)
>     [exec]    at NMock.Method.Call(Object[] parameters)
>     [exec]    at NMock.Mock.Invoke(String methodName, Object[] args)
>     [exec]    at ProxyProcessExecutor_47.Execute(ProcessInfo )
>     [exec]    at
> ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute
> (ProcessInfo processInfo) in d:\work\MET\Tools\External
> \CruiseControl.NET\project\core\sourcecontrol
> \ProcessSourceControl.cs:line 44
>     [exec]    at
> ThoughtWorks.CruiseControl.Core.Sourcecontrol.Mks.ExecuteWithLogging
> (ProcessInfo processInfo, String comment) in d:\work\MET\Tools\External
> \CruiseControl.NET\project\core\sourcecontrol\Mks.cs:line 122
>     [exec]    at
>
> ThoughtWorks.CruiseControl.UnitTests.Core.Sourcecontrol.MksTest.CheckpointSourceOnSuccessfulBuild
> () in d:\work\MET\Tools\External\CruiseControl.NET\project\UnitTests
> \Core\SourceControl\MksTest.cs:line 136
> ----------------------------------------
>

Reply via email to