public DatabaseReleaseTool(
            string databaseScriptPath,
            IFileStructurePolicy createDatabasePolicy,
            IFileStructurePolicy fileStructurePolicy,
            IOutputLogger outputLogger,
            IConnectionStringFactory connectionStringFactory,
            IDatabaseConnectionFactory databaseConnectionFactory)
        {
            if (outputLogger == null)
            {
                throw new ArgumentNullException("outputLogger");
            }

            if (string.IsNullOrEmpty(databaseScriptPath))
            {
                throw new ArgumentException(@"Cannot be null or empty.", "databaseScriptPath");
            }

            if (!Directory.Exists(databaseScriptPath))
            {
                throw new DirectoryNotFoundException(string.Format("Path: {0} does not exist.", databaseScriptPath));
            }

            _createDatabasePolicy      = createDatabasePolicy;
            _fileStructurePolicy       = fileStructurePolicy;
            _outputLogger              = outputLogger;
            _connectionStringFactory   = connectionStringFactory;
            _databaseConnectionFactory = databaseConnectionFactory;
            _databaseScriptsDirInfo    = new DirectoryInfo(databaseScriptPath);
        }
 public FileBoardConfigurationProvider(
     string fileLocation,
     IOutputLogger outputLogger)
 {
     _fileLocation = fileLocation;
     _outputLogger = outputLogger;
 }
예제 #3
0
        public int ExecuteAll(string binaryPath, IProgressRecorder progressRecorder,
                              IOutputLogger logger, ICrossDomainLogger crossDomainLogger)
        {
            var executionOperation = new BinaryExecutionOperation(binaryPath,
                                                                  progressRecorder, crossDomainLogger);

            return(RunOperationRemotely("all", executionOperation, binaryPath, logger));
        }
            public void Execute(
                IBinaryTestExecutor binaryTestExecutor,
                IProgressRecorder progressRecorder,
                IOutputLogger outputLogger, ICrossDomainLogger crossDomainLogger)
            {
                // TODO pass canceler to binaryTestExecutor.Execute

                binaryTestExecutor.ExecuteAll(BinaryPath, progressRecorder, outputLogger, crossDomainLogger);
            }
            public void Execute(
                IBinaryTestExecutor binaryTestExecutor,
                IProgressRecorder progressRecorder,
                IOutputLogger outputLogger, ICrossDomainLogger crossDomainLogger)
            {
                var testCaseFullNames = testCaseGroup.Select(tc => tc.FullyQualifiedName);

                // TODO pass canceler to binaryTestExecutor.Execute

                binaryTestExecutor.ExecuteSelected(BinaryPath, testCaseFullNames, progressRecorder, outputLogger, crossDomainLogger);
            }
