public static void Describe(Loader environment, TestDependency script) { EnsureFresh(); var path = script.ScriptName; var dependencies = script.Dependencies ?? Enumerable.Empty<string>(); var file = environment.ApplyLoadPaths(path); if (file == null || !file.Exists) throw new PrexoniteException(string.Format("Cannot find script {0}.", path)); var moduleName = new ModuleName(Path.GetFileNameWithoutExtension(path), new Version(0, 0)); if (Cache.TargetDescriptions.Contains(moduleName)) { _trace.TraceEvent(TraceEventType.Verbose, 0, "ModuleCache already contains a description of {0} on thread {1}, no action necessary.", moduleName, Thread.CurrentThread.ManagedThreadId); return; } var dependencyNames = dependencies.Select(dep => new ModuleName(Path.GetFileNameWithoutExtension(dep), new Version(0, 0))).ToArray(); // Manually add legacy symbol and stdlib dependencies var effectiveDependencies = dependencyNames.Append(LegacySymbolsDescription.Name).Append(StdlibDescription.Name); var desc = Cache.CreateDescription(moduleName, Source.FromFile(file,Encoding.UTF8), path, effectiveDependencies); _trace.TraceEvent(TraceEventType.Information, 0, "Adding new target description for cache on thread {0}: {1}.", Thread.CurrentThread.ManagedThreadId, desc); Cache.TargetDescriptions.Add(desc); }