Skip to content

Commit 7c08a90

Browse files
committed
fix(rime_test): set data directories to working directory using rime::SetupDeployer API
1 parent 594d7de commit 7c08a90

File tree

4 files changed

+45
-30
lines changed

4 files changed

+45
-30
lines changed

src/rime/setup.cc

+28
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
#endif // RIME_ENABLE_LOGGING
1111

1212
#include <rime_api.h>
13+
#include <rime/deployer.h>
1314
#include <rime/module.h>
15+
#include <rime/service.h>
1416
#include <rime/setup.h>
1517

1618
namespace rime {
@@ -33,6 +35,32 @@ RIME_API void LoadModules(const char* module_names[]) {
3335
}
3436
}
3537

38+
// assume member is a non-null pointer in struct *p.
39+
#define PROVIDED(p, member) ((p) && RIME_STRUCT_HAS_MEMBER(*(p), (p)->member) && (p)->member)
40+
41+
RIME_API void SetupDeployer(RimeTraits *traits) {
42+
if (!traits) return;
43+
Deployer &deployer(Service::instance().deployer());
44+
if (PROVIDED(traits, shared_data_dir))
45+
deployer.shared_data_dir = traits->shared_data_dir;
46+
if (PROVIDED(traits, user_data_dir))
47+
deployer.user_data_dir = traits->user_data_dir;
48+
if (PROVIDED(traits, distribution_name))
49+
deployer.distribution_name = traits->distribution_name;
50+
if (PROVIDED(traits, distribution_code_name))
51+
deployer.distribution_code_name = traits->distribution_code_name;
52+
if (PROVIDED(traits, distribution_version))
53+
deployer.distribution_version = traits->distribution_version;
54+
if (PROVIDED(traits, prebuilt_data_dir))
55+
deployer.prebuilt_data_dir = traits->prebuilt_data_dir;
56+
else
57+
deployer.prebuilt_data_dir = deployer.shared_data_dir / "build";
58+
if (PROVIDED(traits, staging_dir))
59+
deployer.staging_dir = traits->staging_dir;
60+
else
61+
deployer.staging_dir = deployer.user_data_dir / "build";
62+
}
63+
3664
RIME_API void SetupLogging(const char* app_name, int min_log_level, const char* log_dir) {
3765
#ifdef RIME_ENABLE_LOGGING
3866
FLAGS_minloglevel = min_log_level;

src/rime/setup.h

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ extern const char* kLegacyModules[];
1717

1818
RIME_API void LoadModules(const char* module_names[]);
1919

20+
RIME_API void SetupDeployer(RimeTraits *traits);
21+
2022
RIME_API void SetupLogging(const char* app_name, int min_log_level, const char* log_dir);
2123
RIME_API void SetupLogging(const char* app_name);
2224

src/rime_api.cc

+4-27
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,9 @@
2525
using namespace rime;
2626
using namespace std::placeholders;
2727

28-
// assuming member is a pointer in struct *p
28+
// assume member is a non-null pointer in struct *p.
2929
#define PROVIDED(p, member) ((p) && RIME_STRUCT_HAS_MEMBER(*(p), (p)->member) && (p)->member)
3030

31-
static void setup_deployer(RimeTraits *traits) {
32-
if (!traits) return;
33-
Deployer &deployer(Service::instance().deployer());
34-
if (PROVIDED(traits, shared_data_dir))
35-
deployer.shared_data_dir = traits->shared_data_dir;
36-
if (PROVIDED(traits, user_data_dir))
37-
deployer.user_data_dir = traits->user_data_dir;
38-
if (PROVIDED(traits, distribution_name))
39-
deployer.distribution_name = traits->distribution_name;
40-
if (PROVIDED(traits, distribution_code_name))
41-
deployer.distribution_code_name = traits->distribution_code_name;
42-
if (PROVIDED(traits, distribution_version))
43-
deployer.distribution_version = traits->distribution_version;
44-
if (PROVIDED(traits, prebuilt_data_dir))
45-
deployer.prebuilt_data_dir = traits->prebuilt_data_dir;
46-
else
47-
deployer.prebuilt_data_dir = deployer.shared_data_dir / "build";
48-
if (PROVIDED(traits, staging_dir))
49-
deployer.staging_dir = traits->staging_dir;
50-
else
51-
deployer.staging_dir = deployer.user_data_dir / "build";
52-
}
53-
5431
RIME_API void RimeSetupLogging(const char* app_name) {
5532
SetupLogging(app_name);
5633
}
@@ -74,7 +51,7 @@ static void rime_declare_module_dependencies() {
7451
RIME_API void RimeSetup(RimeTraits *traits) {
7552
rime_declare_module_dependencies();
7653

77-
setup_deployer(traits);
54+
SetupDeployer(traits);
7855
if (PROVIDED(traits, app_name)) {
7956
if (RIME_STRUCT_HAS_MEMBER(*traits, traits->min_log_level) &&
8057
RIME_STRUCT_HAS_MEMBER(*traits, traits->log_dir)) {
@@ -97,7 +74,7 @@ RIME_API void RimeSetNotificationHandler(RimeNotificationHandler handler,
9774
}
9875

9976
RIME_API void RimeInitialize(RimeTraits *traits) {
100-
setup_deployer(traits);
77+
SetupDeployer(traits);
10178
LoadModules(PROVIDED(traits, modules) ? traits->modules : kDefaultModules);
10279
Service::instance().StartService();
10380
}
@@ -152,7 +129,7 @@ RIME_API void RimeJoinMaintenanceThread() {
152129
// deployment
153130

154131
RIME_API void RimeDeployerInitialize(RimeTraits *traits) {
155-
setup_deployer(traits);
132+
SetupDeployer(traits);
156133
LoadModules(PROVIDED(traits, modules) ? traits->modules : kDeployerModules);
157134
}
158135

test/rime_test_main.cc

+11-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
11
#include <gtest/gtest.h>
2+
#include <rime_api.h>
23
#include <rime/setup.h>
3-
#include <rime/service.h>
44

5-
int main(int argc, char** argv) {
5+
int main(int argc, char **argv) {
66
testing::InitGoogleTest(&argc, argv);
7+
8+
RIME_STRUCT(RimeTraits, traits);
9+
// put all files in the working directory ($build/test).
10+
traits.shared_data_dir =
11+
traits.user_data_dir =
12+
traits.prebuilt_data_dir =
13+
traits.staging_dir = ".";
14+
rime::SetupDeployer(&traits);
715
rime::SetupLogging("rime.test");
8-
rime::Service::instance().deployer().staging_dir = ".";
916
rime::LoadModules(rime::kDefaultModules);
17+
1018
return RUN_ALL_TESTS();
1119
}

0 commit comments

Comments
 (0)