Exemple #1
0
        ABITestResult CheckFile(string baseFile, string targetFile)
        {
            ABITestResult      result = ABITestResult.None;
            IList <MemberInfo> changedAPIList;

            try
            {
                if (targetFile == string.Empty)
                {
                    changedAPIList = _checker.CheckAssemblyFile(Assembly.LoadFrom(baseFile));
                }
                else
                {
                    changedAPIList = _checker.CheckAssemblyFile(Assembly.LoadFrom(baseFile), Assembly.LoadFile(targetFile));
                }
                var internalAPIList = new List <MemberInfo>();
                for (int i = changedAPIList.Count - 1; i >= 0; i--)
                {
                    if (changedAPIList[i].GetCustomAttribute <EditorBrowsableAttribute>()?.State == EditorBrowsableState.Never ||
                        changedAPIList[i].DeclaringType.GetCustomAttribute <EditorBrowsableAttribute>()?.State == EditorBrowsableState.Never)
                    {
                        Console.WriteLine($"  Internal API changed: {changedAPIList[i].DeclaringType}::{changedAPIList[i].ToString()}");
                        internalAPIList.Add(changedAPIList[i]);
                        changedAPIList.Remove(changedAPIList[i]);
                    }
                }

                if (changedAPIList.Count > 0)
                {
                    result |= ABITestResult.ACRRequired;
                }
                if (internalAPIList.Count > 0)
                {
                    result |= ABITestResult.InternalAPIChanged;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(result);
        }
Exemple #2
0
        ABITestResult CheckDirectory()
        {
            DirectoryInfo baseDirectoryInfo   = new DirectoryInfo(_basePath);
            DirectoryInfo targetDirectoryInfo = new DirectoryInfo(_targetPath);

            if (!baseDirectoryInfo.Exists || !targetDirectoryInfo.Exists)
            {
                Console.WriteLine($"invalid directory path");
            }

            FileInfo[] baseDllFiles   = baseDirectoryInfo.GetFiles("*.dll", SearchOption.TopDirectoryOnly);
            FileInfo[] targetDllFiles = targetDirectoryInfo.GetFiles("*.dll", SearchOption.TopDirectoryOnly);

            Console.WriteLine($"File Count : {baseDllFiles.Length} == {targetDllFiles.Length}");

            ABITestResult directoryResult = ABITestResult.None;

            directoryResult |= CheckChangedModule(baseDllFiles, targetDllFiles);
            Console.WriteLine($"Module Check : {directoryResult.ToString()}");
            Console.WriteLine("---------------------------------");

            int count = 1;

            foreach (var baseFile in baseDllFiles)
            {
                foreach (var targetFile in targetDllFiles)
                {
                    if (baseFile.Name == targetFile.Name)
                    {
                        var fileResult = CheckFile(baseFile.FullName, targetFile.FullName);
                        Console.WriteLine($"{count++}. {baseFile.ToString()} : {((fileResult & ABITestResult.ACRRequired) == ABITestResult.ACRRequired ? "FAIL" : "PASS")}");
                        directoryResult |= fileResult;
                    }
                }
            }
            return(directoryResult);
        }