private String remote_file_path;
private String bundleName;
private SortedMap<String, String> missingKeys;
- private SortedMap<String, String> nonExistingKeys;
+ private SortedMap<String, String> additionalKeys;
public BundleSynchronizedMatcher(String sonarVersion) {
this(sonarVersion, GITHUB_RAW_FILE_PATH);
}
bundleName = (String) arg0;
- // Get the bundle
File bundle = getBundleFileFromClasspath(bundleName);
// Find the default bundle name which should be compared to
String defaultBundleName = extractDefaultBundleName(bundleName);
- File defaultBundle = null;
+ File defaultBundle;
if (isCoreBundle(defaultBundleName)) {
defaultBundle = getBundleFileFromGithub(defaultBundleName);
} else {
// and now let's compare
try {
missingKeys = retrieveMissingTranslations(bundle, defaultBundle);
- nonExistingKeys = retrieveMissingTranslations(defaultBundle, bundle);
- return missingKeys.isEmpty() && nonExistingKeys.isEmpty();
+ additionalKeys = retrieveMissingTranslations(defaultBundle, bundle);
+ return missingKeys.isEmpty();
} catch (IOException e) {
fail("An error occured while reading the bundles: " + e.getMessage());
return false;
private StringBuilder prepareDetailsMessage(File dumpFile) {
StringBuilder details = new StringBuilder("\n=======================\n'");
details.append(bundleName);
- details.append("' is not synchronized.");
+ details.append("' is not up-to-date.");
print("\n\n Missing translations are:", missingKeys, details);
- print("\n\nThe following translations do not exist in the reference bundle:", nonExistingKeys, details);
+ print("\n\nThe following translations do not exist in the reference bundle:", additionalKeys, details);
details.append("\n\nSee report file located at: " + dumpFile.getAbsolutePath());
details.append("\n=======================");
return details;
*/
package org.sonar.test.i18n;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.hasItem;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-import static org.sonar.test.i18n.I18nMatchers.isBundleUpToDate;
+import org.junit.Before;
+import org.junit.Test;
+import org.sonar.test.TestUtils;
import java.io.File;
-import java.util.Collection;
import java.util.SortedMap;
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.test.TestUtils;
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
+import static org.sonar.test.i18n.I18nMatchers.isBundleUpToDate;
public class BundleSynchronizedTest {
} catch (AssertionError e) {
assertThat(e.getMessage(), containsString("Missing translations are:\nsecond.prop"));
}
- // unnecessary many keys
- try {
- assertThat("myPlugin_fr_QB.properties", isBundleUpToDate());
- assertTrue(new File("target/l10n/myPlugin_fr_QB.properties.report.txt").exists());
- } catch (AssertionError e) {
- assertThat(e.getMessage(), containsString("The following translations do not exist in the reference bundle:\nfourth.prop"));
- }
+ }
+
+ @Test
+ public void shouldNotFailIfNoMissingKeysButAdditionalKeys() {
+ assertThat("noMissingKeys_fr.properties", isBundleUpToDate());
}
@Test