Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f8efe00 authored by Jiyong Park's avatar Jiyong Park
Browse files

skip nop persistent property writes

Bug: 332611029
Test: TH
Change-Id: I0f6ca09c781964d1eb432a770c50e7216f043b4f
parent cd4b579e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -236,6 +236,9 @@ void WritePersistentProperty(const std::string& name, const std::string& value)
                           persistent_properties->mutable_properties()->end(),
                           [&name](const auto& record) { return record.name() == name; });
    if (it != persistent_properties->mutable_properties()->end()) {
        if (it->value() == value) {
            return;
        }
        it->set_name(name);
        it->set_value(value);
    } else {
+28 −0
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@
#include "persistent_properties.h"

#include <errno.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>

#include <vector>

@@ -155,6 +158,31 @@ TEST(persistent_properties, UpdatePropertyBadParse) {
    EXPECT_FALSE(it == read_back_properties.properties().end());
}

TEST(persistent_properties, NopUpdateDoesntWriteFile) {
    TemporaryFile tf;
    ASSERT_TRUE(tf.fd != -1);
    persistent_property_filename = tf.path;

    auto last_modified = [&tf]() -> time_t {
        struct stat buf;
        EXPECT_EQ(fstat(tf.fd, &buf), 0);
        return buf.st_mtime;
    };

    std::vector<std::pair<std::string, std::string>> persistent_properties = {
            {"persist.sys.locale", "en-US"},
            {"persist.sys.timezone", "America/Los_Angeles"},
    };
    ASSERT_RESULT_OK(
            WritePersistentPropertyFile(VectorToPersistentProperties(persistent_properties)));

    time_t t = last_modified();
    sleep(2);
    WritePersistentProperty("persist.sys.locale", "en-US");
    // Ensure that the file was not modified
    ASSERT_EQ(last_modified(), t);
}

TEST(persistent_properties, RejectNonPersistProperty) {
    TemporaryFile tf;
    ASSERT_TRUE(tf.fd != -1);