Ninja
state_test.cc
Go to the documentation of this file.
1 // Copyright 2011 Google Inc. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include <gtest/gtest.h>
16 
17 #include "graph.h"
18 #include "state.h"
19 
20 namespace {
21 
22 TEST(State, Basic) {
23  State state;
24 
25  EvalString command;
26  command.AddText("cat ");
27  command.AddSpecial("in");
28  command.AddText(" > ");
29  command.AddSpecial("out");
30 
31  Rule* rule = new Rule("cat");
32  rule->AddBinding("command", command);
33  state.AddRule(rule);
34 
35  Edge* edge = state.AddEdge(rule);
36  state.AddIn(edge, "in1");
37  state.AddIn(edge, "in2");
38  state.AddOut(edge, "out");
39 
40  EXPECT_EQ("cat in1 in2 > out", edge->EvaluateCommand());
41 
42  EXPECT_FALSE(state.GetNode("in1")->dirty());
43  EXPECT_FALSE(state.GetNode("in2")->dirty());
44  EXPECT_FALSE(state.GetNode("out")->dirty());
45 }
46 
47 } // namespace
void AddIn(Edge *edge, StringPiece path)
Definition: state.cc:146
Node * GetNode(StringPiece path)
Definition: state.cc:112
An edge in the dependency graph; links between Nodes using Rules.
Definition: graph.h:137
string EvaluateCommand(bool incl_rsp_file=false)
Expand all variables in a command and return it as a string.
Definition: graph.cc:274
Edge * AddEdge(const Rule *rule)
Definition: state.cc:103
TEST(EditDistanceTest, TestEmpty)
void AddOut(Edge *edge, StringPiece path)
Definition: state.cc:152
void AddSpecial(StringPiece text)
Definition: eval_env.cc:65
void AddRule(const Rule *rule)
Definition: state.cc:79
An invokable build command and associated metadata (description, etc.).
Definition: graph.h:116
bool dirty() const
Definition: graph.h:76
void AddBinding(const string &key, const EvalString &val)
Definition: graph.cc:36
void AddText(StringPiece text)
Definition: eval_env.cc:57
Global state (file status, loaded rules) for a single run.
Definition: state.h:83
A tokenized string that contains variable references.
Definition: eval_env.h:59