Ninja
Classes | Functions
build_test.cc File Reference
#include "build.h"
#include <assert.h>
#include "build_log.h"
#include "deps_log.h"
#include "graph.h"
#include "test.h"
Include dependency graph for build_test.cc:

Go to the source code of this file.

Classes

struct  BuildDryRun
 
struct  BuildTest
 
struct  BuildWithDepsLogTest
 Tests of builds involving deps logs necessarily must span multiple builds. More...
 
struct  BuildWithLogTest
 
struct  FakeCommandRunner
 Fake implementation of CommandRunner, useful for tests. More...
 
struct  PlanTest
 Fixture for tests involving Plan. More...
 

Functions

 TEST_F (PlanTest, Basic)
 
 TEST_F (PlanTest, DoubleOutputDirect)
 
 TEST_F (PlanTest, DoubleOutputIndirect)
 
 TEST_F (PlanTest, DoubleDependent)
 
 TEST_F (PlanTest, DependencyCycle)
 
 TEST_F (PlanTest, CycleInEdgesButNotInNodes1)
 
 TEST_F (PlanTest, CycleInEdgesButNotInNodes2)
 
 TEST_F (PlanTest, CycleInEdgesButNotInNodes3)
 
 TEST_F (PlanTest, CycleInEdgesButNotInNodes4)
 
 TEST_F (PlanTest, PoolWithDepthOne)
 
 TEST_F (PlanTest, ConsolePool)
 
 TEST_F (PlanTest, PoolsWithDepthTwo)
 
 TEST_F (PlanTest, PoolWithRedundantEdges)
 
 TEST_F (BuildTest, NoWork)
 
 TEST_F (BuildTest, OneStep)
 
 TEST_F (BuildTest, OneStep2)
 
 TEST_F (BuildTest, TwoStep)
 
 TEST_F (BuildTest, TwoOutputs)
 
 TEST_F (BuildTest, MultiOutIn)
 
 TEST_F (BuildTest, Chain)
 
 TEST_F (BuildTest, MissingInput)
 
 TEST_F (BuildTest, MissingTarget)
 
 TEST_F (BuildTest, MakeDirs)
 
 TEST_F (BuildTest, DepFileMissing)
 
 TEST_F (BuildTest, DepFileOK)
 
 TEST_F (BuildTest, DepFileParseError)
 
 TEST_F (BuildTest, OrderOnlyDeps)
 
 TEST_F (BuildTest, RebuildOrderOnlyDeps)
 
 TEST_F (BuildTest, Phony)
 
 TEST_F (BuildTest, PhonyNoWork)
 
 TEST_F (BuildTest, Fail)
 
 TEST_F (BuildTest, SwallowFailures)
 
 TEST_F (BuildTest, SwallowFailuresLimit)
 
 TEST_F (BuildTest, PoolEdgesReadyButNotWanted)
 
 TEST_F (BuildWithLogTest, NotInLogButOnDisk)
 
 TEST_F (BuildWithLogTest, RestatTest)
 
 TEST_F (BuildWithLogTest, RestatMissingFile)
 
 TEST_F (BuildWithLogTest, RestatSingleDependentOutputDirty)
 
 TEST_F (BuildWithLogTest, RestatMissingInput)
 
 TEST_F (BuildDryRun, AllCommandsShown)
 
 TEST_F (BuildTest, RspFileSuccess)
 
 TEST_F (BuildTest, RspFileFailure)
 
 TEST_F (BuildWithLogTest, RspFileCmdLineChange)
 
 TEST_F (BuildTest, InterruptCleanup)
 
 TEST_F (BuildTest, StatFailureAbortsBuild)
 
 TEST_F (BuildTest, PhonyWithNoInputs)
 
 TEST_F (BuildTest, DepsGccWithEmptyDepfileErrorsOut)
 
 TEST_F (BuildTest, StatusFormatReplacePlaceholder)
 
 TEST_F (BuildTest, FailedDepsParse)
 
 TEST_F (BuildWithDepsLogTest, Straightforward)
 Run a straightforwad build where the deps log is used. More...
 
 TEST_F (BuildWithDepsLogTest, ObsoleteDeps)
 Verify that obsolete dependency info causes a rebuild. More...
 
 TEST_F (BuildWithDepsLogTest, DepsIgnoredInDryRun)
 
 TEST_F (BuildTest, RestatDepfileDependency)
 Check that a restat rule generating a header cancels compilations correctly. More...
 
 TEST_F (BuildWithDepsLogTest, RestatDepfileDependencyDepsLog)
 Check that a restat rule generating a header cancels compilations correctly, depslog case. More...
 
 TEST_F (BuildWithDepsLogTest, DepFileOKDepsLog)
 
 TEST_F (BuildTest, RestatMissingDepfile)
 Check that a restat rule doesn't clear an edge if the depfile is missing. More...
 
 TEST_F (BuildWithDepsLogTest, RestatMissingDepfileDepslog)
 Check that a restat rule doesn't clear an edge if the deps are missing. More...
 
 TEST_F (BuildTest, WrongOutputInDepfileCausesRebuild)
 
 TEST_F (BuildTest, Console)
 

