function it_loads_an_existing_container_if_it_exists_when_not_in_debug_mode(ContainerBuilder $containerBuilder, ContainerLoader $containerLoader, Filesystem $filesystem, Configuration $configuration)
 {
     $configuration->getDebug()->willReturn(false);
     $filesystem->exists(Argument::any())->willReturn(true);
     $filesystem->dump(Argument::any())->shouldNotBeCalled();
     $containerLoader->loadFrom($this->containerFile)->willReturn($containerBuilder);
     $this->build($configuration)->shouldReturn($containerBuilder);
 }
 /**
  * @param Configuration $configuration
  *
  * @return Container
  */
 public function build(Configuration $configuration)
 {
     if (!$this->filesystem->isCacheFresh()) {
         $container = $this->compile($configuration);
         $this->filesystem->dump($container);
     }
     return $this->containerLoader->loadFrom($configuration->getContainerFilePath());
 }
 function let(Loader $loader, ContainerLoader $containerLoader, Filesystem $filesystem, ContainerBuilder $containerBuilder, Configuration $configuration)
 {
     $configuration->getServicesFormat()->willReturn('xml');
     $configuration->getServicesFolders()->willReturn([]);
     $configuration->getContainerFilePath()->willReturn($this->containerFile);
     $configuration->getCompilerPasses()->willReturn([]);
     $containerLoader->loadFrom($this->containerFile)->willReturn($containerBuilder);
     $this->beConstructedWith($loader, $containerLoader, $filesystem);
 }
 /**
  * @param Configuration $configuration
  *
  * @return Container
  */
 public function build(Configuration $configuration)
 {
     $containerFilePath = $configuration->getContainerFilePath();
     $containerHasBeenBuilt = $this->filesystem->exists($containerFilePath);
     $isDebug = $configuration->getDebug();
     if ($isDebug) {
         $container = $this->compile($configuration);
     } else {
         if ($containerHasBeenBuilt) {
             $container = $this->containerLoader->loadFrom($containerFilePath);
         } else {
             $container = $this->compile($configuration);
             $this->filesystem->dump($container);
         }
     }
     return $container;
 }