summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2016-08-01 01:00:37 (GMT)
committerGitHub <noreply@github.com>2016-08-01 01:00:37 (GMT)
commit94fc14314501a78b1742e910f7c920188b2753da (patch)
treec565375565edadc2064d05db6acfefff38c95886
parent5739c144354c826b57042ad0968680c272a95856 (diff)
parent3473e08fae5ee76c86db0de079255f00251c1e2c (diff)
downloadNinja-94fc14314501a78b1742e910f7c920188b2753da.zip
Ninja-94fc14314501a78b1742e910f7c920188b2753da.tar.gz
Ninja-94fc14314501a78b1742e910f7c920188b2753da.tar.bz2
Merge pull request #1174 from gkistanova/not-initialized-elapsed-fix
Fix for not properly initialized elapsed time.
-rw-r--r--src/build.cc13
-rw-r--r--src/build.h1
-rw-r--r--src/build_test.cc8
3 files changed, 17 insertions, 5 deletions
diff --git a/src/build.cc b/src/build.cc
index 7792016..b806fb5 100644
--- a/src/build.cc
+++ b/src/build.cc
@@ -110,11 +110,6 @@ void BuildStatus::BuildEdgeFinished(Edge* edge,
int* end_time) {
int64_t now = GetTimeMillis();
- if (finished_edges_ == 0) {
- overall_rate_.Restart();
- current_rate_.Restart();
- }
-
++finished_edges_;
RunningEdgeMap::iterator i = running_edges_.find(edge);
@@ -164,6 +159,11 @@ void BuildStatus::BuildEdgeFinished(Edge* edge,
}
}
+void BuildStatus::BuildStarted() {
+ overall_rate_.Restart();
+ current_rate_.Restart();
+}
+
void BuildStatus::BuildFinished() {
printer_.SetConsoleLocked(false);
printer_.PrintOnNewLine("");
@@ -650,6 +650,9 @@ bool Builder::Build(string* err) {
command_runner_.reset(new RealCommandRunner(config_));
}
+ // We are about to start the build process.
+ status_->BuildStarted();
+
// This main loop runs the entire build process.
// It is structured like this:
// First, we attempt to start as many commands as allowed by the
diff --git a/src/build.h b/src/build.h
index 819d832..e633c95 100644
--- a/src/build.h
+++ b/src/build.h
@@ -200,6 +200,7 @@ struct BuildStatus {
void BuildEdgeStarted(Edge* edge);
void BuildEdgeFinished(Edge* edge, bool success, const string& output,
int* start_time, int* end_time);
+ void BuildStarted();
void BuildFinished();
enum EdgeStatus {
diff --git a/src/build_test.cc b/src/build_test.cc
index 06871d2..640e1b0 100644
--- a/src/build_test.cc
+++ b/src/build_test.cc
@@ -1725,6 +1725,14 @@ TEST_F(BuildTest, DepsGccWithEmptyDepfileErrorsOut) {
ASSERT_EQ(1u, command_runner_.commands_ran_.size());
}
+TEST_F(BuildTest, StatusFormatElapsed) {
+ status_.BuildStarted();
+ // Before any task is done, the elapsed time must be zero.
+ EXPECT_EQ("[%/e0.000]",
+ status_.FormatProgressStatus("[%%/e%e]",
+ BuildStatus::kEdgeStarted));
+}
+
TEST_F(BuildTest, StatusFormatReplacePlaceholder) {
EXPECT_EQ("[%/s0/t0/r0/u0/f0]",
status_.FormatProgressStatus("[%%/s%s/t%t/r%r/u%u/f%f]",