subcommand 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,34 @@
1
+ #!/bin/sh
2
+
3
+ fixed=0
4
+ success=0
5
+ failed=0
6
+ broken=0
7
+ total=0
8
+
9
+ for file
10
+ do
11
+ while read type value
12
+ do
13
+ case $type in
14
+ '')
15
+ continue ;;
16
+ fixed)
17
+ fixed=$(($fixed + $value)) ;;
18
+ success)
19
+ success=$(($success + $value)) ;;
20
+ failed)
21
+ failed=$(($failed + $value)) ;;
22
+ broken)
23
+ broken=$(($broken + $value)) ;;
24
+ total)
25
+ total=$(($total + $value)) ;;
26
+ esac
27
+ done <"$file"
28
+ done
29
+
30
+ printf "%-8s%d\n" fixed $fixed
31
+ printf "%-8s%d\n" success $success
32
+ printf "%-8s%d\n" failed $failed
33
+ printf "%-8s%d\n" broken $broken
34
+ printf "%-8s%d\n" total $total
data/tests/recreate.sh ADDED
@@ -0,0 +1,33 @@
1
+ #!/bin/bash
2
+ #*******************************************************#
3
+ # recreate.sh
4
+ # written by Rahul Kumar #
5
+ # 2009/12/01 #
6
+ # recreate a failed test - pass the name of the earlier#
7
+ # test program. In some cases, you may have to rename #
8
+ # transcript.txt to the testcase since cp -i failes #
9
+ #*******************************************************#
10
+
11
+ # oldfile is the old test cases such as t0001-add.sh
12
+ oldfile="$1"
13
+ [ ! -f "$oldfile" ] && { echo "Could not find $oldfile"; exit -1 ; }
14
+
15
+ LOADSTR=
16
+ if grep -q CATEOF "$oldfile"; then
17
+ sed -n '/<<CATEOF/,/^CATEOF/p' "$oldfile" | grep -v "CATEOF" > data.1
18
+ LOADSTR='--load data.1'
19
+ echo found data, saved as data.1
20
+ wc -l data.1
21
+ fi
22
+ str=$( echo "$oldfile" | sed 's/^t[0-9]*-//;s/.sh$//' )
23
+ echo "Using suffix:$str"
24
+ read -p "press enter "
25
+ grep '^>>> ' "$oldfile" | sed 's/^>>> //'
26
+ read -p "press enter "
27
+ grep '^>>> ' "$oldfile" | sed 's/^>>> //' | ./rtest2.sh $LOADSTR "$str"
28
+
29
+ echo
30
+ echo renaming old file with O prefix
31
+ mv "$oldfile" O$oldfile
32
+ echo "If you don't find a test case, then rename transcript.txt to $oldfile"
33
+ echo "cp transcript.txt $oldfile"
data/tests/rtest2.sh ADDED
@@ -0,0 +1,127 @@
1
+ #!/bin/bash
2
+ #*******************************************************#
3
+ # rtest2.sh #
4
+ # written by Rahul Kumar #
5
+ # December 21, 2009 #
6
+ # #
7
+ # generates a test case #
8
+ #*******************************************************#
9
+ # @param - test descriptor - short name
10
+ #+ will be used in test_desc and filename suffix
11
+ #
12
+ # If testing for error, and command returns 1
13
+ #+ place "=== 1" on first line or result
14
+
15
+ while [[ $1 = -* ]]; do
16
+ case "$1" in
17
+ -L|--load)
18
+ # load a file containing TODO2.txt data to test against
19
+ dataset=../$2
20
+ shift
21
+ shift
22
+ ;;
23
+ *)
24
+ echo "Error: Unknown option: $1" >&2 # rem _
25
+ exit 1
26
+ ;;
27
+ esac
28
+ done
29
+
30
+ if [[ -z "$1" ]]; then
31
+ echo -n "Test Description (short, no spaces): " 1>&2
32
+ read td
33
+ else
34
+ td="$1"
35
+ fi
36
+ # for generating a serial number
37
+ APP="subcommand-test"
38
+
39
+ PS1=">>>"
40
+ out="$(pwd)/transcript.txt"
41
+ test_description="Testing of $td"
42
+ filesuffix=$( echo "$td" | sed 's/ /_/g' )
43
+
44
+
45
+ . ./test-lib.sh
46
+ trap - EXIT
47
+ if [[ ! -z "$dataset" ]]; then
48
+ if [[ ! -f "$dataset" ]]; then
49
+ echo "Can't find file $dataset"
50
+ exit 1
51
+ else
52
+ wc -l "$dataset"
53
+ fi
54
+ fi
55
+ if [[ ! -z "$dataset" ]]; then
56
+ cp "${dataset}" TODO2.txt
57
+ pre+=$( echo -e "cat > TODO2.txt <<CATEOF")
58
+ pre+="\n"
59
+ pre+=$(cat TODO2.txt)
60
+ pre+=$( echo -e "\nCATEOF\n" )
61
+ fi
62
+ str=""
63
+ > "$out"
64
+
65
+ history -r .rtest2.history
66
+ ## get user input, stop when user enters 'bye'
67
+ while read -ep ">>> " line
68
+ do
69
+ # echo -n ">>> "
70
+ # read line
71
+ [ -z "$line" ] && { echo "bye to quit"; continue; }
72
+ [[ "$line" = "bye" ]] && break;
73
+ [[ "$line" = "abort" ]] && exit 1;
74
+ [ -n "$line" ] && history -s "$line"
75
+
76
+ ## user can execute test_tick in current shell
77
+ [[ "$line" = *test_tick* ]] && {
78
+ times=$( expr "$line" : 'test_tick \(.*\)' )
79
+ # should be multiples of 86400 or at least more than 86400
80
+ test_tick $times;
81
+ }
82
+
83
+ if grep -q "^list" <<< "$line"; then
84
+ line=$( echo "$line" | sed 's/^list/t --sort-serial list/')
85
+ fi
86
+ if grep -q "^ls" <<< "$line"; then
87
+ line=$( echo "$line" | sed 's/^ls/t --sort-serial --no-colors list/')
88
+ fi
89
+ line=$(echo "$line" | sed 's/--ss /--sort-serial /')
90
+ line=$(echo "$line" | sed 's/--nc /--no-colors /')
91
+ #[[ "$line" = "list" ]] && line="t --sort-serial list";
92
+ #[[ "$line" = "ls" ]] && line="t --sort-serial --no-colors list";
93
+ line=$(echo "$line" | sed 's~^t ~ruby bin/subcommand ~')
94
+ echo ">>> $line" >> $out
95
+ eval "$line" | tee -a "$out"
96
+ # RK since old version stopped expect on blank line I've placed this marker
97
+ echo ">>> end" >> $out
98
+ #echo "" >> $out
99
+ done
100
+
101
+ ## generate the test case transcript
102
+ str="$( cat $out )"
103
+ > "$out"
104
+ cat > "$out" <<EOF
105
+ #!/bin/sh
106
+ test_description="Testing out $td "
107
+ . ./test-lib.sh
108
+
109
+
110
+ EOF
111
+ echo -e "$pre" >> "$out"
112
+ echo "" >> "$out"
113
+ echo "test_todo_session \"Testing of $td\" <<EOF" >> "$out"
114
+ echo "$str" >> "$out"
115
+ echo "" >> "$out"
116
+ echo "EOF" >> "$out"
117
+ echo "test_done" >> "$out"
118
+
119
+ # try to create a decent file name
120
+ serno=$( get_serial_number -a "$APP" -d "../" )
121
+ serno=$( printf "%04s" "$serno" )
122
+ filename="../t${serno}-${filesuffix}.sh"
123
+ echo "trying to copy $out to $filename"
124
+ chmod +x "$out"
125
+ cp -i "$out" "$filename" < /dev/tty
126
+ chmod +x "$filename"
127
+ echo "Please rename $filename to prevent possible overwriting"
@@ -0,0 +1,51 @@
1
+ #!/bin/sh
2
+ test_description="Testing out main "
3
+ . ./test-lib.sh
4
+
5
+
6
+
7
+
8
+ test_todo_session "Testing of main" <<EOF
9
+ >>> ruby bin/subcommand.rb help
10
+ Usage: subcommand.rb [options] [subcommand [options]]
11
+ Stupid program that does something
12
+
13
+ Global options are:
14
+ -v, --[no-]verbose Run verbosely
15
+
16
+ Commands are:
17
+ foo : desc for foo
18
+ baz : desc for baz
19
+
20
+ Aliases:
21
+ goo - foo
22
+ bar - ["baz"]
23
+ boo - ["foo", "--force"]
24
+ zoo - ["foo", "ruby"]
25
+
26
+
27
+ See 'bin/subcommand.rb help COMMAND' for more information on a specific command.
28
+ >>> end
29
+ >>> ruby bin/subcommand.rb --help
30
+ Usage: subcommand.rb [options] [subcommand [options]]
31
+ Stupid program that does something
32
+
33
+ Global options are:
34
+ -v, --[no-]verbose Run verbosely
35
+
36
+ Commands are:
37
+ foo : desc for foo
38
+ baz : desc for baz
39
+
40
+ Aliases:
41
+ goo - foo
42
+ bar - ["baz"]
43
+ boo - ["foo", "--force"]
44
+ zoo - ["foo", "ruby"]
45
+
46
+
47
+ See 'bin/subcommand.rb help COMMAND' for more information on a specific command.
48
+ >>> end
49
+
50
+ EOF
51
+ test_done
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ test_description="Testing out subcomm "
3
+ . ./test-lib.sh
4
+
5
+
6
+
7
+
8
+ test_todo_session "Testing of subcomm" <<EOF
9
+ >>> ruby bin/subcommand.rb help foo
10
+ Usage: foo [options]
11
+ desc for foo
12
+ -f, --[no-]force force verbosely
13
+ >>> end
14
+ >>> ruby bin/subcommand.rb foo --help
15
+ Usage: foo [options]
16
+ desc for foo
17
+ -f, --[no-]force force verbosely
18
+ >>> end
19
+
20
+ EOF
21
+ test_done
@@ -0,0 +1,53 @@
1
+ #!/bin/sh
2
+ test_description="Testing out inv_comm "
3
+ . ./test-lib.sh
4
+
5
+
6
+
7
+
8
+ test_todo_session "Testing of inv_comm" <<EOF
9
+ >>> ruby bin/subcommand.rb help fxxx
10
+ Invalid command: fxxx.
11
+ Usage: subcommand.rb [options] [subcommand [options]]
12
+ Stupid program that does something
13
+
14
+ Global options are:
15
+ -v, --[no-]verbose Run verbosely
16
+
17
+ Commands are:
18
+ foo : desc for foo
19
+ baz : desc for baz
20
+
21
+ Aliases:
22
+ goo - foo
23
+ bar - ["baz"]
24
+ boo - ["foo", "--force"]
25
+ zoo - ["foo", "ruby"]
26
+
27
+
28
+ See 'bin/subcommand.rb help COMMAND' for more information on a specific command.
29
+ >>> end
30
+ >>> ruby bin/subcommand.rb fxxx --help
31
+ Invalid command: fxxx
32
+ Usage: subcommand.rb [options] [subcommand [options]]
33
+ Stupid program that does something
34
+
35
+ Global options are:
36
+ -v, --[no-]verbose Run verbosely
37
+
38
+ Commands are:
39
+ foo : desc for foo
40
+ baz : desc for baz
41
+
42
+ Aliases:
43
+ goo - foo
44
+ bar - ["baz"]
45
+ boo - ["foo", "--force"]
46
+ zoo - ["foo", "ruby"]
47
+
48
+
49
+ See 'bin/subcommand.rb help COMMAND' for more information on a specific command.
50
+ >>> end
51
+
52
+ EOF
53
+ test_done
@@ -0,0 +1,25 @@
1
+ #!/bin/sh
2
+ test_description="Testing out subcomm "
3
+ . ./test-lib.sh
4
+
5
+
6
+
7
+
8
+ test_todo_session "Testing of subcomm" <<EOF
9
+ >>> ruby bin/subcommand.rb baz --quiet "some text"
10
+ cmd: baz
11
+ options ......
12
+ {:quiet=>true}
13
+ ARGV:
14
+ ["some text"]
15
+ >>> end
16
+ >>> ruby bin/subcommand.rb --verbose foo --force file.zzz
17
+ cmd: foo
18
+ options ......
19
+ {:verbose=>true, :force=>true}
20
+ ARGV:
21
+ ["file.zzz"]
22
+ >>> end
23
+
24
+ EOF
25
+ test_done
@@ -0,0 +1,28 @@
1
+ #!/bin/sh
2
+ test_description="Testing out alias_goo "
3
+ . ./test-lib.sh
4
+
5
+
6
+
7
+
8
+ test_todo_session "Testing of alias_goo" <<EOF
9
+ >>> ruby bin/subcommand.rb goo
10
+ cmd: foo
11
+ options ......
12
+ {}
13
+ ARGV:
14
+ []
15
+ >>> end
16
+ >>> ruby bin/subcommand.rb help goo
17
+ Usage: foo [options]
18
+ desc for foo
19
+ -f, --[no-]force force verbosely
20
+ >>> end
21
+ >>> ruby bin/subcommand.rb goo --help
22
+ Usage: foo [options]
23
+ desc for foo
24
+ -f, --[no-]force force verbosely
25
+ >>> end
26
+
27
+ EOF
28
+ test_done
@@ -0,0 +1,25 @@
1
+ #!/bin/sh
2
+ test_description="Testing out goo_opt "
3
+ . ./test-lib.sh
4
+
5
+
6
+
7
+
8
+ test_todo_session "Testing of goo_opt" <<EOF
9
+ >>> ruby bin/subcommand.rb goo -f
10
+ cmd: foo
11
+ options ......
12
+ {:force=>true}
13
+ ARGV:
14
+ []
15
+ >>> end
16
+ >>> ruby bin/subcommand.rb foo -f
17
+ cmd: foo
18
+ options ......
19
+ {:force=>true}
20
+ ARGV:
21
+ []
22
+ >>> end
23
+
24
+ EOF
25
+ test_done
@@ -0,0 +1,44 @@
1
+ #!/bin/sh
2
+ test_description="Testing out bar_baz "
3
+ . ./test-lib.sh
4
+
5
+
6
+
7
+
8
+ test_todo_session "Testing of bar_baz" <<EOF
9
+ >>> ruby bin/subcommand.rb bar
10
+ cmd: baz
11
+ options ......
12
+ {}
13
+ ARGV:
14
+ []
15
+ >>> end
16
+ >>> ruby bin/subcommand.rb baz
17
+ cmd: baz
18
+ options ......
19
+ {}
20
+ ARGV:
21
+ []
22
+ >>> end
23
+ >>> ruby bin/subcommand.rb baz --help
24
+ Usage: baz [options]
25
+ desc for baz
26
+ -q, --[no-]quiet quietly run
27
+ >>> end
28
+ >>> ruby bin/subcommand.rb baz -q
29
+ cmd: baz
30
+ options ......
31
+ {:quiet=>true}
32
+ ARGV:
33
+ []
34
+ >>> end
35
+ >>> ruby bin/subcommand.rb bar -q
36
+ cmd: baz
37
+ options ......
38
+ {:quiet=>true}
39
+ ARGV:
40
+ []
41
+ >>> end
42
+
43
+ EOF
44
+ test_done