Esempio n. 1
0
        private static void Visit(DscResourceDto item, ICollection <DscResourceDto> sorted, Dictionary <string, bool> visited)
        {
            var alreadyVisited = visited.TryGetValue(item.CreateIdForTopologicalSort(), out var inProcess);

            if (alreadyVisited)
            {
                if (inProcess)
                {
                    throw new ArgumentException("Cyclic dependency found.");
                }
            }
            else
            {
                visited[item.CreateIdForTopologicalSort()] = true;

                var dependencies = item.DependsOn;
                if (dependencies != null)
                {
                    foreach (var dependency in dependencies)
                    {
                        Visit(dependency, sorted, visited);
                    }
                }

                visited[item.CreateIdForTopologicalSort()] = false;
                sorted.Add(item);
            }
        }
        private void GivenDscResourceContainsInformations()
        {
            var dscDependency = new ChocolateyPackageDto
            {
                ChocolateyPackageName = "Dependency",
                DependsOn             = new List <DscResourceDto>(),
                Ensure           = Ensure.Present,
                ResourceName     = "TestResource",
                ResourceStepName = "TestStep"
            };

            resourceDto = new ChocolateyPackageDto
            {
                ChocolateyPackageName = "TestPackage",
                DependsOn             = new List <DscResourceDto> {
                    dscDependency
                },
                Ensure           = Ensure.Absent,
                ResourceName     = "TestMainResource",
                ResourceStepName = "TestMainStep"
            };
        }
Esempio n. 3
0
 private static string CreateIdForTopologicalSort(this DscResourceDto dscResourceDto)
 {
     return($"[{dscResourceDto.ResourceName}]{dscResourceDto.ResourceStepName}");
 }
 private void WhenConvertingToDto()
 {
     resultDto = testChocolateyPackage.ToResourceDto();
 }