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