private IMetadataAssembly GetAssembly(string filename, out MetadataLoader loader) { var references = GetProjectReferences() .ToArray(); var compiledAssembly = GetAssembly(filename, references); var path = GetTestDataFilePath2(filename).Directory; var referencePaths = references .Select(Path.GetDirectoryName) .Select(x => FileSystemPath.Parse(x)); var resolverOnFolders = new AssemblyResolverOnFolders(); resolverOnFolders.AddPath(path); foreach (var referencePath in referencePaths) { resolverOnFolders.AddPath(referencePath); } var assemblyPath = path.Combine(compiledAssembly); loader = new MetadataLoader(resolverOnFolders); var assembly = loader.TryLoadFrom(assemblyPath, x => true); Assert.That(assembly, Is.Not.Null, $"Cannot get metadata assembly: {filename}"); return(assembly); }
protected override void DoTest(Lifetime lifetime, IProject testProject) { var name = testProject.GetSubItems()[0].Location.Name; var testAssembly = GetVirtualTestDataFilePath(name); var resolve = new AssemblyResolverOnFolders(); resolve.AddPath(testAssembly.Directory); using (WriteLockCookie.Create()) { PrepareBeforeRun(testProject); } var discoveryManager = Solution.GetComponent <IUnitTestDiscoveryManager>(); var assemblyExplorer = Solution.GetComponent <MspecTestExplorerFromArtifacts>(); var source = new UnitTestElementSource(UnitTestElementOrigin.Artifact, new ExplorationTarget( testProject, GetTargetFrameworkId(), new MspecTestProvider())); using (var transaction = discoveryManager.BeginTransaction(source)) { assemblyExplorer.ProcessArtifact(transaction.Observer, lifetime).Wait(lifetime); DumpElements(transaction.Elements, name + ".metadata"); } }