]>
git.saurik.com Git - apt.git/blob - test/libapt/getlanguages_test.cc
3 #include <apt-pkg/aptconfiguration.h>
4 #include <apt-pkg/configuration.h>
5 #include <apt-pkg/error.h>
6 #include <apt-pkg/fileutl.h>
13 #include <sys/types.h>
17 #include <gtest/gtest.h>
19 #include "file-helpers.h"
21 TEST(LanguagesTest
,Environment
)
26 env
[0] = "de_DE.UTF-8";
29 std::vector
<std::string
> vec
= APT::Configuration::getLanguages(false, false, env
);
30 ASSERT_EQ(3 ,vec
.size());
31 EXPECT_EQ("de_DE", vec
[0]);
32 EXPECT_EQ("de", vec
[1]);
33 EXPECT_EQ("en", vec
[2]);
35 // Special: Check if the cache is actually in use
36 env
[0] = "en_GB.UTF-8";
37 vec
= APT::Configuration::getLanguages(false, true, env
);
38 ASSERT_EQ(3, vec
.size());
39 EXPECT_EQ("de_DE", vec
[0]);
40 EXPECT_EQ("de", vec
[1]);
41 EXPECT_EQ("en", vec
[2]);
43 env
[0] = "en_GB.UTF-8";
44 vec
= APT::Configuration::getLanguages(false, false, env
);
45 ASSERT_EQ(2, vec
.size());
46 EXPECT_EQ("en_GB", vec
[0]);
47 EXPECT_EQ("en", vec
[1]);
51 vec
= APT::Configuration::getLanguages(false, false, env
);
52 ASSERT_EQ(2, vec
.size());
53 EXPECT_EQ("eo", vec
[0]);
54 EXPECT_EQ("en", vec
[1]);
56 env
[0] = "tr_DE@euro";
57 vec
= APT::Configuration::getLanguages(false, false, env
);
58 EXPECT_EQ(3, vec
.size());
59 EXPECT_EQ("tr_DE", vec
[0]);
60 EXPECT_EQ("tr", vec
[1]);
61 EXPECT_EQ("en", vec
[2]);
64 env
[1] = "de_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
65 vec
= APT::Configuration::getLanguages(false, false, env
);
66 EXPECT_EQ(6, vec
.size());
67 EXPECT_EQ("de_NO", vec
[0]);
68 EXPECT_EQ("de", vec
[1]);
69 EXPECT_EQ("en_GB", vec
[2]);
70 EXPECT_EQ("nb_NO", vec
[3]);
71 EXPECT_EQ("nb", vec
[4]);
72 EXPECT_EQ("en", vec
[5]);
74 env
[0] = "pt_PR.UTF-8";
76 vec
= APT::Configuration::getLanguages(false, false, env
);
77 EXPECT_EQ(3, vec
.size());
78 EXPECT_EQ("pt_PR", vec
[0]);
79 EXPECT_EQ("pt", vec
[1]);
80 EXPECT_EQ("en", vec
[2]);
82 env
[0] = "ast_DE.UTF-8";
83 vec
= APT::Configuration::getLanguages(false, false, env
); // bogus, but syntactical correct
84 EXPECT_EQ(3, vec
.size());
85 EXPECT_EQ("ast_DE", vec
[0]);
86 EXPECT_EQ("ast", vec
[1]);
87 EXPECT_EQ("en", vec
[2]);
90 vec
= APT::Configuration::getLanguages(false, false, env
);
91 EXPECT_EQ(1, vec
.size());
92 EXPECT_EQ("en", vec
[0]);
94 _config
->Set("Acquire::Languages", "none");
96 vec
= APT::Configuration::getLanguages(false, false, env
);
97 EXPECT_TRUE(vec
.empty());
99 _config
->Set("Acquire::Languages", "environment");
101 vec
= APT::Configuration::getLanguages(false, false, env
);
102 EXPECT_EQ(1, vec
.size());
103 EXPECT_EQ("en", vec
[0]);
105 _config
->Set("Acquire::Languages", "de");
107 vec
= APT::Configuration::getLanguages(false, false, env
);
108 EXPECT_EQ(1, vec
.size());
109 EXPECT_EQ("de", vec
[0]);
111 _config
->Set("Acquire::Languages", "fr");
112 env
[0] = "ast_DE.UTF-8";
113 vec
= APT::Configuration::getLanguages(false, false, env
);
114 EXPECT_EQ(1, vec
.size());
115 EXPECT_EQ("fr", vec
[0]);
117 _config
->Set("Acquire::Languages", "environment,en");
118 env
[0] = "de_DE.UTF-8";
119 vec
= APT::Configuration::getLanguages(false, false, env
);
120 EXPECT_EQ(3, vec
.size());
121 EXPECT_EQ("de_DE", vec
[0]);
122 EXPECT_EQ("de", vec
[1]);
123 EXPECT_EQ("en", vec
[2]);
124 _config
->Set("Acquire::Languages", "");
126 _config
->Set("Acquire::Languages::1", "environment");
127 _config
->Set("Acquire::Languages::2", "en");
128 env
[0] = "de_DE.UTF-8";
129 vec
= APT::Configuration::getLanguages(false, false, env
);
130 EXPECT_EQ(3, vec
.size());
131 EXPECT_EQ("de_DE", vec
[0]);
132 EXPECT_EQ("de", vec
[1]);
133 EXPECT_EQ("en", vec
[2]);
135 _config
->Set("Acquire::Languages::3", "de");
136 env
[0] = "de_DE.UTF-8";
137 vec
= APT::Configuration::getLanguages(false, false, env
);
138 EXPECT_EQ(3, vec
.size());
139 EXPECT_EQ("de_DE", vec
[0]);
140 EXPECT_EQ("de", vec
[1]);
141 EXPECT_EQ("en", vec
[2]);
146 TEST(LanguagesTest
,TranslationFiles
)
149 _config
->Set("Acquire::Languages::1", "environment");
150 _config
->Set("Acquire::Languages::2", "en");
151 _config
->Set("Acquire::Languages::3", "de");
154 env
[0] = "de_DE.UTF-8";
158 createTemporaryDirectory("languages", tempdir
);
160 #define createTranslation(lang) \
161 createFile(tempdir, std::string("/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-").append(lang));
163 createTranslation("tr");
164 createTranslation("pt");
165 createTranslation("se~");
166 createTranslation("st.bak");
167 createTranslation("ast_DE");
168 createTranslation("tlh%5fDE");
170 _config
->Set("Dir::State::lists", tempdir
);
171 std::vector
<std::string
> vec
= APT::Configuration::getLanguages(true, false, env
);
172 EXPECT_EQ(8, vec
.size());
173 EXPECT_EQ("de_DE", vec
[0]);
174 EXPECT_EQ("de", vec
[1]);
175 EXPECT_EQ("en", vec
[2]);
176 EXPECT_EQ("none", vec
[3]);
177 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "pt"));
178 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "tr"));
179 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "ast_DE"));
180 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "tlh_DE"));
181 EXPECT_NE(vec
[4], vec
[5]);
182 EXPECT_NE(vec
[4], vec
[6]);
183 EXPECT_NE(vec
[4], vec
[7]);
184 EXPECT_NE(vec
[5], vec
[6]);
185 EXPECT_NE(vec
[5], vec
[7]);
186 EXPECT_NE(vec
[6], vec
[7]);
188 _config
->Set("Acquire::Languages", "none");
189 vec
= APT::Configuration::getLanguages(true, false, env
);
190 EXPECT_EQ(1, vec
.size());
191 EXPECT_EQ("none", vec
[0]);
192 _config
->Set("Acquire::Languages", "");
194 _config
->Set("Dir::State::lists", "/non-existing-dir");
195 _config
->Set("Acquire::Languages::1", "none");
196 env
[0] = "de_DE.UTF-8";
197 vec
= APT::Configuration::getLanguages(false, false, env
);
198 EXPECT_TRUE(vec
.empty());
199 env
[0] = "de_DE.UTF-8";
200 vec
= APT::Configuration::getLanguages(true, false, env
);
201 EXPECT_EQ(2, vec
.size());
202 EXPECT_EQ("en", vec
[0]);
203 EXPECT_EQ("de", vec
[1]);
205 _config
->Set("Acquire::Languages::1", "fr");
206 _config
->Set("Acquire::Languages", "de_DE");
207 env
[0] = "de_DE.UTF-8";
208 vec
= APT::Configuration::getLanguages(false, false, env
);
209 EXPECT_EQ(1, vec
.size());
210 EXPECT_EQ("de_DE", vec
[0]);
212 _config
->Set("Acquire::Languages", "none");
213 env
[0] = "de_DE.UTF-8";
214 vec
= APT::Configuration::getLanguages(true, false, env
);
215 EXPECT_EQ(1, vec
.size());
216 EXPECT_EQ("none", vec
[0]);
218 _error
->PushToStack();
219 _config
->Set("Acquire::Languages", "");
220 //FIXME: Remove support for this deprecated setting
221 _config
->Set("APT::Acquire::Translation", "ast_DE");
222 env
[0] = "de_DE.UTF-8";
223 vec
= APT::Configuration::getLanguages(true, false, env
);
224 EXPECT_EQ(2, vec
.size());
225 EXPECT_EQ("ast_DE", vec
[0]);
226 EXPECT_EQ("en", vec
[1]);
227 _config
->Set("APT::Acquire::Translation", "none");
228 env
[0] = "de_DE.UTF-8";
229 vec
= APT::Configuration::getLanguages(true, false, env
);
230 EXPECT_EQ(1, vec
.size());
231 EXPECT_EQ("en", vec
[0]);
233 // discard the deprecation warning for APT::Acquire::Translation
234 if (_error
->PendingError())
235 _error
->MergeWithStack();
237 _error
->RevertToStack();
239 EXPECT_EQ(0, system(std::string("rm -rf ").append(tempdir
).c_str()));