예제 #6
0
        public int ExecuteSelected(string binaryPath, IEnumerable <string> testCaseFullNames,
                                   IProgressRecorder progressRecorder,
                                   IOutputLogger logger, ICrossDomainLogger crossDomainLogger)
        {
            string[] exampleFullNames = testCaseFullNames.ToArray();

            var executionOperation = new SelectionExecutionOperation(binaryPath, exampleFullNames,
                                                                     progressRecorder, crossDomainLogger);

            return(RunOperationRemotely("selected", executionOperation, binaryPath, logger));
        }
        public virtual void before_each()
        {
            autoSubstitute = new AutoSubstitute();

            testCases     = new List <TestCase>();
            discoverySink = autoSubstitute.Resolve <ITestCaseDiscoverySink>();
            discoverySink.When(sink => sink.SendTestCase(Arg.Any <TestCase>())).Do(callInfo =>
            {
                var discoveredTestCase = callInfo.Arg <TestCase>();

                testCases.Add(discoveredTestCase);
            });

            binaryTestDiscoverer = autoSubstitute.Resolve <IBinaryTestDiscoverer>();

            binaryTestDiscoverer.Discover(null, null, null).ReturnsForAnyArgs(callInfo =>
            {
                string binaryPath = callInfo.Arg <string>();

                if (sources.Contains(binaryPath))
                {
                    return(discoveredExamplesBySource[binaryPath]);
                }
                else
                {
                    return(new DiscoveredExample[0]);
                }
            });

            var testCaseMapper = autoSubstitute.Resolve <ITestCaseMapper>();

            testCaseMapper.FromDiscoveredExample(null).ReturnsForAnyArgs(callInfo =>
            {
                var discoveredExample = callInfo.Arg <DiscoveredExample>();

                var testCase = new TestCase(discoveredExample.FullName, Constants.ExecutorUri, discoveredExample.SourceFilePath);

                return(testCase);
            });

            var settingsRepository = autoSubstitute.Resolve <ISettingsRepository>();

            var messageLogger = autoSubstitute.Resolve <IMessageLogger>();

            outputLogger = autoSubstitute.Resolve <IOutputLogger>();
            var loggerFactory = autoSubstitute.Resolve <ILoggerFactory>();

            loggerFactory.CreateOutput(messageLogger, Arg.Any <IAdapterSettings>()).Returns(outputLogger);

            discoverer = new MultiSourceTestDiscoverer(sources, binaryTestDiscoverer, testCaseMapper, settingsRepository, loggerFactory);

            discoverer.DiscoverTests(discoverySink, messageLogger, autoSubstitute.Resolve <IDiscoveryContext>());
        }
예제 #8
0
 public GameEngine(
     IBoardConfigurationProvider boardConfigurationProvider,
     IMovesConfigurationProvider movesConfigurationProvider,
     IOutputLogger outputLogger,
     ICollection <IBoardValidator> boardValidators,
     ICollection <IMoveValidator> moveValidators)
 {
     _boardConfigurationProvider = boardConfigurationProvider;
     _movesConfigurationProvider = movesConfigurationProvider;
     _outputLogger    = outputLogger;
     _boardValidators = boardValidators;
     _moveValidators  = moveValidators;
 }
예제 #9
0
        public virtual void before_each()
        {
            autoSubstitute = new AutoSubstitute();

            proxyableExecutor = Substitute.For <IProxyableTestExecutor>();

            remoteRunner = autoSubstitute.SubstituteFor <ICrossDomainRunner <IProxyableTestExecutor, int> >();

            progressRecorder = autoSubstitute.Resolve <IProgressRecorder>();

            logger            = autoSubstitute.Resolve <IOutputLogger>();
            crossDomainLogger = autoSubstitute.Resolve <ICrossDomainLogger>();

            executor = autoSubstitute.Resolve <BinaryTestExecutor>();
        }
예제 #10
0
        public TransactionalSqlFileExecutor(IDbConnection connection, IOutputLogger outputLogger)
        {
            if (connection == null)
            {
                throw new ArgumentNullException("connection");
            }

            if (outputLogger == null)
            {
                throw new ArgumentNullException("outputLogger");
            }

            _connection   = connection;
            _outputLogger = outputLogger;
        }
        public void TransactionalSqlFileExecutorShouldCallOutputLoggerWriteLineMethod()
        {
            // Arrange
            IDbConnection conn         = MockRepository.GenerateStub <IDbConnection>();
            IOutputLogger outputLogger = MockRepository.GenerateMock <IOutputLogger>();

            outputLogger.Expect(method => method.WriteInfoLine("Dummy", 1)).Repeat.Never();
            TransactionalSqlFileExecutor executor = new TransactionalSqlFileExecutor(conn, outputLogger);
            List <string> fileList = new List <string>();

            // Act
            executor.ExecuteTransactional(fileList, null);

            // Assert
            outputLogger.VerifyAllExpectations();
        }
