Files
openide/python/testSrc/com/jetbrains/commandInterface/commandLine/CommandLineArgsTest.java
T

75 lines
2.8 KiB
Java

/*
* Copyright 2000-2015 JetBrains s.r.o.
*
* 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.jetbrains.commandInterface.commandLine;
import com.intellij.openapi.util.Pair;
import com.jetbrains.commandInterface.command.Argument;
import com.jetbrains.commandInterface.commandLine.psi.CommandLineFile;
import com.jetbrains.python.fixtures.PyTestCase;
import org.jetbrains.annotations.NotNull;
import org.junit.Assert;
/**
* Checks {@link ValidationResult#getNextArg()} functionality
*
* @author Ilya.Kazakevich
*/
public final class CommandLineArgsTest extends PyTestCase {
/**
* Ensures argument is returned if exists
*/
public void testArgsRequired() throws Exception {
CommandTestTools.initFileType();
validateNextArgument("command", "positional_argument");
}
/**
* Ensures option argument is returned if exists
*/
public void testOptionArgsRequired() throws Exception {
CommandTestTools.initFileType();
validateNextArgument("command positional_argument --available-option", "option argument");
}
/**
* Ensures argument is not returned if not required
*/
public void testNoMoreArgs() throws Exception {
CommandTestTools.initFileType();
final CommandLineFile file = CommandTestTools.createFileByText(myFixture, "command foo bar spam eggs");
final ValidationResult validationResult = file.getValidationResult();
assert validationResult != null : "validation failed";
Assert.assertNull("Argument returned while should not", validationResult.getNextArg());
}
/**
* Runs commands and checks argument is required after it
* @param commandText command text to run
* @param expectedArgumentText expected next argument help text
*/
private void validateNextArgument(@NotNull final String commandText, @NotNull final String expectedArgumentText) {
final CommandLineFile file = CommandTestTools.createFileByText(myFixture, commandText);
final ValidationResult validationResult = file.getValidationResult();
assert validationResult != null : "validation failed";
final Pair<Boolean, Argument> arg = validationResult.getNextArg();
Assert.assertNotNull("No argument returned, but should", arg);
Assert.assertTrue("Required argument is not marked as required", arg.first);
Assert.assertEquals("Wrong argument text", expectedArgumentText, arg.second.getHelp().getHelpString());
}
}