| /* |
| * Copyright 2014-present Facebook, Inc. |
| * |
| * 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.facebook.buck.cli; |
| |
| import static org.junit.Assert.assertArrayEquals; |
| |
| import org.junit.Rule; |
| import org.junit.Test; |
| import org.junit.rules.ExpectedException; |
| import org.kohsuke.args4j.CmdLineException; |
| |
| public class RunCommandOptionsTest { |
| |
| @Rule |
| public ExpectedException expectedException = ExpectedException.none(); |
| |
| private String[] testWithArgs(String[] args) throws CmdLineException { |
| BuckConfig buckConfig = new FakeBuckConfig(); |
| RunCommandOptions options = new RunCommandOptions(buckConfig); |
| CmdLineParserAdditionalOptions parser = new CmdLineParserAdditionalOptions(options); |
| parser.parseArgument(args); |
| return options.getArguments().toArray(new String[options.getArguments().size()]); |
| } |
| |
| @Test |
| public void testNormalExecution() throws CmdLineException { |
| String[] args = new String[] { "//some/target", "arg1", "arg2", "arg3" }; |
| String[] expectedArgs = new String[] { "//some/target", "arg1", "arg2", "arg3" }; |
| assertArrayEquals(expectedArgs, testWithArgs(args)); |
| } |
| |
| @Test |
| public void testInvalidOptions1() throws CmdLineException { |
| String[] args = new String[] { "--invalid", "//some/target", "arg" }; |
| expectedException.expect(CmdLineException.class); |
| expectedException.expectMessage("\"--invalid\" is not a valid option"); |
| testWithArgs(args); |
| } |
| |
| @Test |
| public void testInvalidOptions2() throws CmdLineException { |
| String[] args = new String[] { "//some/target", "--invalid", "arg" }; |
| expectedException.expect(CmdLineException.class); |
| expectedException.expectMessage("\"--invalid\" is not a valid option"); |
| testWithArgs(args); |
| } |
| |
| @Test |
| public void testValidOptions() throws CmdLineException { |
| String[] args = new String[] { "--no-cache", "//some/target" }; |
| String[] expectedArgs = new String[]{"//some/target"}; |
| assertArrayEquals(expectedArgs, testWithArgs(args)); |
| } |
| |
| @Test |
| public void testDoubleDash1() throws CmdLineException { |
| String[] args = new String[] { "--", "--invalid", "//some/target", "arg" }; |
| String[] expectedArgs = new String[] { "--invalid", "//some/target", "arg" }; |
| assertArrayEquals(expectedArgs, testWithArgs(args)); |
| } |
| |
| @Test |
| public void testDoubleDash2() throws CmdLineException { |
| String[] args = new String[] { "--", "//some/target", "--invalid", "arg" }; |
| String[] expectedArgs = new String[] { "//some/target", "--invalid", "arg" }; |
| assertArrayEquals(expectedArgs, testWithArgs(args)); |
| } |
| |
| @Test |
| public void testDoubleDash3() throws CmdLineException { |
| String[] args = new String[] { |
| "//some/target", "arg1", "--", "--opt1", "something", "--opt2", "something" |
| }; |
| String[] expectedArgs = new String[] { |
| "//some/target", "arg1", "--opt1", "something", "--opt2", "something" |
| }; |
| assertArrayEquals(expectedArgs, testWithArgs(args)); |
| } |
| |
| @Test |
| public void testDoubleDash4() throws CmdLineException { |
| String[] args = new String[] { |
| "//some/target", "arg1", "--opt1", "something", "--", "--opt2", "something" |
| }; |
| expectedException.expect(CmdLineException.class); |
| expectedException.expectMessage("\"--opt1\" is not a valid option"); |
| testWithArgs(args); |
| } |
| } |