예제 #12
0
        public IEnumerable <DiscoveredExample> Discover(string binaryPath,
                                                        IOutputLogger logger, ICrossDomainLogger crossDomainLogger)
        {
            if (!NSpecLibraryFound(binaryPath))
            {
                logger.Debug(String.Format("Skipping binary '{0}' because it does not reference nspec library", binaryPath));

                return(new DiscoveredExample[0]);
            }
            else
            {
                var discoveryOperation = new BinaryDiscoveryOperation(binaryPath, crossDomainLogger);

                return(RunOperationRemotely(discoveryOperation, binaryPath, logger));
            }
        }
예제 #13
0
        public virtual void before_each()
        {
            autoSubstitute = new AutoSubstitute();

            proxyableDiscoverer = Substitute.For <IProxyableTestDiscoverer>();

            remoteRunner = autoSubstitute.SubstituteFor <
                ICrossDomainRunner <IProxyableTestDiscoverer, DiscoveredExample[]> >();

            fileService = autoSubstitute.Resolve <IFileService>();

            logger            = autoSubstitute.Resolve <IOutputLogger>();
            crossDomainLogger = autoSubstitute.Resolve <ICrossDomainLogger>();

            discoverer = autoSubstitute.Resolve <BinaryTestDiscoverer>();
        }
예제 #14
0
        IEnumerable <DiscoveredExample> RunOperationRemotely(
            IDiscoveryOperation discoveryOperation, string binaryPath, IOutputLogger logger)
        {
            logger.Info(String.Format("Discovering tests in binary '{0}'", binaryPath));

            IEnumerable <DiscoveredExample> discoveredExamples = remoteRunner.Run(binaryPath, discoveryOperation.Run,
                                                                                  (ex, path) =>
            {
                // report problem and return for the next assembly, without crashing the test discovery process
                var message = String.Format("Exception thrown while discovering tests in binary '{0}'", binaryPath);
                logger.Error(ex, message);

                return(new DiscoveredExample[0]);
            });

            logger.Info(String.Format("Found {0} tests in binary '{1}'", discoveredExamples.Count(), binaryPath));

            return(discoveredExamples);
        }
예제 #15
0
        public virtual void before_each()
        {
            autoSubstitute = new AutoSubstitute();

            frameworkHandle = autoSubstitute.Resolve <IFrameworkHandle>();

            binaryTestExecutor = autoSubstitute.Resolve <IBinaryTestExecutor>();

            progressRecorder        = autoSubstitute.Resolve <IProgressRecorder>();
            progressRecorderFactory = autoSubstitute.Resolve <IProgressRecorderFactory>();
            progressRecorderFactory.Create(frameworkHandle).Returns(progressRecorder);

            settingsRepository = autoSubstitute.Resolve <ISettingsRepository>();

            outputLogger  = autoSubstitute.Resolve <IOutputLogger>();
            loggerFactory = autoSubstitute.Resolve <ILoggerFactory>();
            loggerFactory.CreateOutput(null, null).ReturnsForAnyArgs(outputLogger);

            actualSources = new List <string>();

            progressRecorder.BinaryPath = Arg.Do <string>(path => actualSources.Add(path));
        }
        public void TransactionalSqlFileExecutorShouldReadFilesWithGivenEncoding(string inputFile, bool useUtf8)
        {
            // Arrange
            IDbConnection  conn         = MockRepository.GenerateStub <IDbConnection>();
            IOutputLogger  outputLogger = MockRepository.GenerateMock <IOutputLogger>();
            IDbCommand     command      = MockRepository.GenerateStub <IDbCommand>();
            IDbTransaction transaction  = MockRepository.GenerateStub <IDbTransaction>();

            conn.Expect(method => method.BeginTransaction()).Return(transaction);
            conn.Expect(method => method.CreateCommand()).Return(command);

            List <string> fileList = new List <string> {
                inputFile
            };
            Encoding encoding = useUtf8 ? Encoding.UTF8 : Encoding.Default;

            TransactionalSqlFileExecutor executor = new TransactionalSqlFileExecutor(conn, outputLogger);

            // Act
            executor.ExecuteTransactional(fileList, encoding);

            // Assert
            Assert.That(command.CommandText, Is.EqualTo(File.ReadAllText(inputFile, encoding)));
        }
