Ejemplo n.º 1
0
        /**
         * @brief recursively collects all test container files that can be found
         */
        public static IEnumerable <string> CollectCTestTestfiles(string currentDir)
        {
            var file = new FileInfo(Path.Combine(currentDir, TestContainerHelper.TestFileName + TestContainerHelper.TestFileExtension));

            if (!file.Exists)
            {
                return(Enumerable.Empty <string>());
            }
            var res     = new List <string>();
            var content = file.OpenText().ReadToEnd();
            var matches = Regex.Matches(content, @".*[sS][uB][bB][dD][iI][rR][sS]\s*\((?<subdir>.*)\)");
            var subdirs = (from Match match in matches select match.Groups["subdir"].Value).ToList();

            if (content.Contains("add_test"))
            {
                res.Add(file.FullName);
            }
            foreach (var dir in subdirs)
            {
                var subpath = dir.Trim('\"');
                subpath = Path.Combine(currentDir, subpath);
                res.AddRange(TestContainerHelper.CollectCTestTestfiles(subpath));
            }
            return(res);
        }
Ejemplo n.º 2
0
        public void FindTestContainers()
        {
            this.Log(LogLevel.Debug, "FindTestContainers (clear)");
            this._testContainerWatcher.Clear();
            this._testContainers.Clear();
            if (!this.CTestAdapterEnabled)
            {
                return;
            }
            this.Log(LogLevel.Debug, "FindTestContainers (search)");
            // @todo verify something changed actually?!?
            var files = TestContainerHelper.CollectCTestTestfiles(this._package.CMakeCacheDirectory).ToList();

            foreach (var file in files)
            {
                this._testContainerWatcher.AddWatch(file);
                this._testContainers.Add(file);
            }
            if (null != this.TestContainersChanged)
            {
                this.TestContainersChanged(this, new TestContainerListArgs(this._testContainers));
            }
        }