public void Usage_against_single_file()
 {
     string inputFile = Path.Combine(Environment.CurrentDirectory,
         "AssemblyInfoExamples",
         "001",
         "Input.cs");
     ITaskItem inputFileTaskItem = new TaskItem(inputFile);
     SemanticVersionStampAssemblyInfo semanticVersionStampAssemblyInfo = new SemanticVersionStampAssemblyInfo
     {
         BuildEngine = new FakeBuildEngine(),
         AssemblyInfoFiles = new[] { inputFileTaskItem },
         BuildNumber = 12
     };
     Assert.True(semanticVersionStampAssemblyInfo.Execute());
 }
        public void Basic_stamping_works()
        {
            string inputFile = Path.Combine(Environment.CurrentDirectory,
                "AssemblyInfoExamples", "001", "Input.cs");

            string expectedOutputFile = Path.Combine(Environment.CurrentDirectory,
                "AssemblyInfoExamples", "001", "ExpectedOutput.cs");

            Assert.True(File.Exists(inputFile));
            Assert.True(File.Exists(expectedOutputFile));

            string tempFile = GetTempCsFile(inputFile);

            try
            {
                File.Copy(inputFile, tempFile, overwrite: true);

                ITaskItem inputFileTaskItem1 = new TaskItem(tempFile);
                SemanticVersionStampAssemblyInfo semanticVersionStampAssemblyInfo = new SemanticVersionStampAssemblyInfo
                {
                    BuildEngine = new FakeBuildEngine(),
                    AssemblyInfoFiles = new[] {inputFileTaskItem1},
                    BuildNumber = 1
                };

                semanticVersionStampAssemblyInfo.Execute();

                string expectedOutput = File.ReadAllText(expectedOutputFile);
                string overwrittenFile = File.ReadAllText(tempFile);

                Assert.Equal(expectedOutput, overwrittenFile);
            }
            finally
            {
                File.Delete(tempFile);
            }
        }
 public void Null_task_item_fails()
 {
     var fakeBuildEngine = new FakeBuildEngine();
     SemanticVersionStampAssemblyInfo semanticVersionStampAssemblyInfo = new SemanticVersionStampAssemblyInfo
     {
         BuildEngine = fakeBuildEngine,
         AssemblyInfoFiles = new ITaskItem[4],
         BuildNumber = 3
     };
     Assert.False(semanticVersionStampAssemblyInfo.Execute());
     Assert.True(fakeBuildEngine.LoggedError("Null value found in AssemblyInfoFiles"));
 }
 public void Null_AssemblyInfoFiles_fails()
 {
     var fakeBuildEngine = new FakeBuildEngine();
     SemanticVersionStampAssemblyInfo semanticVersionStampAssemblyInfo = new SemanticVersionStampAssemblyInfo
     {
         BuildEngine = fakeBuildEngine,
         BuildNumber = 3
     };
     Assert.False(semanticVersionStampAssemblyInfo.Execute());
     Assert.True(fakeBuildEngine.LoggedError("AssemblyInfoFiles is required"));
 }
 public void Negative_build_fails()
 {
     var fakeBuildEngine = new FakeBuildEngine();
     SemanticVersionStampAssemblyInfo semanticVersionStampAssemblyInfo = new SemanticVersionStampAssemblyInfo
     {
         BuildEngine = fakeBuildEngine,
         AssemblyInfoFiles = new ITaskItem[] { new TaskItem("doesn't matter") },
         BuildNumber = -3
     };
     Assert.False(semanticVersionStampAssemblyInfo.Execute());
     Assert.True(fakeBuildEngine.LoggedError("BuildNumber must be non-negative"));
 }