From 9aab4d7a16fba5dfcf4d60b58a05cc765eca3335 Mon Sep 17 00:00:00 2001 From: Eric Date: Sat, 8 Sep 2012 11:15:49 -0500 Subject: full argument parsing and management capability --- test/rclt_command_SUITE.erl | 100 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 test/rclt_command_SUITE.erl (limited to 'test') diff --git a/test/rclt_command_SUITE.erl b/test/rclt_command_SUITE.erl new file mode 100644 index 0000000..5967cc5 --- /dev/null +++ b/test/rclt_command_SUITE.erl @@ -0,0 +1,100 @@ +%%% -*- mode: Erlang; fill-column: 80; comment-column: 75; -*- +%%% Copyright 2012 Erlware, LLC. All Rights Reserved. +%%% +%%% This file is provided to you 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. +%%%------------------------------------------------------------------- +%%% @author Eric Merrit +%%% @copyright (C) 2012, Eric Merrit +-module(rclt_command_SUITE). + +-export([suite/0, + init_per_suite/1, + end_per_suite/1, + all/0, + normal_passing_case/1, + lib_fail_case/1, + output_fail_case/1, + spec_parse_fail_case/1]). + +-include_lib("common_test/include/ct.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +suite() -> + [{timetrap,{seconds,30}}]. + +init_per_suite(Config) -> + Config. + +end_per_suite(_Config) -> + ok. + +all() -> + [normal_passing_case, lib_fail_case, output_fail_case]. + +normal_passing_case(Config) -> + DataDir = proplists:get_value(data_dir, Config), + Lib1 = filename:join([DataDir, "lib1"]), + Lib2 = filename:join([DataDir, "lib2"]), + Outdir = filename:join([DataDir, "outdir"]), + ok = rcl_util:mkdir_p(Lib1), + ok = rcl_util:mkdir_p(Lib2), + Goal1 = "app1<=33.33+build4", + Goal2 = "app2:btwn:33.22,45.22+build.21", + + LogLevel = "2", + RelName = "foo-release", + RelVsn = "33.222", + CmdLine = ["-V", LogLevel, "-g",Goal1,"-g",Goal2, "-l", Lib1, "-l", Lib2, + "-n", RelName, "-v", RelVsn, "-o", Outdir], + {ok, {State, Target}} = rcl_cmd_args:args2state(getopt:parse(relcool:opt_spec_list(), CmdLine)), + ?assertMatch([], Target), + ?assertMatch([Lib1, Lib2], + rcl_state:lib_dirs(State)), + ?assertMatch(Outdir, rcl_state:output_dir(State)), + + ?assertMatch([{<<"app1">>,{{33,33},{[],[<<"build4">>]}},lte}, + {<<"app2">>, + {{33,22},{[],[]}}, + {{45,22},{[],[<<"build">>,21]}}, + between}], rcl_state:goals(State)). + + +lib_fail_case(Config) -> + DataDir = proplists:get_value(data_dir, Config), + Lib1 = filename:join([DataDir, "lib1"]), + Lib2 = filename:join([DataDir, "lib3333"]), + ok = rcl_util:mkdir_p(Lib1), + + CmdLine = ["-l", Lib1, "-l", Lib2], + ?assertMatch({error, {not_directory, Lib2}}, + rcl_cmd_args:args2state(getopt:parse(relcool:opt_spec_list(), CmdLine))). + + +output_fail_case(Config) -> + DataDir = proplists:get_value(data_dir, Config), + UnwritableDir = filename:join([DataDir, "unwritable"]), + ok = rcl_util:mkdir_p(UnwritableDir), + ok = file:change_mode(UnwritableDir, 8#555), + CanNotCreate = filename:join([UnwritableDir, "out-dir-should-not-create"]), + + CmdLine = ["-o", CanNotCreate], + ?assertMatch({error, {unable_to_create_output_dir, CanNotCreate}}, + rcl_cmd_args:args2state(getopt:parse(relcool:opt_spec_list(), CmdLine))). + +spec_parse_fail_case(_Config) -> + Spec = "aaeu:3333:33.22a44", + CmdLine = ["-g", Spec], + ?assertMatch({error, {failed_to_parse, _Spec}}, + rcl_cmd_args:args2state(getopt:parse(relcool:opt_spec_list(), CmdLine))). -- cgit v1.2.3