Function Documentation

TEST_F ( PlanTest  ,
Basic   
)
TEST_F ( PlanTest  ,
DoubleOutputDirect   
)
TEST_F ( PlanTest  ,
DoubleOutputIndirect   
)
TEST_F ( PlanTest  ,
DoubleDependent   
)
TEST_F ( PlanTest  ,
DependencyCycle   
)

Definition at line 188 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_FALSE.

TEST_F ( PlanTest  ,
CycleInEdgesButNotInNodes1   
)

Definition at line 204 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_FALSE.

TEST_F ( PlanTest  ,
CycleInEdgesButNotInNodes2   
)

Definition at line 212 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_FALSE.

TEST_F ( PlanTest  ,
CycleInEdgesButNotInNodes3   
)

Definition at line 220 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_FALSE.

TEST_F ( PlanTest  ,
CycleInEdgesButNotInNodes4   
)

Definition at line 229 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_FALSE.

TEST_F ( PlanTest  ,
PoolWithDepthOne   
)

Definition at line 276 of file build_test.cc.

TEST_F ( PlanTest  ,
ConsolePool   
)

Definition at line 287 of file build_test.cc.

TEST_F ( PlanTest  ,
PoolsWithDepthTwo   
)
TEST_F ( PlanTest  ,
PoolWithRedundantEdges   
)
TEST_F ( BuildTest  ,
NoWork   
)

Definition at line 639 of file build_test.cc.

References EXPECT_TRUE.

TEST_F ( BuildTest  ,
OneStep   
)

Definition at line 644 of file build_test.cc.

References ASSERT_EQ, EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
OneStep2   
)

Definition at line 658 of file build_test.cc.

References ASSERT_EQ, EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
TwoStep   
)

Definition at line 672 of file build_test.cc.

References ASSERT_EQ, EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
TwoOutputs   
)

Definition at line 703 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
MultiOutIn   
)

Definition at line 722 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
Chain   
)
TEST_F ( BuildTest  ,
MissingInput   
)

Definition at line 776 of file build_test.cc.

References EXPECT_EQ, and EXPECT_FALSE.

TEST_F ( BuildTest  ,
MissingTarget   
)

Definition at line 785 of file build_test.cc.

References EXPECT_EQ, and EXPECT_FALSE.

TEST_F ( BuildTest  ,
MakeDirs   
)

Definition at line 792 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
DepFileMissing   
)

Definition at line 812 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
DepFileOK   
)
TEST_F ( BuildTest  ,
DepFileParseError   
)

Definition at line 851 of file build_test.cc.

References ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_FALSE.

TEST_F ( BuildTest  ,
OrderOnlyDeps   
)
TEST_F ( BuildTest  ,
RebuildOrderOnlyDeps   
)

Definition at line 932 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
Phony   
)
TEST_F ( BuildTest  ,
PhonyNoWork   
)

Definition at line 1028 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_TRUE.

TEST_F ( BuildTest  ,
Fail   
)
TEST_F ( BuildTest  ,
SwallowFailures   
)
TEST_F ( BuildTest  ,
SwallowFailuresLimit   
)
TEST_F ( BuildTest  ,
PoolEdgesReadyButNotWanted   
)

Definition at line 1098 of file build_test.cc.

References Pool::current_use(), EXPECT_GE, and State::LookupPool().

TEST_F ( BuildWithLogTest  ,
NotInLogButOnDisk   
)

