summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authortfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-16 03:34:25 +0000
committertfarina@chromium.org <tfarina@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-16 03:34:25 +0000
commite9032c6a2ea03e4a5081e0234eff857cf190e3e4 (patch)
treea9e6ec385829730bc9442579c2fef525d1caf71e /base
parent3e108342206210d64d81368044d9503445a1a1f3 (diff)
downloadchromium_src-e9032c6a2ea03e4a5081e0234eff857cf190e3e4.zip
chromium_src-e9032c6a2ea03e4a5081e0234eff857cf190e3e4.tar.gz
chromium_src-e9032c6a2ea03e4a5081e0234eff857cf190e3e4.tar.bz2
base: Return bool instead of void in EnvVarGetter::SetEnv.
Returning bool instead of void in this function is better, because with that we can know if we had succeeded when tried to set an environment variable or not. Also it makes this function more testable. BUG=None TEST=out/Debug/base_unittests --gtest_filter=EnvVarTest.* Signed-off-by: Thiago Farina <tfarina@chromium.org> Review URL: http://codereview.chromium.org/2891024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52602 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/env_var.cc14
-rw-r--r--base/env_var.h3
-rw-r--r--base/env_var_unittest.cc2
-rw-r--r--base/xdg_util_unittest.cc2
4 files changed, 12 insertions, 9 deletions
diff --git a/base/env_var.cc b/base/env_var.cc
index bcdadb9..086191e 100644
--- a/base/env_var.cc
+++ b/base/env_var.cc
@@ -40,8 +40,8 @@ class EnvVarGetterImpl : public base::EnvVarGetter {
return GetEnvImpl(alternate_case_var.c_str(), result);
}
- virtual void SetEnv(const char* variable_name, const std::string& new_value) {
- SetEnvImpl(variable_name, new_value);
+ virtual bool SetEnv(const char* variable_name, const std::string& new_value) {
+ return SetEnvImpl(variable_name, new_value);
}
private:
@@ -71,12 +71,14 @@ class EnvVarGetterImpl : public base::EnvVarGetter {
#endif
}
- void SetEnvImpl(const char* variable_name, const std::string& new_value) {
+ bool SetEnvImpl(const char* variable_name, const std::string& new_value) {
#if defined(OS_POSIX)
- setenv(variable_name, new_value.c_str(), 1);
+ // On success, zero is returned.
+ return setenv(variable_name, new_value.c_str(), 1) == 0;
#elif defined(OS_WIN)
- ::SetEnvironmentVariable(ASCIIToWide(variable_name).c_str(),
- ASCIIToWide(new_value).c_str());
+ // On success, a nonzero is returned.
+ return ::SetEnvironmentVariable(ASCIIToWide(variable_name).c_str(),
+ ASCIIToWide(new_value).c_str()) != 0;
#endif
}
};
diff --git a/base/env_var.h b/base/env_var.h
index 3cc2399..f0fe81f 100644
--- a/base/env_var.h
+++ b/base/env_var.h
@@ -23,7 +23,8 @@ class EnvVarGetter {
// Syntactic sugar for GetEnv(variable_name, NULL);
virtual bool HasEnv(const char* variable_name);
- virtual void SetEnv(const char* variable_name,
+ // Returns true on success, otherwise returns false.
+ virtual bool SetEnv(const char* variable_name,
const std::string& new_value) = 0;
// Create an instance of EnvVarGetter
diff --git a/base/env_var_unittest.cc b/base/env_var_unittest.cc
index 5587878..d80d997 100644
--- a/base/env_var_unittest.cc
+++ b/base/env_var_unittest.cc
@@ -27,7 +27,7 @@ TEST_F(EnvVarTest, SetEnvVar) {
const char kFooUpper[] = "FOO";
const char kFooLower[] = "foo";
scoped_ptr<base::EnvVarGetter> env(base::EnvVarGetter::Create());
- env->SetEnv(kFooUpper, kFooLower);
+ EXPECT_TRUE(env->SetEnv(kFooUpper, kFooLower));
// Now verify that the environment has the new variable.
EXPECT_TRUE(env->HasEnv(kFooUpper));
diff --git a/base/xdg_util_unittest.cc b/base/xdg_util_unittest.cc
index 813242b..b821921 100644
--- a/base/xdg_util_unittest.cc
+++ b/base/xdg_util_unittest.cc
@@ -19,7 +19,7 @@ namespace {
class MockEnvVarGetter : public base::EnvVarGetter {
public:
MOCK_METHOD2(GetEnv, bool(const char*, std::string* result));
- MOCK_METHOD2(SetEnv, void(const char*, const std::string& new_value));
+ MOCK_METHOD2(SetEnv, bool(const char*, const std::string& new_value));
};
const char* kGnome = "gnome";