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
----------------------------------------