Definition at line 1131 of file build_test.cc.

References ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_FALSE, and EXPECT_TRUE.

TEST_F ( BuildWithLogTest  ,
RestatTest   
)

Definition at line 1156 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildWithLogTest  ,
RestatMissingFile   
)

Definition at line 1220 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_TRUE.

TEST_F ( BuildWithLogTest  ,
RestatSingleDependentOutputDirty   
)

Definition at line 1261 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_TRUE.

TEST_F ( BuildWithLogTest  ,
RestatMissingInput   
)

Definition at line 1303 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, ASSERT_TRUE, AssertParse(), and EXPECT_TRUE.

TEST_F ( BuildDryRun  ,
AllCommandsShown   
)

Definition at line 1361 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_TRUE.

TEST_F ( BuildTest  ,
RspFileSuccess   
)

Definition at line 1392 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), and EXPECT_TRUE.

TEST_F ( BuildTest  ,
RspFileFailure   
)
TEST_F ( BuildWithLogTest  ,
RspFileCmdLineChange   
)
TEST_F ( BuildTest  ,
InterruptCleanup   
)
TEST_F ( BuildTest  ,
StatFailureAbortsBuild   
)

Definition at line 1563 of file build_test.cc.

References ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_FALSE.

TEST_F ( BuildTest  ,
PhonyWithNoInputs   
)

Definition at line 1578 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildTest  ,
DepsGccWithEmptyDepfileErrorsOut   
)
TEST_F ( BuildTest  ,
StatusFormatReplacePlaceholder   
)

Definition at line 1622 of file build_test.cc.

References EXPECT_EQ.

TEST_F ( BuildTest  ,
FailedDepsParse   
)
TEST_F ( BuildWithDepsLogTest  ,
Straightforward   
)
TEST_F ( BuildWithDepsLogTest  ,
ObsoleteDeps   
)

Verify that obsolete dependency info causes a rebuild.

1) Run a successful build where everything has time t, record deps. 2) Move input/output to time t+1 – despite files in alignment, should still need to rebuild due to deps at older time.

Definition at line 1736 of file build_test.cc.

References Builder::AddTarget(), ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, ASSERT_TRUE, AssertParse(), Builder::Build(), DepsLog::Close(), Builder::command_runner_, EXPECT_EQ, EXPECT_TRUE, DepsLog::Load(), and DepsLog::OpenForWrite().

TEST_F ( BuildWithDepsLogTest  ,
DepsIgnoredInDryRun   
)
TEST_F ( BuildTest  ,
RestatDepfileDependency   
)

Check that a restat rule generating a header cancels compilations correctly.

Definition at line 1836 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.

TEST_F ( BuildWithDepsLogTest  ,
RestatDepfileDependencyDepsLog   
)

Check that a restat rule generating a header cancels compilations correctly, depslog case.

Definition at line 1859 of file build_test.cc.

References Builder::AddTarget(), ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, ASSERT_TRUE, AssertParse(), Builder::Build(), DepsLog::Close(), Builder::command_runner_, EXPECT_EQ, EXPECT_TRUE, DepsLog::Load(), and DepsLog::OpenForWrite().

TEST_F ( BuildWithDepsLogTest  ,
DepFileOKDepsLog   
)
TEST_F ( BuildTest  ,
RestatMissingDepfile   
)

Check that a restat rule doesn't clear an edge if the depfile is missing.

Follows from: https://github.com/martine/ninja/issues/603

Definition at line 2051 of file build_test.cc.

References ASSERT_EQ.

TEST_F ( BuildWithDepsLogTest  ,
RestatMissingDepfileDepslog   
)

Check that a restat rule doesn't clear an edge if the deps are missing.

https://github.com/martine/ninja/issues/603

Definition at line 2075 of file build_test.cc.

References ASSERT_EQ.

TEST_F ( BuildTest  ,
WrongOutputInDepfileCausesRebuild   
)

Definition at line 2125 of file build_test.cc.

References ASSERT_EQ.

TEST_F ( BuildTest  ,
Console   
)

Definition at line 2142 of file build_test.cc.

References ASSERT_EQ, ASSERT_NO_FATAL_FAILURE, AssertParse(), EXPECT_EQ, and EXPECT_TRUE.