Skip to content

Commit fc7de31

Browse files
committed
test: Fix embarrassing rookie mistake of specifying absolute user-specific path in test
1 parent 7d4979c commit fc7de31

8 files changed

+288
-180
lines changed

tests/do-plumbing-link-bins.bats

Lines changed: 186 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -2,164 +2,256 @@
22

33
load 'util/init.sh'
44

5-
@test "links each file on the BINS config on package.sh to the install bin" {
6-
local package="username/package"
5+
@test "does not fail if there are no binaries" {
6+
local pkg='username/package'
7+
8+
test_util.setup_pkg "$pkg"; {
9+
:
10+
}; test_util.finish_pkg
11+
test_util.fake_install "$pkg"
12+
13+
run do-plumbing-link-bins "$pkg"
14+
15+
assert_success
16+
}
17+
18+
@test "adds bins determined from package.sh" {
19+
local pkg='username/package'
20+
21+
test_util.setup_pkg "$pkg"; {
22+
echo 'BINS="binn/exec1:binn/exec2.sh"' > 'package.sh'
23+
mkdir 'binn'
24+
touch 'binn/exec1'
25+
touch 'binn/exec2.sh'
26+
}; test_util.finish_pkg
27+
test_util.fake_install "$pkg"
28+
29+
run do-plumbing-link-bins "$pkg"
30+
31+
assert_success
32+
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/$pkg/binn/exec1" ]
33+
assert [ "$(readlink $BPM_INSTALL_BIN/exec2.sh)" = "$BPM_PACKAGES_PATH/$pkg/binn/exec2.sh" ]
34+
}
35+
36+
37+
@test "adds bins determined from package.sh (and not with heuristics)" {
38+
local pkg="username/package"
739

8-
create_package username/package
9-
create_package_exec username/package exec1
10-
create_package_exec username/package exec2.sh
11-
test_util.fake_clone "$package"
40+
test_util.setup_pkg "$pkg"; {
41+
echo 'BINS="ff/exec3"' > 'package.sh'
42+
mkdir 'bin'
43+
touch 'bin/exec1'
44+
touch 'bin/exec2'
45+
mkdir 'ff'
46+
touch 'ff/exec3'
47+
}; test_util.finish_pkg
48+
test_util.fake_install "$pkg"
1249

13-
run do-plumbing-link-bins username/package
50+
run do-plumbing-link-bins "$pkg"
1451

1552
assert_success
16-
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/username/package/package_bin/exec1" ]
17-
assert [ "$(readlink $BPM_INSTALL_BIN/exec2.sh)" = "$BPM_PACKAGES_PATH/username/package/package_bin/exec2.sh" ]
53+
assert [ ! -e "$(readlink $BPM_INSTALL_BIN/exec1)" ]
54+
assert [ ! -e "$(readlink $BPM_INSTALL_BIN/exec2)" ]
55+
assert [ "$(readlink $BPM_INSTALL_BIN/exec3)" = "$BPM_PACKAGES_PATH/$pkg/ff/exec3" ]
1856
}
1957

20-
@test "links each file on the binDirs config on bpm.toml to the install bin" {
21-
local package="username/package"
58+
@test "adds bins determined from bpm.toml" {
59+
local pkg='username/package'
2260

23-
create_package "$package"
24-
cd "$BPM_ORIGIN_DIR/$package"
25-
mkdir 'weird_dir'
26-
touch 'weird_dir/exec1'
27-
touch 'weird_dir/exec2.sh'
28-
echo 'binDirs = [ "weird_dir" ]' > 'bpm.toml'
29-
git add .
30-
git commit -m "Add package exec: $exec"
31-
cd "$BPM_CWD"
32-
test_util.fake_clone "$package"
61+
test_util.setup_pkg "$pkg"; {
62+
echo 'binDirs = [ "weird_dir" ]' > 'bpm.toml'
63+
mkdir 'weird_dir'
64+
touch 'weird_dir/exec1'
65+
touch 'weird_dir/exec2.sh'
66+
}; test_util.finish_pkg
67+
test_util.fake_install "$pkg"
3368

34-
run do-plumbing-link-bins "$package"
69+
run do-plumbing-link-bins "$pkg"
3570

3671
assert_success
37-
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$package/weird_dir/exec1" ]
38-
assert [ "$(readlink "$BPM_INSTALL_BIN/exec2.sh")" = "$BPM_PACKAGES_PATH/$package/weird_dir/exec2.sh" ]
72+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$pkg/weird_dir/exec1" ]
73+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec2.sh")" = "$BPM_PACKAGES_PATH/$pkg/weird_dir/exec2.sh" ]
3974
}
4075

41-
@test "links each file inside bin folder to install bin" {
42-
local package="username/package"
76+
@test "adds bins determined from bpm.toml (and not heuristics)" {
77+
local pkg='username/package'
4378

44-
create_package username/package
45-
create_exec username/package exec1
46-
create_exec username/package exec2.sh
47-
test_util.fake_clone "$package"
79+
test_util.setup_pkg "$pkg"; {
80+
echo 'binDirs = [ "weird_dir" ]' > 'bpm.toml'
81+
mkdir 'bin'
82+
touch 'bin/exec1'
83+
touch 'bin/exec2'
84+
mkdir 'weird_dir'
85+
touch 'weird_dir/exec3'
86+
}; test_util.finish_pkg
87+
test_util.fake_install "$pkg"
4888

49-
run do-plumbing-link-bins username/package
89+
run do-plumbing-link-bins "$pkg"
5090

5191
assert_success
52-
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/username/package/bin/exec1" ]
53-
assert [ "$(readlink $BPM_INSTALL_BIN/exec2.sh)" = "$BPM_PACKAGES_PATH/username/package/bin/exec2.sh" ]
92+
assert [ ! -e "$BPM_INSTALL_BIN/exec1" ]
93+
assert [ ! -e "$BPM_INSTALL_BIN/exec2" ]
94+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec3")" = "$BPM_PACKAGES_PATH/$pkg/weird_dir/exec3" ]
5495
}
5596

56-
@test "links each exec file in package root to install bin" {
57-
local package="username/package"
97+
@test "adds bins determined with heuristics (bin directory)" {
98+
local pkg='username/package'
5899

59-
create_package username/package
60-
create_root_exec username/package exec3
61-
create_root_exec username/package exec4.sh
62-
test_util.fake_clone "$package"
100+
test_util.setup_pkg "$pkg"; {
101+
mkdir 'bin'
102+
touch 'bin/exec1'
103+
touch 'bin/exec2.sh'
104+
}; test_util.finish_pkg
105+
test_util.fake_install "$pkg"
63106

64-
run do-plumbing-link-bins username/package
107+
run do-plumbing-link-bins "$pkg"
65108

66109
assert_success
67-
assert [ "$(readlink $BPM_INSTALL_BIN/exec3)" = "$BPM_PACKAGES_PATH/username/package/exec3" ]
68-
assert [ "$(readlink $BPM_INSTALL_BIN/exec4.sh)" = "$BPM_PACKAGES_PATH/username/package/exec4.sh" ]
110+
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/$pkg/bin/exec1" ]
111+
assert [ "$(readlink $BPM_INSTALL_BIN/exec2.sh)" = "$BPM_PACKAGES_PATH/$pkg/bin/exec2.sh" ]
112+
}
113+
114+
@test "adds bins determined with heuristics (root directory)" {
115+
local pkg='username/package'
116+
117+
test_util.setup_pkg "$pkg"; {
118+
touch 'exec1'
119+
touch 'exec2.sh'
120+
chmod +x 'exec1' 'exec2.sh'
121+
}; test_util.finish_pkg
122+
test_util.fake_install "$pkg"
123+
124+
run do-plumbing-link-bins "$pkg"
125+
126+
assert_success
127+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$pkg/exec1" ]
128+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec2.sh")" = "$BPM_PACKAGES_PATH/$pkg/exec2.sh" ]
129+
}
130+
131+
@test "does not add bins that are not executable in root directory)" {
132+
local pkg='username/package'
133+
134+
test_util.setup_pkg "$pkg"; {
135+
touch 'exec1'
136+
touch 'exec2.sh'
137+
}; test_util.finish_pkg
138+
test_util.fake_install "$pkg"
139+
140+
run do-plumbing-link-bins "$pkg"
141+
142+
assert_success
143+
assert [ ! -e "$BPM_INSTALL_BIN/exec3" ]
144+
assert [ ! -e "$BPM_INSTALL_BIN/exec4.sh" ]
69145
}
70146

71147
@test "doesn't link root bins if there is a bin folder" {
72-
local package="username/package"
148+
local pkg="username/package"
73149

74-
create_package username/package
75-
create_exec username/package exec1
76-
create_root_exec username/package exec2
77-
test_util.fake_clone "$package"
150+
test_util.setup_pkg "$pkg"; {
151+
mkdir 'bin'
152+
touch 'bin/exec1'
153+
touch 'exec2'
154+
chmod +x 'exec2'
155+
}; test_util.finish_pkg
156+
test_util.fake_install "$pkg"
78157

79-
run do-plumbing-link-bins username/package
158+
run do-plumbing-link-bins "$pkg"
80159

81160
assert_success
82-
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/username/package/bin/exec1" ]
83-
assert [ ! -e "$(readlink $BPM_INSTALL_BIN/exec2)" ]
161+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec1" ]
162+
assert [ ! -e "$(readlink "$BPM_INSTALL_BIN/exec2")" ]
84163
}
85164

86-
@test "doesn't link root bins or files in bin folder if there is a BINS config on package.sh" {
87-
local package="username/package"
165+
@test "remove extensions if REMOVE_EXTENSION is true in package.sh" {
166+
local pkg="username/package"
88167

89-
create_package username/package
90-
create_exec username/package exec1
91-
create_root_exec username/package exec2
92-
create_package_exec username/package exec3
93-
test_util.fake_clone "$package"
168+
test_util.setup_pkg "$pkg"; {
169+
echo 'REMOVE_EXTENSION="true"' > 'package.sh'
170+
mkdir bin
171+
touch 'bin/exec1'
172+
touch 'bin/exec2.sh'
173+
}; test_util.finish_pkg
174+
test_util.fake_clone "$pkg"
94175

95-
run do-plumbing-link-bins username/package
176+
run do-plumbing-link-bins "$pkg"
96177

97178
assert_success
98-
assert [ ! -e "$(readlink $BPM_INSTALL_BIN/exec1)" ]
99-
assert [ ! -e "$(readlink $BPM_INSTALL_BIN/exec2)" ]
100-
assert [ "$(readlink $BPM_INSTALL_BIN/exec3)" = "$BPM_PACKAGES_PATH/username/package/package_bin/exec3" ]
179+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec1" ]
180+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec2")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec2.sh" ]
101181
}
102182

103-
@test "does not fail if there are no binaries" {
104-
local package="username/package"
183+
# Backwards compatiblity
184+
@test "does not remove extensions if REMOVE_EXTENSION is set in package.sh" {
185+
local pkg="username/package"
105186

106-
create_package username/package
107-
test_util.fake_clone "$package"
187+
test_util.setup_pkg "$pkg"; {
188+
echo 'REMOVE_EXTENSION=' > 'package.sh'
189+
mkdir bin
190+
touch 'bin/exec1'
191+
touch 'bin/exec2.sh'
192+
}; test_util.finish_pkg
193+
test_util.fake_clone "$pkg"
108194

109-
run do-plumbing-link-bins username/package
195+
run do-plumbing-link-bins "$pkg"
110196

111197
assert_success
198+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec1" ]
199+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec2.sh")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec2.sh" ]
200+
assert [ ! -e "$BPM_INSTALL_BIN/exec2" ]
112201
}
113202

114-
@test "remove extension if REMOVE_EXTENSION is true" {
115-
local package="username/package"
203+
@test "does not remove extensions if REMOVE_EXTENSION is false in package.sh" {
204+
local pkg="username/package"
116205

117-
create_package username/package
118-
create_exec username/package exec1
119-
create_exec username/package exec2.sh
120-
set_remove_extension username/package true
121-
test_util.fake_clone "$package"
206+
test_util.setup_pkg "$pkg"; {
207+
echo 'REMOVE_EXTENSION="false"' > 'package.sh'
208+
mkdir bin
209+
touch 'bin/exec1'
210+
touch 'bin/exec2.sh'
211+
}; test_util.finish_pkg
212+
test_util.fake_clone "$pkg"
122213

123-
run do-plumbing-link-bins username/package
214+
run do-plumbing-link-bins "$pkg"
124215

125216
assert_success
126-
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/username/package/bin/exec1" ]
127-
assert [ "$(readlink $BPM_INSTALL_BIN/exec2)" = "$BPM_PACKAGES_PATH/username/package/bin/exec2.sh" ]
217+
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/$pkg/bin/exec1" ]
218+
assert [ "$(readlink $BPM_INSTALL_BIN/exec2.sh)" = "$BPM_PACKAGES_PATH/$pkg/bin/exec2.sh" ]
128219
}
129220

130-
@test "remove extension if binRemoveExtensions is true in bpm.toml" {
131-
local package="username/package"
221+
@test "remove extensions if binRemoveExtensions is 'yes' in bpm.toml" {
222+
local pkg="username/package"
132223

133-
test_util.setup_pkg "$package"; {
224+
test_util.setup_pkg "$pkg"; {
134225
echo 'binRemoveExtensions = "yes"' > 'bpm.toml'
135226
mkdir bin
136227
touch 'bin/exec1'
137228
touch 'bin/exec2.sh'
138229
}; test_util.finish_pkg
139-
test_util.fake_clone "$package"
230+
test_util.fake_clone "$pkg"
140231

141-
run do-plumbing-link-bins username/package
232+
run do-plumbing-link-bins "$pkg"
142233

143234
assert_success
144-
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/username/package/bin/exec1" ]
145-
assert [ "$(readlink $BPM_INSTALL_BIN/exec2)" = "$BPM_PACKAGES_PATH/username/package/bin/exec2.sh" ]
235+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec1" ]
236+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec2")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec2.sh" ]
146237
}
147238

239+
@test "do not remove extensions if binRemoveExtensions is 'no' in bpm.toml" {
240+
local pkg="username/package"
148241

149-
@test "does not remove extension if REMOVE_EXTENSION is false" {
150-
local package="username/package"
151-
152-
create_package username/package
153-
create_exec username/package exec1
154-
create_exec username/package exec2.sh
155-
set_remove_extension username/package false
156-
test_util.fake_clone "$package"
242+
test_util.setup_pkg "$pkg"; {
243+
echo 'binRemoveExtensions = "no"' > 'bpm.toml'
244+
mkdir bin
245+
touch 'bin/exec1'
246+
touch 'bin/exec2.sh'
247+
}; test_util.finish_pkg
248+
test_util.fake_clone "$pkg"
157249

158-
run do-plumbing-link-bins username/package
250+
run do-plumbing-link-bins "$pkg"
159251

160252
assert_success
161-
assert [ "$(readlink $BPM_INSTALL_BIN/exec1)" = "$BPM_PACKAGES_PATH/username/package/bin/exec1" ]
162-
assert [ "$(readlink $BPM_INSTALL_BIN/exec2.sh)" = "$BPM_PACKAGES_PATH/username/package/bin/exec2.sh" ]
253+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec1")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec1" ]
254+
assert [ "$(readlink "$BPM_INSTALL_BIN/exec2.sh")" = "$BPM_PACKAGES_PATH/$pkg/bin/exec2.sh" ]
163255
}
164256

165257
@test "does not symlink package itself as bin when linked with bpm link" {

0 commit comments

Comments
 (0)