eac_git 0.18.0 → 0.18.2

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.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. data/lib/eac_git/local/changed_file.rb +6 -0
  3. data/lib/eac_git/local/remote.rb +0 -2
  4. data/lib/eac_git/local/subrepo/config.rb +2 -0
  5. data/lib/eac_git/local.rb +1 -1
  6. data/lib/eac_git/remote_like/ls_result.rb +1 -1
  7. data/lib/eac_git/remote_like.rb +0 -1
  8. data/lib/eac_git/rspec/stubbed_git_local_repo.rb +0 -2
  9. data/lib/eac_git/rspec.rb +0 -1
  10. data/lib/eac_git/version.rb +1 -1
  11. data/lib/eac_git.rb +0 -2
  12. data/vendor/git-subrepo/.fish.rc +20 -0
  13. data/vendor/git-subrepo/.gitattributes +1 -0
  14. data/vendor/git-subrepo/.github/workflows/test.yml +29 -0
  15. data/vendor/git-subrepo/.gitignore +1 -0
  16. data/vendor/git-subrepo/.gitrepo +7 -0
  17. data/vendor/git-subrepo/.rc +32 -0
  18. data/vendor/git-subrepo/Changes +66 -0
  19. data/vendor/git-subrepo/Intro.pod +2 -5
  20. data/vendor/git-subrepo/Makefile +45 -5
  21. data/vendor/git-subrepo/Meta +2 -2
  22. data/vendor/git-subrepo/ReadMe.pod +26 -31
  23. data/vendor/git-subrepo/doc/git-subrepo.swim +22 -18
  24. data/vendor/git-subrepo/doc/intro-to-subrepo.swim +2 -4
  25. data/vendor/git-subrepo/ext/bashplus/.gitrepo +12 -0
  26. data/vendor/git-subrepo/ext/bashplus/.travis.yml +6 -0
  27. data/vendor/git-subrepo/ext/bashplus/Changes +19 -0
  28. data/vendor/git-subrepo/ext/bashplus/License +1 -1
  29. data/vendor/git-subrepo/ext/bashplus/Makefile +25 -0
  30. data/vendor/git-subrepo/ext/bashplus/Meta +4 -4
  31. data/vendor/git-subrepo/ext/bashplus/ReadMe.pod +2 -2
  32. data/vendor/git-subrepo/ext/bashplus/bin/bash+ +8 -7
  33. data/vendor/git-subrepo/ext/bashplus/doc/bash+.swim +1 -1
  34. data/vendor/git-subrepo/ext/bashplus/lib/bash+.bash +85 -38
  35. data/vendor/git-subrepo/ext/bashplus/man/man1/bash+.1 +8 -8
  36. data/vendor/git-subrepo/ext/bashplus/man/man3/bash+.3 +8 -8
  37. data/vendor/git-subrepo/ext/bashplus/test/base.t +4 -5
  38. data/vendor/git-subrepo/ext/bashplus/test/die.t +16 -0
  39. data/vendor/git-subrepo/ext/bashplus/test/fcopy.t +2 -3
  40. data/vendor/git-subrepo/ext/bashplus/test/{test.bash → setup} +18 -8
  41. data/vendor/git-subrepo/ext/bashplus/test/shellcheck.t +37 -0
  42. data/vendor/git-subrepo/ext/bashplus/test/source-bash+-std.t +10 -11
  43. data/vendor/git-subrepo/ext/bashplus/test/source-bash+.t +10 -11
  44. data/vendor/git-subrepo/ext/bashplus/test/use.t +8 -5
  45. data/vendor/git-subrepo/ext/bashplus/test/version-check.t +23 -0
  46. data/vendor/git-subrepo/ext/test-more-bash/.gitrepo +12 -0
  47. data/vendor/git-subrepo/ext/test-more-bash/.travis.yml +6 -0
  48. data/vendor/git-subrepo/ext/test-more-bash/Changes +11 -0
  49. data/vendor/git-subrepo/ext/test-more-bash/License +1 -1
  50. data/vendor/git-subrepo/ext/test-more-bash/Makefile +25 -0
  51. data/vendor/git-subrepo/ext/test-more-bash/Meta +5 -5
  52. data/vendor/git-subrepo/ext/test-more-bash/ReadMe.pod +9 -3
  53. data/vendor/git-subrepo/ext/test-more-bash/doc/test-more.swim +7 -2
  54. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/.gitrepo +12 -0
  55. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/.travis.yml +6 -0
  56. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Changes +11 -0
  57. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/License +1 -1
  58. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Makefile +25 -0
  59. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/Meta +3 -3
  60. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/ReadMe.pod +2 -2
  61. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/bin/bash+ +8 -7
  62. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/doc/bash+.swim +1 -1
  63. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/lib/bash+.bash +85 -38
  64. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man1/bash+.1 +8 -8
  65. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/man/man3/bash+.3 +8 -8
  66. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/base.t +4 -4
  67. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/die.t +17 -0
  68. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/fcopy.t +2 -2
  69. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/{test.bash → setup} +17 -8
  70. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/shellcheck.t +38 -0
  71. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+-std.t +10 -10
  72. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/source-bash+.t +10 -10
  73. data/vendor/git-subrepo/ext/test-more-bash/ext/bashplus/test/use.t +8 -4
  74. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/.gitrepo +12 -0
  75. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/.travis.yml +5 -0
  76. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Changes +11 -0
  77. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/License +1 -1
  78. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Makefile +30 -0
  79. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/Meta +3 -3
  80. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/ReadMe.pod +2 -2
  81. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/doc/test-tap.swim +1 -1
  82. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/lib/test/tap.bash +46 -42
  83. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/man/man3/test-tap.3 +8 -8
  84. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/bail_out.t +1 -1
  85. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail.t +1 -1
  86. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/fail_fast.t +1 -1
  87. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/helper.bash +1 -1
  88. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/shellcheck.t +42 -0
  89. data/vendor/git-subrepo/ext/test-more-bash/ext/test-tap-bash/test/tap.t +11 -5
  90. data/vendor/git-subrepo/ext/test-more-bash/lib/test/more.bash +35 -15
  91. data/vendor/git-subrepo/ext/test-more-bash/man/man3/test-more.3 +16 -10
  92. data/vendor/git-subrepo/ext/test-more-bash/test/fail.t +15 -1
  93. data/vendor/git-subrepo/ext/test-more-bash/test/more.t +12 -4
  94. data/vendor/git-subrepo/ext/test-more-bash/test/setup +3 -3
  95. data/vendor/git-subrepo/ext/test-more-bash/test/shellcheck.t +35 -0
  96. data/vendor/git-subrepo/ext/test-more-bash/test/test/fail1.t +14 -1
  97. data/vendor/git-subrepo/lib/git-subrepo +375 -260
  98. data/vendor/git-subrepo/lib/git-subrepo.d/help-functions.bash +21 -22
  99. data/vendor/git-subrepo/man/man1/git-subrepo.1 +125 -141
  100. data/vendor/git-subrepo/pkg/bin/generate-completion.pl +0 -7
  101. data/vendor/git-subrepo/pkg/bin/generate-help-functions.pl +0 -2
  102. data/vendor/git-subrepo/share/completion.bash +1 -3
  103. data/vendor/git-subrepo/share/enable-completion.sh +3 -3
  104. data/vendor/git-subrepo/share/zsh-completion/_git-subrepo +2 -7
  105. data/vendor/git-subrepo/test/Dockerfile +112 -0
  106. data/vendor/git-subrepo/test/branch-all.t +6 -6
  107. data/vendor/git-subrepo/test/branch-rev-list-one-path.t +7 -8
  108. data/vendor/git-subrepo/test/branch-rev-list.t +7 -8
  109. data/vendor/git-subrepo/test/branch.t +9 -9
  110. data/vendor/git-subrepo/test/clean.t +3 -3
  111. data/vendor/git-subrepo/test/clone-annotated-tag.t +7 -7
  112. data/vendor/git-subrepo/test/clone.t +20 -25
  113. data/vendor/git-subrepo/test/config.t +7 -6
  114. data/vendor/git-subrepo/test/encode.t +17 -17
  115. data/vendor/git-subrepo/test/error.t +18 -18
  116. data/vendor/git-subrepo/test/fetch.t +4 -4
  117. data/vendor/git-subrepo/test/gitignore.t +8 -8
  118. data/vendor/git-subrepo/test/init.t +6 -7
  119. data/vendor/git-subrepo/test/issue29.t +3 -3
  120. data/vendor/git-subrepo/test/issue95.t +2 -2
  121. data/vendor/git-subrepo/test/issue96.t +3 -3
  122. data/vendor/git-subrepo/test/pull-all.t +5 -5
  123. data/vendor/git-subrepo/test/pull-merge.t +16 -15
  124. data/vendor/git-subrepo/test/pull-message.t +12 -12
  125. data/vendor/git-subrepo/test/pull-new-branch.t +8 -7
  126. data/vendor/git-subrepo/test/pull-ours.t +10 -10
  127. data/vendor/git-subrepo/test/pull-theirs.t +8 -8
  128. data/vendor/git-subrepo/test/pull-twice.t +4 -4
  129. data/vendor/git-subrepo/test/pull-worktree.t +5 -5
  130. data/vendor/git-subrepo/test/pull.t +14 -14
  131. data/vendor/git-subrepo/test/push-after-init.t +7 -6
  132. data/vendor/git-subrepo/test/push-after-push-no-changes.t +27 -0
  133. data/vendor/git-subrepo/test/push-force.t +7 -6
  134. data/vendor/git-subrepo/test/push-new-branch.t +10 -10
  135. data/vendor/git-subrepo/test/push-no-changes.t +3 -3
  136. data/vendor/git-subrepo/test/push-squash.t +7 -7
  137. data/vendor/git-subrepo/test/push.t +35 -34
  138. data/vendor/git-subrepo/test/rebase.t +63 -0
  139. data/vendor/git-subrepo/test/reclone.t +15 -8
  140. data/vendor/git-subrepo/test/setup +62 -55
  141. data/vendor/git-subrepo/test/shellcheck.t +37 -0
  142. data/vendor/git-subrepo/test/status.t +47 -27
  143. data/vendor/git-subrepo/test/submodule.t +4 -4
  144. data/vendor/git-subrepo/test/zsh.t +27 -0
  145. metadata +45 -13
