FrontendUtils { static void validateToolVersion(String tool, FrontendVersion toolVersion, FrontendVersion supported, FrontendVersion shouldWork) { if (isVersionAtLeast(toolVersion, supported)) { return; } if (isVersionAtLeast(toolVersion, shouldWork)) { getLogger().warn(buildShouldWorkString(tool, toolVersion.getFullVersion(), supported.getMajorVersion(), supported.getMinorVersion())); return; } throw new IllegalStateException(buildTooOldString(tool, toolVersion.getFullVersion(), supported.getMajorVersion(), supported.getMinorVersion())); } private  FrontendUtils(); static String getOsName(); static boolean isWindows(); static String streamToString(InputStream inputStream); static ProcessBuilder createProcessBuilder(List<String> command); static String getStatsContent(VaadinService service); static String getIndexHtmlContent(VaadinService service); static String getStatsHash(VaadinService service); static String getStatsAssetsByChunkName(VaadinService service); static String getProjectFrontendDir(
            DeploymentConfiguration configuration); static boolean isWebpackConfigFile(File file); static String getUnixRelativePath(Path source, Path target); static String getUnixPath(Path source); static FallbackChunk readFallbackChunk(JsonObject object); static FrontendVersion parseFrontendVersion(String versionString); static File getVaadinHomeDirectory(); static String commandToString(String baseDir, List<String> command); @SuppressWarnings("squid:S106") static void console(String format, Object message); static final String PROJECT_BASEDIR; static final String DEFAULT_NODE_DIR; static final String NODE_MODULES; static final String FRONTEND; static final String DEFAULT_FRONTEND_DIR; static final String WEBPACK_CONFIG; static final String WEBPACK_GENERATED; static final String TARGET; static final String FLOW_NPM_PACKAGE_NAME; static final String FORM_NPM_PACKAGE_NAME; static final String DEFAULT_FLOW_RESOURCES_FOLDER; @Deprecated
    static final String DEAULT_FLOW_RESOURCES_FOLDER; static final String DEFAULT_GENERATED_DIR; static final String IMPORTS_NAME; static final String IMPORTS_D_TS_NAME; static final String INDEX_HTML; static final String INDEX_TS; static final String INDEX_JS; static final String DEFAULT_CONNECT_JAVA_SOURCE_FOLDER; static final String DEFAULT_CONNECT_APPLICATION_PROPERTIES; static final String DEFAULT_CONNECT_OPENAPI_JSON_FILE; static final String DEFAULT_CONNECT_GENERATED_TS_DIR; static final String FALLBACK_IMPORTS_NAME; static final String PARAM_GENERATED_DIR; static final String PARAM_FRONTEND_DIR; static final String PARAM_IGNORE_VERSION_CHECKS; static final String WEBPACK_PREFIX_ALIAS; static final String TOKEN_FILE; static final String CHUNKS; static final String FALLBACK; static final String EXPORT_CHUNK; static final String CSS_IMPORTS; static final String JS_MODULES; static final String PARAM_TOKEN_FILE; static final String INSTALL_NODE_LOCALLY; static final String DISABLE_CHECK; static final String YELLOW; static final String RED; static final String GREEN; static final String BRIGHT_BLUE; }
@Test public void validateLargerThan_passesForNewVersion() { FrontendUtils.validateToolVersion("test", new FrontendVersion("10.0.2"), new FrontendVersion(10, 0), new FrontendVersion(10, 0)); FrontendUtils.validateToolVersion("test", new FrontendVersion("10.1.2"), new FrontendVersion(10, 0), new FrontendVersion(10, 0)); FrontendUtils.validateToolVersion("test", new FrontendVersion("11.0.2"), new FrontendVersion(10, 0), new FrontendVersion(10, 0)); }
@Test public void validateLargerThan_logsForSlightlyOldVersion() throws UnsupportedEncodingException { PrintStream orgErr = System.err; ByteArrayOutputStream out = new ByteArrayOutputStream(); System.setErr(new PrintStream(out)); try { FrontendUtils.validateToolVersion("test", new FrontendVersion(9, 0, 0), new FrontendVersion(10, 0), new FrontendVersion(8, 0)); String logged = out.toString("utf-8") .replace("\r", ""); Assert.assertTrue(logged.contains( "Your installed 'test' version (9.0.0) is not supported but should still work. Supported versions are 10.0+\n")); } finally { System.setErr(orgErr); } }
@Test public void validateLargerThan_throwsForOldVersion() { try { FrontendUtils.validateToolVersion("test", new FrontendVersion(7, 5, 0), new FrontendVersion(10, 0), new FrontendVersion(8, 0)); Assert.fail("No exception was thrown for old version"); } catch (IllegalStateException e) { Assert.assertTrue(e.getMessage().contains( "Your installed 'test' version (7.5.0) is too old. Supported versions are 10.0+")); } }