예제 #17
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GitSquashWrapper" /> class.
 /// </summary>
 /// <param name="repoDirectory">The directory where the repository is located</param>
 /// <param name="logger">The output logger to output GIT transactions.</param>
 /// <param name="gitProcess">The GIT process to use.</param>
 public GitSquashWrapper(string repoDirectory, IOutputLogger logger, IGitProcessManager gitProcess = null)
 {
     this.repoDirectory = repoDirectory;
     this.gitProcess    = gitProcess ?? new GitProcessManager(repoDirectory, logger);
     this.branchManager = new BranchManager(this.repoDirectory, null);
 }
예제 #18
0
 public LoggableTest(IOutputLogger outputLogger)
 {
     this.OutputLogger = outputLogger;
 }
예제 #19
0
 public CityClinicsTest(IOutputLogger outputLogger) : base(outputLogger)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="GitProcessManager"/> class.
 /// </summary>
 /// <param name="repoDirectory">The location of the GIT repository.</param>
 /// <param name="newOutputLogger">The output logger where to send output.</param>
 public GitProcessManager(string repoDirectory, IOutputLogger newOutputLogger)
 {
     this.repoDirectory = repoDirectory;
     this.outputLogger  = newOutputLogger;
 }
예제 #21
0
 public CrossDomainLogger(IOutputLogger outputLogger)
 {
     this.outputLogger = outputLogger;
 }
예제 #22
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BranchManager"/> class.
 /// </summary>
 /// <param name="repoPath">The directory to the repo.</param>
 /// <param name="logger">The logger to use.</param>
 public BranchManager(string repoPath, IOutputLogger logger)
 {
     this.gitProcessManager = new GitProcessManager(repoPath, logger);
 }
예제 #23
0
 public PangramTest(IOutputLogger outputLogger) : base(outputLogger)
 {
 }
예제 #24
0
 public TopmostStepTest(IOutputLogger outputLogger) : base(outputLogger)
 {
 }
예제 #25
0
파일: WorldModel.cs 프로젝트: Treu124/quest
        private bool InitialiseInternal(GameLoader loader)
        {
            if (m_state != GameState.NotStarted)
            {
                throw new Exception("Game already initialised");
            }
            loader.FilenameUpdated += loader_FilenameUpdated;
            loader.LoadStatus += loader_LoadStatus;
            m_state = GameState.Loading;

            bool success;
            if (m_data != null)
            {
                success = loader.Load(data: m_data);
            }
            else
            {
                success = m_filename == null || loader.Load(m_filename);
            }

            DebugEnabled = !loader.IsCompiledFile;
            m_state = success ? GameState.Running : GameState.Finished;
            m_errors = loader.Errors;
            m_saver = new GameSaver(this);
            if (Version <= WorldModelVersion.v530)
            {
                m_legacyOutputLogger = new LegacyOutputLogger(this);
                m_outputLogger = m_legacyOutputLogger;
            }
            else
            {
                m_outputLogger = new OutputLogger(this);
            }
            return success;
        }
예제 #26
0
 public MergeArraysTask(IOutputLogger outputLogger) : base(outputLogger)
 {
 }
예제 #27
0
        // TODO pass canceler to proxyableExecutor

        int RunOperationRemotely(string description,
                                 IExecutionOperation executionOperation, string binaryPath, IOutputLogger logger)
        {
            logger.Info(String.Format("Executing {0} tests in binary '{1}'", description, binaryPath));

            int count = remoteRunner.Run(binaryPath, executionOperation.Run, (ex, path) =>
            {
                // report problem and return for the next assembly, without crashing the test execution process
                var message = String.Format("Exception thrown while executing tests in binary '{0}'", path);
                logger.Error(ex, message);

                return(0);
            });

            logger.Info(String.Format("Executed {0} tests in binary '{1}'", count, binaryPath));

            return(count);
        }