@@ -1,22 +1,26 @@
1
1
  # test/tap.bash - TAP Testing Foundation for Bash
2
2
  #
3
- # Copyright (c) 2013-2016. Ingy döt Net.
3
+ # Copyright (c) 2013-2020. Ingy döt Net.
4
4
 
5
5
  #------------------------------------------------------------------------------
6
6
  Test::Tap:die() { echo "$@" >&2; trap EXIT; exit 1; }
7
7
  #------------------------------------------------------------------------------
8
8
 
9
- Test__Tap_VERSION=0.0.4
9
+ set -e -u -o pipefail
10
+ [[ ${BASH_VERSION-} == 4.0* ]] && set +u
11
+
12
+ # shellcheck disable=2034
13
+ Test__Tap_VERSION=0.0.6
10
14
 
11
15
  Test::Tap:init() {
12
- [ -n "$BASH_SOURCE" ] ||
16
+ [[ ${BASH_SOURCE[0]} ]] ||
13
17
  Test::Tap:die "Error: test-tap-bash must be run under Bash only"
14
18
  Test__Tap_plan=0
15
19
  Test__Tap_run=0
16
20
  Test__Tap_failed=0
17
- Test__Tap_pid=$BASHPID
21
+ Test__Tap_pid=${BASHPID:-0}
18
22
 
19
- if [ $# -gt 0 ]; then
23
+ if [[ $# -gt 0 ]]; then
20
24
  [[ $# -eq 2 ]] ||
21
25
  Test::Tap:die 'Usage: test/tap.bash tests <number>'
22
26
  Test::Tap:plan "$@"
@@ -27,17 +31,17 @@ Test::Tap:init() {
27
31
 
28
32
  Test::Tap:plan() {
29
33
  Test::Tap:_check-pid
30
- [ $# -eq 2 ] ||
34
+ [[ $# -eq 2 ]] ||
31
35
  Test::Tap:die 'Usage: plan tests <number>'
32
- if [ "$1" = tests ]; then
33
- [[ "$2" =~ ^-?[0-9]+$ ]] ||
36
+ if [[ $1 = tests ]]; then
37
+ [[ $2 =~ ^-?[0-9]+$ ]] ||
34
38
  Test::Tap:die 'Plan must be a number'
35
39
  [[ $2 -gt 0 ]] ||
36
40
  Test::Tap:die 'Plan must greater then 0'
37
41
  Test__Tap_plan=$2
38
- printf "1..%d\n" $Test__Tap_plan
39
- elif [ "$1" == skip_all ]; then
40
- printf "1..0 # SKIP $2\n"
42
+ printf "1..%d\n" "$Test__Tap_plan"
43
+ elif [[ $1 == skip_all ]]; then
44
+ printf "1..0 # SKIP %s\n" "$2"
41
45
  exit 0
42
46
  else
43
47
  Test::Tap:die 'Usage: plan tests <number>'
@@ -46,9 +50,9 @@ Test::Tap:plan() {
46
50
 
47
51
  Test::Tap:pass() {
48
52
  Test::Tap:_check-pid
49
- let Test__Tap_run=Test__Tap_run+1
50
- local label="$1"
51
- if [ -n "$label" ]; then
53
+ ((++Test__Tap_run))
54
+ local label=${1-}
55
+ if [[ $label ]]; then
52
56
  echo "ok $Test__Tap_run - $label"
53
57
  else
54
58
  echo "ok $Test__Tap_run"
@@ -58,12 +62,12 @@ Test::Tap:pass() {
58
62
  Test__Tap_CALL_STACK_LEVEL=1
59
63
  Test::Tap:fail() {
60
64
  Test::Tap:_check-pid
61
- let Test__Tap_run=Test__Tap_run+1
62
- local c=( $(caller $Test__Tap_CALL_STACK_LEVEL) )
63
- local file=${c[2]}
64
- local line=${c[0]}
65
- local label="$1" callback="$2"
66
- if [ -n "$label" ]; then
65
+ ((++Test__Tap_run))
66
+ IFS=' ' read -r -a c <<<"$(caller $Test__Tap_CALL_STACK_LEVEL)"
67
+ local file=${c[2]-}
68
+ local line=${c[0]-}
69
+ local label=${1-} callback=${2-}
70
+ if [[ $label ]]; then
67
71
  echo "not ok $Test__Tap_run - $label"
68
72
  else
69
73
  echo "not ok $Test__Tap_run"
@@ -72,35 +76,35 @@ Test::Tap:fail() {
72
76
  label=${label:-"at $file line $line."}
73
77
  echo -e "# Failed test $label" >&2
74
78
 
75
- [ -n "$callback" ] && $callback
79
+ [[ $callback ]] && $callback
76
80
 
77
81
  local rc=${TEST_TAP_BAIL_ON_FAIL:-0}
78
- [[ $TEST_TAP_BAIL_ON_FAIL -eq 0 ]] || exit $rc
82
+ [[ $rc -eq 0 ]] || exit "$rc"
79
83
  }
80
84
 
81
85
  Test::Tap:done_testing() {
82
86
  Test::Tap:_check-pid
83
87
  Test__Tap_plan=$Test__Tap_run
84
- echo 1..${1:-$Test__Tap_run}
88
+ echo 1.."${1:-$Test__Tap_run}"
85
89
  }
86
90
 
87
91
  Test::Tap:diag() {
88
92
  Test::Tap:_check-pid
89
- local msg="$@"
93
+ local msg=$*
90
94
  msg="# ${msg//$'\n'/$'\n'# }"
91
95
  echo "$msg" >&2
92
96
  }
93
97
 
94
98
  Test::Tap:note() {
95
99
  Test::Tap:_check-pid
96
- local msg="$@"
100
+ local msg=$*
97
101
  msg="# ${msg//$'\n'/$'\n'# }"
98
102
  echo "$msg"
99
103
  }
100
104
 
101
105
  Test::Tap:BAIL_OUT() {
102
106
  Test::Tap:_check-pid
103
- Test__Tap_bail_msg="$@"
107
+ Test__Tap_bail_msg=$*
104
108
  : "${Test__Tap_bail_msg:=No reason given.}"
105
109
  exit 255
106
110
  }
@@ -113,41 +117,41 @@ Test::Tap:BAIL_ON_FAIL() {
113
117
  Test::Tap:END() {
114
118
  local rc=$?
115
119
  Test::Tap:_check-pid
116
- if [ $rc -ne 0 ]; then
117
- if [ -n "$Test__Tap_bail_msg" -o -n "$TEST_TAP_BAIL_ON_FAIL" ]; then
118
- local bail="${Test__Tap_bail_msg:-"Bailing out on status=$rc"}"
120
+ if [[ $rc -ne 0 ]]; then
121
+ if [[ ${Test__Tap_bail_msg-} ]] ||
122
+ [[ ${TEST_TAP_BAIL_ON_FAIL-} ]]; then
123
+ local bail=${Test__Tap_bail_msg:-"Bailing out on status=$rc"}
119
124
  echo "Bail out! $bail"
120
125
  exit $rc
121
126
  fi
122
127
  fi
123
128
 
124
- for v in plan run failed; do eval local $v=\$Test__Tap_$v; done
125
- if [ $plan -eq 0 ]; then
126
- if [ $run -gt 0 ]; then
129
+ if [[ $Test__Tap_plan -eq 0 ]]; then
130
+ if [[ $Test__Tap_run -gt 0 ]]; then
127
131
  echo "# Tests were run but no plan was declared." >&2
128
132
  fi
129
133
  else
130
- if [ $run -eq 0 ]; then
134
+ if [[ $Test__Tap_run -eq 0 ]]; then
131
135
  echo "# No tests run!" >&2
132
- elif [ $run -ne $plan ]; then
133
- local msg="# Looks like you planned $plan tests but ran $run."
134
- [ $plan -eq 1 ] && msg=${msg/tests/test}
136
+ elif [[ $Test__Tap_run -ne $Test__Tap_plan ]]; then
137
+ local msg="# Looks like you planned $Test__Tap_plan tests but ran $Test__Tap_run."
138
+ [[ $Test__Tap_plan -eq 1 ]] && msg=${msg/tests/test}
135
139
  echo "$msg" >&2
136
140
  fi
137
141
  fi
138
142
  local exit_code=0
139
- if [ $Test__Tap_failed -gt 0 ]; then
143
+ if [[ $Test__Tap_failed -gt 0 ]]; then
140
144
  exit_code=$Test__Tap_failed
141
- [ $exit_code -gt 254 ] && exit_code=254
142
- local msg="# Looks like you failed $failed tests of $run run."
143
- [ $Test__Tap_failed -eq 1 ] && msg=${msg/tests/test}
145
+ [[ $exit_code -gt 254 ]] && exit_code=254
146
+ local msg="# Looks like you failed $Test__Tap_failed tests of $Test__Tap_run run."
147
+ [[ $Test__Tap_failed -eq 1 ]] && msg=${msg/tests/test}
144
148
  echo "$msg" >&2
145
149
  fi
146
150
  exit $exit_code
147
151
  }
148
152
 
149
153
  Test::Tap:_check-pid() {
150
- if [ ${BASHPID:-0} -ne ${Test__Tap_pid:-0} ]; then
151
- die "Error: Called Test::Tap method from a subprocess" 3
154
+ if [[ ${BASHPID:-0} -ne ${Test__Tap_pid:-0} ]]; then
155
+ Test::Tap:die "Error: Called Test::Tap method from a subprocess" 3
152
156
  fi
153
157
  }
@@ -1,4 +1,4 @@
1
- .\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
1
+ .\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
2
2
  .\"
3
3
  .\" Standard preamble:
4
4
  .\" ========================================================================
@@ -46,7 +46,7 @@
46
46
  .ie \n(.g .ds Aq \(aq
47
47
  .el .ds Aq '
48
48
  .\"
49
- .\" If the F register is turned on, we'll generate index entries on stderr for
49
+ .\" If the F register is >0, we'll generate index entries on stderr for
50
50
  .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51
51
  .\" entries marked with X<> in POD. Of course, you'll have to process the
52
52
  .\" output yourself in some meaningful fashion.
@@ -56,12 +56,12 @@
56
56
  ..
57
57
  .nr rF 0
58
58
  .if \n(.g .if rF .nr rF 1
59
- .if (\n(rF:(\n(.g==0)) \{
60
- . if \nF \{
59
+ .if (\n(rF:(\n(.g==0)) \{\
60
+ . if \nF \{\
61
61
  . de IX
62
62
  . tm Index:\\$1\t\\n%\t"\\$2"
63
63
  ..
64
- . if !\nF==2 \{
64
+ . if !\nF==2 \{\
65
65
  . nr % 0
66
66
  . nr F 2
67
67
  . \}
@@ -70,8 +70,8 @@
70
70
  .rr rF
71
71
  .\" ========================================================================
72
72
  .\"
73
- .IX Title "Test::Tap 1"
74
- .TH Test::Tap 1 "January 2016" "Generated by Swim v0.1.41" "\s-1TAP\s0 Test Base for Bash"
73
+ .IX Title "STDIN 1"
74
+ .TH STDIN 1 "November 2020" "Generated by Swim v0.1.48" "\s-1TAP\s0 Test Base for Bash"
75
75
  .\" For nroff, turn off justification. Always turn off hyphenation; it makes
76
76
  .\" way too many mistakes in technical documents.
77
77
  .if n .ad l
@@ -114,6 +114,6 @@ Finish this doc.
114
114
  Written by Ingy döt Net <ingy@ingy.net>
115
115
  .SH "Copyright & License"
116
116
  .IX Header "Copyright & License"
117
- Copyright 2013\-2016. Ingy döt Net.
117
+ Copyright 2013\-2020. Ingy döt Net.
118
118
  .PP
119
119
  The \s-1MIT\s0 License (\s-1MIT\s0).
@@ -5,7 +5,7 @@ source lib/test/tap.bash
5
5
 
6
6
  Test::Tap:init tests 1
7
7
 
8
- output=$(prove -v test/test/{b,f}ail.t 2>&1)
8
+ output=$(prove -v test/test/{b,f}ail.t 2>&1) || true
9
9
 
10
10
  test-helper:like \
11
11
  "$output" \
@@ -5,7 +5,7 @@ source lib/test/tap.bash
5
5
 
6
6
  Test::Tap:init tests 2
7
7
 
8
- output="$(prove -v test/test/fail.t 2>&1)"
8
+ output=$(prove -v test/test/fail.t 2>&1) || true
9
9
 
10
10
  # echo "# >>>${output//$'\n'/$'\n'# }<<<" >&2
11
11
 
@@ -5,7 +5,7 @@ source lib/test/tap.bash
5
5
 
6
6
  Test::Tap:init tests 1
7
7
 
8
- output="$(prove -v test/test/fail_fast.t 2>&1)"
8
+ output=$(prove -v test/test/fail_fast.t 2>&1) || true
9
9
 
10
10
  # echo ">>>$output<<<" >&2
11
11
 
@@ -1,6 +1,6 @@
1
1
  test-helper:like() {
2
2
  local got=$1 regex=$2 label=$3
3
- if [[ "$got" =~ "$regex" ]]; then
3
+ if [[ $got =~ $regex ]]; then
4
4
  Test::Tap:pass "$label"
5
5
  else
6
6
  Test::Tap:fail "$label"
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env bash
2
+
3
+ source lib/test/tap.bash
4
+
5
+ if ! command -v shellcheck >/dev/null; then
6
+ Test::Tap:init skip_all "The 'shellcheck' utility is not installed"
7
+ fi
8
+ if [[ ! $(shellcheck --version) =~ 0\.7\.1 ]]; then
9
+ Test::Tap:init skip_all "This test wants shellcheck version 0.7.1"
10
+ fi
11
+
12
+ Test::Tap:init
13
+
14
+ IFS=$'\n' read -d '' -r -a shell_files <<< "$(
15
+ find lib -type f
16
+ echo test/helper.bash
17
+ find test -name '*.t'
18
+ )" || true
19
+
20
+ skips=(
21
+ # We want to keep these 2 here always:
22
+ SC1090 # Can't follow non-constant source. Use a directive to specify location.
23
+ SC1091 # Not following: bash+ was not specified as input (see shellcheck -x).
24
+ )
25
+
26
+ skip=$(IFS=,; echo "${skips[*]}")
27
+
28
+ for file in "${shell_files[@]}"; do
29
+ [[ $file == *swp ]] && continue
30
+ label="The shell file '$file' passes shellcheck"
31
+ got=$(shellcheck -e "$skip" "$file" 2>&1) || true
32
+ if [[ -z $got ]]; then
33
+ Test::Tap:pass "$label"
34
+ else
35
+ Test::Tap:fail "$label"
36
+ Test::Tap:diag "$got"
37
+ fi
38
+ done
39
+
40
+ Test::Tap:done_testing
41
+
42
+ # vim: set ft=sh:
@@ -2,12 +2,18 @@
2
2
 
3
3
  source lib/test/tap.bash
4
4
 
5
- Test::Tap:init tests 4
5
+ Test::Tap:init tests 3 # 4
6
6
 
7
7
  Test::Tap:pass 'pass with label'
8
8
  Test::Tap:pass
9
9
  Test::Tap:pass 'previous test has no label'
10
- msg="$(Test::Tap:fail 'faaaaailll' 2>/dev/null)"
11
- if [[ "$msg" =~ not\ ok\ 4\ -\ faaaaailll ]]; then
12
- Test::Tap:pass 'fail works'
13
- fi
10
+
11
+ # TODO this test no longer working:
12
+ # msg=$(Test::Tap:fail 'faaaaailll' 2>/dev/null) || true
13
+ #
14
+ # if [[ $msg =~ not\ ok\ 4\ -\ faaaaailll ]]; then
15
+ # Test::Tap:pass 'fail works'
16
+ # else
17
+ # Test::Tap:fail 'fail works'
18
+ # Test::Tap:diag "$msg"
19
+ # fi
@@ -1,12 +1,17 @@
1
1
  # test/more.bash - Complete TAP test framework for Bash
2
2
  #
3
- # Copyright (c) 2013-2016. Ingy döt Net.
3
+ # Copyright (c) 2013-2020. Ingy döt Net.
4
4
 
5
- set -e
5
+ set -e -u -o pipefail
6
6
 
7
- Test__More_VERSION=0.0.3
7
+ # shellcheck disable=2034
8
+ Test__More_VERSION=0.0.5
9
+
10
+ source bash+ :std version-check
11
+
12
+ version-check bash 3.2 ||
13
+ die "test-more-bash requires bash 3.2+"
8
14
 
9
- source bash+ :std
10
15
  use Test::Tap
11
16
 
12
17
  Test::More:import() { Test::Tap:init "$@"; }
@@ -21,7 +26,7 @@ BAIL_OUT() { Test::Tap:BAIL_OUT "$@"; }
21
26
  BAIL_ON_FAIL() { Test::Tap:BAIL_ON_FAIL "$@"; }
22
27
 
23
28
  is() {
24
- local got="$1" want="$2" label="$3"
29
+ local got=$1 want=$2 label=${3-}
25
30
  if [[ $got == "$want" ]]; then
26
31
  Test::Tap:pass "$label"
27
32
  else
@@ -32,10 +37,10 @@ is() {
32
37
  Test::More:is-fail() {
33
38
  local Test__Tap_CALL_STACK_LEVEL=
34
39
  Test__Tap_CALL_STACK_LEVEL=$(( Test__Tap_CALL_STACK_LEVEL + 1 ))
35
- if [[ "$want" =~ \n ]]; then
40
+ if [[ $want =~ $'\n' ]]; then
36
41
  echo "$got" > /tmp/got-$$
37
42
  echo "$want" > /tmp/want-$$
38
- diff -u /tmp/{want,got}-$$ >&2
43
+ diff -u /tmp/{want,got}-$$ >&2 || true
39
44
  wc /tmp/{want,got}-$$ >&2
40
45
  rm -f /tmp/{got,want}-$$
41
46
  else
@@ -48,7 +53,7 @@ Test::More:is-fail() {
48
53
  isnt() {
49
54
  local Test__Tap_CALL_STACK_LEVEL=
50
55
  Test__Tap_CALL_STACK_LEVEL=$(( Test__Tap_CALL_STACK_LEVEL + 1 ))
51
- local got="$1" dontwant="$2" label="$3"
56
+ local got=$1 dontwant=$2 label=${3-}
52
57
  if [[ $got != "$dontwant" ]]; then
53
58
  Test::Tap:pass "$label"
54
59
  else
@@ -63,14 +68,16 @@ Test::More:isnt-fail() {
63
68
  }
64
69
 
65
70
  ok() {
66
- (exit ${1:-$?}) &&
67
- Test::Tap:pass "$2" ||
68
- Test::Tap:fail "$2"
71
+ if (exit "${1:-$?}"); then
72
+ Test::Tap:pass "${2-}"
73
+ else
74
+ Test::Tap:fail "${2-}"
75
+ fi
69
76
  }
70
77
 
71
78
  like() {
72
- local got=$1 regex=$2 label=$3
73
- if [[ $got =~ "$regex" ]]; then
79
+ local got=$1 regex=$2 label=${3-}
80
+ if [[ $got =~ $regex ]]; then
74
81
  Test::Tap:pass "$label"
75
82
  else
76
83
  Test::Tap:fail "$label" Test::More:like-fail
@@ -82,8 +89,8 @@ Test::More:like-fail() {
82
89
  }
83
90
 
84
91
  unlike() {
85
- local got=$1 regex=$2 label=$3
86
- if [[ ! $got =~ "$regex" ]]; then
92
+ local got=$1 regex=$2 label=${3-}
93
+ if [[ ! $got =~ $regex ]]; then
87
94
  Test::Tap:pass "$label"
88
95
  else
89
96
  Test::Tap:fail "$label" Test::More:unlike-fail
@@ -93,3 +100,16 @@ unlike() {
93
100
  Test::More:unlike-fail() {
94
101
  Test::Tap:diag "Got: '$got'"
95
102
  }
103
+
104
+ cmp-array() {
105
+ local arrayname="$1[@]"
106
+ local expname="$2[@]"
107
+ local label=${3-}
108
+
109
+ local array=("${!arrayname}")
110
+ local expected=("${!expname}")
111
+
112
+ is "$(printf "%s\n" "${array[@]}")" \
113
+ "$(printf "%s\n" "${expected[@]}")" \
114
+ "$label"
115
+ }
@@ -1,4 +1,4 @@
1
- .\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28)
1
+ .\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35)
2
2
  .\"
3
3
  .\" Standard preamble:
4
4
  .\" ========================================================================
@@ -46,7 +46,7 @@
46
46
  .ie \n(.g .ds Aq \(aq
47
47
  .el .ds Aq '
48
48
  .\"
49
- .\" If the F register is turned on, we'll generate index entries on stderr for
49
+ .\" If the F register is >0, we'll generate index entries on stderr for
50
50
  .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51
51
  .\" entries marked with X<> in POD. Of course, you'll have to process the
52
52
  .\" output yourself in some meaningful fashion.
@@ -56,12 +56,12 @@
56
56
  ..
57
57
  .nr rF 0
58
58
  .if \n(.g .if rF .nr rF 1
59
- .if (\n(rF:(\n(.g==0)) \{
60
- . if \nF \{
59
+ .if (\n(rF:(\n(.g==0)) \{\
60
+ . if \nF \{\
61
61
  . de IX
62
62
  . tm Index:\\$1\t\\n%\t"\\$2"
63
63
  ..
64
- . if !\nF==2 \{
64
+ . if !\nF==2 \{\
65
65
  . nr % 0
66
66
  . nr F 2
67
67
  . \}
@@ -70,8 +70,8 @@
70
70
  .rr rF
71
71
  .\" ========================================================================
72
72
  .\"
73
- .IX Title "Test::More 1"
74
- .TH Test::More 1 "January 2016" "Generated by Swim v0.1.41" "\s-1TAP\s0 Testing for Bash"
73
+ .IX Title "STDIN 1"
74
+ .TH STDIN 1 "November 2020" "Generated by Swim v0.1.48" "\s-1TAP\s0 Testing for Bash"
75
75
  .\" For nroff, turn off justification. Always turn off hyphenation; it makes
76
76
  .\" way too many mistakes in technical documents.
77
77
  .if n .ad l
@@ -120,6 +120,10 @@ Write a test file like this. Maybe call it \f(CW\*(C`test/test.t\*(C'\fR:
120
120
  \& diag "A message for stderr"
121
121
  \&
122
122
  \& note "A message for stdout"
123
+ \&
124
+ \& output=( $(ls) )
125
+ \& expected=(README lib bin)
126
+ \& cmp\-array output expected "list files"
123
127
  .Ve
124
128
  .PP
125
129
  Run the test with \f(CW\*(C`prove\*(C'\fR like this:
@@ -131,7 +135,7 @@ Run the test with \f(CW\*(C`prove\*(C'\fR like this:
131
135
  Prove knows it's Bash from the first line (the hashbang), and it just works.
132
136
  .SH "Description"
133
137
  .IX Header "Description"
134
- Test::More is the tried and true testing library for Perl. It uses \s-1TAP \s0(the Test Anything Protocol). This is the same thing for Bash. For the most part it should work exactly the same.
138
+ Test::More is the tried and true testing library for Perl. It uses \s-1TAP\s0 (the Test Anything Protocol). This is the same thing for Bash. For the most part it should work exactly the same.
135
139
  .SH "Methods"
136
140
  .IX Header "Methods"
137
141
  This is the basic usage:
@@ -161,13 +165,15 @@ This is the basic usage:
161
165
  \&\f(CW\*(C`plan skip_all "$reason"\*(C'\fR
162
166
  .IP "\(bu" 4
163
167
  \&\f(CW\*(C`BAIL_OUT "$reason"\*(C'\fR
168
+ .IP "\(bu" 4
169
+ `cmp\-array output expected \*(L"message\*(R"
164
170
  .PP
165
171
  More detailed info coming soon.
166
172
  .SH "Author"
167
173
  .IX Header "Author"
168
- Ingy döt Net <ingy@bpan.org>
174
+ Ingy döt Net <ingy@ingy.net>
169
175
  .SH "Copyright & License"
170
176
  .IX Header "Copyright & License"
171
- Copyright 2013\-2016. Ingy döt Net.
177
+ Copyright 2013\-2020. Ingy döt Net.
172
178
  .PP
173
179
  The \s-1MIT\s0 License (\s-1MIT\s0)
@@ -12,9 +12,23 @@ like "$output" 'not ok 2' \
12
12
  'fail with no label'
13
13
  like "$output" 'not ok 3 - is foo bar' \
14
14
  'fail output is correct'
15
+ like "$output" 'not ok 4 - command output more' \
16
+ 'fail output is correct'
17
+ like "$output" 'not ok 5 - command output less' \
18
+ 'fail output is correct'
19
+ like "$output" 'not ok 6 - command output diff' \
20
+ 'fail output is correct'
15
21
  like "$output" "# got: 'foo'" \
16
22
  'difference reporting - got'
17
23
  like "$output" "# expected: 'bar'" \
18
24
  'difference reporting - want'
19
25
 
20
- done_testing 5
26
+ like "$output" "line2. *\+line3." \
27
+ 'array comparison (more)'
28
+ like "$output" "line1. *-line2." \
29
+ 'array comparison (less)'
30
+ like "$output" "-line2.*\+foo" \
31
+ 'array comparison (diff)'
32
+
33
+
34
+ done_testing 11
@@ -1,20 +1,28 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
+ # shellcheck disable=2034
4
+
3
5
  source test/setup
4
6
  use Test::More
5
7
 
6
- plan tests 5
8
+ plan tests 6
7
9
 
8
10
  pass 'This test always passes'
9
11
 
10
12
  is 'foo' "foo" 'foo is foo'
11
13
 
12
- ok "`true`" 'true is true'
14
+ ok "$(true)" 'true is true'
13
15
 
14
- ok "`[ 123 -eq $((61+62)) ]`" 'Math works'
16
+ ok "$([ 123 -eq "$((61+62))" ])" 'Math works'
15
17
 
16
- ok "`[[ ! team =~ I ]]`" "There's no I in team"
18
+ # shellcheck disable=2050
19
+ ok "$([[ ! team =~ I ]])" "There's no I in team"
17
20
 
18
21
  # diag "A msg for stderr"
19
22
 
20
23
  note "A msg for stdout"
24
+
25
+ expected=(line1 line2)
26
+
27
+ command_output=(line1 line2 )
28
+ cmp-array command_output expected "command output more"
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
- set -e
3
+ set -e -u -o pipefail
4
4
 
5
- BASHLIB="`find $PWD -type d | grep -E '/(bin|lib)$' | xargs -n1 printf "%s:"`"
6
- PATH="$BASHLIB:$PATH"
5
+ BASHLIB=$(find "$PWD" -type d | grep -E '/(bin|lib)$' | xargs -n1 printf "%s:")
6
+ PATH=$BASHLIB:$PATH
7
7
 
8
8
  source bash+ :std
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env bash
2
+
3
+ source test/setup
4
+ use Test::More
5
+
6
+ if ! command -v shellcheck >/dev/null; then
7
+ plan skip_all "The 'shellcheck' utility is not installed"
8
+ fi
9
+ if [[ ! $(shellcheck --version) =~ 0\.7\.1 ]]; then
10
+ plan skip_all "This test wants shellcheck version 0.7.1"
11
+ fi
12
+
13
+ IFS=$'\n' read -d '' -r -a shell_files <<< "$(
14
+ find lib -type f
15
+ echo test/setup
16
+ find test -name '*.t'
17
+ )" || true
18
+
19
+ skips=(
20
+ # We want to keep these 2 here always:
21
+ SC1090 # Can't follow non-constant source. Use a directive to specify location.
22
+ SC1091 # Not following: bash+ was not specified as input (see shellcheck -x).
23
+ )
24
+
25
+ skip=$(IFS=,; echo "${skips[*]}")
26
+
27
+ for file in "${shell_files[@]}"; do
28
+ [[ $file == *swp ]] && continue
29
+ is "$(shellcheck -e "$skip" "$file")" "" \
30
+ "The shell file '$file' passes shellcheck"
31
+ done
32
+
33
+ done_testing
34
+
35
+ # vim: set ft=sh:
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
+ # shellcheck disable=2034
4
+
3
5
  source test/setup
4
6
  use Test::More
5
7
 
@@ -9,4 +11,15 @@ fail
9
11
 
10
12
  is foo bar 'is foo bar'
11
13
 
12
- done_testing 3
14
+ expected=(line1 line2)
15
+
16
+ command_output=(line1 line2 line3)
17
+ cmp-array command_output expected "command output more"
18
+
19
+ command_output=(line1)
20
+ cmp-array command_output expected "command output less"
21
+
22
+ command_output=(line1 foo)
23
+ cmp-array command_output expected "command output diff"
24
+
25
+ done_testing 6