test/test_application.rb in rubikon-0.5.2 vs test/test_application.rb in rubikon-0.5.3

- old
+ new

@@ -118,11 +118,11 @@ assert_equal 'test', @app.run(%w{globalopt --go2 test}) end should 'have a working help command' do @app.run(%w{help}) - assert_match /Usage: [^ ]* \[--debug\|-d\] \[--gflag\|--gf1\|--gf2\] \[--gopt\|--go1\|--go2 \.\.\.\] \[--verbose\|-v\] \[command\] \[args\]\n\nCommands:\n arguments \n globalopt \n help Show help for the application or a single command\n input \n object_id \n parameters \n progressbar \n sandbox \n throbber \n/, @ostream.string + assert_match /Usage: [^ ]* \[--debug\|-d\] \[--gflag\|--gf1\|--gf2\] \[--gopt\|--go1\|--go2 \.\.\.\] \[--verbose\|-v\] command \[args\]\n\nCommands:\n arguments \n globalopt \n help Display this help screen\n input \n object_id \n parameters \n progressbar \n sandbox \n throbber \n/, @ostream.string end should 'have a working DSL for command parameters' do params = @app.run(%w{parameters}).values.uniq.sort { |a,b| a.name.to_s <=> b.name.to_s } assert_equal :flag, params[0].name @@ -163,9 +163,67 @@ @app.run(%w{-dv}) assert $DEBUG assert $VERBOSE $DEBUG = false $VERBOSE = false + end + + should 'parse arguments correctly' do + cmd, global_params, args = @app.parse_arguments(%w{}) + assert_instance_of Command, cmd + assert_equal cmd.name, :__default + assert_equal [], global_params + assert_equal [], args + + cmd, global_params, args = @app.parse_arguments(%w{-d -v}) + assert_instance_of Command, cmd + assert_equal cmd.name, :__default + assert_instance_of Array, global_params + assert_equal 2, global_params.size + assert_instance_of Flag, global_params[0] + assert_equal :debug, global_params[0].name + assert_instance_of Flag, global_params[1] + assert_equal :verbose, global_params[1].name + assert_equal [], args + + cmd, global_params, args = @app.parse_arguments(%w{-dv}) + assert_instance_of Command, cmd + assert_equal cmd.name, :__default + assert_instance_of Array, global_params + assert_equal 2, global_params.size + assert_instance_of Flag, global_params[0] + assert_equal :debug, global_params[0].name + assert_instance_of Flag, global_params[1] + assert_equal :verbose, global_params[1].name + assert_equal [], args + + cmd, global_params, args = @app.parse_arguments(%w{-x}) + assert_instance_of Command, cmd + assert_equal cmd.name, :__default + assert_instance_of Array, global_params + assert_equal 0, global_params.size + assert_equal %w{-x}, args + + cmd, global_params, args = @app.parse_arguments(%w{-d -v object_id}) + assert_instance_of Command, cmd + assert_equal cmd.name, :object_id + assert_instance_of Array, global_params + assert_equal 2, global_params.size + assert_instance_of Flag, global_params[0] + assert_equal :debug, global_params[0].name + assert_instance_of Flag, global_params[1] + assert_equal :verbose, global_params[1].name + assert_equal [], args + + cmd, global_params, args = @app.parse_arguments(%w{sandbox --gopt test puts}) + assert_instance_of Command, cmd + assert_equal cmd.name, :sandbox + assert_instance_of Array, global_params + assert_equal 1, global_params.size + assert_instance_of Option, global_params[0] + assert_equal :gopt, global_params[0].name + assert_equal %w{test}, global_params[0].args + assert_equal %w{puts}, args end end end