Exemplo n.º 1
0
        public override ICollection Load(string location, ProjectData projectData, IWarningHandler warningHandler)
        {
            // Skip loading if the extension is not fully initalized unless we are not
            // running in Visual Studio (because we are running in MSTest instead).
            if (!TipShellExtension.IsInitialized && ShellEnvironment.IsRunningInVisualStudio)
            {
                return(EmptyArray <TestElement> .Instance);
            }

            // Explore the tests.
            ITestFrameworkManager testFrameworkManager = RuntimeAccessor.ServiceLocator.Resolve <ITestFrameworkManager>();
            WarningLogger         logger = new WarningLogger(warningHandler);

            ReflectionOnlyAssemblyLoader loader = new ReflectionOnlyAssemblyLoader();

            loader.AddHintDirectory(Path.GetDirectoryName(location));

            IAssemblyInfo assembly = loader.ReflectionPolicy.LoadAssemblyFrom(location);

            var testFrameworkSelector = new TestFrameworkSelector()
            {
                Filter       = testFrameworkHandle => testFrameworkHandle.Id != "MSTestAdapter.TestFramework",
                FallbackMode = TestFrameworkFallbackMode.Approximate
            };

            ITestDriver            driver = testFrameworkManager.GetTestDriver(testFrameworkSelector, logger);
            TestExplorationOptions testExplorationOptions = new TestExplorationOptions();

            ArrayList       tests           = new ArrayList();
            MessageConsumer messageConsumer = new MessageConsumer()
                                              .Handle <TestDiscoveredMessage>(message =>
            {
                if (message.Test.IsTestCase)
                {
                    tests.Add(GallioTestElementFactory.CreateTestElement(message.Test, location, projectData));
                }
            })
                                              .Handle <AnnotationDiscoveredMessage>(message =>
            {
                message.Annotation.Log(logger, true);
            });

            driver.Describe(loader.ReflectionPolicy, new ICodeElementInfo[] { assembly },
                            testExplorationOptions, messageConsumer, NullProgressMonitor.CreateInstance());

            return(tests);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Loads elements from specified location into memory
        /// 
        /// This method uses exceptions for error conditions -- Not return values.
        /// </summary>
        /// <param name="assemblyFileLocation">Location to load tests from.</param>
        /// <param name="projectData">Project information object.</param>
        /// <param name="warningHandler">Warning handler that processes warnings.</param>
        /// <returns>The data that has been loaded</returns>
        public override ICollection Load(string assemblyFileLocation, ProjectData projectData, IWarningHandler warningHandler)
        {
            Guard.StringNotNullOrEmpty(assemblyFileLocation, "location");

            IExecutorWrapper executor = null;

            try
            {
                // The ExecutorWrapper is the xUnit's version-resilient layer for communicating with different
                // versions of the main xunit.dll. The XUnitVSRunner is thus ignorant about that module and will
                // try to communicate and use whatever version is actually referenced in the unit test's assembly.
                executor = new ExecutorWrapper(assemblyFileLocation, configFilename: null, shadowCopy: true);
            }
            catch (ArgumentException ex)
            {
                Trace.WriteLine("No xUnit tests found in '" + assemblyFileLocation + "':");
                Trace.WriteLine(ex);
            }
            #if DEBUG
            catch (Exception ex)
            {
                Trace.TraceError("Error at XUnitTestTip.Load: " + ex.Message);
                throw;
            }
            #endif

            var tests = new List<ITestElement>(); // Collection of tests loaded from disk
            if (executor == null) return tests;

            using (executor)
            {
                var testAssembly = TestAssemblyBuilder.Build(executor);

                // the magic is in this two-liner: we ask the xUnit to find all tests and then
                // with heavy use of Reflection we create the actual internal Microsoft's UnitTestElements
                // that will contain all required information about the test's location
                foreach (var xmethod in testAssembly.EnumerateTestMethods())
                    tests.Add(MSVST4U_Access.New_MSVST4U_UnitTestElement(
                        assemblyFileLocation,
                        xmethod.TestClass.TypeName,
                        xmethod.MethodName,
                        projectData));
            }

            return tests;
        }
Exemplo n.º 3
0
        public override ICollection Load(string location, ProjectData projectData, IWarningHandler warningHandler)
        {
            // Skip loading if the extension is not fully initalized unless we are not
            // running in Visual Studio (because we are running in MSTest instead).
            if (!TipShellExtension.IsInitialized && ShellEnvironment.IsRunningInVisualStudio)
                return EmptyArray<TestElement>.Instance;

            // Explore the tests.
            ITestFrameworkManager testFrameworkManager = RuntimeAccessor.ServiceLocator.Resolve<ITestFrameworkManager>();
            WarningLogger logger = new WarningLogger(warningHandler);

            ReflectionOnlyAssemblyLoader loader = new ReflectionOnlyAssemblyLoader();
            loader.AddHintDirectory(Path.GetDirectoryName(location));

            IAssemblyInfo assembly = loader.ReflectionPolicy.LoadAssemblyFrom(location);

            var testFrameworkSelector = new TestFrameworkSelector()
            {
                Filter = testFrameworkHandle => testFrameworkHandle.Id != "MSTestAdapter.TestFramework",
                FallbackMode = TestFrameworkFallbackMode.Approximate
            };

            ITestDriver driver = testFrameworkManager.GetTestDriver(testFrameworkSelector, logger);
            TestExplorationOptions testExplorationOptions = new TestExplorationOptions();

            ArrayList tests = new ArrayList();
            MessageConsumer messageConsumer = new MessageConsumer()
                .Handle<TestDiscoveredMessage>(message =>
                {
                    if (message.Test.IsTestCase)
                        tests.Add(GallioTestElementFactory.CreateTestElement(message.Test, location, projectData));
                })
                .Handle<AnnotationDiscoveredMessage>(message =>
                {
                    message.Annotation.Log(logger, true);
                });

            driver.Describe(loader.ReflectionPolicy, new ICodeElementInfo[] { assembly },
                testExplorationOptions, messageConsumer, NullProgressMonitor.CreateInstance());

            return tests;
        }
Exemplo n.º 4
0
 public CoreService()
 {
     _warningHandler = new WarningHandler();
     _shotHandler    = new ShotHandler();
 }
Exemplo n.º 5
0
 public void Unload(string location, IWarningHandler warningHandler)
 {
     target.Unload(location, warningHandler);
 }
Exemplo n.º 6
0
 public ICollection Load(string location, ProjectData projectData, IWarningHandler warningHandler)
 {
     return target.Load(location, projectData, warningHandler);
 }
Exemplo n.º 7
0
 public WarningLogger(IWarningHandler warningHandler)
 {
     this.warningHandler = warningHandler;
 }
Exemplo n.º 8
0
 public WarningLogger(IWarningHandler warningHandler)
 {
     this.warningHandler = warningHandler;
 }
Exemplo n.º 9
0
        public MainWindow()
        {
            InitializeComponent();

            _mapView = MapViewPanel.Instance;

            _settingsManager   = new SettingsManager();
            _windowMenuManager = new WindowMenuManager(showMenu, miHelp);

            loadDefaults();

            Palette.UFOBattle.SetTransparent(true);
            Palette.TFTDBattle.SetTransparent(true);
            Palette.UFOBattle.Grayscale.SetTransparent(true);
            Palette.TFTDBattle.Grayscale.SetTransparent(true);

            #region Setup SharedSpace information and paths

            var sharedSpace        = SharedSpace.Instance;
            var consoleSharedSpace = new ConsoleSharedSpace(sharedSpace);
            _warningHandler = new ConsoleWarningHandler(consoleSharedSpace);

            MainWindowsManager.MainToolStripButtonsFactory = new MainToolStripButtonsFactory(_mapView);

            _mainWindowsManager       = new MainWindowsManager();
            _mainWindowWindowsManager = new MainWindowWindowsManager(
                _settingsManager,
                consoleSharedSpace);

            var settings = GetSettings();
            _windowMenuManager.SetMenus(consoleSharedSpace.GetNewConsole(), settings);

            MainWindowsManager.MainWindowsShowAllManager = _windowMenuManager.CreateShowAll();
            MainWindowsManager.Initialize();

            sharedSpace.GetObj("MapView", this);
            sharedSpace.GetObj("AppDir", Environment.CurrentDirectory);
            sharedSpace.GetObj("CustomDir", Environment.CurrentDirectory + "/custom");
            sharedSpace.GetObj("SettingsDir", Environment.CurrentDirectory + "/settings");

            var pathsFile    = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "Paths", "pth");
            var settingsFile = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "MVSettings", "dat");
            var mapeditFile  = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "MapEdit", "dat");
            var imagesFile   = new PathInfo(SharedSpace.Instance.GetString("SettingsDir"), "Images", "dat");

            sharedSpace.GetObj("MV_PathsFile", pathsFile);
            sharedSpace.GetObj(SettingsService.FILE_NAME, settingsFile);
            sharedSpace.GetObj("MV_MapEditFile", mapeditFile);
            sharedSpace.GetObj("MV_ImagesFile", imagesFile);

            #endregion

            if (!pathsFile.Exists())
            {
                InstallWindow iw = new InstallWindow();

                if (iw.ShowDialog(this) != DialogResult.OK)
                {
                    Environment.Exit(-1);
                }
            }

            GameInfo.ParseLine += parseLine;

            InitGameInfo(pathsFile);
            LogFile.Instance.WriteLine("GameInfo.Init done");

            _mainWindowWindowsManager.Register();

            MainWindowsManager.TileView.TileViewControl.MapChanged += TileView_MapChanged;

            LogFile.Instance.WriteLine("Palette transparencies set");

            MapViewPanel.ImageUpdate += new EventHandler(update);

            _mapView.Dock = DockStyle.Fill;

            instance = this;

            mapList.TreeViewNodeSorter = new System.Collections.CaseInsensitiveComparer();

            toolStripContainer1.ContentPanel.Controls.Add(_mapView);
            MainWindowsManager.MainToolStripButtonsFactory.MakeToolstrip(toolStrip);
            toolStrip.Enabled = false;
            toolStrip.Items.Add(new ToolStripSeparator());

            LogFile.Instance.WriteLine("Main view window created");
            LogFile.Instance.WriteLine("Default settings loaded");

            try
            {
                _mapView.MapView.CursorSprite = new CursorSprite(GameInfo.CachePck(
                                                                     SharedSpace.Instance.GetString("cursorFile"),
                                                                     "",
                                                                     2,
                                                                     Palette.UFOBattle));
            }
            catch
            {
                try
                {
                    _mapView.MapView.CursorSprite = new CursorSprite(GameInfo.CachePck(
                                                                         SharedSpace.Instance.GetString("cursorFile"),
                                                                         "",
                                                                         4,
                                                                         Palette.TFTDBattle));
                }
                catch
                {
                    _mapView.Cursor = null;
                }
            }

            LogFile.Instance.WriteLine("Cursor loaded");

            initList();

            LogFile.Instance.WriteLine("Map list created");
            LogFile.Instance.WriteLine("Quick help and About created");

            if (settingsFile.Exists())
            {
                _settingsManager.Load(settingsFile.ToString());
                LogFile.Instance.WriteLine("User settings loaded");
            }
            else
            {
                LogFile.Instance.WriteLine("User settings NOT loaded - no settings file to load");
            }

            OnResize(null);
            this.Closing += new CancelEventHandler(closing);

            _lf = new LoadingForm();
            Bmp.LoadingEvent += _lf.Update;

            // I should rewrite the hq2x wrapper for .NET sometime -- not the code it's pretty insane
