blob: 44db44f6bf5db690cf777c4e54816882cdfb2207 [file]
// 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");
}