On 10 December 2011 11:52, Philippe Mouawad <philippe.moua...@gmail.com> wrote: > But some are not useful like Example2Resources.properties no ?
OK, but it's easier to add exclusions for the few that do not apply, e.g. don't process Example\d+. The tests already do that for other places where the Examples don't apply. Otherwise when new properties are added, it will be easy to forget to update the list. > On Sat, Dec 10, 2011 at 12:48 PM, sebb <seb...@gmail.com> wrote: > >> On 10 December 2011 11:40, <pmoua...@apache.org> wrote: >> > Author: pmouawad >> > Date: Sat Dec 10 11:40:31 2011 >> > New Revision: 1212777 >> > >> > URL: http://svn.apache.org/viewvc?rev=1212777&view=rev >> > Log: >> > Enhanced test to check translation completeness for one language with >> all available bundles, added only fr for now to avoid test failures >> > >> > Modified: >> > jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java >> > >> > Modified: jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java >> > URL: >> http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java?rev=1212777&r1=1212776&r2=1212777&view=diff >> > >> ============================================================================== >> > --- jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java >> (original) >> > +++ jmeter/trunk/test/src/org/apache/jmeter/junit/JMeterTest.java Sat >> Dec 10 11:40:31 2011 >> > @@ -77,6 +77,37 @@ public class JMeterTest extends JMeterTe >> > >> > private static final Locale DEFAULT_LOCALE = Locale.getDefault(); >> > >> > + private static final String[] RESOURCE_BUNDLE_PATHS = new String[] { >> > + "org/apache/jmeter/assertions/BSFAssertionResources.properties", >> > + >> "org/apache/jmeter/assertions/CompareAssertionResources.properties", >> > + >> "org/apache/jmeter/assertions/JSR223AssertionResources.properties", >> > + "org/apache/jmeter/config/CSVDataSetResources.properties", >> > + "org/apache/jmeter/config/KeystoreConfigResources.properties", >> > + >> "org/apache/jmeter/config/RandomVariableConfigResources.properties", >> > + >> "org/apache/jmeter/extractor/BSFPostProcessorResources.properties", >> > + >> "org/apache/jmeter/extractor/BeanShellPostProcessorResources.properties", >> > + >> "org/apache/jmeter/extractor/DebugPostProcessorResources.properties", >> > + >> "org/apache/jmeter/extractor/JSR223PostProcessorResources.properties", >> > + >> "org/apache/jmeter/modifiers/BSFPreProcessorResources.properties", >> > + >> "org/apache/jmeter/modifiers/BeanShellPreProcessorResources.properties", >> > + >> "org/apache/jmeter/modifiers/JSR223PreProcessorResources.properties", >> > + "org/apache/jmeter/sampler/DebugSamplerResources.properties", >> > + "org/apache/jmeter/timers/BSFTimerResources.properties", >> > + "org/apache/jmeter/timers/BeanShellTimerResources.properties", >> > + >> "org/apache/jmeter/timers/ConstantThroughputTimerResources.properties", >> > + "org/apache/jmeter/timers/JSR223TimerResources.properties", >> > + "org/apache/jmeter/timers/SyncTimerResources.properties", >> > + "org/apache/jmeter/visualizers/BSFListenerResources.properties", >> > + >> "org/apache/jmeter/visualizers/BeanShellListenerResources.properties", >> > + >> "org/apache/jmeter/visualizers/JSR223ListenerResources.properties", >> > + "org/apache/jmeter/resources/messages.properties", >> > + >> "org/apache/jmeter/protocol/http/sampler/AccessLogSamplerResources.properties", >> > + >> "org/apache/jmeter/protocol/java/sampler/JSR223SamplerResources.properties", >> > + >> "org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties", >> > + >> "org/apache/jmeter/protocol/jdbc/processor/JDBCPostProcessorResources.properties", >> > + >> "org/apache/jmeter/protocol/jdbc/sampler/JDBCSamplerResources.properties" >> > + }; >> > + >> >> Might be better to search for *Resources.properties instead of having >> to list all the files. >> >> > public JMeterTest(String name) { >> > super(name); >> > } >> > @@ -321,7 +352,7 @@ public class JMeterTest extends JMeterTe >> > return suite; >> > } >> > >> > - /* >> > + /* >> > * Test GUI elements - create the suite of tests >> > */ >> > private static Test suiteBeanComponents() throws Exception { >> > @@ -404,23 +435,31 @@ public class JMeterTest extends JMeterTe >> > * @throws Exception >> > */ >> > public void checkI18n() throws Exception { >> > - // TODO Also add other bundles of TestBeans >> > - Properties messages = new Properties(); >> > - >> messages.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("org/apache/jmeter/resources/messages.properties")); >> > + Map<String, Map<String,String>> missingLabelsPerBundle = new >> HashMap<String, Map<String,String>>(); >> > + for (int i = 0; i < RESOURCE_BUNDLE_PATHS.length; i++) { >> > + Properties messages = new Properties(); >> > + log.info("Checking bundle:"+RESOURCE_BUNDLE_PATHS[i]); >> > + >> messages.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(RESOURCE_BUNDLE_PATHS[i])); >> > + checkMessagesForLanguage( missingLabelsPerBundle , >> missingLabelsPerBundle, messages,RESOURCE_BUNDLE_PATHS[i], "fr"); >> > + } >> > >> > - checkMessagesForLanguage(messages, "fr"); >> > + assertEquals(missingLabelsPerBundle.size()+" missing labels, >> labels missing:"+printLabels(missingLabelsPerBundle), 0, >> missingLabelsPerBundle.size()); >> > } >> > >> > /** >> > * Check messages are available in language >> > + * @param missingLabelsPerBundle2 >> > + * @param missingLabelsPerBundle >> > * @param messages Properties messages in english >> > * @param language Language >> > * @throws IOException >> > */ >> > - private void checkMessagesForLanguage(Properties messages, >> String language) >> > + private void checkMessagesForLanguage(Map<String, Map<String, >> String>> missingLabelsPerBundle, Map<String, Map<String, String>> >> missingLabelsPerBundle2, Properties messages, String bundlePath,String >> language) >> > throws IOException { >> > Properties messagesFr = new Properties(); >> > - >> messagesFr.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("org/apache/jmeter/resources/messages_"+language+".properties")); >> > + int index = bundlePath.lastIndexOf("."); >> > + String languageBundle = bundlePath.substring(0, >> index)+"_"+language+ ".properties"; >> > + >> messagesFr.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(languageBundle)); >> > >> > Map<String, String> missingLabels = new TreeMap<String,String>(); >> > for (Iterator<Map.Entry<Object,Object>> iterator = >> messages.entrySet().iterator(); iterator.hasNext();) { >> > @@ -430,15 +469,26 @@ public class JMeterTest extends JMeterTe >> > missingLabels.put(key,(String) >> entry.getValue()); >> > } >> > } >> > - assertEquals(missingLabels.size()+" missing labels in language >> :"+language+", labels missing:"+printLabels(missingLabels), 0, >> missingLabels.size()); >> > + if(!missingLabels.isEmpty()) { >> > + missingLabelsPerBundle.put(languageBundle, >> missingLabels); >> > + } >> > } >> > >> > - >> > - private String printLabels(Map<String, String> missingLabels) { >> > + /** >> > + * Build message with misssing labels per bundle >> > + * @param missingLabelsPerBundle >> > + * @return String >> > + */ >> > + private String printLabels(Map<String, Map<String, String>> >> missingLabelsPerBundle) { >> > StringBuilder builder = new StringBuilder(); >> > - for (Iterator<Map.Entry<String,String>> iterator = >> missingLabels.entrySet().iterator(); iterator.hasNext();) { >> > - Map.Entry<String,String> entry = iterator.next(); >> > - >> builder.append(entry.getKey()+"="+entry.getValue()+"\r\n"); >> > + for (Iterator<Map.Entry<String,Map<String, String>>> iterator = >> missingLabelsPerBundle.entrySet().iterator(); iterator.hasNext();) { >> > + Map.Entry<String,Map<String, String>> entry = >> iterator.next(); >> > + builder.append("Missing labels in >> bundle:"+entry.getKey()+"\r\n"); >> > + for (Iterator<Map.Entry<String,String>> it2 = >> entry.getValue().entrySet().iterator(); it2.hasNext();) { >> > + Map.Entry<String,String> entry2 = it2.next(); >> > + >> builder.append(entry2.getKey()+"="+entry2.getValue()+"\r\n"); >> > + } >> > + >> builder.append("======================================================\r\n"); >> > } >> > return builder.toString(); >> > } >> > >> > >> > > > > -- > Cordialement. > Philippe Mouawad.