@Test
  public void testLoadConfigWithOverridesAndRewrites() {
    Map<String, String> config = new HashMap<>();
    config.put(JobConfig.CONFIG_LOADER_FACTORY, PropertiesConfigLoaderFactory.class.getCanonicalName());
    config.put(JobConfig.JOB_NAME, "new-test-job");
    config.put(JobConfig.CONFIG_REWRITERS, REWRITER_NAME);
    config.put(CONFIG_KEY, CONFIG_VALUE);
    config.put(String.format(JobConfig.CONFIG_REWRITER_CLASS, REWRITER_NAME), NewPropertyRewriter.class.getName());
    config.put(PropertiesConfigLoaderFactory.CONFIG_LOADER_PROPERTIES_PREFIX + "path", getClass().getResource("/test.properties").getPath());

    Config actual = ConfigUtil.loadConfig(new MapConfig(config));

    assertEquals("org.apache.samza.job.MockJobFactory", actual.get("job.factory.class"));
    assertEquals("bar", actual.get("foo"));
    // overridden value
    assertEquals("new-test-job", actual.get("job.name"));
    // rewritten value
    assertEquals(CONFIG_VALUE, actual.get(NEW_CONFIG_KEY));
  }
This fails because Util will interpret the empty string value as a single rewriter which has the empty string as a
name, and there is no rewriter class config for a rewriter name which is the empty string.
TODO: should this be fixed to interpret the empty string as an empty list?
samza-core/src/test/java/org/apache/samza/util/TestConfigUtil.java