com.klarna.hiverunner.CommandShellEmulation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hiverunner Show documentation
Show all versions of hiverunner Show documentation
HiveRunner is a unit test framework based on JUnit (4 or 5) that enables TDD development of Hive SQL without the need of any installed dependencies.
/*
* Copyright 2015 Klarna AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.klarna.hiverunner;
/**
* Attempt to accurately emulate the behaviours (good and bad) of different Hive shells. Currently the {@code hive}
* interactive shell (which HiveRunner uses) has an annoying issue where it blows up on some full line comments
* (HIVE-8396). Beeline does not suffer from this and instead simply removes them. Full line comments are stripped from
* script files as is the case with both {@code hive -f} and {@code beeline -f}. The implementations provided here
* replicate these modes of operation.
*/
public enum CommandShellEmulation {
HIVE_CLI {
@Override
public String transformStatement(String statement) {
return statement;
}
@Override
public String transformScript(String script) {
return filterFullLineComments(script);
}
},
BEELINE {
@Override
public String transformStatement(String statement) {
return filterFullLineComments(statement);
}
@Override
public String transformScript(String script) {
return filterFullLineComments(script);
}
};
public abstract String transformStatement(String statement);
public abstract String transformScript(String script);
private static String filterFullLineComments(String statement) {
StringBuilder newStatement = new StringBuilder(statement.length());
for (String line : statement.split("\n")) {
if (!line.trim().startsWith("--")) {
newStatement.append(line);
newStatement.append('\n');
}
}
return newStatement.toString().trim();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy