Example #1
0
        public void FixtureInit()
        {
            ilMergeAvailable = File.Exists(
                Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
                             @"Microsoft\ILMerge\ILMerge.exe"));

            MockBuild buildEngine = new MockBuild();

            testDirectory = TaskUtility.makeTestDirectory(buildEngine);

            ILMerge task = new ILMerge();

            task.BuildEngine = buildEngine;

            if (TaskUtility.CalledInBuildDirectory)
            {
                assemblyA   = Path.Combine(testDirectory, @"A.dll");
                assemblyB   = Path.Combine(testDirectory, @"B.dll");
                excludeFile = Path.Combine(testDirectory, @"ExcludeTypes.txt");
                keyFile     = Path.Combine(testDirectory, @"keypair.snk");
            }
            else
            {
                string config = TaskUtility.BuildConfiguration;
                string assDir = Path.GetFullPath(TaskUtility.AssemblyDirectory);
                assemblyA   = Path.GetFullPath(Path.Combine(assDir, @"..\..\ILMerge\A\bin\" + config + @"\A.dll"));
                assemblyB   = Path.GetFullPath(Path.Combine(assDir, @"..\..\ILMerge\B\bin\" + config + @"\B.dll"));
                excludeFile = Path.Combine(assDir, @"ILMerge\ExcludeTypes.txt");
                keyFile     = Path.Combine(assDir, @"ILMerge\keypair.snk");
            }

            inputAssemblies = TaskUtility.StringArrayToItemArray(assemblyA, assemblyB);
        }
Example #2
0
        public void FixtureInit()
        {
            MockBuild buildEngine = new MockBuild();

            this.testDirectory = TaskUtility.makeTestDirectory(buildEngine);

            if (TaskUtility.CalledInBuildDirectory)
            {
                this.assemblyA   = Path.Combine(this.testDirectory, @"A.dll");
                this.assemblyB   = Path.Combine(this.testDirectory, @"B.dll");
                this.excludeFile = Path.Combine(this.testDirectory, @"ExcludeTypes.txt");
                this.keyFile     = Path.Combine(this.testDirectory, @"keypair.snk");
            }
            else
            {
                string config = TaskUtility.BuildConfiguration;
                string assDir = Path.GetFullPath(TaskUtility.AssemblyDirectory);
                this.assemblyA   = Path.GetFullPath(Path.Combine(assDir, @"..\..\ILMerge\A\bin\" + config + @"\A.dll"));
                this.assemblyB   = Path.GetFullPath(Path.Combine(assDir, @"..\..\ILMerge\B\bin\" + config + @"\B.dll"));
                this.excludeFile = Path.Combine(assDir, @"ILMerge\ExcludeTypes.txt");
                this.keyFile     = Path.Combine(assDir, @"ILMerge\keypair.snk");
            }

            this.inputAssemblies = TaskUtility.StringArrayToItemArray(this.assemblyA, this.assemblyB);
        }
Example #3
0
        public void ZipRelativeExecute()
        {
            var task = new Zip();

            task.BuildEngine = new MockBuild();

            string testDir     = TaskUtility.TestDirectory;
            string prjRootPath = TaskUtility.GetProjectRootDirectory(true);

            string        workingDir = Path.Combine(prjRootPath, @"Source\MSBuild.Community.Tasks.Tests");
            List <string> files      = Directory.GetFiles(workingDir, "*.*", SearchOption.TopDirectoryOnly).ToList();

            files.Add(Path.Combine(workingDir, "..\\..\\readme.md"));

            TaskItem[] items = TaskUtility.StringArrayToItemArray(files.ToArray());

            task.Files            = items;
            task.WorkingDirectory = workingDir;
            task.ZipFileName      = Path.Combine(testDir, ZIP_WITH_RELATIVE_FILE_NAME);

            if (File.Exists(task.ZipFileName))
            {
                File.Delete(task.ZipFileName);
            }

            Assert.IsTrue(task.Execute(), "Execute Failed");
            Assert.IsTrue(ZipFile.Read(task.ZipFileName).ContainsEntry("readme.md"), "The zip doesnt contains the readme.md file");
            Assert.IsTrue(File.Exists(task.ZipFileName), "Zip file not found");
        }
Example #4
0
        public void NUnitExecute()
        {
            #region Find NUnit installation
            string nunitPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
            nunitPath = Path.Combine(nunitPath, NUnit.DEFAULT_NUNIT_DIRECTORY);

            RegistryKey buildKey = Registry.ClassesRoot.OpenSubKey(@"NUnitTestProject\shell\open\command");
            if (buildKey == null)
            {
                Assert.Ignore(@"Can't find NUnit installation");
            }

            nunitPath = buildKey.GetValue(null, nunitPath).ToString();
            Regex nunitRegex = new Regex("(.+)nunit-gui\\.exe", RegexOptions.IgnoreCase);
            Match pathMatch  = nunitRegex.Match(nunitPath);
            nunitPath = pathMatch.Groups[1].Value.Replace("\"", "");

            #endregion Find NUnit installation

            MockBuild buildEngine = new MockBuild();

            string testDirectory = TaskUtility.makeTestDirectory(buildEngine);

            NUnit task = new NUnit();
            task.BuildEngine = buildEngine;
            task.Assemblies  = TaskUtility.StringArrayToItemArray(
                Path.Combine(nunitPath, "nunit.framework.tests.dll"));
            task.WorkingDirectory = testDirectory;
            task.OutputXmlFile    = Path.Combine(testDirectory, @"nunit.framework.tests-results.xml");
            Assert.IsTrue(task.Execute(), "Execute Failed");
        }
Example #5
0
        public void ZipNoRoot()
        {
            var task = new Zip();

            task.BuildEngine = new MockBuild();

            string testDir     = TaskUtility.TestDirectory;
            string prjRootPath = TaskUtility.GetProjectRootDirectory(true);

            string workingDir = Path.Combine(prjRootPath, @"Source\MSBuild.Community.Tasks.Tests");

            string[] files = Directory.GetFiles(workingDir, "*.*", SearchOption.AllDirectories);

            TaskItem[] items = TaskUtility.StringArrayToItemArray(files);

            task.Files       = items;
            task.ZipFileName = Path.Combine(testDir, ZIP_FILE_NAME);

            if (File.Exists(task.ZipFileName))
            {
                File.Delete(task.ZipFileName);
            }

            Assert.IsTrue(task.Execute(), "Execute Failed");
            Assert.IsTrue(File.Exists(task.ZipFileName), "Zip file not found");
        }
Example #6
0
        public void DuplicateTypeAllowed()
        {
            task.OutputFile          = new TaskItem(Path.Combine(this.testDirectory, @"merged1.dll"));
            task.AllowDuplicateTypes = TaskUtility.StringArrayToItemArray(@"ClassAB", "ClassBA");
            task.XmlDocumentation    = true;

            Assert.IsTrue(task.Execute(), @"Task failed");
            this.AssertResults(task, PublicCount, VersionA);
        }
        public void ChecksumTestUnsupportedAlg()
        {
            Checksum task = new Checksum();

            task.BuildEngine = new MockBuild();

            task.Files     = TaskUtility.StringArrayToItemArray(inputFiles);
            task.Algorithm = "foo";
            Assert.IsFalse(task.Execute(), "Execute Failed");
        }
        public void ChecksumTestSHA1()
        {
            Checksum task = new Checksum();

            task.BuildEngine = new MockBuild();

            task.Files     = TaskUtility.StringArrayToItemArray(inputFiles);
            task.Algorithm = "SHA1";
            Assert.IsTrue(task.Execute(), "Execute Failed");
        }
Example #9
0
        public void PrimaryTypesAndExclusions()
        {
            task.OutputFile          = new TaskItem(Path.Combine(this.testDirectory, @"merged3.dll"));
            task.AllowDuplicateTypes = TaskUtility.StringArrayToItemArray(@"ClassAB");
            task.DebugInfo           = false;
            task.XmlDocumentation    = false;
            task.ExcludeFile         = new TaskItem(this.excludeFile);

            Assert.IsTrue(task.Execute(), @"Task failed");
            this.AssertResults(task, PublicACount + 1, VersionA);
        }
Example #10
0
        public void SignedMergedAssembly()
        {
            task.OutputFile          = new TaskItem(Path.Combine(this.testDirectory, @"merged4.dll"));
            task.AllowDuplicateTypes = TaskUtility.StringArrayToItemArray(@"ClassAB");
            task.DebugInfo           = false;
            task.XmlDocumentation    = false;
            task.KeyFile             = new TaskItem(this.keyFile);

            Assert.IsTrue(task.Execute(), @"Task failed");
            this.AssertResults(task, PublicCount, VersionA);
        }
Example #11
0
        public void RegexMatchExecute()
        {
            RegexMatch task = new RegexMatch();

            task.BuildEngine = new MockBuild();

            task.Input      = TaskUtility.StringArrayToItemArray("foo.my.foo.foo.test.o", "foo.my.faa.foo.test.a", "foo.my.fbb.foo.test.b", "foo.my.fcc.foo.test.c", "foo.my.fdd.foo.test.d");
            task.Expression = new TaskItem("[a-c]$");

            Assert.IsTrue(task.Execute(), "Execute Failed");

            Assert.AreEqual(3, task.Output.Length, "Match should have matched three items");
        }
        public void XsltOneInput()
        {
            Xslt task = new Xslt();

            task.BuildEngine = new MockBuild();

            string testDir;
            string assemblyDir = TaskUtility.AssemblyDirectory;

            TaskUtility.logEnvironmentInfo(task.Log);
            if (TaskUtility.CalledInBuildDirectory)
            {
                task.Log.LogMessage("Called in build directory");

                // get the files from where msbuild put them
                testDir = TaskUtility.TestDirectory;
            }
            else
            {
                task.Log.LogMessage("Not called in build directory");

                // get the files from where Visual Studio put them
                testDir = Path.Combine(TaskUtility.AssemblyDirectory, @"Xslt");
            }

            task.Inputs = TaskUtility.StringArrayToItemArray(Path.Combine(testDir, @"XsltTestInput.xml"));
            task.Inputs[0].SetMetadata(@"configuration", "test");
            task.Xsl = new TaskItem(Path.Combine(assemblyDir, @"NUnitReport.xsl"));
            task.Xsl.SetMetadata(@"project", "XsltTest");

            task.RootTag = "mergedroot";
            task.Output  = Path.Combine(testDir, @"XsltTestOutput.html");

            Assert.IsNotNull(task.Inputs, @"No inputs");
            Assert.IsNull(task.RootAttributes, @"Wrong default root attributes");
            Assert.IsNotNull(task.Xsl, @"No xsl");
            Assert.IsNotNull(task.Output, @"No output");

            // executing with one input files
            Assert.IsTrue(task.Execute(), @"Task with one input files failed");
            Assert.IsTrue(File.Exists(task.Output), @"Missing output file");

            string taskOutput = File.ReadAllText(task.Output);

            Assert.IsTrue(taskOutput.Contains(
                              @"<h1>Project ""XsltTest"" - Configuration ""test"" - NUnit Test Report</h1>"),
                          @"Input or Xsl metadata not correctly added.");
        }
Example #13
0
        public void ExecuteAttrib()
        {
            string attribFile = Path.Combine(TaskUtility.TestDirectory, @"attrib.txt");

            File.WriteAllText(attribFile, "This is a test file");

            Attrib task = new Attrib();

            task.BuildEngine = new MockBuild();
            task.Files       = TaskUtility.StringArrayToItemArray(attribFile);
            task.ReadOnly    = true;
            task.Hidden      = true;
            task.System      = true;
            task.Execute();

            bool isReadOnly = ((File.GetAttributes(attribFile) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly);
            bool isHidden   = ((File.GetAttributes(attribFile) & FileAttributes.Hidden) == FileAttributes.Hidden);
            bool isSystem   = ((File.GetAttributes(attribFile) & FileAttributes.System) == FileAttributes.System);

            Assert.IsTrue(isReadOnly, "Attribute should be readonly");
            Assert.IsTrue(isHidden, "Attribute should be hidden");
            Assert.IsTrue(isSystem, "Attribute should be system");

            task             = new Attrib();
            task.BuildEngine = new MockBuild();
            task.Files       = TaskUtility.StringArrayToItemArray(attribFile);
            task.Hidden      = false;
            task.System      = false;
            task.Execute();

            isReadOnly = ((File.GetAttributes(attribFile) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly);
            isHidden   = ((File.GetAttributes(attribFile) & FileAttributes.Hidden) == FileAttributes.Hidden);
            isSystem   = ((File.GetAttributes(attribFile) & FileAttributes.System) == FileAttributes.System);

            Assert.IsTrue(isReadOnly, "Attribute should be readonly");
            Assert.IsFalse(isHidden, "Attribute should not be hidden");
            Assert.IsFalse(isSystem, "Attribute should not be system");

            task             = new Attrib();
            task.BuildEngine = new MockBuild();
            task.Files       = TaskUtility.StringArrayToItemArray(attribFile);
            task.Normal      = true;
            task.Execute();

            isReadOnly = ((File.GetAttributes(attribFile) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly);
            Assert.IsFalse(isReadOnly, "Attribute should not be readonly");
        }
Example #14
0
        public void RegexReplaceRemoveFirstFoo()
        {
            RegexReplace task = new RegexReplace();

            task.BuildEngine = new MockBuild();

            task.Input      = TaskUtility.StringArrayToItemArray("foo.my.foo.foo.test.o", "foo.my.faa.foo.test.a", "foo.my.fbb.foo.test.b", "foo.my.fcc.foo.test.c", "foo.my.fdd.foo.test.d");
            task.Expression = new TaskItem("foo\\.");
            task.Count      = new TaskItem("1");

            Assert.IsTrue(task.Execute(), "Execute Failed");

            foreach (ITaskItem item in task.Output)
            {
                Assert.IsTrue(!item.ItemSpec.StartsWith("foo."), string.Format("Item still starts with foo: {0}", item.ItemSpec));
            }
        }
Example #15
0
        public void DuplicateTypeAllowed()
        {
            if (!ilMergeAvailable)
            {
                Assert.Ignore(@"ILMerge.exe not available");
            }

            ILMerge task = new ILMerge();

            task.BuildEngine = new MockBuild();

            task.InputAssemblies     = inputAssemblies;
            task.OutputFile          = new TaskItem(Path.Combine(testDirectory, @"merged1.dll"));
            task.AllowDuplicateTypes = TaskUtility.StringArrayToItemArray(@"ClassAB");
            task.XmlDocumentation    = true;

            Assert.IsTrue(task.Execute(), @"Task failed");
            AssertResults(task, PUBLIC_COUNT, VERSION_A);
        }
Example #16
0
        public void RegexReplaceLastDotForBang()
        {
            RegexReplace task = new RegexReplace();

            task.BuildEngine = new MockBuild();

            task.Input       = TaskUtility.StringArrayToItemArray("foo.my.foo.foo.test.o", "foo.my.faa.foo.test.a", "foo.my.fbb.foo.test.b", "foo.my.fcc.foo.test.c", "foo.my.fdd.foo.test.d");
            task.Expression  = new TaskItem("\\.");
            task.Replacement = new TaskItem("!");
            task.Count       = new TaskItem("1");
            task.Options     = TaskUtility.StringArrayToItemArray("RightToLeft");

            Assert.IsTrue(task.Execute(), "Execute Failed");

            foreach (ITaskItem item in task.Output)
            {
                Assert.AreEqual("!", item.ItemSpec.Substring(19, 1), string.Format("Item not replaced properly: {0}", item.ItemSpec));
            }
        }
Example #17
0
        public void RegexReplaceFooForOop()
        {
            RegexReplace task = new RegexReplace();

            task.BuildEngine = new MockBuild();
            string[] expectedResult = new string[] { "foo.my.oop.oop.test.o", "foo.my.faa.oop.test.a", "foo.my.fbb.oop.test.b", "foo.my.fcc.oop.test.c", "foo.my.fdd.oop.test.d" };

            task.Input       = TaskUtility.StringArrayToItemArray("foo.my.foo.foo.test.o", "foo.my.faa.foo.test.a", "foo.my.fbb.foo.test.b", "foo.my.fcc.foo.test.c", "foo.my.fdd.foo.test.d");
            task.Expression  = new TaskItem("foo\\.");
            task.StartAt     = new TaskItem("6");
            task.Replacement = new TaskItem("oop.");

            Assert.IsTrue(task.Execute(), "Execute Failed");

            for (int ndx = 0; ndx < task.Output.Length; ndx++)
            {
                Assert.AreEqual(expectedResult[ndx], task.Output[ndx].ItemSpec, "Results did not match expectations");
            }
        }
Example #18
0
        public void TestFilesUpdate()
        {
            FileUpdate task = new FileUpdate();

            task.BuildEngine = new MockBuild();

            TaskItem[] items = TaskUtility.StringArrayToItemArray(files);

            task.Files           = items;
            task.Regex           = @"(\d+)\.(\d+)\.(\d+)\.(\d+)";
            task.ReplacementText = "$1.$2.$3.123";
            Assert.IsTrue(task.Execute(), "Execute Failed!");

            task                 = new FileUpdate();
            task.BuildEngine     = new MockBuild();
            task.Files           = items;
            task.Regex           = @"@\w*?@";
            task.ReplacementText = DateTime.Now.ToString();
            Assert.IsTrue(task.Execute(), "Execute Failed!");
        }
Example #19
0
        public void NUnitExecuteWhenToolPathIsDefined(int majorVersion, int minorVersion, int number)
        {
            string nUnitDirName = string.Format("NUnit {0}.{1}.{2}", majorVersion, minorVersion, number);
            string nunitPath    = Path.Combine(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), nUnitDirName), "bin");

            if (!Directory.Exists(nunitPath))
            {
                Assert.Inconclusive("{0} - not found", nunitPath);
            }

            MockBuild buildEngine   = new MockBuild();
            string    testDirectory = TaskUtility.makeTestDirectory(buildEngine);

            NUnit task = new NUnit();

            task.ToolPath         = nunitPath;
            task.BuildEngine      = buildEngine;
            task.Assemblies       = TaskUtility.StringArrayToItemArray(Path.Combine(nunitPath, "nunit.framework.tests.dll"));
            task.WorkingDirectory = testDirectory;
            Assert.IsTrue(task.Execute(), "Execute Failed");
        }
        public void SignedMergedAssembly()
        {
            if (!this.isILMergeAvailable)
            {
                Assert.Ignore(@"ILMerge.exe not available");
            }

            ILMerge task = new ILMerge();

            task.BuildEngine = new MockBuild();

            task.InputAssemblies     = this.inputAssemblies;
            task.OutputFile          = new TaskItem(Path.Combine(this.testDirectory, @"merged4.dll"));
            task.AllowDuplicateTypes = TaskUtility.StringArrayToItemArray(@"ClassAB");
            task.DebugInfo           = false;
            task.XmlDocumentation    = false;
            task.KeyFile             = new TaskItem(this.keyFile);

            Assert.IsTrue(task.Execute(), @"Task failed");
            this.AssertResults(task, PublicCount, VersionA);
        }
Example #21
0
        public void MoveExecute()
        {
            string attribFile = Path.Combine(TaskUtility.TestDirectory, @"moveme.txt");

            File.WriteAllText(attribFile, "This is a test file");

            Move task = new Move();

            task.BuildEngine       = new MockBuild();
            task.SourceFiles       = TaskUtility.StringArrayToItemArray(attribFile);
            task.DestinationFolder = new TaskItem(Path.Combine(TaskUtility.TestDirectory, ".."));
            task.Execute();

            File.WriteAllText(attribFile, "This is a test file");

            task                  = new Move();
            task.BuildEngine      = new MockBuild();
            task.SourceFiles      = TaskUtility.StringArrayToItemArray(attribFile);
            task.DestinationFiles = TaskUtility.StringArrayToItemArray("newme.txt");
            task.Execute();
        }
Example #22
0
        public void TestItemsNotUpdated()
        {
            FileUpdate task = new FileUpdate();

            task.BuildEngine = new MockBuild();

            TaskItem[] items = TaskUtility.StringArrayToItemArray(files);

            task.Files           = items;
            task.Regex           = @"(\d+)\.(\d+)\.(\d+)\.(\d+)";
            task.ReplacementText = "$1.$2.$3.123";
            Assert.IsTrue(task.Execute(), "Execute Failed!");

            task                 = new FileUpdate();
            task.BuildEngine     = new MockBuild();
            task.Files           = items;
            task.Regex           = @"TestExitStatusAndNotUpdatedItems";
            task.ReplacementText = DateTime.Now.ToString();
            Assert.IsTrue(task.Execute(), "Execute Failed!");
            Assert.IsTrue(task.ItemsNotUpdated.Length == 3);
            Assert.IsFalse(task.AllItemsUpdated);
        }
Example #23
0
        public void ZipExecuteWithEmptyFolders()
        {
            var task = new Zip();

            task.BuildEngine = new MockBuild();

            string testDir     = TaskUtility.TestDirectory;
            string prjRootPath = TaskUtility.GetProjectRootDirectory(true);

            string workingDir = Path.Combine(prjRootPath, @"Source\MSBuild.Community.Tasks.Tests");

            string[] files                 = Directory.GetFiles(workingDir, "*.*", SearchOption.TopDirectoryOnly);
            string[] directories           = Directory.GetDirectories(workingDir, "*.*", SearchOption.TopDirectoryOnly);
            string[] filesFromXmlDirectory = new string[0]; //Directory.GetFiles(workingDir + "\\" + "Xml", "*.*", SearchOption.TopDirectoryOnly);

            var filesAndDirectories = new string[files.Length + directories.Length + filesFromXmlDirectory.Length];


            files.CopyTo(filesAndDirectories, 0);
            directories.CopyTo(filesAndDirectories, files.Length + filesFromXmlDirectory.Length);
            filesFromXmlDirectory.CopyTo(filesAndDirectories, files.Length);

            TaskItem[] items = TaskUtility.StringArrayToItemArray(filesAndDirectories);

            task.Files            = items;
            task.WorkingDirectory = workingDir;
            task.ZipFileName      = Path.Combine(testDir, ZIP_WITH_FOLDERS_FILE_NAME);

            if (File.Exists(task.ZipFileName))
            {
                File.Delete(task.ZipFileName);
            }

            Assert.IsTrue(task.Execute(), "Execute Failed");
            Assert.IsTrue(File.Exists(task.ZipFileName), "Zip file not found");
        }
Example #24
0
        public void VersionedMergedAssembly()
        {
            if (!ilMergeAvailable)
            {
                Assert.Ignore(@"ILMerge.exe not available");
            }

            ILMerge task = new ILMerge();

            task.BuildEngine = new MockBuild();

            task.InputAssemblies     = inputAssemblies;
            task.OutputFile          = new TaskItem(Path.Combine(testDirectory, @"merged5.dll"));
            task.AllowDuplicateTypes = TaskUtility.StringArrayToItemArray(@"ClassAB");
            task.DebugInfo           = false;
            task.XmlDocumentation    = false;
            task.KeyFile             = new TaskItem(keyFile);
            string version = @"5.6.7.8";

            task.Version = version;

            Assert.IsTrue(task.Execute(), @"Task failed");
            AssertResults(task, PUBLIC_COUNT, version);
        }
        public void UploadMultipleFilesInFolderStructure()
        {
            // set up test environment
            string testFile1 = Path.Combine(TaskUtility.TestDirectory, "file1.txt");
            string testDir2  = Path.Combine(TaskUtility.TestDirectory, "testfolder");
            string testFile2 = Path.Combine(testDir2, "file2.txt");

            Directory.CreateDirectory(testDir2);
            File.WriteAllText(testFile1, "file number one");
            File.WriteAllText(testFile2, "file number two");
            MemoryStream file1Stream = new MemoryStream();
            MemoryStream file2Stream = new MemoryStream();

            // record expected operations
            var mockery    = new MockRepository();
            var ftpService = mockery.CreateMock <IFtpWebRequest>();
            var ftpCreator = mockery.CreateMock <IFtpWebRequestCreator>();

            FtpUpload task = new FtpUpload(ftpCreator);

            using (mockery.Record()) {
                // this call responds to the FtpUpload's request to list folders; return no folders.
                ftpCreator.Create(new Uri("ftp://server.com/folder/"), "NLST");
                LastCall.Return(ftpService);
                ftpService.GetResponseStream();
                LastCall.Return(new MemoryStream(new byte[0]));

                // this call should make the testfolder
                ftpCreator.Create(new Uri("ftp://server.com/folder/testfolder"), "MKD");
                LastCall.Return(ftpService);
                ftpService.GetAndCloseResponse();

                // now upload file1
                ftpCreator.Create(new Uri("ftp://server.com/folder/file1.txt"), "STOR");
                LastCall.Return(ftpService);
                ftpService.SetContentLength(15);
                ftpService.GetRequestStream();
                LastCall.Return(file1Stream);
                ftpService.GetStatusDescriptionAndCloseResponse();
                LastCall.Return("okay");

                // now upload file2
                ftpCreator.Create(new Uri("ftp://server.com/folder/testfolder/file2.txt"), "STOR");
                LastCall.Return(ftpService);
                ftpService.SetContentLength(15);
                ftpService.GetRequestStream();
                LastCall.Return(file2Stream);
                ftpService.GetStatusDescriptionAndCloseResponse();
                LastCall.Return("okay");
            }

            task.BuildEngine = _mockBuild;
            task.RemoteUri   = "ftp://server.com/folder/";
            task.LocalFiles  = TaskUtility.StringArrayToItemArray(testFile1, testFile2);
            task.RemoteFiles = TaskUtility.StringArrayToItemArray("file1.txt", "testfolder\\file2.txt");
            bool result = task.Execute();

            Assert.AreEqual("file number one", GetString(file1Stream));
            Assert.AreEqual("file number two", GetString(file2Stream));

            mockery.VerifyAll();
        }