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, PoolWithDepthOne)
 
 TEST_F (PlanTest, ConsolePool)
 
 TEST_F (PlanTest, PoolsWithDepthTwo)
 
 TEST_F (PlanTest, PoolWithRedundantEdges)
 
 TEST_F (PlanTest, PoolWithFailingEdge)
 
 TEST_F (BuildTest, NoWork)
 
 TEST_F (BuildTest, OneStep)
 
 TEST_F (BuildTest, OneStep2)
 
 TEST_F (BuildTest, TwoStep)
 
 TEST_F (BuildTest, TwoOutputs)
 
 TEST_F (BuildTest, ImplicitOutput)
 
 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, EncounterReadyTwice)
 
 TEST_F (BuildTest, OrderOnlyDeps)
 
 TEST_F (BuildTest, RebuildOrderOnlyDeps)
 
 TEST_F (BuildTest, Phony)
 
 TEST_F (BuildTest, PhonyNoWork)
 
 TEST_F (BuildTest, PhonySelfReference)
 
 TEST_F (BuildTest, Fail)
 
 TEST_F (BuildTest, SwallowFailures)
 
 TEST_F (BuildTest, SwallowFailuresLimit)
 
 TEST_F (BuildTest, SwallowFailuresPool)
 
 TEST_F (BuildTest, PoolEdgesReadyButNotWanted)
 
 TEST_F (BuildWithLogTest, NotInLogButOnDisk)
 
 TEST_F (BuildWithLogTest, RebuildAfterFailure)
 
 TEST_F (BuildWithLogTest, RebuildWithNoInputs)
 
 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, StatusFormatElapsed)
 
 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() [1/62]

TEST_F ( PlanTest  ,
Basic   
)

◆ TEST_F() [2/62]

TEST_F ( PlanTest  ,
DoubleOutputDirect   
)

◆ TEST_F() [3/62]

TEST_F ( PlanTest  ,
DoubleOutputIndirect   
)

◆ TEST_F() [4/62]

TEST_F ( PlanTest  ,
DoubleDependent   
)

◆ TEST_F() [5/62]

TEST_F ( PlanTest  ,
PoolWithDepthOne   
)

Definition at line 223 of file build_test.cc.

◆ TEST_F() [6/62]

TEST_F ( PlanTest  ,
ConsolePool   
)

Definition at line 234 of file build_test.cc.

◆ TEST_F() [7/62]

TEST_F ( PlanTest  ,
PoolsWithDepthTwo   
)

◆ TEST_F() [8/62]

TEST_F ( PlanTest  ,
PoolWithRedundantEdges   
)

◆ TEST_F() [9/62]

TEST_F ( PlanTest  ,
PoolWithFailingEdge   
)

◆ TEST_F() [10/62]

TEST_F ( BuildTest  ,
NoWork   
)

Definition at line 630 of file build_test.cc.

References EXPECT_TRUE.

◆ TEST_F() [11/62]

TEST_F ( BuildTest  ,
OneStep   
)

Definition at line 635 of file build_test.cc.

References ASSERT_EQ, EXPECT_EQ, and EXPECT_TRUE.

◆ TEST_F() [12/62]

TEST_F ( BuildTest  ,
OneStep2   
)

Definition at line 649 of file build_test.cc.

References ASSERT_EQ, EXPECT_EQ, and EXPECT_TRUE.

◆ TEST_F() [13/62]

TEST_F ( BuildTest  ,
TwoStep   
)

Definition at line 663 of file build_test.cc.

References ASSERT_EQ, EXPECT_EQ, and EXPECT_TRUE.

◆ TEST_F() [14/62]

TEST_F ( BuildTest  ,
TwoOutputs   
)

Definition at line 694 of file build_test.cc.

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

◆ TEST_F() [15/62]

TEST_F ( BuildTest  ,
ImplicitOutput   
)

Definition at line 711 of file build_test.cc.

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

◆ TEST_F() [16/62]

TEST_F ( BuildTest  ,
MultiOutIn   
)

Definition at line 729 of file build_test.cc.

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

◆ TEST_F() [17/62]

TEST_F ( BuildTest  ,
Chain   
)

◆ TEST_F() [18/62]

TEST_F ( BuildTest  ,
MissingInput   
)

Definition at line 783 of file build_test.cc.

References EXPECT_EQ, and EXPECT_FALSE.

◆ TEST_F() [19/62]

TEST_F ( BuildTest  ,
MissingTarget   
)

Definition at line 792 of file build_test.cc.

References EXPECT_EQ, and EXPECT_FALSE.

◆ TEST_F() [20/62]

TEST_F ( BuildTest  ,
MakeDirs   
)

Definition at line 799 of file build_test.cc.

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

◆ TEST_F() [21/62]

TEST_F ( BuildTest  ,
DepFileMissing   
)

Definition at line 819 of file build_test.cc.

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

◆ TEST_F() [22/62]

TEST_F ( BuildTest  ,
DepFileOK   
)

◆ TEST_F() [23/62]

TEST_F ( BuildTest  ,
DepFileParseError   
)

Definition at line 858 of file build_test.cc.

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

◆ TEST_F() [24/62]

TEST_F ( BuildTest  ,
EncounterReadyTwice   
)

Definition at line 869 of file build_test.cc.

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

◆ TEST_F() [25/62]

TEST_F ( BuildTest  ,
OrderOnlyDeps   
)

◆ TEST_F() [26/62]

TEST_F ( BuildTest  ,
RebuildOrderOnlyDeps   
)

Definition at line 962 of file build_test.cc.

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

