private void onChange(object sender, FileSystemEventArgs e)
        {
            lock (compileLock)
            {
                if (checkpointObject == null || isCompiling)
                {
                    return;
                }

                var checkpointName = checkpointObject.GetType().Name;

                var reqTypes = checkpointObject.RequiredTypes.Select(t => t.Name).ToList();

                // add ourselves as a required type.
                reqTypes.Add(checkpointName);
                // if we are a TestCase, add the class we are testing automatically.
                reqTypes.Add(TestCase.RemovePrefix(checkpointName));

                if (!reqTypes.Contains(Path.GetFileNameWithoutExtension(e.Name)))
                {
                    return;
                }

                if (!reqTypes.SequenceEqual(requiredTypeNames))
                {
                    requiredTypeNames = reqTypes;

                    requiredFiles.Clear();
                    foreach (var d in validDirectories)
                    {
                        requiredFiles.AddRange(Directory
                                               .EnumerateFiles(d, "*.cs", SearchOption.AllDirectories)
                                               .Where(fw => requiredTypeNames.Contains(Path.GetFileNameWithoutExtension(fw))));
                    }
                }

                lastTouchedFile = e.FullPath;

                isCompiling = true;
                Task.Run(recompile)
                .ContinueWith(_ => isCompiling = false);
            }
        }
Example #2
0
        private void updateList(ValueChangedEvent <Assembly> args)
        {
            leftFlowContainer.Clear();

            //Add buttons for each TestCase.
            string namespacePrefix = TestTypes.Select(t => t.Namespace).GetCommonPrefix();

            leftFlowContainer.AddRange(TestTypes.Where(t => t.Assembly == args.NewValue)
                                       .GroupBy(
                                           t =>
            {
                string group = t.Namespace?.Substring(namespacePrefix.Length).TrimStart('.');
                return(string.IsNullOrWhiteSpace(group) ? TestCase.RemovePrefix(t.Name) : group);
            },
                                           t => t,
                                           (group, types) => new TestGroup {
                Name = group, TestTypes = types.ToArray()
            }
                                           ).OrderBy(g => g.Name)
                                       .Select(t => new TestCaseButtonGroup(type => LoadTest(type), t)));
        }