public void TestCheckNeeds__Exception()
        {
            string[] modList = { "mod1", "mod2" };

            UrlDir.UrlConfig config1 = UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE"), file);
            UrlDir.UrlConfig config2 = UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod3]"), file);
            UrlDir.UrlConfig config3 = UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE"), file);

            Exception e = new Exception();

            progress.When(p => p.NeedsUnsatisfiedRoot(config2)).Throw(e);

            NeedsChecker.CheckNeeds(root, modList, progress, logger);

            progress.DidNotReceiveWithAnyArgs().Exception(null, null);
            progress.DidNotReceiveWithAnyArgs().Error(null, null);

            string expected = @"
Exception while checking needs on root node :
abc/def/SOME_NODE:NEEDS[mod3]
  SOME_NODE:NEEDS[mod3]
  {
  }
".Replace("\r", null).TrimStart();

            progress.Received().Exception(config2, expected, e);

            Assert.Equal(new[] { config1, config3 }, root.AllConfigs);
        }