◆ TEST_F() [27/62]

TEST_F ( BuildTest  ,
Phony   
)

◆ TEST_F() [28/62]

TEST_F ( BuildTest  ,
PhonyNoWork   
)

Definition at line 1058 of file build_test.cc.

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

◆ TEST_F() [29/62]

TEST_F ( BuildTest  ,
PhonySelfReference   
)

Definition at line 1074 of file build_test.cc.

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

◆ TEST_F() [30/62]

TEST_F ( BuildTest  ,
Fail   
)

◆ TEST_F() [31/62]

TEST_F ( BuildTest  ,
SwallowFailures   
)

◆ TEST_F() [32/62]

TEST_F ( BuildTest  ,
SwallowFailuresLimit   
)

◆ TEST_F() [33/62]

TEST_F ( BuildTest  ,
SwallowFailuresPool   
)

◆ TEST_F() [34/62]

TEST_F ( BuildTest  ,
PoolEdgesReadyButNotWanted   
)

Definition at line 1165 of file build_test.cc.

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

◆ TEST_F() [35/62]

TEST_F ( BuildWithLogTest  ,
NotInLogButOnDisk   
)

Definition at line 1198 of file build_test.cc.

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

◆ TEST_F() [36/62]

TEST_F ( BuildWithLogTest  ,
RebuildAfterFailure   
)

◆ TEST_F() [37/62]

TEST_F ( BuildWithLogTest  ,
RebuildWithNoInputs   
)

Definition at line 1268 of file build_test.cc.

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

◆ TEST_F() [38/62]

TEST_F ( BuildWithLogTest  ,
RestatTest   
)

◆ TEST_F() [39/62]

TEST_F ( BuildWithLogTest  ,
RestatMissingFile   
)

Definition at line 1364 of file build_test.cc.

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

◆ TEST_F() [40/62]

TEST_F ( BuildWithLogTest  ,
RestatSingleDependentOutputDirty   
)

Definition at line 1405 of file build_test.cc.

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

◆ TEST_F() [41/62]

TEST_F ( BuildWithLogTest  ,
RestatMissingInput   
)

Definition at line 1447 of file build_test.cc.

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

◆ TEST_F() [42/62]

TEST_F ( BuildDryRun  ,
AllCommandsShown   
)

Definition at line 1505 of file build_test.cc.

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

◆ TEST_F() [43/62]

TEST_F ( BuildTest  ,
RspFileSuccess   
)

Definition at line 1536 of file build_test.cc.

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

◆ TEST_F() [44/62]

TEST_F ( BuildTest  ,
RspFileFailure   
)

◆ TEST_F() [45/62]

TEST_F ( BuildWithLogTest  ,
RspFileCmdLineChange   
)

◆ TEST_F() [46/62]

TEST_F ( BuildTest  ,
InterruptCleanup   
)

◆ TEST_F() [47/62]

TEST_F ( BuildTest  ,
StatFailureAbortsBuild   
)

Definition at line 1707 of file build_test.cc.

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

◆ TEST_F() [48/62]

TEST_F ( BuildTest  ,
PhonyWithNoInputs   
)

Definition at line 1722 of file build_test.cc.

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

◆ TEST_F() [49/62]

TEST_F ( BuildTest  ,
DepsGccWithEmptyDepfileErrorsOut   
)

◆ TEST_F() [50/62]

TEST_F ( BuildTest  ,
StatusFormatElapsed   
)

Definition at line 1766 of file build_test.cc.

References EXPECT_EQ, and BuildStatus::kEdgeStarted.

◆ TEST_F() [51/62]

TEST_F ( BuildTest  ,
StatusFormatReplacePlaceholder   
)

Definition at line 1774 of file build_test.cc.

References EXPECT_EQ, and BuildStatus::kEdgeStarted.

◆ TEST_F() [52/62]

TEST_F ( BuildTest  ,
FailedDepsParse   
)

◆ TEST_F() [53/62]

TEST_F ( BuildWithDepsLogTest  ,
Straightforward   
)

◆ TEST_F() [54/62]

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 1889 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() [55/62]

TEST_F ( BuildWithDepsLogTest  ,
DepsIgnoredInDryRun   
)

◆ TEST_F() [56/62]

TEST_F ( BuildTest  ,
RestatDepfileDependency   
)

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

Definition at line 1989 of file build_test.cc.

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

◆ TEST_F() [57/62]

TEST_F ( BuildWithDepsLogTest  ,
RestatDepfileDependencyDepsLog   
)

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

Definition at line 2012 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() [58/62]

TEST_F ( BuildWithDepsLogTest  ,
DepFileOKDepsLog   
)

◆ TEST_F() [59/62]

TEST_F ( BuildTest  ,
RestatMissingDepfile   
)

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

Follows from: https://github.com/ninja-build/ninja/issues/603

Definition at line 2204 of file build_test.cc.

References ASSERT_EQ.

◆ TEST_F() [60/62]

TEST_F ( BuildWithDepsLogTest  ,
RestatMissingDepfileDepslog   
)

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

https://github.com/ninja-build/ninja/issues/603

Definition at line 2228 of file build_test.cc.

References ASSERT_EQ.

◆ TEST_F() [61/62]

TEST_F ( BuildTest  ,
WrongOutputInDepfileCausesRebuild   
)

Definition at line 2278 of file build_test.cc.

References ASSERT_EQ.

◆ TEST_F() [62/62]

TEST_F ( BuildTest  ,
Console   
)

Definition at line 2295 of file build_test.cc.

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