| // Copyright 2026 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "gn/ffi/session.h" |
| |
| #include "gn/ffi/bridge.h" |
| #include "gn/scope.h" |
| #include "util/test/test.h" |
| |
| TEST(SessionTest, SessionLoad) { |
| TestWithScope setup; |
| rust::Box<Session> session = Session::new_for_testing(); |
| |
| std::vector<Value> keys = {Value(nullptr, "absolute_value"), |
| Value(nullptr, "relative_value")}; |
| |
| setup.scope()->set_source_dir(SourceDir("//load/")); |
| Err err; |
| bool success = |
| session_load(*session, Value(nullptr, ":root.scl"), keys, *setup.scope(), |
| ParseNodePtr{.ptr = nullptr}, err); |
| EXPECT_TRUE(success); |
| EXPECT_FALSE(err.has_error()); |
| |
| const Value* absolute_val = setup.scope()->GetValue("absolute_value"); |
| ASSERT_TRUE(absolute_val); |
| EXPECT_EQ(absolute_val->type(), Value::STRING); |
| EXPECT_EQ(absolute_val->string_value(), "absolute"); |
| |
| const Value* relative_val = setup.scope()->GetValue("relative_value"); |
| ASSERT_TRUE(relative_val); |
| EXPECT_EQ(relative_val->type(), Value::STRING); |
| EXPECT_EQ(relative_val->string_value(), "relative"); |
| } |