]>
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/fileutl.h>
12 #include <sys/types.h>
16 #include <gtest/gtest.h>
18 #include "file-helpers.h"
20 TEST(LanguagesTest
,Environment
)
25 env
[0] = "de_DE.UTF-8";
28 std::vector
<std::string
> vec
= APT::Configuration::getLanguages(false, false, env
);
29 ASSERT_EQ(3 ,vec
.size());
30 EXPECT_EQ("de_DE", vec
[0]);
31 EXPECT_EQ("de", vec
[1]);
32 EXPECT_EQ("en", vec
[2]);
34 // Special: Check if the cache is actually in use
35 env
[0] = "en_GB.UTF-8";
36 vec
= APT::Configuration::getLanguages(false, true, env
);
37 ASSERT_EQ(3, vec
.size());
38 EXPECT_EQ("de_DE", vec
[0]);
39 EXPECT_EQ("de", vec
[1]);
40 EXPECT_EQ("en", vec
[2]);
42 env
[0] = "en_GB.UTF-8";
43 vec
= APT::Configuration::getLanguages(false, false, env
);
44 ASSERT_EQ(2, vec
.size());
45 EXPECT_EQ("en_GB", vec
[0]);
46 EXPECT_EQ("en", vec
[1]);
50 vec
= APT::Configuration::getLanguages(false, false, env
);
51 ASSERT_EQ(2, vec
.size());
52 EXPECT_EQ("eo", vec
[0]);
53 EXPECT_EQ("en", vec
[1]);
55 env
[0] = "tr_DE@euro";
56 vec
= APT::Configuration::getLanguages(false, false, env
);
57 EXPECT_EQ(3, vec
.size());
58 EXPECT_EQ("tr_DE", vec
[0]);
59 EXPECT_EQ("tr", vec
[1]);
60 EXPECT_EQ("en", vec
[2]);
63 env
[1] = "de_NO:en_GB:nb_NO:nb:no_NO:no:nn_NO:nn:da:sv:en";
64 vec
= APT::Configuration::getLanguages(false, false, env
);
65 EXPECT_EQ(6, vec
.size());
66 EXPECT_EQ("de_NO", vec
[0]);
67 EXPECT_EQ("de", vec
[1]);
68 EXPECT_EQ("en_GB", vec
[2]);
69 EXPECT_EQ("nb_NO", vec
[3]);
70 EXPECT_EQ("nb", vec
[4]);
71 EXPECT_EQ("en", vec
[5]);
73 env
[0] = "pt_PR.UTF-8";
75 vec
= APT::Configuration::getLanguages(false, false, env
);
76 EXPECT_EQ(3, vec
.size());
77 EXPECT_EQ("pt_PR", vec
[0]);
78 EXPECT_EQ("pt", vec
[1]);
79 EXPECT_EQ("en", vec
[2]);
81 env
[0] = "ast_DE.UTF-8";
82 vec
= APT::Configuration::getLanguages(false, false, env
); // bogus, but syntactical correct
83 EXPECT_EQ(3, vec
.size());
84 EXPECT_EQ("ast_DE", vec
[0]);
85 EXPECT_EQ("ast", vec
[1]);
86 EXPECT_EQ("en", vec
[2]);
89 vec
= APT::Configuration::getLanguages(false, false, env
);
90 EXPECT_EQ(1, vec
.size());
91 EXPECT_EQ("en", vec
[0]);
93 _config
->Set("Acquire::Languages", "none");
95 vec
= APT::Configuration::getLanguages(false, false, env
);
96 EXPECT_TRUE(vec
.empty());
98 _config
->Set("Acquire::Languages", "environment");
100 vec
= APT::Configuration::getLanguages(false, false, env
);
101 EXPECT_EQ(1, vec
.size());
102 EXPECT_EQ("en", vec
[0]);
104 _config
->Set("Acquire::Languages", "de");
106 vec
= APT::Configuration::getLanguages(false, false, env
);
107 EXPECT_EQ(1, vec
.size());
108 EXPECT_EQ("de", vec
[0]);
110 _config
->Set("Acquire::Languages", "fr");
111 env
[0] = "ast_DE.UTF-8";
112 vec
= APT::Configuration::getLanguages(false, false, env
);
113 EXPECT_EQ(1, vec
.size());
114 EXPECT_EQ("fr", vec
[0]);
116 _config
->Set("Acquire::Languages", "environment,en");
117 env
[0] = "de_DE.UTF-8";
118 vec
= APT::Configuration::getLanguages(false, false, env
);
119 EXPECT_EQ(3, vec
.size());
120 EXPECT_EQ("de_DE", vec
[0]);
121 EXPECT_EQ("de", vec
[1]);
122 EXPECT_EQ("en", vec
[2]);
123 _config
->Set("Acquire::Languages", "");
125 _config
->Set("Acquire::Languages::1", "environment");
126 _config
->Set("Acquire::Languages::2", "en");
127 env
[0] = "de_DE.UTF-8";
128 vec
= APT::Configuration::getLanguages(false, false, env
);
129 EXPECT_EQ(3, vec
.size());
130 EXPECT_EQ("de_DE", vec
[0]);
131 EXPECT_EQ("de", vec
[1]);
132 EXPECT_EQ("en", vec
[2]);
134 _config
->Set("Acquire::Languages::3", "de");
135 env
[0] = "de_DE.UTF-8";
136 vec
= APT::Configuration::getLanguages(false, false, env
);
137 EXPECT_EQ(3, vec
.size());
138 EXPECT_EQ("de_DE", vec
[0]);
139 EXPECT_EQ("de", vec
[1]);
140 EXPECT_EQ("en", vec
[2]);
145 TEST(LanguagesTest
,TranslationFiles
)
148 _config
->Set("Acquire::Languages::1", "environment");
149 _config
->Set("Acquire::Languages::2", "en");
150 _config
->Set("Acquire::Languages::3", "de");
153 env
[0] = "de_DE.UTF-8";
157 createTemporaryDirectory("languages", tempdir
);
159 #define createTranslation(lang) \
160 createFile(tempdir, std::string("/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-").append(lang));
162 createTranslation("tr");
163 createTranslation("pt");
164 createTranslation("se~");
165 createTranslation("st.bak");
166 createTranslation("ast_DE");
167 createTranslation("tlh%5fDE");
169 _config
->Set("Dir::State::lists", tempdir
);
170 std::vector
<std::string
> vec
= APT::Configuration::getLanguages(true, false, env
);
171 EXPECT_EQ(8, vec
.size());
172 EXPECT_EQ("de_DE", vec
[0]);
173 EXPECT_EQ("de", vec
[1]);
174 EXPECT_EQ("en", vec
[2]);
175 EXPECT_EQ("none", vec
[3]);
176 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "pt"));
177 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "tr"));
178 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "ast_DE"));
179 EXPECT_NE(vec
.end(), std::find(vec
.begin(), vec
.end(), "tlh_DE"));
180 EXPECT_NE(vec
[4], vec
[5]);
181 EXPECT_NE(vec
[4], vec
[6]);
182 EXPECT_NE(vec
[4], vec
[7]);
183 EXPECT_NE(vec
[5], vec
[6]);
184 EXPECT_NE(vec
[5], vec
[7]);
185 EXPECT_NE(vec
[6], vec
[7]);
187 _config
->Set("Acquire::Languages", "none");
188 vec
= APT::Configuration::getLanguages(true, false, env
);
189 EXPECT_EQ(1, vec
.size());
190 EXPECT_EQ("none", vec
[0]);
191 _config
->Set("Acquire::Languages", "");
193 _config
->Set("Dir::State::lists", "/non-existing-dir");
194 _config
->Set("Acquire::Languages::1", "none");
195 env
[0] = "de_DE.UTF-8";
196 vec
= APT::Configuration::getLanguages(false, false, env
);
197 EXPECT_TRUE(vec
.empty());
198 env
[0] = "de_DE.UTF-8";
199 vec
= APT::Configuration::getLanguages(true, false, env
);
200 EXPECT_EQ(2, vec
.size());
201 EXPECT_EQ("en", vec
[0]);
202 EXPECT_EQ("de", vec
[1]);
204 _config
->Set("Acquire::Languages::1", "fr");
205 _config
->Set("Acquire::Languages", "de_DE");
206 env
[0] = "de_DE.UTF-8";
207 vec
= APT::Configuration::getLanguages(false, false, env
);
208 EXPECT_EQ(1, vec
.size());
209 EXPECT_EQ("de_DE", vec
[0]);
211 _config
->Set("Acquire::Languages", "none");
212 env
[0] = "de_DE.UTF-8";
213 vec
= APT::Configuration::getLanguages(true, false, env
);
214 EXPECT_EQ(1, vec
.size());
215 EXPECT_EQ("none", vec
[0]);
217 _config
->Set("Acquire::Languages", "");
218 //FIXME: Remove support for this deprecated setting
219 _config
->Set("APT::Acquire::Translation", "ast_DE");
220 env
[0] = "de_DE.UTF-8";
221 vec
= APT::Configuration::getLanguages(true, false, env
);
222 EXPECT_EQ(2, vec
.size());
223 EXPECT_EQ("ast_DE", vec
[0]);
224 EXPECT_EQ("en", vec
[1]);
225 _config
->Set("APT::Acquire::Translation", "none");
226 env
[0] = "de_DE.UTF-8";
227 vec
= APT::Configuration::getLanguages(true, false, env
);
228 EXPECT_EQ(1, vec
.size());
229 EXPECT_EQ("en", vec
[0]);
232 EXPECT_EQ(0, system(std::string("rm -rf ").append(tempdir
).c_str()));