private static void AssertEqualFiles(string inFilePath, string outDirPath, string inDirPath)
        {
            var relative   = ParaibaPath.GetRelativePath(inFilePath, inDirPath);
            var actualJava = ParaibaPath.GetFullPath(relative, outDirPath);

            Assert.That(File.ReadAllBytes(actualJava), Is.EqualTo(File.ReadAllBytes(inFilePath)));
        }
示例#2
0
        protected override long RegisterFile(FileInfo fileInfo)
        {
            var relativePath = ParaibaPath.GetRelativePath(
                fileInfo.FullName, BaseDirInfo.FullName);

            Console.WriteLine("Relative path: " + relativePath);
            return(Id++);
        }
示例#3
0
        public void CopyFile(FileInfo inFileInfo)
        {
            var relativePath = ParaibaPath.GetRelativePath(
                inFileInfo.FullName, BaseDirInfo.FullName);
            var outFileInfo = OutDirInfo.GetFile(relativePath);

            outFileInfo.Directory.Create();
            inFileInfo.CopyTo(outFileInfo.FullName, true);
        }
示例#4
0
        public void WriteInstrumentedTestCode(LanguageSupport mode, FileInfo inFileInfo)
        {
            var relativePath = ParaibaPath.GetRelativePath(inFileInfo.FullName, BaseDirInfo.FullName);
            var outFileInfo  = OutDirInfo.GetFile(relativePath);
            var code         = InstrumentTestCase(mode, inFileInfo, BaseDirInfo);

            outFileInfo.Directory.Create();
            File.WriteAllText(outFileInfo.FullName, code);
        }
示例#5
0
        private static string WriteCode(string relativePath, DirectoryInfo outDir, string code)
        {
            var outPath = ParaibaPath.GetFullPath(relativePath, outDir.FullName);

            Directory.CreateDirectory(Path.GetDirectoryName(outPath));
            using (var writer = new StreamWriter(outPath, false, XEncoding.SJIS)) {
                writer.Write(code);
            }
            return(outPath);
        }
示例#6
0
        public static string GetIdentifiedTest(
            FileInfo testFile, TestInfo info, LanguageSupport support, out string relativePath)
        {
            relativePath = ParaibaPath.GetRelativePath(testFile.FullName, info.BasePath);
            var ast = support.CodeToXml.GenerateFromFile(testFile.FullName);

            // テストケース識別用コードの埋め込み
            CodeTransformer.InsertIntoTestCase(info, ast, support, relativePath);

            // コード生成
            return(support.XmlToCode.Generate(ast));
        }
示例#7
0
        public static string GetCoveragedCode(
            FileInfo codeFile, CoverageInfo info, LanguageSupport support, out string relativePath)
        {
            relativePath = ParaibaPath.GetRelativePath(codeFile.FullName, info.BasePath);
            var ast = support.CodeToXml.GenerateFromFile(codeFile.FullName);

            // 測定用コードの埋め込み
            var path = relativePath;

            CodeTransformer.InstrumentStatementAndPredicate(info, ast, support, path);

            // コード生成
            return(support.XmlToCode.Generate(ast));
        }
        private void LvStatementDoubleClick(object sender, EventArgs e)
        {
            var item =
                (CoverageListViewItem)
                _lvStatement.GetItemAt(_lastMouseLocation.X, _lastMouseLocation.Y);
            var element = item.Element;
            var path    = ParaibaPath.GetFullPath(element.RelativePath, _info.BasePath);

            new Editor(
                path, _info.StatementTargets
                .Where(
                    elm => elm.RelativePath == element.RelativePath &&
                    elm.State != CoverageState.Done)).Show();
        }
        private static TestInfo AnalyzeKleeTestFiles(DirectoryInfo testDirInfo)
        {
            var files    = testDirInfo.EnumerateFiles("*.ktest");
            var testInfo = new TestInfo(testDirInfo.FullName);

            testInfo.InitializeForStoringData(false);
            foreach (var file in files)
            {
                var relativePath = ParaibaPath.GetRelativePath(file.FullName, testDirInfo.FullName);
                var testCase     = new TestCase(relativePath, file.FullName, new CodeRange());
                testInfo.TestCases.Add(testCase);
                testCase.InitializeForStoringData(false);
                var dataPath = file.FullName + OccfNames.Record;
                CoverageDataReader.ReadFile(testInfo, new FileInfo(dataPath), testCase);
            }
            return(testInfo);
        }
        private void MainFormDragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                var filePathes = ((string[])e.Data.GetData(DataFormats.FileDrop));

                txtBase.Text = Path.GetDirectoryName(filePathes[0]);
                var basePath = txtBase.Text.AddIfNotEndsWith('\\');

                var files = filePathes.SelectMany(path => EnumerateFiles(path, "*"))
                            .Select(path => ParaibaPath.GetRelativePath(path, basePath));

                clbFiles.Items.Clear();
                foreach (var file in files)
                {
                    clbFiles.Items.Add(file);
                }
                SetFileCheckedWithCombBox();
            }
        }
示例#11
0
        public void InsertInstrumentationCode(string fileName)
        {
            var profile = LanguageSupports.GetCoverageModeByClassName("Java");

            CodeInsertTest.InsertInstrumentationCode(profile, fileName);

            var info = new CoverageInfo(
                Fixture.GetCoverageInputPath(), profile.Name, SharingMethod.SharedMemory);
            var inPath   = Path.Combine(Fixture.GetCoverageInputPath(), fileName);
            var codeFile = new FileInfo(inPath);

            var relativePath = ParaibaPath.GetRelativePath(codeFile.FullName, info.BasePath);
            var ast          = profile.CodeToXml.GenerateFromFile(codeFile.FullName);

            File.WriteAllText(Fixture.GetOutputPath(fileName) + ".xml", ast.ToString());

            // 測定用コードの埋め込み
            var path = relativePath;

            CodeTransformer.InstrumentStatementAndPredicate(info, ast, profile, path);

            File.WriteAllText(Fixture.GetOutputPath(fileName) + ".modified.xml", ast.ToString());
        }
        /// <summary>
        ///   Instruments test code for measuring code coverage and returns the modifieid code.
        /// </summary>
        /// <param name="support">A support to measure coverage.</param>
        /// <param name="fileInfo">A <c>FileInfo</c> instance to be instrumented.</param>
        /// <param name="baseDirInfo">A <c>DirectoryInfo</c> instance of base directory.</param>
        /// <returns>The modified test code.</returns>
        public string InstrumentTestCase(
            LanguageSupport support, FileInfo fileInfo, DirectoryInfo baseDirInfo)
        {
            var relativePath = ParaibaPath.GetRelativePath(fileInfo.FullName, baseDirInfo.FullName);

            var root     = support.CodeToXml.GenerateFromFile(fileInfo.FullName);
            var inserter = support.AstTransformer;

            var fileId = RegisterFile(fileInfo);

            var targets = support.AstAnalyzer.FindTestCases(root);

            foreach (var target in targets)
            {
                var testCaseId = RegisterTestCase(fileId);
                inserter.InsertTestCaseId(target, testCaseId, relativePath);
            }

            // Add import for logging executed items
            inserter.InsertImport(root);

            return(support.XmlToCode.Generate(root));
        }