function it_loads_an_existing_container_if_cache_is_fresh(ContainerBuilder $containerBuilder, ContainerLoader $containerLoader, Filesystem $filesystem, Configuration $configuration, Loader $loader)
 {
     $filesystem->isCacheFresh()->willReturn(true);
     $filesystem->dump(Argument::any())->shouldNotBeCalled();
     $loader->loadContainer(Argument::any())->shouldNotBeCalled();
     $this->build($configuration)->shouldReturn($containerBuilder);
 }
 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());
 }
 /**
  * @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;
 }