//			if (!File.Exists("hq2xa.dll"))
            miHq.Visible = false;

//			LogFile.Instance.WriteLine("Loading user-made plugins");

            /****************************************/
            // Copied from PckView
//			loadedTypes = new LoadOfType<IMapDesc>();
//			sharedSpace["MapMods"] = loadedTypes.AllLoaded;

            // There are no currently loadable maps in this assembly so this is more for future use
//			loadedTypes.LoadFrom(Assembly.GetAssembly(typeof(XCom.Interfaces.Base.IMapDesc)));

//			if (Directory.Exists(sharedSpace["CustomDir"].ToString()))
//			{
//				xConsole.AddLine("Custom directory exists: " + sharedSpace["CustomDir"].ToString());
//				foreach (string s in Directory.GetFiles(sharedSpace["CustomDir"].ToString()))
//					if (s.EndsWith(".dll"))
//					{
//						xConsole.AddLine("Loading dll: " + s);
//						loadedTypes.LoadFrom(Assembly.LoadFrom(s));
//					}
//			}
            /****************************************/

            LogFile.Instance.WriteLine("About to show window");
            Show();
            LogFile.Instance.Close();             // TODO: Keep logfile open until the program closes.
        }
Exemplo n.º 10
0
 public void Unload(string location, IWarningHandler warningHandler)
 {
     target.Unload(location, warningHandler);
 }
Exemplo n.º 11
0
 public ICollection Load(string location, ProjectData projectData, IWarningHandler warningHandler)
 {
     return(target.Load(location, projectData, warningHandler));
 }